diff --git a/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/lofar2_unb2b_sdp_station.vhd b/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/lofar2_unb2b_sdp_station.vhd
index fbf9ce2279aa5af719e15361e456580e09cd5deb..abbc8582ba95e850b2d62942b86563d275f39309 100644
--- a/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/lofar2_unb2b_sdp_station.vhd
+++ b/applications/lofar2/designs/lofar2_unb2b_sdp_station/src/vhdl/lofar2_unb2b_sdp_station.vhd
@@ -400,8 +400,6 @@ ARCHITECTURE str OF lofar2_unb2b_sdp_station IS
   SIGNAL bf_udp_siso_arr                   : t_dp_siso_arr(c_sdp_N_beamsets-1 DOWNTO 0);    
   SIGNAL bf_10GbE_hdr_fields_out_arr       : t_slv_1024_arr(c_sdp_N_beamsets-1 DOWNTO 0);
 
-  SIGNAL out_crosslets_info                : STD_LOGIC_VECTOR(c_sdp_crosslets_info_reg_w-1 DOWNTO 0);
-
   -- 10GbE
   SIGNAL tr_ref_clk_312                    : STD_LOGIC;
   SIGNAL tr_ref_clk_156                    : STD_LOGIC;
@@ -873,9 +871,7 @@ BEGIN
       reg_bsn_scheduler_xsub_mosi => reg_bsn_scheduler_xsub_mosi, 
       reg_bsn_scheduler_xsub_miso => reg_bsn_scheduler_xsub_miso, 
       ram_st_xsq_mosi             => ram_st_xsq_mosi,             
-      ram_st_xsq_miso             => ram_st_xsq_miso,
-
-      out_crosslets_info          => out_crosslets_info             
+      ram_st_xsq_miso             => ram_st_xsq_miso
 
     );
   END GENERATE;
diff --git a/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_correlator.vhd b/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_correlator.vhd
index 47b5fe4db662beeb34011a709bb341c35c57a558..cf5b45e3874cc5098fabdab3468377c044657a9d 100644
--- a/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_correlator.vhd
+++ b/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_correlator.vhd
@@ -40,16 +40,16 @@ USE work.sdp_pkg.ALL;
 ENTITY node_sdp_correlator IS
   GENERIC (
     g_sim            : BOOLEAN := FALSE;
-    g_P_sq           : NATURAL := c_sdp_P_sq
-    --g_offload_time   : NATURAL := c_sdp_offload_time
+    g_P_sq           : NATURAL := c_sdp_P_sq;
+    g_offload_time   : NATURAL := c_sdp_offload_time
   );
   PORT (
     dp_clk        : IN  STD_LOGIC;
     dp_rst        : IN  STD_LOGIC;
 
     in_sosi_arr   : IN  t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0);
-    --xst_udp_sosi  : OUT t_dp_sosi;
-    --xst_udp_siso  : IN  t_dp_siso;
+    xst_udp_sosi  : OUT t_dp_sosi;
+    xst_udp_siso  : IN  t_dp_siso;
 
     mm_rst        : IN  STD_LOGIC;
     mm_clk        : IN  STD_LOGIC;
@@ -62,14 +62,16 @@ ENTITY node_sdp_correlator IS
     reg_bsn_scheduler_xsub_miso : OUT t_mem_miso;
     ram_st_xsq_mosi             : IN  t_mem_mosi := c_mem_mosi_rst;
     ram_st_xsq_miso             : OUT t_mem_miso;
+    reg_enable_mosi             : IN  t_mem_mosi := c_mem_mosi_rst;
+    reg_enable_miso             : OUT t_mem_miso;    
+    reg_hdr_dat_mosi            : IN  t_mem_mosi := c_mem_mosi_rst;
+    reg_hdr_dat_miso            : OUT t_mem_miso;
 
-    --sdp_info : IN t_sdp_info;
-    --gn_id    : IN STD_LOGIC_VECTOR(c_sdp_W_gn_id-1 DOWNTO 0);
-    --stat_eth_src_mac  : IN STD_LOGIC_VECTOR(c_network_eth_mac_addr_w-1 DOWNTO 0);
-    --stat_ip_src_addr  : IN STD_LOGIC_VECTOR(c_network_ip_addr_w-1 DOWNTO 0);
-    --stat_udp_src_port : IN STD_LOGIC_VECTOR(c_network_udp_port_w-1 DOWNTO 0)
-
-    out_crosslets_info : OUT STD_LOGIC_VECTOR(c_sdp_crosslets_info_reg_w-1 DOWNTO 0)
+    sdp_info : IN t_sdp_info;
+    gn_id    : IN STD_LOGIC_VECTOR(c_sdp_W_gn_id-1 DOWNTO 0);
+    stat_eth_src_mac  : IN STD_LOGIC_VECTOR(c_network_eth_mac_addr_w-1 DOWNTO 0);
+    stat_ip_src_addr  : IN STD_LOGIC_VECTOR(c_network_ip_addr_w-1 DOWNTO 0);
+    stat_udp_src_port : IN STD_LOGIC_VECTOR(c_network_udp_port_w-1 DOWNTO 0);
 
   );
 END node_sdp_correlator;
@@ -79,16 +81,16 @@ ARCHITECTURE str OF node_sdp_correlator IS
   CONSTANT c_nof_blk_per_sync_max : NATURAL := c_sdp_xst_nof_blk_per_sync_max;
   CONSTANT c_nof_blk_per_sync_min : NATURAL := c_sdp_xst_nof_blk_per_sync_min;
 
---  CONSTANT c_nof_masters : POSITIVE := 2;
+  CONSTANT c_nof_masters : POSITIVE := 2;
 
-  -- crosslet statistics offload
---  SIGNAL ram_st_offload_mosi     : t_mem_mosi := c_mem_mosi_rst;
---  SIGNAL ram_st_offload_miso     : t_mem_miso := c_mem_miso_rst;
-  
---  SIGNAL master_mem_mux_mosi     : t_mem_mosi := c_mem_mosi_rst;
---  SIGNAL master_mem_mux_miso     : t_mem_miso := c_mem_miso_rst;
---  SIGNAL master_mosi_arr         : t_mem_mosi_arr(0 TO c_nof_masters-1) := (OTHERS=>c_mem_mosi_rst);
---  SIGNAL master_miso_arr         : t_mem_miso_arr(0 TO c_nof_masters-1) := (OTHERS=>c_mem_miso_rst);
+-- crosslet statistics offload
+  SIGNAL ram_st_offload_mosi     : t_mem_mosi := c_mem_mosi_rst;
+  SIGNAL ram_st_offload_miso     : t_mem_miso := c_mem_miso_rst;
+
+  SIGNAL master_mem_mux_mosi     : t_mem_mosi := c_mem_mosi_rst;
+  SIGNAL master_mem_mux_miso     : t_mem_miso := c_mem_miso_rst;
+  SIGNAL master_mosi_arr         : t_mem_mosi_arr(0 TO c_nof_masters-1) := (OTHERS=>c_mem_mosi_rst);
+  SIGNAL master_miso_arr         : t_mem_miso_arr(0 TO c_nof_masters-1) := (OTHERS=>c_mem_miso_rst);
 
   SIGNAL quant_sosi_arr          : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
   SIGNAL xin_sosi_arr            : t_dp_sosi_arr(c_sdp_P_pfb-1 DOWNTO 0) := (OTHERS => c_dp_sosi_rst);
@@ -97,6 +99,7 @@ ARCHITECTURE str OF node_sdp_correlator IS
   SIGNAL crosslets_mosi_arr      : t_mem_mosi_arr(g_P_sq-1 DOWNTO 0) := (OTHERS => c_mem_mosi_rst); 
   SIGNAL crosslets_miso_arr      : t_mem_miso_arr(g_P_sq-1 DOWNTO 0) := (OTHERS => c_mem_miso_rst); 
 
+  SIGNAL crosslets_info          : STD_LOGIC_VECTOR(c_sdp_crosslets_info_reg_w-1 DOWNTO 0);
 BEGIN
   ---------------------------------------------------------------
   -- Requantize 18b to 16b 
@@ -168,7 +171,7 @@ BEGIN
     reg_bsn_scheduler_xsub_mosi => reg_bsn_scheduler_xsub_mosi, 
     reg_bsn_scheduler_xsub_miso => reg_bsn_scheduler_xsub_miso, 
 
-    out_crosslets_info => out_crosslets_info
+    out_crosslets_info => crosslets_info
   );
 
   ---------------------------------------------------------------
@@ -234,69 +237,69 @@ BEGIN
     mm_mosi_arr     => crosslets_mosi_arr,
     mm_miso_arr     => crosslets_miso_arr,
 
-    ram_st_xsq_mosi => ram_st_xsq_mosi, --master_mem_mux_mosi,
-    ram_st_xsq_miso => ram_st_xsq_miso  --master_mem_mux_miso
+    ram_st_xsq_mosi => master_mem_mux_mosi,
+    ram_st_xsq_miso => master_mem_mux_miso
   );
 
---  ---------------------------------------------------------------
---  -- MM master multiplexer 
---  ---------------------------------------------------------------
---  -- Connect 2 mm_masters to the common_mem_mux output
---  master_mosi_arr(0)  <= ram_st_bst_mosi;    -- MM access via QSYS MM bus
---  ram_st_bst_miso     <= master_miso_arr(0);
---  master_mosi_arr(1)  <= ram_st_offload_mosi;   -- MM access by SST offload
---  ram_st_offload_miso <= master_miso_arr(1);
---
---  u_mem_master_mux : ENTITY mm_lib.mm_master_mux
---  GENERIC MAP (
---    g_nof_masters    => c_nof_masters,
---    g_rd_latency_min => 1  -- read latency of statistics RAM is 1
---  )
---  PORT MAP (
---    mm_clk => mm_clk,
---
---    master_mosi_arr => master_mosi_arr,
---    master_miso_arr => master_miso_arr,
---    mux_mosi        => master_mem_mux_mosi,
---    mux_miso        => master_mem_mux_miso
---  );
---
---  ---------------------------------------------------------------
---  -- XST UDP offload 
---  ---------------------------------------------------------------
---  u_sdp_bst_udp_offload: ENTITY work.sdp_statistics_offload
---  GENERIC MAP (
---    g_statistics_type => "XST",
---    g_offload_time    => g_offload_time,
---    g_beamset_id      => g_beamset_id
---  )
---  PORT MAP (
---    mm_clk    => mm_clk,
---    mm_rst    => mm_rst,
---
---    dp_clk    => dp_clk,
---    dp_rst    => dp_rst,
---
---    master_mosi => ram_st_offload_mosi,
---    master_miso => ram_st_offload_miso,
---
---    reg_enable_mosi  => reg_stat_enable_mosi,
---    reg_enable_miso  => reg_stat_enable_miso,
---
---    reg_hdr_dat_mosi  => reg_stat_hdr_dat_mosi,
---    reg_hdr_dat_miso  => reg_stat_hdr_dat_miso,
---
---    sdp_info  => sdp_info,
---    gn_index  => TO_UINT(gn_id),
---
---    in_sosi   => bf_sum_sosi,
---    out_sosi  => bst_udp_sosi,
---    out_siso  => bst_udp_siso,
---
---    eth_src_mac  => stat_eth_src_mac,
---    udp_src_port => stat_udp_src_port,
---    ip_src_addr  => stat_ip_src_addr
---  );
+  ---------------------------------------------------------------
+  -- MM master multiplexer 
+  ---------------------------------------------------------------
+  -- Connect 2 mm_masters to the common_mem_mux output
+  master_mosi_arr(0)  <= ram_st_xsq_mosi;    -- MM access via QSYS MM bus
+  ram_st_xsq_miso     <= master_miso_arr(0);
+  master_mosi_arr(1)  <= ram_st_offload_mosi;   -- MM access by UDP offload
+  ram_st_offload_miso <= master_miso_arr(1);
+
+  u_mem_master_mux : ENTITY mm_lib.mm_master_mux
+  GENERIC MAP (
+    g_nof_masters    => c_nof_masters,
+    g_rd_latency_min => 1  -- read latency of statistics RAM is 1
+  )
+  PORT MAP (
+    mm_clk => mm_clk,
+
+    master_mosi_arr => master_mosi_arr,
+    master_miso_arr => master_miso_arr,
+    mux_mosi        => master_mem_mux_mosi,
+    mux_miso        => master_mem_mux_miso
+  );
+
+  ---------------------------------------------------------------
+  -- XST UDP offload 
+  ---------------------------------------------------------------
+  u_sdp_xst_udp_offload: ENTITY work.sdp_statistics_offload
+  GENERIC MAP (
+    g_statistics_type => "XST",
+    g_offload_time    => g_offload_time
+  )
+  PORT MAP (
+    mm_clk    => mm_clk,
+    mm_rst    => mm_rst,
+
+    dp_clk    => dp_clk,
+    dp_rst    => dp_rst,
+
+    master_mosi => ram_st_offload_mosi,
+    master_miso => ram_st_offload_miso,
+
+    reg_enable_mosi  => reg_stat_enable_mosi,
+    reg_enable_miso  => reg_stat_enable_miso,
+
+    reg_hdr_dat_mosi  => reg_stat_hdr_dat_mosi,
+    reg_hdr_dat_miso  => reg_stat_hdr_dat_miso,
+
+    sdp_info  => sdp_info,
+    gn_index  => TO_UINT(gn_id),
+
+    in_sosi   => crosslets_sosi_arr(0),
+    out_sosi  => xst_udp_sosi,
+    out_siso  => xst_udp_siso,
+
+    eth_src_mac    => stat_eth_src_mac,
+    udp_src_port   => stat_udp_src_port,
+    ip_src_addr    => stat_ip_src_addr,
+    crosslets_info => crosslets_info
+  );
 
 
 END str;
diff --git a/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_filterbank.vhd b/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_filterbank.vhd
index a30bf342f7766974952a2bc51bdb9824b95d587d..1ecebdc0cb4714579b70843a8b0a4df13be7749b 100644
--- a/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_filterbank.vhd
+++ b/applications/lofar2/libraries/sdp/src/vhdl/node_sdp_filterbank.vhd
@@ -299,7 +299,7 @@ BEGIN
   u_mem_master_mux : ENTITY mm_lib.mm_master_mux
   GENERIC MAP (
     g_nof_masters    => c_nof_masters,
-    g_rd_latency_min => 1  -- TODO, make constant and check if value is right
+    g_rd_latency_min => 1  -- read latency of statistics RAM is 1
   )
   PORT MAP (
     mm_clk => mm_clk,
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 dce30f2147dcd9cf534c73e145618a69d9fc2f59..edeba31cd9255b1bdf3bebec03c27ab0b3883f45 100644
--- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd
+++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd
@@ -79,6 +79,7 @@ ENTITY sdp_statistics_offload IS
     ip_src_addr             : IN STD_LOGIC_VECTOR(c_network_ip_addr_w-1 DOWNTO 0);
     sdp_info                : IN t_sdp_info;
     subband_calibrated_flag : IN STD_LOGIC := '0';
+    crosslets_info          : IN STD_LOGIC_VECTOR(c_sdp_crosslets_info_reg_w-1 DOWNTO 0) := (OTHERS => '0');
 
     gn_index     : IN NATURAL
   );
@@ -89,15 +90,15 @@ ARCHITECTURE str OF sdp_statistics_offload IS
 
 
   CONSTANT c_nof_streams               : NATURAL := 1;
-  CONSTANT c_data_size                 : NATURAL := 2;
-  CONSTANT c_nof_data_per_step         : NATURAL := 2;
+  CONSTANT c_data_size                 : NATURAL := sel_a_b(g_statistics_type="XST", 4, 2); -- XST = 4, SST, BST = 2
+  CONSTANT c_nof_data_per_step         : NATURAL := sel_a_b(g_statistics_type="XST", 4, 2); -- XST = 4, SST, BST = 2;
 
   CONSTANT c_step_size                 : NATURAL := sel_a_b(g_statistics_type="BST",  c_data_size,
                                                     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,
-                                                    sel_a_b(g_statistics_type="XST", (c_sdp_S_pn * c_sdp_S_pn * c_nof_complex), 
+                                                    sel_a_b(g_statistics_type="XST", (c_sdp_S_pn * c_sdp_S_pn), 
                                                                                       c_sdp_N_sub));  -- SST
   CONSTANT c_block_size                : NATURAL := c_nof_data * c_step_size;
   
@@ -147,12 +148,13 @@ ARCHITECTURE str OF sdp_statistics_offload IS
   SIGNAL dp_header_info           : STD_LOGIC_VECTOR(1023 DOWNTO 0):= (OTHERS => '0');
   SIGNAL bsn_at_sync              : STD_LOGIC_VECTOR(63 DOWNTO 0) := (OTHERS => '0');
 
+  SIGNAL selected_crosslet        : STD_LOGIC_VECTOR(c_sdp_crosslets_index_w-1 DOWNTO 0);
   --SIGNAL sdp_data_id : STD_LOGIC_VECTOR(31 DOWNTO 0);
   
 BEGIN
 
   bsn_at_sync <= RESIZE_UVEC(in_sosi.bsn, 64) WHEN rising_edge(dp_clk) AND in_sosi.sync = '1';
-
+  selected_crosslet <= crosslets_info(c_sdp_crosslets_index_w-1 DOWNTO 0)
     
   -------------------------------------------------------------------------------
   -- Assemble offload header info
@@ -217,7 +219,7 @@ BEGIN
     ELSIF g_statistics_type = "BST" THEN
       v.data_id := x"0000" & TO_UVEC(c_beamlet_id, 16);
     ELSIF g_statistics_type = "XST" THEN
-      v.data_id := x"00" & TO_UVEC(0, 8) & TO_UVEC(0, 8) & TO_UVEC(0, 8);  -- TODO: fill in right values for XST.
+      v.data_id := x"0" & "000" & RESIZE_UVEC(selected_crosslet, 9) & TO_UVEC(c_sdp_S_pn * gn_index, 8) & TO_UVEC(r.block_count * c_sdp_P_pn, 8);
     ELSE
       v.data_id := x"00000000";
     END IF;