From 7d71823feb6adb3ddd5fda36847c9957b240d5cc Mon Sep 17 00:00:00 2001 From: Michael West Date: Thu, 14 Feb 2019 10:03:13 -0800 Subject: RFNoC: Fix flush in source_block_ctrl_base The configure_flow_control_out function was set to dump any packets onto the crossbar, which could cause issues on the crossbar and in downstream blocks. Replacing wil a call to the _flush() function in the block_ctrl_base parent class, which drops the packets so they do not get put onto the crossbar. Signed-off-by: Michael West --- host/lib/rfnoc/source_block_ctrl_base.cpp | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) (limited to 'host/lib') diff --git a/host/lib/rfnoc/source_block_ctrl_base.cpp b/host/lib/rfnoc/source_block_ctrl_base.cpp index 656ab26af..994d66380 100644 --- a/host/lib/rfnoc/source_block_ctrl_base.cpp +++ b/host/lib/rfnoc/source_block_ctrl_base.cpp @@ -102,24 +102,7 @@ void source_block_ctrl_base::configure_flow_control_out(const bool enable_fc_out % buf_size_bytes % unique_id())); } - // Disable flow control entirely and let all upstream data flush out - // We need to do this every time the window is changed because - // a) We don't know what state the flow-control module was left in - // in the previous run (it should still be enabled) - // b) Changing the window size where data is buffered upstream may - // result in stale packets entering the stream. - sr_write(SR_FLOW_CTRL_EN, 0, block_port); - - // Wait for data to flush out. - // In the FPGA we are guaranteed that all buffered packets are more-or-less - // consecutive. 1ms@200MHz = 200,000 cycles of "flush time". 200k cycles = 200k * 8 - // bytes (64 bits) = 1.6MB of data that can be flushed. Typically in the FPGA we have - // buffering in the order of kilobytes so waiting for 1MB to flush is more than enough - // time. - // TODO: Enhancement. We should get feedback from the FPGA about when the - // source_flow_control - // module is done flushing. - std::this_thread::sleep_for(std::chrono::milliseconds(1)); + _flush(block_port); // Enable source flow control module and conditionally enable byte based and/or packet // count based flow control -- cgit v1.2.3