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 067bddea16e727b6d440973c327844e6a50d065b..4bbde54b413729bf0abf82a7fd09971b244263fc 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
@@ -133,188 +133,191 @@ ARCHITECTURE str OF compaan_unb1_10g_bg_db IS
   -- 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 := 2970;
-  CONSTANT c_udp_length			: NATURAL := 2950;
+  CONSTANT c_ip_length      : NATURAL := 2970;
+  CONSTANT c_udp_length     : NATURAL := 2950;
   CONSTANT c_nof_hdr_fields : NATURAL := 3+12+4+9+1;  -- Total header bits = 512
   CONSTANT c_hdr_field_arr  : t_common_field_arr(c_nof_hdr_fields-1 DOWNTO 0) := ( ( field_name_pad("eth_dst_mac"        ), "  ", 48, field_default(0) ),
-                                                                                	 ( field_name_pad("eth_src_mac"        ), "  ", 48, field_default(0) ),
-                                                                                	 ( field_name_pad("eth_type"           ), "  ", 16, field_default(x"0800") ),
-                                                                                	 ( field_name_pad("ip_version"         ), "  ",  4, field_default(4) ),
-                                                                                	 ( field_name_pad("ip_header_length"   ), "  ",  4, field_default(5) ),
-                                                                                	 ( field_name_pad("ip_services"        ), "  ",  8, field_default(0) ),
-                                                                                	 ( field_name_pad("ip_total_length"    ), "  ", 16, field_default(c_ip_length) ),        --1508) ),
-                                                                                	 ( field_name_pad("ip_identification"  ), "  ", 16, field_default(0) ),
-                                                                                	 ( field_name_pad("ip_flags"           ), "  ",  3, field_default(2) ),
-                                                                                	 ( field_name_pad("ip_fragment_offset" ), "  ", 13, field_default(0) ),
-                                                                                	 ( field_name_pad("ip_time_to_live"    ), "  ",  8, field_default(127) ),
-                                                                                	 ( field_name_pad("ip_protocol"        ), "  ",  8, field_default(17) ),
-                                                                                	 ( field_name_pad("ip_header_checksum" ), "  ", 16, field_default(0) ),
-                                                                                	 ( field_name_pad("ip_src_addr"        ), "  ", 32, field_default(0) ),
-                                                                                	 ( field_name_pad("ip_dst_addr"        ), "  ", 32, field_default(0) ),
-                                                                                	 ( field_name_pad("udp_src_port"       ), "  ", 16, field_default(0) ), 
-                                                                                	 ( field_name_pad("udp_dst_port"       ), "  ", 16, field_default(0) ), 
-                                                                                	 ( field_name_pad("udp_total_length"   ), "  ", 16, field_default(c_udp_length) ),         --1488) ),
-                                                                                	 ( field_name_pad("udp_checksum"       ), "  ", 16, field_default(0) ),
-                                                                                	 ( field_name_pad("usr_sync"           ), "  ",  1, field_default(1) ),
-                                                                                	 ( field_name_pad("usr_bsn"            ), "  ", 60, field_default(0) ),
-                                                                                	 ( field_name_pad("usr_hdr_field_0"    ), "  ",  7, field_default(0) ),
-                                                                                	 ( field_name_pad("usr_hdr_field_1"    ), "  ",  9, field_default(0) ),
-                                                                                	 ( field_name_pad("usr_hdr_field_2"    ), "  ", 10, field_default(0) ),
-                                                                                	 ( field_name_pad("usr_hdr_field_3"    ), "  ", 33, field_default(0) ),
-                                                                                	 ( field_name_pad("usr_hdr_field_4"    ), "  ",  5, field_default(0) ),
-                                                                                	 ( field_name_pad("usr_hdr_field_5"    ), "  ",  8, field_default(0) ),
-                                                                                	 ( field_name_pad("usr_hdr_field_6"    ), "  ", 27, field_default(0) ),
-                                                                                	 ( field_name_pad("usr_hdr_word_align" ), "  ", 16, field_default(0) ) );   
+                                                                                   ( field_name_pad("eth_src_mac"        ), "  ", 48, field_default(0) ),
+                                                                                   ( field_name_pad("eth_type"           ), "  ", 16, field_default(x"0800") ),
+                                                                                   ( field_name_pad("ip_version"         ), "  ",  4, field_default(4) ),
+                                                                                   ( field_name_pad("ip_header_length"   ), "  ",  4, field_default(5) ),
+                                                                                   ( field_name_pad("ip_services"        ), "  ",  8, field_default(0) ),
+                                                                                   ( field_name_pad("ip_total_length"    ), "  ", 16, field_default(c_ip_length) ),        --1508) ),
+                                                                                   ( field_name_pad("ip_identification"  ), "  ", 16, field_default(0) ),
+                                                                                   ( field_name_pad("ip_flags"           ), "  ",  3, field_default(2) ),
+                                                                                   ( field_name_pad("ip_fragment_offset" ), "  ", 13, field_default(0) ),
+                                                                                   ( field_name_pad("ip_time_to_live"    ), "  ",  8, field_default(127) ),
+                                                                                   ( field_name_pad("ip_protocol"        ), "  ",  8, field_default(17) ),
+                                                                                   ( field_name_pad("ip_header_checksum" ), "  ", 16, field_default(0) ),
+                                                                                   ( field_name_pad("ip_src_addr"        ), "  ", 32, field_default(0) ),
+                                                                                   ( field_name_pad("ip_dst_addr"        ), "  ", 32, field_default(0) ),
+                                                                                   ( field_name_pad("udp_src_port"       ), "  ", 16, field_default(0) ), 
+                                                                                   ( field_name_pad("udp_dst_port"       ), "  ", 16, field_default(0) ), 
+                                                                                   ( field_name_pad("udp_total_length"   ), "  ", 16, field_default(c_udp_length) ),         --1488) ),
+                                                                                   ( field_name_pad("udp_checksum"       ), "  ", 16, field_default(0) ),
+                                                                                   ( field_name_pad("usr_sync"           ), "  ",  1, field_default(1) ),
+                                                                                   ( field_name_pad("usr_bsn"            ), "  ", 60, field_default(0) ),
+                                                                                   ( field_name_pad("usr_hdr_field_0"    ), "  ",  7, field_default(0) ),
+                                                                                   ( field_name_pad("usr_hdr_field_1"    ), "  ",  9, field_default(0) ),
+                                                                                   ( field_name_pad("usr_hdr_field_2"    ), "  ", 10, field_default(0) ),
+                                                                                   ( field_name_pad("usr_hdr_field_3"    ), "  ", 33, field_default(0) ),
+                                                                                   ( field_name_pad("usr_hdr_field_4"    ), "  ",  5, field_default(0) ),
+                                                                                   ( field_name_pad("usr_hdr_field_5"    ), "  ",  8, field_default(0) ),
+                                                                                   ( field_name_pad("usr_hdr_field_6"    ), "  ", 27, field_default(0) ),
+                                                                                   ( field_name_pad("usr_hdr_word_align" ), "  ", 16, field_default(0) ) );   
                                                                                    
-  --CONSTANT c_hdr_field_arr  : t_common_field_arr(c_nof_hdr_fields-1 DOWNTO 0) := c_hdr_field_rx_offload_arr(c_nof_hdr_fields-1 DOWNTO 0);      
   
   
   
+  CONSTANT c_bypass_rx_filter             : BOOLEAN := FALSE;
+                                          
+  CONSTANT c_hdr_field_ovr_init           : STD_LOGIC_VECTOR(c_nof_hdr_fields-1 DOWNTO 0) := "111"&"111111111111"&"0011"&"101111111"&"0";
+                                          
+  CONSTANT c_fifo_size                    : NATURAL := 2*c_bg_block_size;
+                                          
+  CONSTANT c_use_jumbo_frames             : BOOLEAN := FALSE;
+  CONSTANT c_def_1GbE_block_size          : NATURAL := c_bg_block_size;
+                                          
+  CONSTANT c_max_frame_len                : NATURAL := sel_a_b(c_use_jumbo_frames, 9018, c_ip_length);
+  CONSTANT c_max_frame_nof_words          : NATURAL := (c_max_frame_len * c_byte_w ) / c_data_w;
+  CONSTANT c_nof_header_words             : NATURAL := field_slv_len(c_hdr_field_arr) / c_data_w;
+  CONSTANT c_nof_header_bytes             : NATURAL := field_slv_len(c_hdr_field_arr) / c_byte_w;
+  CONSTANT c_nof_crc_words                : NATURAL := 0;
+  CONSTANT c_max_udp_payload_len          : NATURAL := c_max_frame_len-c_nof_header_bytes-c_network_eth_crc_len;
+  CONSTANT c_max_udp_payload_nof_words    : NATURAL := (c_max_udp_payload_len * c_byte_w) / c_data_w;
+  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_max_nof_blocks_per_packet    : NATURAL := c_max_udp_payload_nof_words/c_min_nof_words_per_block;
+  CONSTANT c_def_nof_blocks_per_packet    : NATURAL := 1; 
+                                          
+  SIGNAL hdr_fields_in_arr                : t_slv_1024_arr(c_nof_streams-1 DOWNTO 0);
+  SIGNAL hdr_fields_in_rx_arr             : t_slv_1024_arr(c_nof_streams-1 DOWNTO 0);
+  SIGNAL hdr_fields_out_arr               : t_slv_1024_arr(c_nof_streams-1 DOWNTO 0);
+                                          
+  -- System                               
+  SIGNAL sa_rst                           : STD_LOGIC := '0';
+  SIGNAL cs_sim                           : STD_LOGIC;
+  SIGNAL xo_clk                           : STD_LOGIC;
+  SIGNAL xo_rst                           : STD_LOGIC;
+  SIGNAL xo_rst_n                         : STD_LOGIC;
+  SIGNAL mm_clk                           : STD_LOGIC;
+  SIGNAL mm_locked                        : STD_LOGIC;
+  SIGNAL mm_rst                           : STD_LOGIC;  
+  SIGNAL dp_rst                           : STD_LOGIC;
+  SIGNAL dp_clk                           : STD_LOGIC;  
+  SIGNAL dp_pps                           : STD_LOGIC;
+  SIGNAL epcs_clk                         : STD_LOGIC;   
+  -- PIOs                                 
+  SIGNAL pout_wdi                         : STD_LOGIC;
+                                          
+  SIGNAL eth1g_tse_clk                    : STD_LOGIC;
+  SIGNAL eth1g_mm_rst                     : STD_LOGIC;
+  SIGNAL eth1g_tse_mosi                   : t_mem_mosi;
+  SIGNAL eth1g_tse_miso                   : t_mem_miso;
+  SIGNAL eth1g_reg_mosi                   : t_mem_mosi;
+  SIGNAL eth1g_reg_miso                   : t_mem_miso;
+  SIGNAL eth1g_reg_interrupt              : STD_LOGIC;
+  SIGNAL eth1g_ram_mosi                   : t_mem_mosi;
+  SIGNAL eth1g_ram_miso                   : t_mem_miso;
+                                          
+  SIGNAL reg_wdi_mosi                     : t_mem_mosi;
+  SIGNAL reg_wdi_miso                     : t_mem_miso;
+  SIGNAL reg_unb_system_info_mosi         : t_mem_mosi;
+  SIGNAL reg_unb_system_info_miso         : t_mem_miso;
+  SIGNAL rom_unb_system_info_mosi         : t_mem_mosi;
+  SIGNAL rom_unb_system_info_miso         : t_mem_miso;
+  SIGNAL reg_unb_sens_mosi                : t_mem_mosi;
+  SIGNAL reg_unb_sens_miso                : t_mem_miso;
+                                          
+  SIGNAL reg_diag_bg_mosi                 : t_mem_mosi;
+  SIGNAL reg_diag_bg_miso                 : t_mem_miso;
+  SIGNAL ram_diag_bg_mosi                 : t_mem_mosi;
+  SIGNAL ram_diag_bg_miso                 : t_mem_miso;
+                                          
+  SIGNAL reg_dp_offload_tx_mosi           : t_mem_mosi;
+  SIGNAL reg_dp_offload_tx_miso           : t_mem_miso;
+  SIGNAL reg_dp_offload_tx_hdr_dat_mosi   : t_mem_mosi;
+  SIGNAL reg_dp_offload_tx_hdr_dat_miso   : t_mem_miso;
+  SIGNAL reg_dp_offload_tx_hdr_ovr_mosi   : t_mem_mosi;
+  SIGNAL reg_dp_offload_tx_hdr_ovr_miso   : t_mem_miso;
+  SIGNAL reg_dp_offload_rx_hdr_dat_mosi   : t_mem_mosi;
+  SIGNAL reg_dp_offload_rx_hdr_dat_miso   : t_mem_miso;
+                                          
+  --. 10G Receiver                        
+  SIGNAL reg_tr_10GbE_mosi                : t_mem_mosi;
+  SIGNAL reg_tr_10GbE_miso                : t_mem_miso;
+  SIGNAL reg_tr_xaui_mosi                 : t_mem_mosi;
+  SIGNAL reg_tr_xaui_miso                 : t_mem_miso;
+  SIGNAL reg_mdio_mosi_arr                : t_mem_mosi_arr(c_unb1_board_nof_mdio-1 DOWNTO 0);
+  SIGNAL reg_mdio_miso_arr                : t_mem_miso_arr(c_unb1_board_nof_mdio-1 DOWNTO 0);
+
+  SIGNAL reg_mdio_0_mosi                  : t_mem_mosi;
+  SIGNAL reg_mdio_0_miso                  : t_mem_miso;
+  SIGNAL reg_mdio_1_mosi                  : t_mem_mosi;
+  SIGNAL reg_mdio_1_miso                  : t_mem_miso;
+  SIGNAL reg_mdio_2_mosi                  : t_mem_mosi;
+  SIGNAL reg_mdio_2_miso                  : t_mem_miso;
+                                          
+  SIGNAL reg_bsn_monitor_mosi             : t_mem_mosi;
+  SIGNAL reg_bsn_monitor_miso             : t_mem_miso;
+  SIGNAL ram_diag_data_buffer_mosi        : t_mem_mosi;
+  SIGNAL ram_diag_data_buffer_miso        : t_mem_miso;
+  SIGNAL reg_diag_data_buffer_mosi        : t_mem_mosi;
+  SIGNAL reg_diag_data_buffer_miso        : t_mem_miso;  
+                                          
+  SIGNAL reg_ppsh_mosi                    : t_mem_mosi;     
+  SIGNAL reg_ppsh_miso                    : t_mem_miso;  
+                                          
+  SIGNAL block_gen_src_out_arr            : t_dp_sosi_arr(c_nof_streams-1 DOWNTO 0);
+  SIGNAL block_gen_src_in_arr             : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0) := (OTHERS=> c_dp_siso_rdy);
+  SIGNAL block_gen_src_in_arr_temp        : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0) := (OTHERS=> c_dp_siso_rdy);
+                                          
+  SIGNAL dp_offload_tx_snk_in_arr         : t_dp_sosi_arr(c_nof_streams-1 DOWNTO 0);
+  SIGNAL dp_offload_tx_snk_out_arr        : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0);
+                                          
+  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_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);
+                                          
+  SIGNAL dp_offload_rx_src_out_arr        : t_dp_sosi_arr(c_nof_streams-1 DOWNTO 0);
+  SIGNAL dp_offload_rx_src_in_arr         : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0) := (OTHERS=> c_dp_siso_rdy);    
   
-  
-  CONSTANT c_hdr_field_ovr_init         : STD_LOGIC_VECTOR(c_nof_hdr_fields-1 DOWNTO 0) := "111"&"111111111111"&"0011"&"101111111"&"0";
-  
-  CONSTANT c_fifo_size                  : NATURAL := 2*c_bg_block_size;
-
-  CONSTANT c_use_jumbo_frames           : BOOLEAN := FALSE;
-  CONSTANT c_def_1GbE_block_size        : NATURAL := c_bg_block_size;
-
-  CONSTANT c_max_frame_len              : NATURAL := sel_a_b(c_use_jumbo_frames, 9018, c_ip_length);
-  CONSTANT c_max_frame_nof_words        : NATURAL := (c_max_frame_len * c_byte_w ) / c_data_w;
-  CONSTANT c_nof_header_words           : NATURAL := field_slv_len(c_hdr_field_arr) / c_data_w;
-  CONSTANT c_nof_header_bytes           : NATURAL := field_slv_len(c_hdr_field_arr) / c_byte_w;
-  CONSTANT c_nof_crc_words              : NATURAL := 0;
-  CONSTANT c_max_udp_payload_len        : NATURAL := c_max_frame_len-c_nof_header_bytes-c_network_eth_crc_len;
-  CONSTANT c_max_udp_payload_nof_words  : NATURAL := (c_max_udp_payload_len * c_byte_w) / c_data_w;
-  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_max_nof_blocks_per_packet  : NATURAL := c_max_udp_payload_nof_words/c_min_nof_words_per_block;
-  CONSTANT c_def_nof_blocks_per_packet  : NATURAL := 1; 
-
-  SIGNAL hdr_fields_in_arr              : t_slv_1024_arr(c_nof_streams-1 DOWNTO 0);
-  SIGNAL hdr_fields_out_arr             : t_slv_1024_arr(c_nof_streams-1 DOWNTO 0);
-
-  -- System                           
-  SIGNAL sa_rst                         : STD_LOGIC := '0';
-  SIGNAL cs_sim                         : STD_LOGIC;
-  SIGNAL xo_clk                         : STD_LOGIC;
-  SIGNAL xo_rst                         : STD_LOGIC;
-  SIGNAL xo_rst_n                       : STD_LOGIC;
-  SIGNAL mm_clk                         : STD_LOGIC;
-  SIGNAL mm_locked                      : STD_LOGIC;
-  SIGNAL mm_rst                         : STD_LOGIC;  
-  SIGNAL dp_rst                         : STD_LOGIC;
-  SIGNAL dp_clk                         : STD_LOGIC;  
-  SIGNAL dp_pps                         : STD_LOGIC;
-  SIGNAL epcs_clk                       : STD_LOGIC;   
-  -- PIOs
-  SIGNAL pout_wdi                       : STD_LOGIC;
-
-  SIGNAL eth1g_tse_clk                  : STD_LOGIC;
-  SIGNAL eth1g_mm_rst                   : STD_LOGIC;
-  SIGNAL eth1g_tse_mosi                 : t_mem_mosi;
-  SIGNAL eth1g_tse_miso                 : t_mem_miso;
-  SIGNAL eth1g_reg_mosi                 : t_mem_mosi;
-  SIGNAL eth1g_reg_miso                 : t_mem_miso;
-  SIGNAL eth1g_reg_interrupt            : STD_LOGIC;
-  SIGNAL eth1g_ram_mosi                 : t_mem_mosi;
-  SIGNAL eth1g_ram_miso                 : t_mem_miso;
-
-  SIGNAL reg_wdi_mosi                   : t_mem_mosi;
-  SIGNAL reg_wdi_miso                   : t_mem_miso;
-  SIGNAL reg_unb_system_info_mosi       : t_mem_mosi;
-  SIGNAL reg_unb_system_info_miso       : t_mem_miso;
-  SIGNAL rom_unb_system_info_mosi       : t_mem_mosi;
-  SIGNAL rom_unb_system_info_miso       : t_mem_miso;
-  SIGNAL reg_unb_sens_mosi              : t_mem_mosi;
-  SIGNAL reg_unb_sens_miso              : t_mem_miso;
-
-  SIGNAL reg_diag_bg_mosi               : t_mem_mosi;
-  SIGNAL reg_diag_bg_miso               : t_mem_miso;
-  SIGNAL ram_diag_bg_mosi               : t_mem_mosi;
-  SIGNAL ram_diag_bg_miso               : t_mem_miso;
-
-  SIGNAL reg_dp_offload_tx_mosi         : t_mem_mosi;
-  SIGNAL reg_dp_offload_tx_miso         : t_mem_miso;
-  SIGNAL reg_dp_offload_tx_hdr_dat_mosi : t_mem_mosi;
-  SIGNAL reg_dp_offload_tx_hdr_dat_miso : t_mem_miso;
-  SIGNAL reg_dp_offload_tx_hdr_ovr_mosi : t_mem_mosi;
-  SIGNAL reg_dp_offload_tx_hdr_ovr_miso : t_mem_miso;
-  SIGNAL reg_dp_offload_rx_hdr_dat_mosi : t_mem_mosi;
-  SIGNAL reg_dp_offload_rx_hdr_dat_miso : t_mem_miso;
-  
-  --. 10G Receiver       
-  SIGNAL reg_tr_10GbE_mosi              : t_mem_mosi;
-  SIGNAL reg_tr_10GbE_miso              : t_mem_miso;
-  SIGNAL reg_tr_xaui_mosi               : t_mem_mosi;
-  SIGNAL reg_tr_xaui_miso               : t_mem_miso;
-  SIGNAL reg_mdio_mosi_arr              : t_mem_mosi_arr(c_unb1_board_nof_mdio-1 DOWNTO 0);
-  SIGNAL reg_mdio_miso_arr              : t_mem_miso_arr(c_unb1_board_nof_mdio-1 DOWNTO 0);
-
-  SIGNAL reg_mdio_0_mosi                : t_mem_mosi;
-  SIGNAL reg_mdio_0_miso                : t_mem_miso;
-  SIGNAL reg_mdio_1_mosi                : t_mem_mosi;
-  SIGNAL reg_mdio_1_miso                : t_mem_miso;
-  SIGNAL reg_mdio_2_mosi                : t_mem_mosi;
-  SIGNAL reg_mdio_2_miso                : t_mem_miso;
-
-  SIGNAL reg_bsn_monitor_mosi           : t_mem_mosi;
-  SIGNAL reg_bsn_monitor_miso           : t_mem_miso;
-  SIGNAL ram_diag_data_buffer_mosi      : t_mem_mosi;
-  SIGNAL ram_diag_data_buffer_miso      : t_mem_miso;
-  SIGNAL reg_diag_data_buffer_mosi      : t_mem_mosi;
-  SIGNAL reg_diag_data_buffer_miso      : t_mem_miso;  
-
-  SIGNAL reg_ppsh_mosi                  : t_mem_mosi;     
-  SIGNAL reg_ppsh_miso                  : t_mem_miso;  
-
-  SIGNAL block_gen_src_out_arr          : t_dp_sosi_arr(c_nof_streams-1 DOWNTO 0);
-  SIGNAL block_gen_src_in_arr           : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0) := (OTHERS=> c_dp_siso_rdy);
-  SIGNAL block_gen_src_in_arr_temp      : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0) := (OTHERS=> c_dp_siso_rdy);
-
-  SIGNAL dp_offload_tx_snk_in_arr       : t_dp_sosi_arr(c_nof_streams-1 DOWNTO 0);
-  SIGNAL dp_offload_tx_snk_out_arr      : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0);
-  
-  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_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);
-
-  SIGNAL dp_offload_rx_src_out_arr      : t_dp_sosi_arr(c_nof_streams-1 DOWNTO 0);
-  SIGNAL dp_offload_rx_src_in_arr       : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0) := (OTHERS=> c_dp_siso_rdy);    
-  
-  SIGNAL bsn_monitor_snk_in_arr         : t_dp_sosi_arr(c_nof_bsn_mon_streams-1 DOWNTO 0);                                                            
-  SIGNAL bsn_monitor_snk_out_arr        : t_dp_siso_arr(c_nof_bsn_mon_streams-1 DOWNTO 0) := (OTHERS=> c_dp_siso_rdy);
+  SIGNAL dp_offload_rx_filter_src_out_arr : t_dp_sosi_arr(c_nof_streams-1 DOWNTO 0);
+  SIGNAL dp_offload_rx_filter_src_in_arr  : t_dp_siso_arr(c_nof_streams-1 DOWNTO 0) := (OTHERS=> c_dp_siso_rdy);
+    
+  SIGNAL bsn_monitor_snk_in_arr           : t_dp_sosi_arr(c_nof_bsn_mon_streams-1 DOWNTO 0);                                                            
+  SIGNAL bsn_monitor_snk_out_arr          : t_dp_siso_arr(c_nof_bsn_mon_streams-1 DOWNTO 0) := (OTHERS=> c_dp_siso_rdy);
 
   -- Interface: 10GbE                                    
-  SIGNAL xaui_tx_arr                    : t_xaui_arr(c_nof_10GbE_streams-1 DOWNTO 0);
-  SIGNAL xaui_rx_arr                    : t_xaui_arr(c_nof_10GbE_streams-1 DOWNTO 0);
-  SIGNAL unb_xaui_tx_arr                : t_unb1_board_xaui_sl_2arr(c_nof_10GbE_streams-1 DOWNTO 0);
-  SIGNAL unb_xaui_rx_arr                : t_unb1_board_xaui_sl_2arr(c_nof_10GbE_streams-1 DOWNTO 0);
-  SIGNAL mdio_mdc_arr                   : STD_LOGIC_VECTOR(c_nof_10GbE_streams-1 DOWNTO 0);  
-  SIGNAL mdio_mdat_in_arr               : STD_LOGIC_VECTOR(c_nof_10GbE_streams-1 DOWNTO 0);
-  SIGNAL mdio_mdat_oen_arr              : STD_LOGIC_VECTOR(c_nof_10GbE_streams-1 DOWNTO 0);
-
-  SIGNAL TEST_STOP                      : std_logic_vector(2 downto 0 );          
-  SIGNAL TEST_ERROR                     : std_logic_vector(2 downto 0 );
-  SIGNAL TEST_FIFO_FULL                 : std_logic_vector(1 downto 0 );
-  SIGNAL TEST_BLOCK_RD                  : std_logic_vector(2 downto 0 );
-  SIGNAL address                        : std_logic_vector(18 downto 0 );  
-  SIGNAL read_data                      : std_logic_vector(31 downto 0 );
-  SIGNAL read_en                        : std_logic;
-  SIGNAL write_en                       : std_logic;
-  SIGNAL write_data                     : std_logic_vector(31 downto 0 );
-
-  SIGNAL fi_snk_out                     : t_dp_siso;
-  SIGNAL fi_snk_in                      : t_dp_sosi;
-  SIGNAL fi_src_in                      : t_dp_siso;
-  SIGNAL fi_src_out                     : t_dp_sosi;
-  SIGNAL fo_snk_out                     : t_dp_siso;
-  SIGNAL fo_snk_in                      : t_dp_sosi;
-  SIGNAL fo_src_in                      : t_dp_siso;
-  SIGNAL fo_src_out                     : t_dp_sosi;
+  SIGNAL xaui_tx_arr                      : t_xaui_arr(c_nof_10GbE_streams-1 DOWNTO 0);
+  SIGNAL xaui_rx_arr                      : t_xaui_arr(c_nof_10GbE_streams-1 DOWNTO 0);
+  SIGNAL unb_xaui_tx_arr                  : t_unb1_board_xaui_sl_2arr(c_nof_10GbE_streams-1 DOWNTO 0);
+  SIGNAL unb_xaui_rx_arr                  : t_unb1_board_xaui_sl_2arr(c_nof_10GbE_streams-1 DOWNTO 0);
+  SIGNAL mdio_mdc_arr                     : STD_LOGIC_VECTOR(c_nof_10GbE_streams-1 DOWNTO 0);  
+  SIGNAL mdio_mdat_in_arr                 : STD_LOGIC_VECTOR(c_nof_10GbE_streams-1 DOWNTO 0);
+  SIGNAL mdio_mdat_oen_arr                : STD_LOGIC_VECTOR(c_nof_10GbE_streams-1 DOWNTO 0);
+                                          
+  SIGNAL TEST_STOP                        : std_logic_vector(2 downto 0 );          
+  SIGNAL TEST_ERROR                       : std_logic_vector(2 downto 0 );
+  SIGNAL TEST_FIFO_FULL                   : std_logic_vector(1 downto 0 );
+  SIGNAL TEST_BLOCK_RD                    : std_logic_vector(2 downto 0 );
+  SIGNAL address                          : std_logic_vector(18 downto 0 );  
+  SIGNAL read_data                        : std_logic_vector(31 downto 0 );
+  SIGNAL read_en                          : std_logic;
+  SIGNAL write_en                         : std_logic;
+  SIGNAL write_data                       : std_logic_vector(31 downto 0 );
+                                          
+  SIGNAL fi_snk_out                       : t_dp_siso;
+  SIGNAL fi_snk_in                        : t_dp_sosi;
+  SIGNAL fi_src_in                        : t_dp_siso;
+  SIGNAL fi_src_out                       : t_dp_sosi;
+  SIGNAL fo_snk_out                       : t_dp_siso;
+  SIGNAL fo_snk_in                        : t_dp_sosi;
+  SIGNAL fo_src_in                        : t_dp_siso;
+  SIGNAL fo_src_out                       : t_dp_sosi;
                                         
 BEGIN
 
@@ -517,6 +520,7 @@ BEGIN
     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_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);
   END GENERATE;
 
   -----------------------------------------------------------------------------
@@ -548,7 +552,43 @@ BEGIN
 
     hdr_fields_out_arr    => hdr_fields_out_arr
   );
+  -------------------------
+  --WORK IN PROGRESS
+  -------------------------
+  
+  PROCESS(hdr_fields_in_arr)
+  BEGIN
+    hdr_fields_in_rx_arr <= hdr_fields_in_arr;
+    hdr_fields_in_rx_arr(0)(field_hi(c_hdr_field_arr, "eth_dst_mac" ) DOWNTO field_lo(c_hdr_field_arr, "eth_dst_mac" )) <= x"00074306C700";  --jop63
+    hdr_fields_in_rx_arr(0)(field_hi(c_hdr_field_arr, "ip_dst_addr" ) DOWNTO field_lo(c_hdr_field_arr, "ip_dst_addr" )) <= x"c0a80102";      --jop63
+  END PROCESS;     
+  
+  u_header_check : ENTITY dp_lib.dp_offload_rx_filter
+  GENERIC MAP(
+    g_bypass							=> c_bypass_rx_filter,
+    g_nof_streams         => c_nof_streams,     --: POSITIVE;
+    g_data_w              => c_data_w,          --: NATURAL; 
+    g_hdr_field_arr       => c_hdr_field_arr,   --: t_common_field_arr;
+    g_eth_dst_mac_ena     => TRUE,              --: BOOLEAN;
+    g_ip_dst_addr_ena     => TRUE,              --: BOOLEAN;
+    g_ip_total_length_ena => TRUE,              --: BOOLEAN;
+    g_udp_dst_port_ena    => TRUE               --: BOOLEAN     
+  ) 
+  PORT MAP(
+    
+    dp_rst             => dp_rst,                         
+    dp_clk             => dp_clk,                         
+                                               
+    snk_in_arr         => dp_offload_rx_src_out_arr,  
+    snk_out_arr        => dp_offload_rx_src_in_arr,   
 
+    src_out_arr        => dp_offload_rx_filter_src_out_arr,       
+    src_in_arr         => dp_offload_rx_filter_src_in_arr,         
+
+    hdr_fields_out_arr => hdr_fields_out_arr,             
+    hdr_fields_in_arr  => hdr_fields_in_rx_arr            
+  );
+  
   u_dp_bsn_monitor : ENTITY dp_lib.mms_dp_bsn_monitor
   GENERIC MAP (
     g_nof_streams        => c_nof_bsn_mon_streams,
@@ -585,7 +625,8 @@ BEGIN
   bsn_monitor_snk_in_arr(4)  <= block_gen_src_out_arr(0);  
   bsn_monitor_snk_out_arr(4) <= block_gen_src_in_arr(0);
   
-  dp_offload_rx_src_in_arr <= (OTHERS=>c_dp_siso_rdy);
+  --dp_offload_rx_src_in_arr <= (OTHERS=>c_dp_siso_rdy);
+  dp_offload_rx_filter_src_in_arr <= (OTHERS=>c_dp_siso_rdy);
 
   u_diag_data_buffer : ENTITY diag_lib.mms_diag_data_buffer
   GENERIC MAP (    
@@ -605,8 +646,8 @@ BEGIN
     reg_data_buf_mosi => reg_diag_data_buffer_mosi,
     reg_data_buf_miso => reg_diag_data_buffer_miso,
 
-    in_sync           => dp_offload_rx_src_out_arr(0).sync,
-    in_sosi_arr       => dp_offload_rx_src_out_arr
+    in_sync           => dp_offload_rx_filter_src_out_arr(0).sync,    --dp_offload_rx_src_out_arr(0).sync,
+    in_sosi_arr       => dp_offload_rx_filter_src_out_arr         --dp_offload_rx_src_out_arr
   );
 
   -----------------------------------------------------------------------------