Skip to content

Commit d5a5c02

Browse files
author
Stepan Friedl
committed
Merge branch 'friedl-fix-lleth_txdisable' into 'devel'
fix(tx-mac-lite): fix frame discarding in low latency mode See merge request ndk/ndk-fpga!314
2 parents 4aa6045 + 39e115d commit d5a5c02

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

comp/nic/mac_lite/tx_mac_lite/tx_mac_lite.vhd

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,9 @@ entity TX_MAC_LITE is
6969
-- Maximum number of Transactions waiting for space insertion
7070
-- Ignored when IPG_GENERATE_EN==false
7171
TRANS_FIFO_SIZE : natural := 128;
72-
-- Low-latency mode: do not discard errornous frames
72+
-- Low-latency mode: buffering is disabled, therefore erroneous frames are not discarded
73+
-- Also, frames may be corrupted when the MAC is disabled/enabled during ongoing traffic
74+
-- Use with care and only if you know what you are doing
7375
LL_MODE : boolean := false;
7476
-- FPGA device name.
7577
DEVICE : string := "STRATIX10";
@@ -423,9 +425,10 @@ begin
423425
fl_mfb_frame_len_arr <= slv_array_deser(fl_mfb_frame_len,MD_REGIONS,LEN_WIDTH);
424426

425427
fl_mfb_discard_g : for r in 0 to MD_REGIONS-1 generate
426-
fl_mfb_undersize(r) <= '1' when (unsigned(fl_mfb_frame_len_arr(r)) < FRAME_LEN_MIN) else '0';
428+
fl_mfb_undersize(r) <= '1' when (unsigned(fl_mfb_frame_len_arr(r)) < FRAME_LEN_MIN) and (not LL_MODE) else '0';
427429
fl_mfb_discard(r) <= fl_mfb_undersize(r) or ctrl_ld_discard or ctrl_off_discard;
428-
fl_mfb_discard_vld(r) <= fl_mfb_discard(r) and fl_mfb_eof(r) and fl_mfb_src_rdy;
430+
fl_mfb_discard_vld(r) <= fl_mfb_discard(r) and fl_mfb_src_rdy and fl_mfb_eof(r) when (not LL_MODE) else
431+
fl_mfb_discard(r) and fl_mfb_src_rdy;
429432
end generate;
430433

431434
fl_mfb_dst_rdy <= fd_mfb_dst_rdy and crc_mfb_dst_rdy;
@@ -680,7 +683,7 @@ begin
680683
sp_mfb_sof <= fd_mfb_sof;
681684
sp_mfb_eof <= fd_mfb_eof;
682685
fd_mfb_dst_rdy <= sp_mfb_dst_rdy;
683-
sp_mfb_src_rdy <= fd_mfb_src_rdy;
686+
sp_mfb_src_rdy <= fd_mfb_src_rdy and (not (or fd_mfb_discard));
684687
end generate;
685688
end generate;
686689

0 commit comments

Comments
 (0)