DragonFly BSD
DragonFly commits List (threaded) for 2012-06
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

git: tcp: Add XMITNOW which bypasses the Nagle algorithm temporarily


From: Sepherosa Ziehau <sephe@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 27 Jun 2012 01:34:35 -0700 (PDT)

commit c1fabe8562a4226eed3605179909e4cf398eb6df
Author: Sepherosa Ziehau <sephe@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
    recovery:
    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(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/c1fabe8562a4226eed3605179909e4cf398eb6df


-- 
DragonFly BSD source repository



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]