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