diff --git a/applications/apertif/designs/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer.vhd b/applications/apertif/designs/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer.vhd
index a7851a6999cb1cf5c0c0e87010b927f1d14bd63d..de07a231519203c124b736afa91ff909626338e1 100644
--- a/applications/apertif/designs/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer.vhd
+++ b/applications/apertif/designs/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer.vhd
@@ -164,8 +164,8 @@ ARCHITECTURE str OF apertif_unb1_fn_beamformer IS
   
   --------------------------------------------------------------------------------------------------
   -- Temporarily ss instance
-  SIGNAL dp_offload_in_sosi_arr     : t_dp_sosi_arr(g_bf.nof_bf_units-1 DOWNTO 0); 
-  SIGNAL dp_offload_out_siso_arr    : t_dp_siso_arr(g_bf.nof_bf_units-1 DOWNTO 0) := (OTHERS => c_dp_siso_rdy); 
+  SIGNAL udp_offload_snk_in_arr        : t_dp_sosi_arr(g_bf.nof_bf_units-1 DOWNTO 0); 
+  SIGNAL udp_offload_snk_out_arr       : t_dp_siso_arr(g_bf.nof_bf_units-1 DOWNTO 0) := (OTHERS => c_dp_siso_rdy); 
 --  SIGNAL ss_in_sosi                 : t_dp_sosi;
 --  SIGNAL ss_in_siso                 : t_dp_siso := c_dp_siso_rdy;
 --  SIGNAL ss_out_sosi                : t_dp_sosi;
@@ -464,7 +464,7 @@ BEGIN
   );
 
   gen_no_transpose : IF c_use_transpose = FALSE GENERATE
-    dp_offload_in_sosi_arr <= beamlets_qua_sosi_arr; 
+    udp_offload_snk_in_arr <= beamlets_qua_sosi_arr; 
   END GENERATE;
                                                     
   gen_transpose : IF c_use_transpose = TRUE GENERATE
@@ -522,9 +522,9 @@ BEGIN
 --    gen_merge_out : PROCESS(ss_out_sosi)
 --    BEGIN 
 --      FOR i IN 0 TO g_bf.nof_bf_units-1 LOOP
---        dp_offload_in_sosi_arr(i)    <= ss_out_sosi; 
---        dp_offload_in_sosi_arr(i).re <= RESIZE_DP_DSP_DATA(ss_out_sosi.data((2*i+1)*8-1 DOWNTO 2*i*8));
---        dp_offload_in_sosi_arr(i).im <= RESIZE_DP_DSP_DATA(ss_out_sosi.data((2*i+2)*8-1 DOWNTO (2*i+1)*8));
+--        udp_offload_snk_in_arr(i)    <= ss_out_sosi; 
+--        udp_offload_snk_in_arr(i).re <= RESIZE_DP_DSP_DATA(ss_out_sosi.data((2*i+1)*8-1 DOWNTO 2*i*8));
+--        udp_offload_snk_in_arr(i).im <= RESIZE_DP_DSP_DATA(ss_out_sosi.data((2*i+2)*8-1 DOWNTO (2*i+1)*8));
 --      END LOOP;
 --    END PROCESS;
   
@@ -554,8 +554,8 @@ BEGIN
       snk_in_arr            => beamlets_qua_sosi_arr,
       
       -- ST source          
-      src_in_arr            => dp_offload_out_siso_arr,
-      src_out_arr           => dp_offload_in_sosi_arr,
+      src_in_arr            => udp_offload_snk_out_arr,
+      src_out_arr           => udp_offload_snk_in_arr,
       
       ram_ss_ss_transp_mosi => ram_ss_ss_transp_mosi,
       ram_ss_ss_transp_miso => ram_ss_ss_transp_miso,
@@ -762,7 +762,7 @@ BEGIN
     dp_rst                         => dp_rst,
     dp_clk                         => dp_clk,
 
-    snk_in_arr                     => dp_offload_in_sosi_arr,  -- 8b beamlets
+    snk_in_arr                     => udp_offload_snk_in_arr,  -- 8b beamlets
 
     src_out_arr                    => dp_offload_tx_src_out_arr,
     src_in_arr                     => dp_offload_tx_src_in_arr,
diff --git a/applications/apertif/designs/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer_udp_offload.vhd b/applications/apertif/designs/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer_udp_offload.vhd
index e210c9d00c7c70faba5fcc1c43a2985f9bc697c2..22c3976e15c4a8ed19bd2568df0173aedc7ef26d 100644
--- a/applications/apertif/designs/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer_udp_offload.vhd
+++ b/applications/apertif/designs/apertif_unb1_fn_beamformer/src/vhdl/apertif_unb1_fn_beamformer_udp_offload.vhd
@@ -95,23 +95,45 @@ ARCHITECTURE wrap OF apertif_unb1_fn_beamformer_udp_offload IS
   SIGNAL id_backplane                  : STD_LOGIC_VECTOR(c_byte_w-1 DOWNTO 0);
   SIGNAL id_chip                       : STD_LOGIC_VECTOR(c_byte_w-1 DOWNTO 0);
 
+  SIGNAL dp_fifo_sc_snk_in             : t_dp_sosi;
   SIGNAL dp_offload_tx_snk_in_arr      : t_dp_sosi_arr(c_nof_offload_streams-1 DOWNTO 0);
+  SIGNAL dp_offload_tx_snk_out_arr     : t_dp_siso_arr(c_nof_offload_streams-1 DOWNTO 0);
 
 BEGIN
 
   --------------------------------------------------------------------------------------- 
   -- 4 BF unit outputs: 2*8b complex; concatenate these into one 64b word.
   ---------------------------------------------------------------------------------------
-  gen_bf_out_concat: FOR i IN 0 TO c_nof_offload_streams-1 GENERATE
-    p_connect : PROCESS(snk_in_arr(i))
-    BEGIN
-      dp_offload_tx_snk_in_arr(i) <= snk_in_arr(0); -- Control 
-      dp_offload_tx_snk_in_arr(i).data(c_data_w-1 DOWNTO 0) <= snk_in_arr(3).im(c_bf_out_compl_dat_w-1 DOWNTO 0) & snk_in_arr(3).re(c_bf_out_compl_dat_w-1 DOWNTO 0) &
-                                                               snk_in_arr(2).im(c_bf_out_compl_dat_w-1 DOWNTO 0) & snk_in_arr(2).re(c_bf_out_compl_dat_w-1 DOWNTO 0) &
-                                                               snk_in_arr(1).im(c_bf_out_compl_dat_w-1 DOWNTO 0) & snk_in_arr(1).re(c_bf_out_compl_dat_w-1 DOWNTO 0) &
-                                                               snk_in_arr(0).im(c_bf_out_compl_dat_w-1 DOWNTO 0) & snk_in_arr(0).re(c_bf_out_compl_dat_w-1 DOWNTO 0);
-    END PROCESS;
-  END GENERATE;
+  p_connect : PROCESS(snk_in_arr)
+  BEGIN
+    dp_fifo_sc_snk_in <= snk_in_arr(0); -- Control 
+    dp_fifo_sc_snk_in.data(c_data_w-1 DOWNTO 0) <= snk_in_arr(3).im(c_bf_out_compl_dat_w-1 DOWNTO 0) & snk_in_arr(3).re(c_bf_out_compl_dat_w-1 DOWNTO 0) &
+                                                   snk_in_arr(2).im(c_bf_out_compl_dat_w-1 DOWNTO 0) & snk_in_arr(2).re(c_bf_out_compl_dat_w-1 DOWNTO 0) &
+                                                   snk_in_arr(1).im(c_bf_out_compl_dat_w-1 DOWNTO 0) & snk_in_arr(1).re(c_bf_out_compl_dat_w-1 DOWNTO 0) &
+                                                   snk_in_arr(0).im(c_bf_out_compl_dat_w-1 DOWNTO 0) & snk_in_arr(0).re(c_bf_out_compl_dat_w-1 DOWNTO 0);
+  END PROCESS;
+
+  --------------------------------------------------------------------------------------- 
+  -- FIFO to provide a flow controllable buffer while dp_offload_tx inserts headers
+  ---------------------------------------------------------------------------------------
+  u_dp_fifo_sc : ENTITY dp_lib.dp_fifo_sc
+  GENERIC MAP (
+    g_data_w         => c_data_w,
+    g_bsn_w          => 64,
+    g_use_sync       => TRUE,
+    g_use_bsn        => TRUE,
+    g_fifo_size      => 128
+  )
+  PORT MAP (
+    rst         => dp_rst,
+    clk         => dp_clk,
+
+    snk_out     => OPEN,
+    snk_in      => dp_fifo_sc_snk_in,
+
+    src_in      => dp_offload_tx_snk_out_arr(0),
+    src_out     => dp_offload_tx_snk_in_arr(0)
+  );
 
   --------------------------------------------------------------------------------------- 
   -- dp_offload_tx
@@ -142,7 +164,7 @@ BEGIN
     reg_hdr_dat_miso      => reg_dp_offload_tx_hdr_dat_miso,
 
     snk_in_arr            => dp_offload_tx_snk_in_arr,
-    snk_out_arr           => OPEN,
+    snk_out_arr           => dp_offload_tx_snk_out_arr,
 
     src_out_arr           => src_out_arr,
     src_in_arr            => src_in_arr,