summaryrefslogtreecommitdiffstats
path: root/sys/dev/e1000/if_em.c
diff options
context:
space:
mode:
authormarius <marius@FreeBSD.org>2016-02-04 23:56:01 +0000
committermarius <marius@FreeBSD.org>2016-02-04 23:56:01 +0000
commit7adabe51d5b5e2fa6c72a18dbf4bba0c14833901 (patch)
treeb44fe334da97f73aba1f236d9a4ebe6f4afc4682 /sys/dev/e1000/if_em.c
parentcd6535554e503550ca26a3ad8290147c8655013d (diff)
downloadFreeBSD-src-7adabe51d5b5e2fa6c72a18dbf4bba0c14833901.zip
FreeBSD-src-7adabe51d5b5e2fa6c72a18dbf4bba0c14833901.tar.gz
MFC: r295133
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: re (kib), erj Obtained from: D3162
Diffstat (limited to 'sys/dev/e1000/if_em.c')
-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 31a4ca8..49e5abd 100644
--- a/sys/dev/e1000/if_em.c
+++ b/sys/dev/e1000/if_em.c
@@ -1377,8 +1377,15 @@ em_init_locked(struct adapter *adapter)
ifp->if_hwassist = 0;
if (ifp->if_capenable & IFCAP_TXCSUM)
ifp->if_hwassist |= (CSUM_TCP | CSUM_UDP);
- if (ifp->if_capenable & IFCAP_TSO4)
- ifp->if_hwassist |= CSUM_TSO;
+ /*
+ ** 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 (ifp->if_capenable & IFCAP_TSO4) {
+ if (adapter->link_speed == SPEED_1000)
+ ifp->if_hwassist |= CSUM_TSO;
+ }
/* Configure for OS presence */
em_init_manageability(adapter);
OpenPOWER on IntegriCloud