From be01634315c7d17a7a058cf0dddb7079bc48ed26 Mon Sep 17 00:00:00 2001
From: Reinier van der Walle <walle@astron.nl>
Date: Tue, 7 Sep 2021 15:03:01 +0200
Subject: [PATCH] set ip total length based on stats type

---
 applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd         | 2 +-
 .../lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd   | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
index c1635c8173..0ae5fc9354 100644
--- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
+++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
@@ -155,7 +155,7 @@ PACKAGE sdp_pkg is
   CONSTANT c_sdp_xst_udp_src_port_15_8  : STD_LOGIC_VECTOR(7 DOWNTO 0) := x"D2";  -- TBC
 
   CONSTANT c_sdp_stat_nof_hdr_fields : NATURAL := 1+3+12+4+20+1; -- 608b; 19 32b words
-  CONSTANT c_sdp_stat_hdr_field_sel  : STD_LOGIC_VECTOR(c_sdp_stat_nof_hdr_fields-1 DOWNTO 0) := "1"&"101"&"111111111001"&"0101"&"0100"&"000000000"&"0000100"&"0";  -- 0=data path, 1=MM controlled TODO
+  CONSTANT c_sdp_stat_hdr_field_sel  : STD_LOGIC_VECTOR(c_sdp_stat_nof_hdr_fields-1 DOWNTO 0) := "1"&"101"&"111011111001"&"0101"&"0100"&"000000000"&"0000100"&"0";  -- 0=data path, 1=MM controlled TODO
 --CONSTANT c_sdp_stat_hdr_field_sel  : STD_LOGIC_VECTOR(c_sdp_stat_nof_hdr_fields-1 DOWNTO 0) := "0"&"100"&"000000010001"&"0100"&"0100"&"000000010"&"1000000"&"0";  -- 0=data path, 1=MM controlled TODO
 
   CONSTANT c_sdp_stat_hdr_field_arr : t_common_field_arr(c_sdp_stat_nof_hdr_fields-1 DOWNTO 0) := (
diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd
index 0ff82324a0..6e0ee8b945 100644
--- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd
+++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd
@@ -101,6 +101,8 @@ ARCHITECTURE str OF sdp_statistics_offload IS
   CONSTANT c_nof_data                  : NATURAL := sel_a_b(g_statistics_type="BST",  c_sdp_N_pol * c_sdp_S_sub_bf,
                                                     sel_a_b(g_statistics_type="XST",  c_sdp_S_pn * c_sdp_S_pn * c_nof_complex, 
                                                                                       c_sdp_N_sub));  -- SST
+  CONSTANT c_ip_total_length           : NATURAL := 60 + c_nof_data * c_longword_sz;
+
   CONSTANT c_udp_total_length          : NATURAL := 40 + c_nof_data * c_longword_sz;
 
   CONSTANT c_block_size                : NATURAL := c_nof_data * c_step_size;
@@ -165,6 +167,7 @@ BEGIN
   dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "eth_src_mac"                             ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr,  "eth_src_mac"                             )) <= eth_src_mac;
   dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "udp_src_port"                            ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr,  "udp_src_port"                            )) <= udp_src_port;
   dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "ip_src_addr"                             ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr,  "ip_src_addr"                             )) <= ip_src_addr;
+  dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "ip_total_length"                         ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr,  "ip_total_length"                         )) <= TO_UVEC(c_ip_total_length, 16);
   dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "udp_total_length"                        ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr,  "udp_total_length"                        )) <= TO_UVEC(c_udp_total_length, 16);
   dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_marker"                              ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr,  "sdp_marker"                              )) <= TO_UVEC(c_marker, 8);
   dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_observation_id"                      ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr,  "sdp_observation_id"                      )) <= sdp_info.observation_id;
-- 
GitLab