diff options
author | Stefan Fritsch <sf@cvs.openbsd.org> | 2018-04-07 11:56:41 +0000 |
---|---|---|
committer | Stefan Fritsch <sf@cvs.openbsd.org> | 2018-04-07 11:56:41 +0000 |
commit | 263cd7610f4d1b97094ddbea45ae515e59b519ea (patch) | |
tree | dfacec0d2409da6f6dee431e6fbacb992ff46083 /sys/dev | |
parent | a9686e40dc84da08cb5ab3eed52683603414041c (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.c | 6 | ||||
-rw-r--r-- | sys/dev/pci/if_em_hw.h | 3 |
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 */ |