freebsd-skq/sys
rrs 75ad250e97 This fixes a out-of-order problem with several
of the newer drivers. The basic problem was
that the driver was pulling the mbuf off the
drbr ring and then when sending with xmit(), encounting
a full transmit ring. Thus the lower layer
xmit() function would return an error, and the
drivers would then append the data back on to the ring.
For TCP this is a horrible scenario sure to bring
on a fast-retransmit.

The fix is to use drbr_peek() to pull the data pointer
but not remove it from the ring. If it fails then
we either call the new drbr_putback or drbr_advance
method. Advance moves it forward (we do this sometimes
when the xmit() function frees the mbuf). When
we succeed we always call advance. The
putback will always copy the mbuf back to the top
of the ring. Note that the putback *cannot* be used
with a drbr_dequeue() only with drbr_peek(). We most
of the time, in putback, would not need to copy it
back since most likey the mbuf is still the same, but
sometimes xmit() functions will change the mbuf via
a pullup or other call. So the optimial case for
the single consumer is to always copy it back. If
we ever do a multiple_consumer (for lagg?) we
will  need a test and atomic in the put back possibly
a seperate putback_mc() in the ring buf.

Reviewed by:	jhb@freebsd.org, jlv@freebsd.org
2013-02-07 15:20:54 +00:00
..
amd64 Compute the number of initial kernel page table pages (NKPT) dynamically. 2013-02-06 04:53:00 +00:00
arm Use and set gpio pin to high to power up usb. 2013-02-06 01:03:13 +00:00
boot * Add the integer div & mod functions and ARM EABI support functions to 2013-02-05 20:03:58 +00:00
bsm Merge OpenBSM 1.2-alpha2 changes from contrib/openbsm to 2012-12-01 13:46:37 +00:00
cam Format CDB output as 2 digit hex correcting the length 2013-01-31 14:07:24 +00:00
cddl zfs: fix, improve and re-organize page_lookup and page_unlock 2013-02-03 18:42:20 +00:00
compat Reduce duplication between i386/linux/linux.h and amd64/linux32/linux.h 2013-01-29 18:41:30 +00:00
conf allow for large KTR_ENTRIES values by allocating ktr_buf using malloc(9) 2013-02-03 09:57:39 +00:00
contrib Merge two bug fixes from the vendor branch. 2013-01-28 20:37:32 +00:00
crypto
ddb
dev This fixes a out-of-order problem with several 2013-02-07 15:20:54 +00:00
fs Stop translating the ERESTART error from the open(2) into EINTR. 2013-02-07 14:53:33 +00:00
gdb
geom g_mirror: g_getattr() failure should not be fatal 2013-01-26 10:50:04 +00:00
gnu/fs r16312 is not any longer real since many years (likely since when VFS 2012-11-19 22:43:45 +00:00
i386 cpususpend_handler: mark AP as resumed only after fully setting up lapic 2013-02-02 12:04:32 +00:00
ia64 Remove firewire devices missed in r244992. 2013-01-04 15:29:50 +00:00
isa
kern Stop translating the ERESTART error from the open(2) into EINTR. 2013-02-07 14:53:33 +00:00
kgssapi Piete.Brooks at cl.cam.ac.uk reported via email a crash which was 2012-12-18 00:25:48 +00:00
libkern Add __aeabi_ulcmp to allow building of the LINT kernel. 2013-01-23 09:18:18 +00:00
mips Clean some 'svn:executable' properties in the tree. 2013-01-26 22:08:21 +00:00
modules Allow IEEE80211_SUPPORT_SUPERG to be defined _and_ have a working wlan 2013-02-02 02:00:29 +00:00
net This fixes a out-of-order problem with several 2013-02-07 15:20:54 +00:00
net80211 Wrap this in an #ifdef so IEEE80211_SUPPORT_SUPERG will work correctly 2013-02-02 02:00:10 +00:00
netatalk Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
netgraph ng_ether_ifnet_arrival_event: check interface type before using IFP2NG 2013-02-04 17:29:13 +00:00
netinet Add placeholder constants to reserve a portion of the socket option 2013-02-01 15:32:20 +00:00
netinet6 Generate lle_event in the IPv6 neighbor discovery code too. 2013-01-26 00:05:22 +00:00
netipsec Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
netipx Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
netnatm Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
netncp Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
netpfil In netpfil/pf: 2012-12-28 09:19:49 +00:00
netsmb Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
nfs Remove the unused nfs_curusec(). 2013-01-17 19:03:24 +00:00
nfsclient Rework the handling of stop signals in the NFS client. The changes in 2013-02-06 17:06:51 +00:00
nfsserver Use vfs_timestamp() to set file timestamps rather than invoking 2013-01-18 18:43:38 +00:00
nlm
ofed This fixes a out-of-order problem with several 2013-02-07 15:20:54 +00:00
opencrypto
pc98 Remove support for plip from the GENERIC kernel as no systems in the 2013-02-01 20:17:11 +00:00
pci Mark 'ticks', 'time_second', and 'time_uptime' as volatile to prevent the 2013-01-28 19:38:13 +00:00
powerpc Enable the UFS quotas for big-iron GENERIC kernels. 2013-01-03 19:03:41 +00:00
rpc Add support for backchannels to the kernel RPC. Backchannels 2012-12-08 00:29:16 +00:00
security Add AUDIT_ARG_SOCKADDR() macro so we can start using the audit_arg_sockaddr() 2013-02-07 00:24:23 +00:00
sparc64 Remove support for plip from the GENERIC kernel as no systems in the 2013-02-01 20:17:11 +00:00
sys This fixes a out-of-order problem with several 2013-02-07 15:20:54 +00:00
teken
tools Fix build on ARM (and probably other platforms) 2012-12-28 06:52:53 +00:00
ufs UFS: Remove dead assignment. 2013-02-03 21:30:02 +00:00
vm Try to improve r242655 take III: move these SYSCTLs describing the kernel 2013-02-04 09:35:48 +00:00
x86 x86 suspend/resume: suspend pics and pseudo-pics in reverse order 2013-02-02 12:02:42 +00:00
xdr
xen
Makefile Run cscope with the -v parameter to make it more user-friendly. 2012-12-02 20:51:24 +00:00