summaryrefslogtreecommitdiffstats
path: root/sys/dev/re
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2008-08-04 02:34:40 +0000
committeryongari <yongari@FreeBSD.org>2008-08-04 02:34:40 +0000
commit6d9b8fb4db55b14c738890fd95bd1a9abab7a86c (patch)
tree1dfc135107076683e3867188a760d729431f725a /sys/dev/re
parenta36e7d5b67d8bfe0250a789e5c39a2b037658682 (diff)
downloadFreeBSD-src-6d9b8fb4db55b14c738890fd95bd1a9abab7a86c.zip
FreeBSD-src-6d9b8fb4db55b14c738890fd95bd1a9abab7a86c.tar.gz
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)
Diffstat (limited to 'sys/dev/re')
-rw-r--r--sys/dev/re/if_re.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/dev/re/if_re.c b/sys/dev/re/if_re.c
index f549bf5..cc96c3b 100644
--- a/sys/dev/re/if_re.c
+++ b/sys/dev/re/if_re.c
@@ -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
OpenPOWER on IntegriCloud