git: tcp: Add XMITNOW which bypasses the Nagle algorithm temporarily
sephe at crater.dragonflybsd.org
Wed Jun 27 01:34:35 PDT 2012
Author: Sepherosa Ziehau <sephe at dragonflybsd.org>
Date: Fri Jun 15 17:54:59 2012 +0800
tcp: Add XMITNOW which bypasses the Nagle algorithm temporarily
This flag acts differently from ACKNOW that no pure ACK will be sent.
It is currently used by the (extended) limited transmit and the SACK
based fast recovery.
This flag is intended to fix the following bug in the SACK based fast
The NextSeg() requires that if the unACKed segments could not pass
IsLost(), previously unsent segment should be selected. In the
application limited period, the size of the previously unsent segment
could be less than the MSS, thus it could not be sent immediately
according to the Nagle algorithm. In our SACK based fast recovery
implementation, if the tcp_output() sends no segments, the current
recovery transmit process will stop immediately. This could stop ACK
clock and cause timeout retransmit, which could be avoided, if the
Nagle algorithm is bypassed temporarily for the small unsent segment
selected by NextSeg().
When this flag is used with (extended) limited transmit, certain amount
of spurious early retranmits could be avoided.
Summary of changes:
sys/netinet/tcp_input.c | 3 +++
sys/netinet/tcp_output.c | 9 ++++++---
sys/netinet/tcp_var.h | 2 +-
3 files changed, 10 insertions(+), 4 deletions(-)
DragonFly BSD source repository
More information about the Commits