From 175e553c44996925dc0f3e135f78716ce6f0e4ea Mon Sep 17 00:00:00 2001 From: michael-west Date: Mon, 26 Jul 2021 14:42:41 -0700 Subject: B200: Fix overflow handling - Use FPGA images with fixed sc12 converter. - Properly flush channels and restart streaming in the case of an overrun. Signed-off-by: michael-west --- host/lib/usrp/b200/b200_io_impl.cpp | 23 +++++++++-------------- images/manifest.txt | 8 ++++---- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/host/lib/usrp/b200/b200_io_impl.cpp b/host/lib/usrp/b200/b200_io_impl.cpp index 2433ab2db..dac39915b 100644 --- a/host/lib/usrp/b200/b200_io_impl.cpp +++ b/host/lib/usrp/b200/b200_io_impl.cpp @@ -496,28 +496,23 @@ void b200_impl::handle_overflow(const size_t radio_index) _radio_perifs[radio_index].framer->in_continuous_streaming_mode(); // stop streaming my_streamer->issue_stream_cmd(stream_cmd_t::STREAM_MODE_STOP_CONTINUOUS); - // flush demux - _demux->realloc_sid(B200_RX_DATA0_SID); - _demux->realloc_sid(B200_RX_DATA1_SID); - // flush actual transport - while (_data_transport->get_recv_buff(0.001)) { - } + // flush data + while (_demux->get_recv_buff(B200_RX_DATA0_SID, 0.001)) {} + while (_demux->get_recv_buff(B200_RX_DATA1_SID, 0.001)) {} // restart streaming if (in_continuous_streaming_mode) { stream_cmd_t stream_cmd(stream_cmd_t::STREAM_MODE_START_CONTINUOUS); stream_cmd.stream_now = false; stream_cmd.time_spec = _radio_perifs[radio_index].time64->get_time_now() + time_spec_t(0.01); - // FIXME: temporarily remove the start stream command. - // This will avoid an issue that gets the b210 in a bad state. - // my_streamer->issue_stream_cmd(stream_cmd); + my_streamer->issue_stream_cmd(stream_cmd); } } else { - while (_data_transport->get_recv_buff(0.001)) { - } - // FIXME: temporarily remove the overflow handling that re-issues a stream - // command. This will avoid an issue that gets the b210 in a bad state. - // _radio_perifs[radio_index].framer->handle_overflow(); + const uint32_t sid = radio_index == 0 ? B200_RX_DATA0_SID : B200_RX_DATA1_SID; + // flush data + while (_demux->get_recv_buff(sid, 0.001)) {} + // restart streaming + _radio_perifs[radio_index].framer->handle_overflow(); } } diff --git a/images/manifest.txt b/images/manifest.txt index 968381c5f..a84a2dc6f 100644 --- a/images/manifest.txt +++ b/images/manifest.txt @@ -48,10 +48,10 @@ n3xx_common_mender_default meta-ettus-v4.1.0.1 n3xx/meta-ettus-v4.1.0.1/n3 n3xx_common_sdimg_default meta-ettus-v4.1.0.1 n3xx/meta-ettus-v4.1.0.1/n3xx_common_sdimg_default-v4.1.0.1.zip 0 # B200-Series -b2xx_b200_fpga_default uhd-d5c2750 b2xx/uhd-d5c2750/b2xx_b200_fpga_default-gd5c2750.zip 9936f356c51a86a98ecb81851ed217b1aaadea52e5a5efa0a1bca90edfec30cf -b2xx_b200mini_fpga_default uhd-f2ec5c9 b2xx/uhd-f2ec5c9/b2xx_b200mini_fpga_default-gf2ec5c9.zip 3c122145a5bd23dc50ac35b9d18dfe3f3224eaed4242274765ada89c55838ce4 -b2xx_b210_fpga_default uhd-d5c2750 b2xx/uhd-d5c2750/b2xx_b210_fpga_default-gd5c2750.zip accf37aafe878e45d16b09f326761d5848241f355929cd4745f40aec822d4385 -b2xx_b205mini_fpga_default uhd-f2ec5c9 b2xx/uhd-f2ec5c9/b2xx_b205mini_fpga_default-gf2ec5c9.zip a38fcecabcef43d57e463aa50f0b07ba21d7e9211428fbc5ef47bfeb75542e93 +b2xx_b200_fpga_default uhd-439770b9 b2xx/uhd-439770b9/b2xx_b200_fpga_default-g439770b9.zip 819914603bb925c3d3be4aca775c39fce570b2d5cbbefbfb228231cae67a2392 +b2xx_b200mini_fpga_default uhd-439770b9 b2xx/uhd-439770b9/b2xx_b200mini_fpga_default-g439770b9.zip d7bee9b18c2c6b4bd4b06bd8f684d6098b2fdb628c82afeaad06767b6b8c9787 +b2xx_b210_fpga_default uhd-439770b9 b2xx/uhd-439770b9/b2xx_b210_fpga_default-g439770b9.zip ba47e5b28425df2a390926c432fedf82aec000b33ea5ae7f268ecefb7676e19c +b2xx_b205mini_fpga_default uhd-439770b9 b2xx/uhd-439770b9/b2xx_b205mini_fpga_default-g439770b9.zip 08b4beb843bc4cf6b9d8a81102a9598745e3c3fb70a0a0a40baa0aa2395e789a b2xx_common_fw_default uhd-7f7d016 b2xx/uhd-7f7d016/b2xx_common_fw_default-g7f7d016.zip 22ac0e54cc90d53d8494d481439447a0c89b9bbaced6fabe24df260eda3ce3a3 # USRP2 Devices -- cgit v1.2.3