diff --git a/libraries/base/dp/src/vhdl/dp_switch.vhd b/libraries/base/dp/src/vhdl/dp_switch.vhd
index 12df30fd458965359da22dcc57a59848be5a6c13..1ddb92f94a76d9b73f5cc1dbf3ff7844f3d99bd2 100644
--- a/libraries/base/dp/src/vhdl/dp_switch.vhd
+++ b/libraries/base/dp/src/vhdl/dp_switch.vhd
@@ -83,9 +83,10 @@ ARCHITECTURE str OF dp_switch IS
   SIGNAL dp_mux_sel_ctrl     : NATURAL;
 
   SIGNAL xonoff_snk_in_arr   : t_dp_sosi_arr(g_nof_inputs-1 DOWNTO 0);
+  SIGNAL xonoff_snk_out_arr  : t_dp_siso_arr(g_nof_inputs-1 DOWNTO 0);
 
   SIGNAL inverted_snk_in_arr : t_dp_sosi_arr(0 TO g_nof_inputs-1);
-  SIGNAL snk_out_arr         : t_dp_siso_arr(0 TO g_nof_inputs-1);
+  SIGNAL inverted_snk_out_arr: t_dp_siso_arr(0 TO g_nof_inputs-1);
   
 BEGIN
 
@@ -108,15 +109,7 @@ BEGIN
 
     slv_out => mm_fields_out
   );
-
-
-  ------------------------------------------------------------------------------
-  -- invert snk_in_arr, dp_mux uses a TO array. 
-  ------------------------------------------------------------------------------
-  gen_dp_switch_snk_in_arr : FOR i IN 0 TO g_nof_inputs-1 GENERATE
-    inverted_snk_in_arr(i) <= xonoff_snk_in_arr(i);
-  END GENERATE;
-
+  
   ------------------------------------------------------------------------------
   -- put dp_xonoff block inbetween data path to control data flow. 
   ------------------------------------------------------------------------------
@@ -128,11 +121,19 @@ BEGIN
       -- Frame in
       in_sosi     => snk_in_arr(i),
       -- Frame out
-      out_siso    => snk_out_arr(i),     -- flush control via out_siso.xon from dp_mux
+      out_siso    => xonoff_snk_out_arr(i),     -- flush control done by dp_mux.snk_out_arr
       out_sosi    => xonoff_snk_in_arr(i) 
     );
   END GENERATE;
 
+  ------------------------------------------------------------------------------
+  -- invert snk_in_arr, dp_mux uses a TO array. 
+  ------------------------------------------------------------------------------
+  gen_dp_switch_snk_in_arr : FOR i IN 0 TO g_nof_inputs-1 GENERATE
+    inverted_snk_in_arr(i) <= xonoff_snk_in_arr(i);
+    xonoff_snk_out_arr(i) <= inverted_snk_out_arr(i);
+  END GENERATE;
+
   ------------------------------------------------------------------------------
   -- Don't allow user to select a non-existent input
   -- . If user requests non-existent input, the default input is forwarded instead.
@@ -146,6 +147,7 @@ BEGIN
   u_dp_mux : ENTITY work.dp_mux
   GENERIC MAP (
     g_mode            => 4, -- Use sel_ctrl
+    g_sel_ctrl_invert => FALSE, -- Dont invert, data is already reverse mapped from DOWNTO >> TO arrays.
     g_nof_input       => g_nof_inputs,
     g_use_fifo        => g_use_fifo,  
     g_bsn_w           => g_bsn_w,  
@@ -169,7 +171,7 @@ BEGIN
     sel_ctrl    => dp_mux_sel_ctrl,
 
     snk_in_arr  => inverted_snk_in_arr,
-    snk_out_arr => snk_out_arr,
+    snk_out_arr => inverted_snk_out_arr,
 
     src_out     => src_out,
     src_in      => c_dp_siso_rdy