diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
index 7296acce10bc4df20ebdd7aad5e7f35d4c3f5913..1fd2d2c1e333e3104de5eef5c38b77fe25b05fc5 100644
--- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
+++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd
@@ -154,8 +154,11 @@ PACKAGE sdp_pkg is
   CONSTANT c_sdp_bst_udp_src_port_15_8  : STD_LOGIC_VECTOR(7 DOWNTO 0) := x"D1";  -- TBC
   CONSTANT c_sdp_xst_udp_src_port_15_8  : STD_LOGIC_VECTOR(7 DOWNTO 0) := x"D2";  -- TBC
 
+  CONSTANT c_sdp_cep_app_header_len  : NATURAL := 32;
+  CONSTANT c_sdp_stat_app_header_len : NATURAL := 32;
+
   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"&"0111"&"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) := (
@@ -167,7 +170,7 @@ PACKAGE sdp_pkg is
       ( field_name_pad("ip_version"                              ), "RW",  4, field_default(4) ),
       ( field_name_pad("ip_header_length"                        ), "RW",  4, field_default(5) ),
       ( field_name_pad("ip_services"                             ), "RW",  8, field_default(0) ),
-      ( field_name_pad("ip_total_length"                         ), "RW", 16, field_default(4156) ), 
+      ( field_name_pad("ip_total_length"                         ), "RW", 16, field_default(0) ), 
       ( field_name_pad("ip_identification"                       ), "RW", 16, field_default(0) ),
       ( field_name_pad("ip_flags"                                ), "RW",  3, field_default(2) ),
       ( field_name_pad("ip_fragment_offset"                      ), "RW", 13, field_default(0) ),
@@ -179,7 +182,7 @@ PACKAGE sdp_pkg is
 
       ( field_name_pad("udp_src_port"                            ), "RW", 16, field_default(0) ), 
       ( field_name_pad("udp_dst_port"                            ), "RW", 16, field_default(5001) ), 
-      ( field_name_pad("udp_total_length"                        ), "RW", 16, field_default(4136) ), 
+      ( field_name_pad("udp_total_length"                        ), "RW", 16, field_default(0) ), 
       ( field_name_pad("udp_checksum"                            ), "RW", 16, field_default(0) ),
 
       ( field_name_pad("sdp_marker"                              ), "RW",  8, field_default(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 3824502c0b6e1a0bc7634fc3410a3427631f1988..c92f39fbfe91ca8e0c3adcfd0c5a2a2234877571 100644
--- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd
+++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd
@@ -98,7 +98,7 @@ ARCHITECTURE str OF sdp_statistics_offload IS
                                                     sel_a_b(g_statistics_type="XST",  c_data_size, 
                                                                                       c_data_size * c_nof_data_per_step));  -- SST
 
-  CONSTANT c_nof_data                  : NATURAL := sel_a_b(g_statistics_type="BST",  c_sdp_N_pol * c_sdp_S_sub_bf,
+  CONSTANT c_nof_data                  : NATURAL := sel_a_b(g_statistics_type="BST",  c_sdp_N_pol_bf * 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_block_size                : NATURAL := c_nof_data * c_step_size;
@@ -115,12 +115,16 @@ ARCHITECTURE str OF sdp_statistics_offload IS
                                                     sel_a_b(g_statistics_type="XST", c_sdp_S_pn,
                                                                                      1));  -- SST
   
-  CONSTANT c_nof_statistics_per_packet : NATURAL := sel_a_b(g_statistics_type="BST",  c_sdp_N_pol * c_sdp_S_sub_bf,
+  CONSTANT c_nof_statistics_per_packet : NATURAL := sel_a_b(g_statistics_type="BST",  c_sdp_N_pol_bf * 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_beamlet_id                : NATURAL := g_beamset_id * c_sdp_S_sub_bf;
 
+  CONSTANT c_app_total_length : NATURAL := c_sdp_stat_app_header_len + c_nof_data * c_longword_sz;
+  CONSTANT c_udp_total_length : NATURAL := c_app_total_length + c_network_udp_header_len;
+  CONSTANT c_ip_total_length  : NATURAL := c_app_total_length + c_network_udp_header_len + c_network_ip_header_len;
+
   TYPE t_reg IS RECORD
     block_count          : NATURAL;
     start_address        : NATURAL;
@@ -160,9 +164,11 @@ BEGIN
   -------------------------------------------------------------------------------
   -- Assemble offload header info
   -------------------------------------------------------------------------------
-  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, "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;
   dp_header_info(field_hi(c_sdp_stat_hdr_field_arr, "sdp_station_id"                          ) DOWNTO field_lo(c_sdp_stat_hdr_field_arr,  "sdp_station_id"                          )) <= sdp_info.station_id;
diff --git a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_statistics_offload.vhd b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_statistics_offload.vhd
index 8b439d303ccfec7cc8b2f173d2f33721c83a18b9..db5a0922e739a0ff5d873df54fe946cb85492438 100644
--- a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_statistics_offload.vhd
+++ b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_statistics_offload.vhd
@@ -80,7 +80,7 @@ ARCHITECTURE tb OF tb_sdp_statistics_offload IS
                                                     sel_a_b(g_statistics_type="XST",  c_data_size, 
                                                                                       c_data_size * c_nof_data_per_step));  -- SST
 
-  CONSTANT c_nof_data                  : NATURAL := sel_a_b(g_statistics_type="BST",  c_sdp_N_pol * c_sdp_S_sub_bf,
+  CONSTANT c_nof_data                  : NATURAL := sel_a_b(g_statistics_type="BST",  c_sdp_N_pol_bf * 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
 
@@ -108,11 +108,15 @@ ARCHITECTURE tb OF tb_sdp_statistics_offload IS
                                                     sel_a_b(g_statistics_type="XST", c_sdp_S_pn,
                                                                                      1));  -- SST
 
-  CONSTANT c_nof_statistics_per_packet : NATURAL := sel_a_b(g_statistics_type="BST",  c_sdp_N_pol * c_sdp_S_sub_bf,
+  CONSTANT c_nof_statistics_per_packet : NATURAL := sel_a_b(g_statistics_type="BST",  c_sdp_N_pol_bf * 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_beamlet_id                : NATURAL := g_beamset_id * c_sdp_S_sub_bf;
+  
+  CONSTANT c_app_total_length : NATURAL := c_sdp_stat_app_header_len + c_nof_data * c_longword_sz;
+  CONSTANT c_udp_total_length : NATURAL := c_app_total_length + c_network_udp_header_len;
+  CONSTANT c_ip_total_length  : NATURAL := c_app_total_length + c_network_udp_header_len + c_network_ip_header_len;
 
   CONSTANT c_nof_valid_per_block : NATURAL := c_nof_data * c_data_size;
   CONSTANT c_nof_sync            : NATURAL := 5;
@@ -264,7 +268,7 @@ BEGIN
         REPORT "wrong ip_header_length" SEVERITY ERROR;
       ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "ip_services") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "ip_services")) = TO_UVEC(0, 8)
         REPORT "wrong ip_services" SEVERITY ERROR;
-      ASSERT rx_hdr_fields_raw(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(4156, 16)
+      ASSERT rx_hdr_fields_raw(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)
         REPORT "wrong ip_total_length" SEVERITY ERROR;
       ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "ip_identification") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "ip_identification")) = TO_UVEC(0, 16)
         REPORT "wrong ip_identification" SEVERITY ERROR;
@@ -280,7 +284,7 @@ BEGIN
         REPORT "wrong ip_dst_addr" SEVERITY ERROR;
       ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "udp_dst_port") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "udp_dst_port")) = TO_UVEC(5001, 16)
         REPORT "wrong udp_dst_port" SEVERITY ERROR;  
-      ASSERT rx_hdr_fields_raw(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(4136, 16)
+      ASSERT rx_hdr_fields_raw(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)
         REPORT "wrong udp_total_length" SEVERITY ERROR; 
       ASSERT rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "sdp_version_id") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_version_id")) = TO_UVEC(5, 8)
         REPORT "wrong sdp_version_id" SEVERITY ERROR;