git: kernel - network adjustments (netisr, tcp, and socket buffer changes)

Matthew Dillon dillon at crater.dragonflybsd.org
Fri Jul 18 00:00:45 PDT 2014


commit b210f45eabf9e9fa3134351da0046c54fdb3315f
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Thu Jul 17 23:52:54 2014 -0700

    kernel - network adjustments (netisr, tcp, and socket buffer changes)
    
    * Change sowakeup() to use an atomic fetch when testing WAIT/WAKEUP for
      a quick return.  It is now coded properly.  Previous coding is not known
      to have created any bugs.
    
    * Change sowakeup() to use ssb_space_prealloc() instead of ssb_space()
      when testing against the transmit low-water mark.  This is a bug fix
      which primarily effects very tiny write()'s.  The prior code is not
      known to have created any problems.
    
    * Make the netisr packet counter before doing a rollup programmer and
      change the default from 512 to 32 for the moment.  This may be changed
      back to 512 (or some number inbetween) after further testing.
    
      The issue here is that interrupt/netisr pipelining can cause ack aggregation
      to be delayed for too many packets.
    
    * For TCP, when timestamps are not being used, pass the correct delta
      to tcp_xmit_timer() in our fallback.  The function expects N+1.  This
      should improve/fix incorrect rtt calculations when tcp timestamps are
      not in use.
    
    * Fix an edge case in tcp_xmit_bandwidth_limit() where the 'ticks' global
      could change values out from under the code.  Load the global into a local
      variable.
    
    * Change the inflight code to use (t_srtt + t_rttvar) instead of
      (t_srtt + t_rttbest) / 2.
    
      This needs fine-tuning, the buffer is still too big.  Expect more commits
      later.
    
    * Call sowwakeup() when appending a mbuf to a stream.  The append can call
      sbcompress() and make a stream buffer that has hit its mbuf limit writable
      again.
    
    * Remove the ssb_notify() macro and collapse the sorwakeup() and sowwakeup()
      macros.  They now just call sowakeup() on the appropriate sockbuf.  The
      notify test is now done in sowakeup().

Summary of changes:
 sys/kern/uipc_socket2.c  | 17 +++++++++++++++--
 sys/net/netisr.c         |  6 +++++-
 sys/netinet/tcp_input.c  | 22 ++++++++++++----------
 sys/netinet/tcp_subr.c   | 14 +++++++-------
 sys/netinet/tcp_usrreq.c |  4 +++-
 sys/sys/socketvar.h      | 26 ++------------------------
 6 files changed, 44 insertions(+), 45 deletions(-)

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


-- 
DragonFly BSD source repository


More information about the Commits mailing list