summaryrefslogtreecommitdiffstats
path: root/sys/dev/re
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2011-01-25 19:05:46 +0000
committeryongari <yongari@FreeBSD.org>2011-01-25 19:05:46 +0000
commit783f380edf07648a82ddc6a12ad2a3ccfde653c2 (patch)
treebb516ab63d75a5ed35c018023fdb74dda163878d /sys/dev/re
parent6a3a026ee38fcd0ae9477e594ba21fb36fd4d984 (diff)
downloadFreeBSD-src-783f380edf07648a82ddc6a12ad2a3ccfde653c2.zip
FreeBSD-src-783f380edf07648a82ddc6a12ad2a3ccfde653c2.tar.gz
Disable TSO for all Realtek controllers. Experimentation showed
RTL8111C generated corrupted frames where TCP option header was broken. All other sample controllers I have did not show such problem so it could be RTL8111C specific issue. Because there are too many variants it's hard to tell how many controllers have such issue. Just disable TSO by default but have user override it.
Diffstat (limited to 'sys/dev/re')
-rw-r--r--sys/dev/re/if_re.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/sys/dev/re/if_re.c b/sys/dev/re/if_re.c
index 9b9ded8..b87ff5d 100644
--- a/sys/dev/re/if_re.c
+++ b/sys/dev/re/if_re.c
@@ -1504,14 +1504,12 @@ re_attach(device_t dev)
ifp->if_capabilities |= IFCAP_WOL;
ifp->if_capenable = ifp->if_capabilities;
/*
- * Don't enable TSO by default for old controllers. Under
- * certain circumtances the controller generated corrupted
- * packets in TSO size.
+ * Don't enable TSO by default. It is known to generate
+ * corrupted TCP segments(bad TCP options) under certain
+ * circumtances.
*/
- if ((sc->rl_flags & RL_FLAG_DESCV2) == 0) {
- ifp->if_hwassist &= ~CSUM_TSO;
- ifp->if_capenable &= ~(IFCAP_TSO4 | IFCAP_VLAN_HWTSO);
- }
+ ifp->if_hwassist &= ~CSUM_TSO;
+ ifp->if_capenable &= ~(IFCAP_TSO4 | IFCAP_VLAN_HWTSO);
#ifdef DEVICE_POLLING
ifp->if_capabilities |= IFCAP_POLLING;
#endif
OpenPOWER on IntegriCloud