From d3ca82c9647852cc94eae5a23fe68c57f824af34 Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 18 Sep 2017 15:05:19 +0200 Subject: [PATCH] gbe with forwarder --- gbe_trb/base/gbe_logic_wrapper.vhd | 9 +++++++++ gbe_trb/base/gbe_wrapper.vhd | 16 +++++++++++++++- gbe_trb/base/trb_net16_gbe_main_control.vhd | 6 ++++++ gbe_trb/base/trb_net16_gbe_protocol_selector.vhd | 6 ++++++ ...rb_net16_gbe_response_constructor_Forward.vhd | 14 +++++++------- 5 files changed, 43 insertions(+), 8 deletions(-) diff --git a/gbe_trb/base/gbe_logic_wrapper.vhd b/gbe_trb/base/gbe_logic_wrapper.vhd index bea47da..ce14692 100644 --- a/gbe_trb/base/gbe_logic_wrapper.vhd +++ b/gbe_trb/base/gbe_logic_wrapper.vhd @@ -126,6 +126,9 @@ entity gbe_logic_wrapper is CFG_THROTTLE_PAUSE_IN : in std_logic_vector(15 downto 0); -- Forwarder +FWD_DST_MAC_IN : in std_logic_vector(47 downto 0); +FWD_DST_IP_IN : in std_logic_vector(31 downto 0); +FWD_DST_UDP_IN : in std_logic_vector(15 downto 0); FWD_DATA_IN : in std_logic_vector(7 downto 0); FWD_DATA_VALID_IN : in std_logic; FWD_SOP_IN : in std_logic; @@ -397,6 +400,9 @@ begin CFG_AUTO_THROTTLE_IN => '0', --CFG_AUTO_THROTTLE_IN, CFG_THROTTLE_PAUSE_IN => (others => '0'), --CFG_THROTTLE_PAUSE_IN, + FWD_DST_MAC_IN => FWD_DST_MAC_IN, + FWD_DST_IP_IN => FWD_DST_IP_IN, + FWD_DST_UDP_IN => FWD_DST_UDP_IN, FWD_DATA_IN => FWD_DATA_IN, FWD_DATA_VALID_IN => FWD_DATA_VALID_IN, FWD_SOP_IN => FWD_SOP_IN, @@ -547,6 +553,9 @@ begin CFG_AUTO_THROTTLE_IN => CFG_AUTO_THROTTLE_IN, CFG_THROTTLE_PAUSE_IN => CFG_THROTTLE_PAUSE_IN, + FWD_DST_MAC_IN => FWD_DST_MAC_IN, + FWD_DST_IP_IN => FWD_DST_IP_IN, + FWD_DST_UDP_IN => FWD_DST_UDP_IN, FWD_DATA_IN => FWD_DATA_IN, FWD_DATA_VALID_IN => FWD_DATA_VALID_IN, FWD_SOP_IN => FWD_SOP_IN, diff --git a/gbe_trb/base/gbe_wrapper.vhd b/gbe_trb/base/gbe_wrapper.vhd index 9d13e11..502fd20 100644 --- a/gbe_trb/base/gbe_wrapper.vhd +++ b/gbe_trb/base/gbe_wrapper.vhd @@ -85,6 +85,9 @@ entity gbe_wrapper is BUS_REG_TX : out CTRLBUS_TX; -- Forwarder +FWD_DST_MAC_IN : in std_logic_vector(48 * NUMBER_OF_GBE_LINKS - 1 downto 0); +FWD_DST_IP_IN : in std_logic_vector(32 * NUMBER_OF_GBE_LINKS - 1 downto 0); +FWD_DST_UDP_IN : in std_logic_vector(16 * NUMBER_OF_GBE_LINKS - 1 downto 0); FWD_DATA_IN : in std_logic_vector(NUMBER_OF_GBE_LINKS * 8 - 1 downto 0); FWD_DATA_VALID_IN : in std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0); FWD_SOP_IN : in std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0); @@ -376,6 +379,9 @@ begin CFG_AUTO_THROTTLE_IN => cfg_autothrottle, CFG_THROTTLE_PAUSE_IN => cfg_throttle_pause, +FWD_DST_MAC_IN => FWD_DST_MAC_IN(4 * 48 - 1 downto 3 * 48), +FWD_DST_IP_IN => FWD_DST_IP_IN(4 * 32 - 1 downto 3 * 32), +FWD_DST_UDP_IN => FWD_DST_UDP_IN(4 * 16 - 1 downto 3 * 16), FWD_DATA_IN => FWD_DATA_IN(4 * 8 - 1 downto 3 * 8), FWD_DATA_VALID_IN => FWD_DATA_VALID_IN(3), FWD_SOP_IN => FWD_SOP_IN(3), @@ -507,7 +513,9 @@ FWD_FULL_OUT => FWD_FULL_OUT(3), CFG_MAX_REPLY_SIZE_IN => cfg_max_reply, CFG_AUTO_THROTTLE_IN => cfg_autothrottle, CFG_THROTTLE_PAUSE_IN => cfg_throttle_pause, - +FWD_DST_MAC_IN => FWD_DST_MAC_IN(3 * 48 - 1 downto 2 * 48), +FWD_DST_IP_IN => FWD_DST_IP_IN(3 * 32 - 1 downto 2 * 32), +FWD_DST_UDP_IN => FWD_DST_UDP_IN(3 * 16 - 1 downto 2 * 16), FWD_DATA_IN => FWD_DATA_IN(3 * 8 - 1 downto 2 * 8), FWD_DATA_VALID_IN => FWD_DATA_VALID_IN(2), FWD_SOP_IN => FWD_SOP_IN(2), @@ -640,6 +648,9 @@ FWD_FULL_OUT => FWD_FULL_OUT(2), CFG_AUTO_THROTTLE_IN => cfg_autothrottle, CFG_THROTTLE_PAUSE_IN => cfg_throttle_pause, +FWD_DST_MAC_IN => FWD_DST_MAC_IN(2 * 48 - 1 downto 1 * 48), +FWD_DST_IP_IN => FWD_DST_IP_IN(2 * 32 - 1 downto 1 * 32), +FWD_DST_UDP_IN => FWD_DST_UDP_IN(2 * 16 - 1 downto 1 * 16), FWD_DATA_IN => FWD_DATA_IN(2 * 8 - 1 downto 1 * 8), FWD_DATA_VALID_IN => FWD_DATA_VALID_IN(1), FWD_SOP_IN => FWD_SOP_IN(1), @@ -772,6 +783,9 @@ FWD_FULL_OUT => FWD_FULL_OUT(1), CFG_AUTO_THROTTLE_IN => cfg_autothrottle, CFG_THROTTLE_PAUSE_IN => cfg_throttle_pause, +FWD_DST_MAC_IN => FWD_DST_MAC_IN(1 * 48 - 1 downto 0 * 48), +FWD_DST_IP_IN => FWD_DST_IP_IN(1 * 32 - 1 downto 0 * 32), +FWD_DST_UDP_IN => FWD_DST_UDP_IN(1 * 16 - 1 downto 0 * 16), FWD_DATA_IN => FWD_DATA_IN(1 * 8 - 1 downto 0 * 8), FWD_DATA_VALID_IN => FWD_DATA_VALID_IN(0), FWD_SOP_IN => FWD_SOP_IN(0), diff --git a/gbe_trb/base/trb_net16_gbe_main_control.vhd b/gbe_trb/base/trb_net16_gbe_main_control.vhd index 730f77f..d36ccf3 100644 --- a/gbe_trb/base/trb_net16_gbe_main_control.vhd +++ b/gbe_trb/base/trb_net16_gbe_main_control.vhd @@ -145,6 +145,9 @@ entity trb_net16_gbe_main_control is MAKE_RESET_OUT : out std_logic; -- Forwarder +FWD_DST_MAC_IN : in std_logic_vector(47 downto 0); +FWD_DST_IP_IN : in std_logic_vector(31 downto 0); +FWD_DST_UDP_IN : in std_logic_vector(15 downto 0); FWD_DATA_IN : in std_logic_vector(7 downto 0); FWD_DATA_VALID_IN : in std_logic; FWD_SOP_IN : in std_logic; @@ -378,6 +381,9 @@ begin CFG_AUTO_THROTTLE_IN => CFG_AUTO_THROTTLE_IN, CFG_THROTTLE_PAUSE_IN => CFG_THROTTLE_PAUSE_IN, + FWD_DST_MAC_IN => FWD_DST_MAC_IN, + FWD_DST_IP_IN => FWD_DST_IP_IN, + FWD_DST_UDP_IN => FWD_DST_UDP_IN, FWD_DATA_IN => FWD_DATA_IN, FWD_DATA_VALID_IN => FWD_DATA_VALID_IN, FWD_SOP_IN => FWD_SOP_IN, diff --git a/gbe_trb/base/trb_net16_gbe_protocol_selector.vhd b/gbe_trb/base/trb_net16_gbe_protocol_selector.vhd index 297516b..737ad7d 100644 --- a/gbe_trb/base/trb_net16_gbe_protocol_selector.vhd +++ b/gbe_trb/base/trb_net16_gbe_protocol_selector.vhd @@ -130,6 +130,9 @@ entity trb_net16_gbe_protocol_selector is CFG_THROTTLE_PAUSE_IN : in std_logic_vector(15 downto 0); -- Forwarder +FWD_DST_MAC_IN : in std_logic_vector(47 downto 0); +FWD_DST_IP_IN : in std_logic_vector(31 downto 0); +FWD_DST_UDP_IN : in std_logic_vector(15 downto 0); FWD_DATA_IN : in std_logic_vector(7 downto 0); FWD_DATA_VALID_IN : in std_logic; FWD_SOP_IN : in std_logic; @@ -598,6 +601,9 @@ begin RECEIVED_FRAMES_OUT => open, SENT_FRAMES_OUT => open, + FWD_DST_MAC_IN => FWD_DST_MAC_IN, + FWD_DST_IP_IN => FWD_DST_IP_IN, + FWD_DST_UDP_IN => FWD_DST_UDP_IN, FWD_DATA_IN => FWD_DATA_IN, FWD_DATA_VALID_IN => FWD_DATA_VALID_IN, FWD_SOP_IN => FWD_SOP_IN, diff --git a/gbe_trb/protocols/trb_net16_gbe_response_constructor_Forward.vhd b/gbe_trb/protocols/trb_net16_gbe_response_constructor_Forward.vhd index 7375e8d..414d67d 100644 --- a/gbe_trb/protocols/trb_net16_gbe_response_constructor_Forward.vhd +++ b/gbe_trb/protocols/trb_net16_gbe_response_constructor_Forward.vhd @@ -52,9 +52,9 @@ port ( SENT_FRAMES_OUT : out std_logic_vector(15 downto 0); -- END OF INTERFACE - FWD_DST_MAC_OUT : out std_logic_vector(47 downto 0); - FWD_DST_IP_OUT : out std_logic_vector(31 downto 0); - FWD_DST_UDP_OUT : out std_logic_vector(15 downto 0); + FWD_DST_MAC_IN : in std_logic_vector(47 downto 0); + FWD_DST_IP_IN : in std_logic_vector(31 downto 0); + FWD_DST_UDP_IN : in std_logic_vector(15 downto 0); FWD_DATA_IN : in std_logic_vector(7 downto 0); FWD_DATA_VALID_IN : in std_logic; FWD_SOP_IN : in std_logic; @@ -194,12 +194,12 @@ PS_RESPONSE_READY_OUT <= '1' when (dissect_current_state = LOAD) else '0'; TC_FRAME_SIZE_OUT <= resp_bytes_ctr + x"1"; TC_FRAME_TYPE_OUT <= x"0008"; -TC_DEST_MAC_OUT <= FWD_DST_MAC_OUT; -TC_DEST_IP_OUT <= FWD_DST_IP_OUT; -TC_DEST_UDP_OUT <= FWD_DST_UDP_OUT; +TC_DEST_MAC_OUT <= FWD_DST_MAC_IN; +TC_DEST_IP_OUT <= FWD_DST_IP_IN; +TC_DEST_UDP_OUT <= FWD_DST_UDP_IN; TC_SRC_MAC_OUT <= MY_MAC_IN; TC_SRC_IP_OUT <= MY_IP_IN; -TC_SRC_UDP_OUT <= FWD_DST_UDP_OUT; +TC_SRC_UDP_OUT <= FWD_DST_UDP_IN; TC_IP_PROTOCOL_OUT <= x"11"; TC_IDENT_OUT <= x"6" & sent_frames(11 downto 0); -- 2.43.0