Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/pci fix wm(4) vlan panic. Reported and tested by Tom...
details: https://anonhg.NetBSD.org/src/rev/603f01e4235b
branches: trunk
changeset: 357034:603f01e4235b
user: knakahara <knakahara%NetBSD.org@localhost>
date: Mon Oct 23 23:29:38 2017 +0000
description:
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.
XXX need pullup-8
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 f7d0f8ba8f3b -r 603f01e4235b sys/dev/pci/if_wm.c
--- a/sys/dev/pci/if_wm.c Mon Oct 23 21:03:24 2017 +0000
+++ b/sys/dev/pci/if_wm.c Mon Oct 23 23:29:38 2017 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: if_wm.c,v 1.541 2017/10/23 09:27:21 msaitoh Exp $ */
+/* $NetBSD: if_wm.c,v 1.542 2017/10/23 23:29:38 knakahara 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.541 2017/10/23 09:27:21 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_wm.c,v 1.542 2017/10/23 23:29:38 knakahara Exp $");
#ifdef _KERNEL_OPT
#include "opt_net_mpsafe.h"
@@ -8108,11 +8108,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 f7d0f8ba8f3b -r 603f01e4235b sys/dev/pci/if_wmreg.h
--- a/sys/dev/pci/if_wmreg.h Mon Oct 23 21:03:24 2017 +0000
+++ b/sys/dev/pci/if_wmreg.h Mon Oct 23 23:29:38 2017 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: if_wmreg.h,v 1.103 2017/07/26 06:48:49 msaitoh Exp $ */
+/* $NetBSD: if_wmreg.h,v 1.104 2017/10/23 23:29:38 knakahara 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