diff options
author | Martin Braun <martin.braun@ettus.com> | 2016-03-16 11:51:49 -0700 |
---|---|---|
committer | Martin Braun <martin.braun@ettus.com> | 2016-03-16 11:51:49 -0700 |
commit | 311ccee70f5206360f5f3ed6ae870f991e608bc4 (patch) | |
tree | 113ed25aeb5ae39015271ad6b8abc3a811bb8fab | |
parent | 8930d853f3ee2ac91fc7fd6b41046ca972da3c3f (diff) | |
download | uhd-311ccee70f5206360f5f3ed6ae870f991e608bc4.tar.gz uhd-311ccee70f5206360f5f3ed6ae870f991e608bc4.tar.bz2 uhd-311ccee70f5206360f5f3ed6ae870f991e608bc4.zip |
transport: Also send flow control ACKs on sequence errors
-rw-r--r-- | host/lib/transport/super_recv_packet_handler.hpp | 6 |
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 |