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-21 08:39:45 -0700 |
commit | 629822d732ac2e677436833ac8e859d05386e9e5 (patch) | |
tree | 1713e690d4e54d522886b345565b28767a2d185e /host | |
parent | 0dfbf9771e605c179f19f870ab61b4ec9144332e (diff) | |
download | uhd-629822d732ac2e677436833ac8e859d05386e9e5.tar.gz uhd-629822d732ac2e677436833ac8e859d05386e9e5.tar.bz2 uhd-629822d732ac2e677436833ac8e859d05386e9e5.zip |
transport: Also send flow control ACKs on sequence errors
Diffstat (limited to 'host')
-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 ea6143f89..28adff0d1 100644 --- a/host/lib/transport/super_recv_packet_handler.hpp +++ b/host/lib/transport/super_recv_packet_handler.hpp @@ -427,6 +427,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 |