aboutsummaryrefslogtreecommitdiffstats
path: root/host
diff options
context:
space:
mode:
authorMartin Braun <martin.braun@ettus.com>2016-03-16 11:51:49 -0700
committerMartin Braun <martin.braun@ettus.com>2016-03-16 11:51:49 -0700
commit311ccee70f5206360f5f3ed6ae870f991e608bc4 (patch)
tree113ed25aeb5ae39015271ad6b8abc3a811bb8fab /host
parent8930d853f3ee2ac91fc7fd6b41046ca972da3c3f (diff)
downloaduhd-311ccee70f5206360f5f3ed6ae870f991e608bc4.tar.gz
uhd-311ccee70f5206360f5f3ed6ae870f991e608bc4.tar.bz2
uhd-311ccee70f5206360f5f3ed6ae870f991e608bc4.zip
transport: Also send flow control ACKs on sequence errors
Diffstat (limited to 'host')
-rw-r--r--host/lib/transport/super_recv_packet_handler.hpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/host/lib/transport/super_recv_packet_handler.hpp b/host/lib/transport/super_recv_packet_handler.hpp
index 8742d1d16..8bfa1973a 100644
--- a/host/lib/transport/super_recv_packet_handler.hpp
+++ b/host/lib/transport/super_recv_packet_handler.hpp
@@ -421,6 +421,12 @@ private:
const size_t expected_packet_count = _props[index].packet_count;
_props[index].packet_count = (info.ifpi.packet_count + 1) & seq_mask;
if (expected_packet_count != info.ifpi.packet_count){
+ if (_props[index].handle_flowctrl) {
+ // Always update flow control in this case, because we don't
+ // know which packet was dropped and what state the upstream
+ // flow control is in.
+ _props[index].handle_flowctrl(info.ifpi.packet_count);
+ }
return PACKET_SEQUENCE_ERROR;
}
#endif