added xon backpressure to flush tx stream when pause frames are received
3 unresolved threads
3 unresolved threads
by MAC
Closes L2SDP-759
Merge request reports
Activity
requested review from @kooistra
assigned to @walle
173 sla_out.rddata(c_word_w - 1 DOWNTO 0) <= mm_nof_clk_per_sync; 174 174 175 175 -- Read current BSN 176 176 WHEN 2 => 177 sla_out.rddata(31 DOWNTO 0) <= mm_current_bsn(31 DOWNTO 0); 178 mm_current_bsn_hi <= mm_current_bsn(63 DOWNTO 32); -- first read low part and preserve high part 177 sla_out.rddata(c_word_w - 1 DOWNTO 0) <= mm_current_bsn(31 DOWNTO 0); 178 mm_current_bsn_hi <= mm_current_bsn(63 DOWNTO 32); -- first read low part and preserve high part 179 179 WHEN 3 => 180 sla_out.rddata(31 DOWNTO 0) <= mm_current_bsn_hi; -- then read preserved high part 180 sla_out.rddata(c_word_w - 1 DOWNTO 0) <= mm_current_bsn_hi; -- then read preserved high part 181 181 182 182 -- Read current bsn_time_offset 183 183 WHEN 4 => 184 sla_out.rddata <= RESIZE_UVEC(mm_bsn_time_offset, c_word_w); 184 sla_out.rddata(c_word_w - 1 DOWNTO 0) <= RESIZE_UVEC(mm_bsn_time_offset, c_word_w); 52 52 g_tx_fifo_size : NATURAL := 256; -- 2 * 32b * 256 = 2 M9K (DP interface has 64b data, so at least 2 M9K needed) 53 53 g_rx_fifo_size : NATURAL := 256; -- 2 * 32b * 256 = 2 M9K (DP interface has 64b data, so at least 2 M9K needed) 54 54 g_word_alignment_padding : BOOLEAN := FALSE; 55 g_xon_backpressure : BOOLEAN := FALSE; 247 g_use_empty => TRUE, 248 g_fifo_size => g_tx_fifo_size 249 ) 250 PORT MAP ( 251 rst => dp_rst, 252 clk => dp_clk, 253 254 snk_out => snk_out_arr(i), 255 snk_in => snk_in_arr(i), 256 257 src_in => dp_fifo_sc_tx_src_in_arr(i), 258 src_out => dp_fifo_sc_tx_src_out_arr(i) 259 ); 260 END GENERATE; 261 262 -- When MAC receives pause frames, it's ready signal is low for a long time De xon zit al in de beamlet output dus daar worden de pakketjes al geflushed bij xon = 0. Het probleem is dat bij pause frames de xon op 1 blijft en de ready lang 0 blijft. Als de ready kort 0 is vangt de fill fifo dat wel op. Als de fill fifo te vol raakt gaat zijn ready omlaag, in dat geval willen we pakketten gaan flushen. Aangezien die ready halverwege een pakket 0 kan worden hebben we een extra fifo nodig die dat laatste pakket opvangt.
Kun je deze uitleg als engels comment in de VHDL file description toevoegen ? Het is belangrijk dat de gebruiker van tr_10GbE weet dat de Tx naar snk_out_arr.xon moet luisteren en waarom.
Edited by Eric Kooistra
mentioned in commit 7ab94702
unassigned @walle
Please register or sign in to reply