summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorStefan Fritsch <sf@cvs.openbsd.org>2018-04-07 11:56:41 +0000
committerStefan Fritsch <sf@cvs.openbsd.org>2018-04-07 11:56:41 +0000
commit263cd7610f4d1b97094ddbea45ae515e59b519ea (patch)
treedfacec0d2409da6f6dee431e6fbacb992ff46083 /sys/dev
parenta9686e40dc84da08cb5ab3eed52683603414041c (diff)
em: Port an i219 errata workaround from FreeBSD
https://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/i218-i219-ethernet-connection-spec-update.pdf?asset=9561 ok mikeb@ jsg@
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/pci/if_em.c6
-rw-r--r--sys/dev/pci/if_em_hw.h3
2 files changed, 6 insertions, 3 deletions
diff --git a/sys/dev/pci/if_em.c b/sys/dev/pci/if_em.c
index e10010cc09e..eed5efe3fde 100644
--- a/sys/dev/pci/if_em.c
+++ b/sys/dev/pci/if_em.c
@@ -31,7 +31,7 @@ POSSIBILITY OF SUCH DAMAGE.
***************************************************************************/
-/* $OpenBSD: if_em.c,v 1.340 2018/04/07 11:52:24 sf Exp $ */
+/* $OpenBSD: if_em.c,v 1.341 2018/04/07 11:56:40 sf Exp $ */
/* $FreeBSD: if_em.c,v 1.46 2004/09/29 18:28:28 mlaier Exp $ */
#include <dev/pci/if_em.h>
@@ -2268,7 +2268,9 @@ em_initialize_transmit_unit(struct em_softc *sc)
EM_WRITE_REG(&sc->hw, E1000_IOSFPC, reg_val);
reg_val = E1000_READ_REG(&sc->hw, TARC0);
- reg_val |= E1000_TARC0_CB_MULTIQ_3_REQ;
+ /* i218-i219 Specification Update 1.5.4.5 */
+ reg_val &= ~E1000_TARC0_CB_MULTIQ_3_REQ;
+ reg_val |= E1000_TARC0_CB_MULTIQ_2_REQ;
E1000_WRITE_REG(&sc->hw, TARC0, reg_val);
}
}
diff --git a/sys/dev/pci/if_em_hw.h b/sys/dev/pci/if_em_hw.h
index 5e415e60a34..469432c5eb1 100644
--- a/sys/dev/pci/if_em_hw.h
+++ b/sys/dev/pci/if_em_hw.h
@@ -31,7 +31,7 @@
*******************************************************************************/
-/* $OpenBSD: if_em_hw.h,v 1.73 2018/03/16 06:30:50 jsg Exp $ */
+/* $OpenBSD: if_em_hw.h,v 1.74 2018/04/07 11:56:40 sf Exp $ */
/* $FreeBSD: if_em_hw.h,v 1.15 2005/05/26 23:32:02 tackerman Exp $ */
/* if_em_hw.h
@@ -2295,6 +2295,7 @@ struct em_hw {
#define E1000_WUS_FLX_FILTERS 0x000F0000 /* Mask for the 4 flexible filters */
/* TRAC0 bits */
+#define E1000_TARC0_CB_MULTIQ_2_REQ (1 << 29)
#define E1000_TARC0_CB_MULTIQ_3_REQ (1 << 28 | 1 << 29)
/* Management Control */