diff --git a/libraries/base/dp/src/vhdl/dp_offload_rx.vhd b/libraries/base/dp/src/vhdl/dp_offload_rx.vhd
index 9effa4c7f350bc97dcadd99b59682feabad782f9..59e71bb079dfe57dd3b9b5f9efec91699a1e2206 100644
--- a/libraries/base/dp/src/vhdl/dp_offload_rx.vhd
+++ b/libraries/base/dp/src/vhdl/dp_offload_rx.vhd
@@ -31,6 +31,7 @@ ENTITY dp_offload_rx IS
   GENERIC (
     g_nof_streams   : NATURAL;
     g_data_w        : NATURAL;
+    g_symbol_w      : NATURAL := 0;   -- default 0 yields g_symbol_w = g_data_w
     g_hdr_field_arr : t_common_field_arr;
     g_remove_crc    : BOOLEAN := FALSE;
     g_crc_nof_words : NATURAL := 0
@@ -59,7 +60,8 @@ END dp_offload_rx;
 
 ARCHITECTURE str OF dp_offload_rx IS 
 
-  CONSTANT c_nof_header_words         : NATURAL := field_slv_len(g_hdr_field_arr) / g_data_w;
+  CONSTANT c_symbol_w                 : NATURAL := sel_a_b(g_symbol_w = 0, g_data_w, g_symbol_w);
+  CONSTANT c_nof_header_symbols       : NATURAL := field_slv_len(g_hdr_field_arr) / c_symbol_w;
 
   CONSTANT c_field_sel                 : STD_LOGIC_VECTOR(g_hdr_field_arr'RANGE) := (OTHERS=>'0');-- Not used in sink mode but requires set range
 
@@ -92,8 +94,8 @@ BEGIN
     u_dp_split : ENTITY work.dp_split 
     GENERIC MAP (
       g_data_w        => g_data_w,
-      g_symbol_w      => g_data_w,
-      g_nof_symbols   => c_nof_header_words
+      g_symbol_w      => c_symbol_w,
+      g_nof_symbols   => c_nof_header_symbols
     )
     PORT MAP (
       rst         => dp_rst,