freebsd-skq/sys
yongari 901b0b81fe Add workaround to overcome hardware limitation which allows only a
single outstanding DMA read operation. Most controllers targeted to
client with PCIe bus interface(e.g. BCM5761) may have this
limitation. All controllers for servers does not have this
limitation.
Collapsing mbuf chains to reduce number of memory reads before
transmitting was most effective way to workaround this. I got about
940Mbps from 850Mbps with mbuf collapsing on BCM5761. However it
takes a lot of CPU cycles to collapse mbuf chains so add tunable to
control the number of allowed TX buffers before collapsing. The
default value is 0 which effectively disables the forced collapsing.
For most cases 2 would yield best performance(about 930Mbps)
without much sacrificing CPU cycles.
Note the collapsing is only activated when the controller is on
PCIe bus and the frame does not need TSO operation. TSO does not
seem to suffer from the hardware limitation because the payload
size is much bigger than normal IP datagram.
Thanks to davidch@ who told me the limitation of client controllers
and actually gave possible workarounds to mitigate the limitation.

Reviewed by:	davidch, marius
2009-12-03 23:57:06 +00:00
..
amd64 mca: small enhancements related to cpu quirks 2009-12-03 16:10:21 +00:00
arm Add missing ath_ar9* ath hal entries. 2009-12-02 00:38:11 +00:00
boot Remove spinconsole from pc98, some parts seem to be missed and it's 2009-11-27 13:19:06 +00:00
bsm
cam Fix several cases where the periph lock was held over malloc. 2009-12-02 16:08:33 +00:00
cddl
compat Include <sys/tty.h> instead of <sys/termios.h>. 2009-11-28 16:30:06 +00:00
conf Remove extra parantheses from usb_ethernet.c and usb_serial.c lines. 2009-11-30 21:03:44 +00:00
contrib
crypto
ddb
dev Add workaround to overcome hardware limitation which allows only a 2009-12-03 23:57:06 +00:00
fs Remove unneeded ifdefs. 2009-12-03 18:03:42 +00:00
gdb
geom Change 'load' balancing mode algorithm: 2009-12-03 21:47:51 +00:00
gnu Remove unused code. 2009-12-03 18:16:14 +00:00
i386 mca: small enhancements related to cpu quirks 2009-12-03 16:10:21 +00:00
ia64 Make sure bus space accesses use unorder memory loads and stores. 2009-12-03 04:06:48 +00:00
isa
kern Remove wrong assertion. Debugee is allowed to lose a signal. 2009-12-03 20:16:59 +00:00
kgssapi
libkern
mips Simplify the invocation of vm_fault(). Specifically, eliminate the flag 2009-11-27 20:24:11 +00:00
modules amdsbwd: new driver for AMD SB600/SB7xx watchdog timer 2009-11-30 11:44:03 +00:00
net Remove if_timer/if_watchdog now that they are no longer used. The space 2009-11-30 21:25:57 +00:00
net80211
netatalk
netgraph
netinet preparation work to replace the monster switch in ipfw_chk() with 2009-12-03 14:22:15 +00:00
netinet6
netipsec Enable IPcomp by default. 2009-11-29 20:47:43 +00:00
netipx
netnatm
netncp
netsmb
nfs
nfsclient
nfsserver Properly return an error reply if an NFS remove or link operation fails. 2009-12-03 20:59:28 +00:00
nlm
opencrypto In case the compression result is the same size as the orignal version, 2009-11-29 17:53:57 +00:00
pc98 Fix cut'n paste on the AR9280 entry. 2009-12-02 21:22:10 +00:00
pci
powerpc The first argument of dcbz interprets r0 as a literal zero, not the second. 2009-12-03 20:55:09 +00:00
rpc
security
sparc64 Simplify the invocation of vm_fault(). Specifically, eliminate the flag 2009-11-27 20:24:11 +00:00
sun4v Simplify the invocation of vm_fault(). Specifically, eliminate the flag 2009-11-27 20:24:11 +00:00
sys Bump __FreeBSD_version for sigpause(3) addition [1] and 2009-12-02 16:40:23 +00:00
teken
tools
ufs
vm Properly synchronize the previous change. 2009-11-28 00:50:09 +00:00
xdr
xen
Makefile