Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-8]: src/sys/dev/pci Pull up following revision(s) (requested by k...



details:   https://anonhg.NetBSD.org/src/rev/2c72594c841a
branches:  netbsd-8
changeset: 851099:2c72594c841a
user:      snj <snj%NetBSD.org@localhost>
date:      Mon Nov 06 09:54:01 2017 +0000

description:
Pull up following revision(s) (requested by knakahara in ticket #348):
        sys/dev/pci/if_wm.c: revision 1.542
        sys/dev/pci/if_wmreg.h: revision 1.104
fix wm(4) vlan panic. Reported and tested by Tom Ivar Helbekkmo, thanks.
wm(4) used PRI bits and CFI bit as vlantag by mistake. It is found out
by if_ether.h:r1.67.

diffstat:

 sys/dev/pci/if_wm.c    |  10 +++++-----
 sys/dev/pci/if_wmreg.h |  14 +++++++++++++-
 2 files changed, 18 insertions(+), 6 deletions(-)

diffs (68 lines):

diff -r 5787833495a4 -r 2c72594c841a sys/dev/pci/if_wm.c
--- a/sys/dev/pci/if_wm.c       Mon Nov 06 09:52:15 2017 +0000
+++ b/sys/dev/pci/if_wm.c       Mon Nov 06 09:54:01 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: if_wm.c,v 1.508.4.4 2017/10/24 08:38:59 snj Exp $      */
+/*     $NetBSD: if_wm.c,v 1.508.4.5 2017/11/06 09:54:01 snj Exp $      */
 
 /*
  * Copyright (c) 2001, 2002, 2003, 2004 Wasabi Systems, Inc.
@@ -83,7 +83,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.508.4.4 2017/10/24 08:38:59 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.508.4.5 2017/11/06 09:54:01 snj Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_net_mpsafe.h"
@@ -8095,11 +8095,11 @@
        struct wm_softc *sc = rxq->rxq_sc;
 
        if (sc->sc_type == WM_T_82574)
-               return rxq->rxq_ext_descs[idx].erx_ctx.erxc_vlan;
+               return EXTRXC_VLAN_ID(rxq->rxq_ext_descs[idx].erx_ctx.erxc_vlan);
        else if ((sc->sc_flags & WM_F_NEWQUEUE) != 0)
-               return rxq->rxq_nq_descs[idx].nqrx_ctx.nrxc_vlan;
+               return NQRXC_VLAN_ID(rxq->rxq_nq_descs[idx].nqrx_ctx.nrxc_vlan);
        else
-               return rxq->rxq_descs[idx].wrx_special;
+               return WRX_VLAN_ID(rxq->rxq_descs[idx].wrx_special);
 }
 
 static inline int
diff -r 5787833495a4 -r 2c72594c841a sys/dev/pci/if_wmreg.h
--- a/sys/dev/pci/if_wmreg.h    Mon Nov 06 09:52:15 2017 +0000
+++ b/sys/dev/pci/if_wmreg.h    Mon Nov 06 09:54:01 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: if_wmreg.h,v 1.98.6.1 2017/08/01 23:33:18 snj Exp $    */
+/*     $NetBSD: if_wmreg.h,v 1.98.6.2 2017/11/06 09:54:01 snj Exp $    */
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -208,6 +208,12 @@
 #define EXTRXC_STATUS_PKTTYPE_MASK     __BITS(19,16)
 #define EXTRXC_STATUS_PKTTYPE(status)  __SHIFTOUT(status,EXTRXC_STATUS_PKTTYPE_MASK)
 
+#define        EXTRXC_VLAN_ID_MASK     __BITS(11,0)    /* VLAN identifier mask */
+#define        EXTRXC_VLAN_ID(x)       ((x) & EXTRXC_VLAN_ID_MASK) /* VLAN identifier */
+#define        EXTRXC_VLAN_CFI         __BIT(12)       /* Canonical Form Indicator */
+#define        EXTRXC_VLAN_PRI_MASK    __BITS(15,13)   /* VLAN priority mask */
+#define        EXTRXC_VLAN_PRI(x)      __SHIFTOUT((x),EXTRXC_VLAN_PRI_MASK) /* VLAN priority */
+
 /* advanced RX descriptor for 82575 and newer */
 typedef union nq_rxdesc {
        struct {
@@ -330,6 +336,12 @@
 #define NQRXC_STATUS_MC                __BIT(19) /* Packet received from Manageability Controller */
                                          /* "MBC" in i350 spec */
 
+#define        NQRXC_VLAN_ID_MASK      __BITS(11,0)    /* VLAN identifier mask */
+#define        NQRXC_VLAN_ID(x)        ((x) & NQRXC_VLAN_ID_MASK) /* VLAN identifier */
+#define        NQRXC_VLAN_CFI          __BIT(12)       /* Canonical Form Indicator */
+#define        NQRXC_VLAN_PRI_MASK     __BITS(15,13)   /* VLAN priority mask */
+#define        NQRXC_VLAN_PRI(x)       __SHIFTOUT((x),NQRXC_VLAN_PRI_MASK) /* VLAN priority */
+
 /*
  * The Wiseman transmit descriptor.
  *



Home | Main Index | Thread Index | Old Index