Module Name:    src
Committed By:   riastradh
Date:           Thu Mar  3 05:54:03 UTC 2022

Modified Files:
        src/sys/dev/usb: if_axen.c if_mue.c if_smsc.c

Log Message:
usbnet drivers: Assert IFNET_LOCKED in if ioctl routines.

These only happen either during the transition up or down (init or
stop), or while that transition is excluded (ioctl).

This may be called from ioctl or from init, which both hold the ifnet
lock.

XXX smsc_setoe_locked should maybe trigger reinit because the rx loop
behaves differently depending on whether checksumming is enabled.

XXX mue_sethwcsum_locked needs to exclude mcast updates.


To generate a diff of this commit:
cvs rdiff -u -r1.85 -r1.86 src/sys/dev/usb/if_axen.c
cvs rdiff -u -r1.74 -r1.75 src/sys/dev/usb/if_mue.c
cvs rdiff -u -r1.84 -r1.85 src/sys/dev/usb/if_smsc.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/usb/if_axen.c
diff -u src/sys/dev/usb/if_axen.c:1.85 src/sys/dev/usb/if_axen.c:1.86
--- src/sys/dev/usb/if_axen.c:1.85	Thu Mar  3 05:53:33 2022
+++ src/sys/dev/usb/if_axen.c	Thu Mar  3 05:54:03 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_axen.c,v 1.85 2022/03/03 05:53:33 riastradh Exp $	*/
+/*	$NetBSD: if_axen.c,v 1.86 2022/03/03 05:54:03 riastradh Exp $	*/
 /*	$OpenBSD: if_axen.c,v 1.3 2013/10/21 10:10:22 yuo Exp $	*/
 
 /*
@@ -23,7 +23,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_axen.c,v 1.85 2022/03/03 05:53:33 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_axen.c,v 1.86 2022/03/03 05:54:03 riastradh Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_usb.h"
@@ -516,7 +516,7 @@ axen_setoe_locked(struct usbnet *un)
 	uint64_t enabled = ifp->if_capenable;
 	uint8_t val;
 
-	usbnet_isowned_core(un);
+	KASSERT(IFNET_LOCKED(ifp));
 
 	val = AXEN_RXCOE_OFF;
 	if (enabled & IFCAP_CSUM_IPv4_Rx)

Index: src/sys/dev/usb/if_mue.c
diff -u src/sys/dev/usb/if_mue.c:1.74 src/sys/dev/usb/if_mue.c:1.75
--- src/sys/dev/usb/if_mue.c:1.74	Thu Mar  3 05:53:33 2022
+++ src/sys/dev/usb/if_mue.c	Thu Mar  3 05:54:03 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_mue.c,v 1.74 2022/03/03 05:53:33 riastradh Exp $	*/
+/*	$NetBSD: if_mue.c,v 1.75 2022/03/03 05:54:03 riastradh Exp $	*/
 /*	$OpenBSD: if_mue.c,v 1.3 2018/08/04 16:42:46 jsg Exp $	*/
 
 /*
@@ -20,7 +20,7 @@
 /* Driver for Microchip LAN7500/LAN7800 chipsets. */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_mue.c,v 1.74 2022/03/03 05:53:33 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_mue.c,v 1.75 2022/03/03 05:54:03 riastradh Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_usb.h"
@@ -1091,6 +1091,8 @@ mue_sethwcsum_locked(struct usbnet *un)
 	struct ifnet * const ifp = usbnet_ifp(un);
 	uint32_t reg, val;
 
+	KASSERT(IFNET_LOCKED(ifp));
+
 	reg = (un->un_flags & LAN7500) ? MUE_7500_RFE_CTL : MUE_7800_RFE_CTL;
 	val = mue_csr_read(un, reg);
 
@@ -1123,6 +1125,8 @@ mue_setmtu_locked(struct usbnet *un)
 	struct ifnet * const ifp = usbnet_ifp(un);
 	uint32_t val;
 
+	KASSERT(IFNET_LOCKED(ifp));
+
 	/* Set the maximum frame size. */
 	MUE_CLRBIT(un, MUE_MAC_RX, MUE_MAC_RX_RXEN);
 	val = mue_csr_read(un, MUE_MAC_RX);

Index: src/sys/dev/usb/if_smsc.c
diff -u src/sys/dev/usb/if_smsc.c:1.84 src/sys/dev/usb/if_smsc.c:1.85
--- src/sys/dev/usb/if_smsc.c:1.84	Thu Mar  3 05:53:33 2022
+++ src/sys/dev/usb/if_smsc.c	Thu Mar  3 05:54:03 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_smsc.c,v 1.84 2022/03/03 05:53:33 riastradh Exp $	*/
+/*	$NetBSD: if_smsc.c,v 1.85 2022/03/03 05:54:03 riastradh Exp $	*/
 
 /*	$OpenBSD: if_smsc.c,v 1.4 2012/09/27 12:38:11 jsg Exp $	*/
 /*	$FreeBSD: src/sys/dev/usb/net/if_smsc.c,v 1.1 2012/08/15 04:03:55 gonzo Exp $ */
@@ -61,7 +61,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_smsc.c,v 1.84 2022/03/03 05:53:33 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_smsc.c,v 1.85 2022/03/03 05:54:03 riastradh Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_usb.h"
@@ -473,7 +473,7 @@ smsc_setoe_locked(struct usbnet *un)
 	uint32_t val;
 	int err;
 
-	usbnet_isowned_core(un);
+	KASSERT(IFNET_LOCKED(ifp));
 
 	err = smsc_readreg(un, SMSC_COE_CTRL, &val);
 	if (err != 0) {

Reply via email to