summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2009-11-22 21:16:30 +0000
committeryongari <yongari@FreeBSD.org>2009-11-22 21:16:30 +0000
commit33b0b9f0e9af6a61858f23dd610353152d5204cd (patch)
tree72737c0c382c4cbcf61b624d35d9b23da511bcea /sys/dev/usb
parent5f64e015852893c9efef5c33eaa00bbe2ac87b6f (diff)
downloadFreeBSD-src-33b0b9f0e9af6a61858f23dd610353152d5204cd.zip
FreeBSD-src-33b0b9f0e9af6a61858f23dd610353152d5204cd.tar.gz
Implement TSO for BCM5755 or newer controllers. Some controllers
seem to require a special firmware to use TSO. But the firmware is not available to FreeBSD and Linux claims that the TSO performed by the firmware is slower than hardware based TSO. Moreover the firmware based TSO has one known bug which can't handle TSO if ethernet header + IP/TCP header is greater than 80 bytes. The workaround for the TSO bug exist but it seems it's too expensive than not using TSO at all. Some hardwares also have the TSO bug so limit the TSO to the controllers that are not affected TSO issues (e.g. 5755 or higher). While I'm here set VLAN tag bit to all descriptors that belengs to a frame instead of the first descriptor of a frame. The datasheet is not clear how to handle VLAN tag bit but it worked either way in my testing. This makes it simplify TSO configuration a little bit. Big thanks to davidch@ who sent me detailed TSO information. Without this I was not able to implement it. Tested by: current
Diffstat (limited to 'sys/dev/usb')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud