aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/transport
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-21 08:39:45 -0700
commit629822d732ac2e677436833ac8e859d05386e9e5 (patch)
tree1713e690d4e54d522886b345565b28767a2d185e /host/lib/transport
parent0dfbf9771e605c179f19f870ab61b4ec9144332e (diff)
downloaduhd-629822d732ac2e677436833ac8e859d05386e9e5.tar.gz
uhd-629822d732ac2e677436833ac8e859d05386e9e5.tar.bz2
uhd-629822d732ac2e677436833ac8e859d05386e9e5.zip
transport: Also send flow control ACKs on sequence errors
Diffstat (limited to 'host/lib/transport')
-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 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