Index: /firmware/FAD/FACT_FAD_20MHz_VAR_PS/FACT_FAD_lib/hdl/fad_board_struct.vhd
===================================================================
--- /firmware/FAD/FACT_FAD_20MHz_VAR_PS/FACT_FAD_lib/hdl/fad_board_struct.vhd	(revision 10907)
+++ /firmware/FAD/FACT_FAD_20MHz_VAR_PS/FACT_FAD_lib/hdl/fad_board_struct.vhd	(revision 10908)
@@ -3,5 +3,5 @@
 -- Created:
 --          by - dneise.UNKNOWN (E5B-LABOR6)
---          at - 12:11:20 03.06.2011
+--          at - 14:33:27 03.06.2011
 --
 -- Generated by Mentor Graphics' HDL Designer(TM) 2009.2 (Build 10)
@@ -75,5 +75,5 @@
 -- Created:
 --          by - dneise.UNKNOWN (E5B-LABOR6)
---          at - 12:11:20 03.06.2011
+--          at - 14:33:27 03.06.2011
 --
 -- Generated by Mentor Graphics' HDL Designer(TM) 2009.2 (Build 10)
Index: /firmware/FAD/FACT_FAD_20MHz_VAR_PS/FACT_FAD_lib/hdl/fad_definitions.vhd
===================================================================
--- /firmware/FAD/FACT_FAD_20MHz_VAR_PS/FACT_FAD_lib/hdl/fad_definitions.vhd	(revision 10907)
+++ /firmware/FAD/FACT_FAD_20MHz_VAR_PS/FACT_FAD_lib/hdl/fad_definitions.vhd	(revision 10908)
@@ -57,5 +57,5 @@
 	--constant SUBVERSION_NUMBER : std_logic_vector (15 downto 0) := conv_std_logic_vector(str_to_int(SUBVERSION_STRING),16);
 	constant PACKAGE_VERSION : std_logic_vector(7 downto 0) := X"01";
-	constant PACKAGE_SUB_VERSION : std_logic_vector(7 downto 0) := X"0B";
+	constant PACKAGE_SUB_VERSION : std_logic_vector(7 downto 0) := X"0F";
 	constant PACKAGE_HEADER_LENGTH : integer := 36;
 	constant PACKAGE_HEADER_ZEROS : integer := 0;  
@@ -195,4 +195,5 @@
 -- for W5300 modul2
 constant W5300_RAM_ADDR_WIDTH : integer := 17;
+constant TX_FIFO_MAX_FREE : std_logic_vector(16 downto 0) := conv_std_logic_vector(15360 ,16); 
 
 -- not needed
Index: /firmware/FAD/FACT_FAD_20MHz_VAR_PS/FACT_FAD_lib/hdl/fad_main_struct.vhd
===================================================================
--- /firmware/FAD/FACT_FAD_20MHz_VAR_PS/FACT_FAD_lib/hdl/fad_main_struct.vhd	(revision 10907)
+++ /firmware/FAD/FACT_FAD_20MHz_VAR_PS/FACT_FAD_lib/hdl/fad_main_struct.vhd	(revision 10908)
@@ -3,5 +3,5 @@
 -- Created:
 --          by - dneise.UNKNOWN (E5B-LABOR6)
---          at - 12:11:19 03.06.2011
+--          at - 14:33:25 03.06.2011
 --
 -- Generated by Mentor Graphics' HDL Designer(TM) 2009.2 (Build 10)
@@ -83,5 +83,5 @@
 -- Created:
 --          by - dneise.UNKNOWN (E5B-LABOR6)
---          at - 12:11:20 03.06.2011
+--          at - 14:33:26 03.06.2011
 --
 -- Generated by Mentor Graphics' HDL Designer(TM) 2009.2 (Build 10)
Index: /firmware/FAD/FACT_FAD_20MHz_VAR_PS/FACT_FAD_lib/hdl/w5300_modul.vhd
===================================================================
--- /firmware/FAD/FACT_FAD_20MHz_VAR_PS/FACT_FAD_lib/hdl/w5300_modul.vhd	(revision 10907)
+++ /firmware/FAD/FACT_FAD_20MHz_VAR_PS/FACT_FAD_lib/hdl/w5300_modul.vhd	(revision 10908)
@@ -122,4 +122,5 @@
 	WR_CHECK_FOR_FIFO_SPACE_01, WR_CHECK_FOR_FIFO_SPACE_02, WR_CHECK_FOR_FIFO_SPACE_03, WR_CHECK_FOR_FIFO_SPACE_04,	
 	WR_05, WR_05_PREPARE_LENGTH_INFO, WR_05_POSTPREPARE_LENGTH_INFO,
+	WORKAROUND_CHECK_FIFO_SPACE_01, WORKAROUND_CHECK_FIFO_SPACE_02, WORKAROUND_CHECK_FIFO_SPACE_03, WORKAROUND_CHECK_FIFO_SPACE_04,
 	WR_05a, WR_05b, WR_06, WR_07, 
 	WR_ACK, WR_WAIT_FOR_ACK,
@@ -1298,5 +1299,28 @@
 								number_of_bytes_written_to_fifo <= number_of_words_written_to_fifo(15 downto 0) & '0';    
 								state_init <= WRITE_DATA;
+								state_write <= WORKAROUND_CHECK_FIFO_SPACE_01;
+							
+							
+							when WORKAROUND_CHECK_FIFO_SPACE_01 =>
+								par_addr <= W5300_S0_TX_FSR + local_socket_nr * W5300_S_INC;
+								state_init <= READ_REG;
+								next_state <= WRITE_DATA;
+								state_write <= WORKAROUND_CHECK_FIFO_SPACE_02;
+							when WORKAROUND_CHECK_FIFO_SPACE_02 =>
+								socket_tx_free (16) <= data_read(0);
+								par_addr <= W5300_S0_TX_FSR + (local_socket_nr * W5300_S_INC) + X"2";
+								state_init <= READ_REG;
+								next_state <= WRITE_DATA;
+								state_write <= WORKAROUND_CHECK_FIFO_SPACE_03;
+							when WORKAROUND_CHECK_FIFO_SPACE_03 =>
+								socket_tx_free (15 downto 0) <= data_read;
+								state_write <= WORKAROUND_CHECK_FIFO_SPACE_04;
+							when WORKAROUND_CHECK_FIFO_SPACE_04 =>
+								write_length_bytes <= TX_FIFO_MAX_FREE - socket_tx_free;
 								state_write <= WR_05;
+							
+							
+							
+							
 							
 							
