summaryrefslogtreecommitdiffstats
path: root/sys/dev/isp
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2009-12-03 23:57:06 +0000
committeryongari <yongari@FreeBSD.org>2009-12-03 23:57:06 +0000
commit901b0b81fe3969528db13d192d74c87c04ac6bf4 (patch)
treee7ee37c406e5d0200f398e921022f7ab853dce64 /sys/dev/isp
parent9f94f2e9dc186c6f235e6a985d3e807168f27770 (diff)
downloadFreeBSD-src-901b0b81fe3969528db13d192d74c87c04ac6bf4.zip
FreeBSD-src-901b0b81fe3969528db13d192d74c87c04ac6bf4.tar.gz
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
Diffstat (limited to 'sys/dev/isp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud