From f8701eb80d9fd3bf8ce2997041c864e27790b043 Mon Sep 17 00:00:00 2001 From: Tom Bereknyei Date: Sun, 10 Sep 2017 14:53:56 -0400 Subject: rfnoc: Do not pop a sequence number early The ctrl_iface class will assume that a response packet is available. There are cases where no response packet is available, in which case sequence numbers should not get popped from the stack prematurely. --- host/lib/rfnoc/ctrl_iface.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/host/lib/rfnoc/ctrl_iface.cpp b/host/lib/rfnoc/ctrl_iface.cpp index b2ac1778e..288f3f065 100644 --- a/host/lib/rfnoc/ctrl_iface.cpp +++ b/host/lib/rfnoc/ctrl_iface.cpp @@ -187,7 +187,6 @@ private: //get seq to ack from outstanding packets list UHD_ASSERT_THROW(not _outstanding_seqs.empty()); const size_t seq_to_ack = _outstanding_seqs.front(); - _outstanding_seqs.pop(); //parse the packet vrt::if_packet_info_t packet_info; @@ -204,6 +203,7 @@ private: { UHD_ASSERT_THROW(bool(buff)); UHD_ASSERT_THROW(buff->size() > 0); + _outstanding_seqs.pop(); } catch(const std::exception &ex) { @@ -236,6 +236,7 @@ private: accum_timeout += short_timeout; UHD_ASSERT_THROW(accum_timeout < _timeout); } + _outstanding_seqs.pop(); pkt = resp_buff.data; packet_info.num_packet_words32 = sizeof(resp_buff)/sizeof(uint32_t); -- cgit v1.2.3