Skip to content
Snippets Groups Projects
Commit 9aabe1c3 authored by Maciej Lipinski's avatar Maciej Lipinski Committed by Grzegorz Daniluk
Browse files

endpoint/rx_path[bugfix]: masking out RTU request for received PAUSE frames...

endpoint/rx_path[bugfix]: masking out RTU request for received PAUSE frames (these frames never exit Endpoint). The bug (RTU request for no frame) where causing SWcore to go crazy
parent 0ebcefb8
Branches
No related merge requests found
......@@ -16,6 +16,8 @@ entity ep_rtu_header_extract is
src_fab_o : out t_ep_internal_fabric;
src_dreq_i : in std_logic;
mbuf_is_pause_i : in std_logic;
vlan_class_i : in std_logic_vector(2 downto 0);
vlan_vid_i : in std_logic_vector(11 downto 0);
vlan_tag_done_i : in std_logic;
......@@ -101,8 +103,10 @@ begin -- rtl
rtu_rq_valid_tagged <= rtu_rq_valid_basic and vlan_tag_done_i;
rtu_rq_valid_out <= rtu_rq_valid_tagged when (vlan_is_tagged_i = '1') else
rtu_rq_valid_basic;
-- the request is not done for PAUSE frames as they never go outside of Endpoint
-- (they are dropped inside Endpoint)
rtu_rq_valid_out <= (rtu_rq_valid_tagged and (not mbuf_is_pause_i))when (vlan_is_tagged_i = '1') else
(rtu_rq_valid_basic and (not mbuf_is_pause_i));
end generate gen_with_rtu;
......
......@@ -118,6 +118,7 @@ architecture behavioral of ep_rx_path is
snk_dreq_o : out std_logic;
src_fab_o : out t_ep_internal_fabric;
src_dreq_i : in std_logic;
mbuf_is_pause_i : in std_logic;
vlan_class_i : in std_logic_vector(2 downto 0);
vlan_vid_i : in std_logic_vector(11 downto 0);
vlan_tag_done_i : in std_logic;
......@@ -458,6 +459,11 @@ begin -- behavioral
snk_dreq_o => dreq_pipe(6),
src_fab_o => fab_pipe(7),
src_dreq_i => dreq_pipe(7),
mbuf_is_pause_i => mbuf_is_pause, -- this module is in the pipe before ep_rx_status_reg_insert,
-- however, we know that mbuf_is_pause is valid when it
-- is used by this module -- this is because blocks the pipe
-- untill mbuf_valid is HIGH, and rtu_rq_valid_o is inserted HIGH
-- at the end of the header... (clear ??:)
vlan_class_i => vlan_tclass,
vlan_vid_i => vlan_vid,
vlan_tag_done_i => vlan_tag_done,
......
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