From 87bc9ce3d7610f52d269ead7f54907c873d5ea95 Mon Sep 17 00:00:00 2001 From: Markus Koch Date: Tue, 1 Nov 2022 16:22:59 +0100 Subject: [PATCH] ipv4: Add rx_length field --- trashernet/trashernet_ipv4.vhd | 1 + trashernet/trashernet_ipv4prot.vhd | 1 + trashernet/trashernet_pkg.vhd | 2 ++ 3 files changed, 4 insertions(+) diff --git a/trashernet/trashernet_ipv4.vhd b/trashernet/trashernet_ipv4.vhd index 390f8f0..cd92f85 100644 --- a/trashernet/trashernet_ipv4.vhd +++ b/trashernet/trashernet_ipv4.vhd @@ -133,6 +133,7 @@ begin ipv4_out.rx_data_valid <= ethernet_ii_out.rx_data_valid when state = PAYLOAD else '0'; ipv4_out.rx_ip_address <= sr_source_ip; ipv4_out.rx_protocol <= sr_protocol; + ipv4_out.rx_length <= unsigned(std_logic_vector'(sr_total_length(2) & sr_total_length(3))) - to_integer(unsigned(sr_ihl)) * 4; end block rx; diff --git a/trashernet/trashernet_ipv4prot.vhd b/trashernet/trashernet_ipv4prot.vhd index 962d441..e150199 100644 --- a/trashernet/trashernet_ipv4prot.vhd +++ b/trashernet/trashernet_ipv4prot.vhd @@ -68,6 +68,7 @@ begin mux : for i in ipv4_protocol_out'range generate ipv4_protocol_out(i).rx_data <= ipv4_out.rx_data; ipv4_protocol_out(i).rx_ip_address <= ipv4_out.rx_ip_address; + ipv4_protocol_out(i).rx_length <= ipv4_out.rx_length; ipv4_protocol_out(i).rx_data_valid <= ipv4_out.rx_data_valid when rx_sel = i else '0'; ipv4_protocol_out(i).rx_error_stb <= ipv4_out.rx_error_stb when rx_sel = i else '0'; ipv4_protocol_out(i).rx_ok_stb <= ipv4_out.rx_ok_stb when rx_sel = i else '0'; diff --git a/trashernet/trashernet_pkg.vhd b/trashernet/trashernet_pkg.vhd index c8de077..9ed6ded 100644 --- a/trashernet/trashernet_pkg.vhd +++ b/trashernet/trashernet_pkg.vhd @@ -147,6 +147,7 @@ package trashernet_pkg is type ipv4_out_t is record rx_ip_address : ip_addr_t; -- Source IP address rx_protocol : ipv4_protocol; -- Transport Protocol + rx_length : ipv4_length; -- Telegram length (excluding header) rx_data : byte; -- RX data rx_data_valid : std_logic; -- RX data valid strobe @@ -168,6 +169,7 @@ package trashernet_pkg is type ipv4_protocol_out_t is record rx_ip_address : ip_addr_t; -- Source IP address + rx_length : ipv4_length; -- Telegram length (excluding header) rx_data : byte; -- RX data rx_data_valid : std_logic; -- RX data valid strobe