Don't enable TSO by default. Users of RTL8169/8110 reported

watchdog timeout issues and the root cause seems to stem from
silicon bug of controller. Personally I couldn't reproduce it on
RTL8169 controller but it seems it's dependent on usage pattern.
For newer PCIe based controllers I have no TSO complaints but
turning off TSO would be more safe. Users who are sure that
their controller works with TSO can still reenable the TSO with
ifconfig(8).

Reported by:	Oliver Lehmann (lehmann at ans-netz dot de), Eugene Butusov (ebutusov at gmail dot com)
This commit is contained in:
Pyun YongHyeon 2008-08-04 02:34:40 +00:00
parent ae64408754
commit a2a8420cfd
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=181271

View File

@ -1392,6 +1392,13 @@ re_attach(dev)
if (pci_find_extcap(sc->rl_dev, PCIY_PMG, &reg) == 0)
ifp->if_capabilities |= IFCAP_WOL;
ifp->if_capenable = ifp->if_capabilities;
/*
* Don't enable TSO by default. Under certain
* circumtances the controller generated corrupted
* packets in TSO size.
*/
ifp->if_hwassist &= ~CSUM_TSO;
ifp->if_capenable &= ~IFCAP_TSO4;
#ifdef DEVICE_POLLING
ifp->if_capabilities |= IFCAP_POLLING;
#endif