diff options
author | Randall Stewart <rrs@FreeBSD.org> | 2021-12-06 14:56:09 +0000 |
---|---|---|
committer | Randall Stewart <rrs@FreeBSD.org> | 2021-12-06 14:56:09 +0000 |
commit | dadbc042500b57cb2ceb25bc0ec39583142e0c45 (patch) | |
tree | 14b137ee6ddb36a9e0fbeb5c1096a74d2f50353c | |
parent | e43d081f352c97c0cd1c2395f3780601cec09abf (diff) | |
download | src-dadbc042500b57cb2ceb25bc0ec39583142e0c45.tar.gz src-dadbc042500b57cb2ceb25bc0ec39583142e0c45.zip |
tcp: rack fails to send out a TLP after a MTU change
When rack sends out a TLP it sets up various state to make sure
it avoids the cwnd (its been more than 1 RTT since our last send) and
it may at times send new data. If an MTU change as occurred
and our cwnd has collapsed we can have a situation where must_retran
flag is set and we obey the cwnd thus never sending the TLP and then
sitting stuck.
This one line fix addresses that problem
Reviewed by: Michael Tuexen
Sponsored by: Netflix Inc.
Differential Revision: https://reviews.freebsd.org/D33231
-rw-r--r-- | sys/netinet/tcp_stacks/rack.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/netinet/tcp_stacks/rack.c b/sys/netinet/tcp_stacks/rack.c index 7391734a9786..16faa887530f 100644 --- a/sys/netinet/tcp_stacks/rack.c +++ b/sys/netinet/tcp_stacks/rack.c @@ -17139,6 +17139,7 @@ again: len = cwin; } if (rack->r_must_retran && + (doing_tlp == 0) && (rsm == NULL)) { /* * Non-Sack and we had a RTO or Sack/non-Sack and a |