diff --git a/libraries/base/dp/src/vhdl/dp_xonoff.vhd b/libraries/base/dp/src/vhdl/dp_xonoff.vhd
index 34c1b7cdbfe3bf500ebd913ecc42d9fb949a9493..2a1ae13bfeaf1bbfe36f3fa9a787ab6e10cf2be0 100644
--- a/libraries/base/dp/src/vhdl/dp_xonoff.vhd
+++ b/libraries/base/dp/src/vhdl/dp_xonoff.vhd
@@ -21,6 +21,11 @@
 
 -- Purpose: Add flow XON-XOFF control by flushing frames
 -- Description:
+--   The in_siso.ready = out_siso.ready so passed on unchanged, to support
+--   detailed output to input flow control per cycle. The in_siso.xon is
+--   always '1', because the out_siso.xon is taken care of in this
+--   dp_xonoff.vhd by flushing any in_sosi data when out_siso.xon = '0'.
+--
 --   When g_bypass=TRUE then the in and out are wired and the component is void.
 --   When g_bypass=FALSE then:
 --     The output is ON when flush='0'.
@@ -70,7 +75,8 @@ BEGIN
   END GENERATE;
   
   no_bypass : IF g_bypass=FALSE GENERATE
-    in_siso   <= out_siso;           -- pass on ready for detailed flow control per cycle
+    in_siso.ready <= out_siso.ready;  -- pass on ready for detailed flow control per cycle
+    in_siso.xon <= '1';               -- upstream can remain on, because flush will handle out_siso.xon
     nxt_flush <= NOT out_siso.xon;   -- use xon for flow control at frame level
   
     p_clk: PROCESS(clk, rst)