Commit 37cfba4e authored by Grzegorz Daniluk's avatar Grzegorz Daniluk

wr_endpoint: don't make RTU request when frame was not stored in the rx buffer

When rx buffer is full when new SOF arrives, the whole frame is dropped and not
stored in the buffer. However, RTU request was still generated by the
ep_rtu_header_extract.
This patch prevents ep_rtu_header_extract from generating rtu request, when
rxbuf is full on SOF.
parent 6a12587f
......@@ -496,7 +496,8 @@ package endpoint_private_pkg is
rtu_rq_o : out t_ep_internal_rtu_request;
rtu_full_i : in std_logic;
rtu_rq_abort_o : out std_logic;
rtu_rq_valid_o : out std_logic);
rtu_rq_valid_o : out std_logic;
rxbuf_full_i : in std_logic);
end component;
component ep_rx_early_address_match
......
......@@ -29,7 +29,8 @@ entity ep_rtu_header_extract is
rtu_rq_o : out t_ep_internal_rtu_request;
rtu_full_i : in std_logic;
rtu_rq_abort_o : out std_logic;
rtu_rq_valid_o : out std_logic
rtu_rq_valid_o : out std_logic;
rxbuf_full_i : in std_logic
);
end ep_rtu_header_extract;
......@@ -84,7 +85,7 @@ begin -- rtl
else
rmon_drp_at_rtu_full_o <='0';
if(snk_fab_i.sof = '1' and rtu_full_i = '0') then
if(snk_fab_i.sof = '1' and rtu_full_i = '0' and rxbuf_full_i = '0') then
in_packet <= '1';
in_header <= '1';
elsif(snk_fab_i.sof = '1' and rtu_full_i = '1') then
......
......@@ -380,7 +380,8 @@ begin -- behavioral
rtu_rq_o => rtu_rq_o,
rtu_full_i => rtu_full_i,
rtu_rq_abort_o => rtu_rq_abort_o,
rtu_rq_valid_o => rtu_rq_valid);
rtu_rq_valid_o => rtu_rq_valid,
rxbuf_full_i => rxbuf_full);
gen_with_rx_buffer : if g_with_rx_buffer generate
U_Rx_Buffer : ep_rx_buffer
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment