aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/e1000
diff options
context:
space:
mode:
authorMarius Strobl <marius@FreeBSD.org>2016-02-01 23:51:30 +0000
committerMarius Strobl <marius@FreeBSD.org>2016-02-01 23:51:30 +0000
commitd233a81b5a242b909793922dc7719224fc300d92 (patch)
tree0e7114d3586aa1c4d8a6b39e2b4e0212051d99d2 /sys/dev/e1000
parent93312a9143d94cfe5ec163be05bef26514709b9a (diff)
downloadsrc-d233a81b5a242b909793922dc7719224fc300d92.tar.gz
src-d233a81b5a242b909793922dc7719224fc300d92.zip
As it turns out, one of the more or less recent changes to em(4)
causes watchdog timeouts when using TSO4 at link speeds below Gigabit, at least with 82573E. So disable the assist automatically when at lower speeds. Submitted by: jfv Approved by: erj Obtained from: D3162 MFC after: 3 days
Notes
Notes: svn path=/head/; revision=295133
Diffstat (limited to 'sys/dev/e1000')
-rw-r--r--sys/dev/e1000/if_em.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c
index c1a9ce8717df..b6c98b160e25 100644
--- a/sys/dev/e1000/if_em.c
+++ b/sys/dev/e1000/if_em.c
@@ -1371,8 +1371,15 @@ em_init_locked(struct adapter *adapter)
if_clearhwassist(ifp);
if (if_getcapenable(ifp) & IFCAP_TXCSUM)
if_sethwassistbits(ifp, CSUM_TCP | CSUM_UDP, 0);
- if (if_getcapenable(ifp) & IFCAP_TSO4)
- if_sethwassistbits(ifp, CSUM_TSO, 0);
+ /*
+ ** There have proven to be problems with TSO when not
+ ** at full gigabit speed, so disable the assist automatically
+ ** when at lower speeds. -jfv
+ */
+ if (if_getcapenable(ifp) & IFCAP_TSO4) {
+ if (adapter->link_speed == SPEED_1000)
+ if_sethwassistbits(ifp, CSUM_TSO, 0);
+ }
/* Configure for OS presence */
em_init_manageability(adapter);