diff --git a/applications/compaan/designs/compaan_unb1_10g_bg_db/src/vhdl/compaan_unb1_10g_bg_db.vhd b/applications/compaan/designs/compaan_unb1_10g_bg_db/src/vhdl/compaan_unb1_10g_bg_db.vhd
index 05dafb030e743e4e12a08eb93074ab1975cb1093..aef09a6bac616ebe632c368708af351ff611a9c2 100644
--- a/applications/compaan/designs/compaan_unb1_10g_bg_db/src/vhdl/compaan_unb1_10g_bg_db.vhd
+++ b/applications/compaan/designs/compaan_unb1_10g_bg_db/src/vhdl/compaan_unb1_10g_bg_db.vhd
@@ -119,8 +119,8 @@ ARCHITECTURE str OF compaan_unb1_10g_bg_db IS
   -- Block generator
   CONSTANT c_bg_addr_w                  : NATURAL := 9;  
   CONSTANT c_bg_block_size              : NATURAL := 8;
-  CONSTANT c_bg_gapsize                 : NATURAL := 9*c_bg_block_size; -- Full (no gaps in data) BG output rate = 200MHz * 32b = 6.4Gbps. Including gap size: (2200/(2200+19800))*6.4Gbps=640Mbps.
-  CONSTANT c_bg_blocks_per_sync         : NATURAL := sel_a_b(g_sim, 10, 200000); -- 200000*(900+100) = 200000000 cycles = 1 second
+  CONSTANT c_bg_gapsize                 : NATURAL := 3000; -- Full (no gaps in data) BG output rate = 200MHz * 32b = 6.4Gbps. Including gap size: (2200/(2200+19800))*6.4Gbps=640Mbps.
+  CONSTANT c_bg_blocks_per_sync         : NATURAL := 200000;
   CONSTANT c_bg_ctrl                    : t_diag_block_gen := ('0',                                -- enable             
                                                                '0',                                -- enable_sync        
                                                               TO_UVEC(     c_bg_block_size, c_diag_bg_samples_per_packet_w),
@@ -130,7 +130,7 @@ ARCHITECTURE str OF compaan_unb1_10g_bg_db IS
                                                               TO_UVEC(   c_bg_block_size-1, c_diag_bg_mem_high_adrs_w),
                                                               TO_UVEC(                   0, c_diag_bg_bsn_init_w));
 
-  -- dp_offload_tx
+  -- dp_offload_tx             
   -- . IP total length : 2948 (UDP total lenth) + 20 (Ip header length) = 2968
   -- . UDP total length: 8 (UDP header) + 20 (usr header) +  2920 (payload bytes) = 2948     -- 1488
   CONSTANT c_ip_length      : NATURAL := c_bg_block_size*8 + 50; --2970;
@@ -169,9 +169,9 @@ ARCHITECTURE str OF compaan_unb1_10g_bg_db IS
   
   
   
-  CONSTANT c_bypass_rx_filter             : BOOLEAN := FALSE;
+  CONSTANT c_bypass_rx_filter             : BOOLEAN := TRUE;
                                           
-  CONSTANT c_hdr_field_ovr_init           : STD_LOGIC_VECTOR(c_nof_hdr_fields-1 DOWNTO 0) := "111"&"111111111111"&"0011"&"101111111"&"0";
+  CONSTANT c_hdr_field_ovr_init           : STD_LOGIC_VECTOR(c_nof_hdr_fields-1 DOWNTO 0) := "111"&"111111111111"&"0011"&"001111111"&"0";
                                           
   CONSTANT c_fifo_size                    : NATURAL := 2*c_bg_block_size;
                                           
@@ -185,7 +185,7 @@ ARCHITECTURE str OF compaan_unb1_10g_bg_db IS
   CONSTANT c_nof_crc_words                : NATURAL := 0;
   CONSTANT c_max_nof_words_per_block      : NATURAL := c_bg_block_size; 
   CONSTANT c_min_nof_words_per_block      : NATURAL := 1;
-  CONSTANT c_def_nof_words_per_block      : NATURAL := sel_a_b(c_use_1GbE, c_def_1GbE_block_size, c_bg_block_size);
+  CONSTANT c_def_nof_words_per_block      : NATURAL := 8;
   CONSTANT c_def_nof_blocks_per_packet    : NATURAL := 1; 
                                           
   SIGNAL hdr_fields_in_arr                : t_slv_1024_arr(c_nof_streams-1 DOWNTO 0);
@@ -278,6 +278,8 @@ ARCHITECTURE str OF compaan_unb1_10g_bg_db IS
                                           
   SIGNAL dp_offload_tx_src_out_arr        : t_dp_sosi_arr(c_nof_streams-1 DOWNTO 0);
   SIGNAL dp_offload_tx_src_in_arr         : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0);
+  
+  SIGNAL dp_offload_rx_restored_src_out_arr : t_dp_sosi_arr(c_nof_10GbE_streams-1 DOWNTO 0) := (OTHERS=> c_dp_sosi_rst);
                                           
   SIGNAL dp_offload_rx_snk_in_arr         : t_dp_sosi_arr(c_nof_streams-1 DOWNTO 0);
   SIGNAL dp_offload_rx_snk_out_arr        : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0);
@@ -448,9 +450,15 @@ BEGIN
   
   gen_dp_fifo_sc : FOR i IN 0 TO c_nof_streams-1 GENERATE
     u_dp_fifo_sc : ENTITY dp_lib.dp_fifo_sc
-    GENERIC MAP (
-      g_data_w    => c_data_w,
-      g_fifo_size => 3*c_bg_block_size 
+    GENERIC MAP ( 
+      g_bsn_w       => c_dp_stream_bsn_w,
+      g_use_bsn     => TRUE,
+      g_use_empty   => TRUE,
+      g_use_channel => TRUE,
+      g_use_error   => TRUE,
+      g_use_sync    => TRUE,
+      g_data_w      => c_data_w,
+      g_fifo_size   => 3*c_bg_block_size 
     )
     PORT MAP (
       rst         => dp_rst,
@@ -470,7 +478,7 @@ BEGIN
   -----------------------------------------------------------------------------
   u_dp_offload_tx : ENTITY dp_lib.dp_offload_tx
   GENERIC MAP (
-    g_nof_streams               => c_nof_streams,
+    g_nof_streams               => c_nof_10GbE_streams,
     g_data_w                    => c_data_w,
     g_use_complex               => FALSE,
 --    g_max_nof_words_per_block   => c_max_nof_words_per_block,
@@ -516,8 +524,8 @@ BEGIN
     hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "udp_src_port"      ) DOWNTO field_lo(c_hdr_field_arr, "udp_src_port"       )) <= TO_UVEC(4000+i, 16);
     hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "udp_dst_port"      ) DOWNTO field_lo(c_hdr_field_arr, "udp_dst_port"       )) <= TO_UVEC(4000+i, 16);
                                                                                                                                
-    hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "usr_sync"          ) DOWNTO field_lo(c_hdr_field_arr, "usr_sync"           )) <= slv(block_gen_src_out_arr(i).sync);
-    hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "usr_bsn"           ) DOWNTO field_lo(c_hdr_field_arr, "usr_bsn"            )) <= block_gen_src_out_arr(i).bsn(59 DOWNTO 0);   
+    hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "usr_sync"          ) DOWNTO field_lo(c_hdr_field_arr, "usr_sync"           )) <= slv(dp_offload_tx_snk_in_arr(i).sync);
+    hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "usr_bsn"           ) DOWNTO field_lo(c_hdr_field_arr, "usr_bsn"            )) <= dp_offload_tx_snk_in_arr(i).bsn(59 DOWNTO 0);   
     
     hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "usr_hdr_word_align") DOWNTO field_lo(c_hdr_field_arr, "usr_hdr_word_align" )) <= TO_UVEC(0, 16);
     hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "ip_total_length"   ) DOWNTO field_lo(c_hdr_field_arr, "ip_total_length"    )) <= TO_UVEC(c_ip_length, 16);
@@ -552,10 +560,22 @@ BEGIN
 
     hdr_fields_out_arr    => hdr_fields_out_arr
   );
+  
+  -- Restore the sync and bsn signals to the offload_rx output
+  gen_restore_sync_bsn : FOR i IN 0 TO c_nof_10GbE_streams-1 GENERATE
+    dp_offload_rx_restored_src_out_arr(i).sync <=          sl(hdr_fields_out_arr(i)(field_hi(c_hdr_field_arr, "usr_sync") DOWNTO field_lo(c_hdr_field_arr, "usr_sync" )));
+    dp_offload_rx_restored_src_out_arr(i).bsn  <= RESIZE_UVEC(hdr_fields_out_arr(i)(field_hi(c_hdr_field_arr, "usr_bsn" ) DOWNTO field_lo(c_hdr_field_arr, "usr_bsn"  )), c_dp_stream_bsn_w);
+  
+    dp_offload_rx_restored_src_out_arr(i).data  <= dp_offload_rx_src_out_arr(i).data;
+    dp_offload_rx_restored_src_out_arr(i).valid <= dp_offload_rx_src_out_arr(i).valid;
+    dp_offload_rx_restored_src_out_arr(i).sop   <= dp_offload_rx_src_out_arr(i).sop;
+    dp_offload_rx_restored_src_out_arr(i).eop   <= dp_offload_rx_src_out_arr(i).eop;
+    dp_offload_rx_restored_src_out_arr(i).err   <= dp_offload_rx_src_out_arr(i).err;
+  END GENERATE;
+  
   -------------------------
   --WORK IN PROGRESS
   -------------------------
-  
   PROCESS(hdr_fields_in_arr)
   BEGIN
     hdr_fields_in_rx_arr <= hdr_fields_in_arr;
@@ -584,7 +604,7 @@ BEGIN
     reg_dp_offload_rx_filter_hdr_fields_mosi => reg_dp_offload_rx_filter_hdr_fields_mosi,
     reg_dp_offload_rx_filter_hdr_fields_miso => reg_dp_offload_rx_filter_hdr_fields_miso,
                                                
-    snk_in_arr              => dp_offload_rx_src_out_arr,  
+    snk_in_arr              => dp_offload_rx_restored_src_out_arr,  
     snk_out_arr             => dp_offload_rx_src_in_arr,   
                             
     src_out_arr             => dp_offload_rx_filter_src_out_arr,       
@@ -625,7 +645,7 @@ BEGIN
   bsn_monitor_snk_in_arr(2)  <= dp_offload_rx_snk_in_arr(0);  
   bsn_monitor_snk_out_arr(2) <= dp_offload_rx_snk_out_arr(0);    
 
-  bsn_monitor_snk_in_arr(3)  <= dp_offload_rx_src_out_arr(0);  
+  bsn_monitor_snk_in_arr(3)  <= dp_offload_rx_restored_src_out_arr(0);  
   bsn_monitor_snk_out_arr(3) <= dp_offload_rx_src_in_arr(0);  
   
   bsn_monitor_snk_in_arr(4)  <= block_gen_src_out_arr(0);  
@@ -695,7 +715,7 @@ BEGIN
     
     dp_rst                   => dp_rst,
     dp_clk                   => dp_clk,
-    dp_pps                   => OPEN,
+    dp_pps                   => dp_pps,
     dp_rst_in                => dp_rst,
     dp_clk_in                => dp_clk,