Module Name:    src
Committed By:   sevan
Date:           Fri Mar 20 16:35:41 UTC 2020

Modified Files:
        src/sys/dev/pci: if_iwn.c if_iwnvar.h

Log Message:
Apply the same change as for if_iwi.c r1.114 here, as part of kern/55090.

This driver sleeps during iwn_media_change(), and thus requires an adaptive
mutex for the media lock.


To generate a diff of this commit:
cvs rdiff -u -r1.93 -r1.94 src/sys/dev/pci/if_iwn.c
cvs rdiff -u -r1.21 -r1.22 src/sys/dev/pci/if_iwnvar.h

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/pci/if_iwn.c
diff -u src/sys/dev/pci/if_iwn.c:1.93 src/sys/dev/pci/if_iwn.c:1.94
--- src/sys/dev/pci/if_iwn.c:1.93	Thu Jan 30 06:03:34 2020
+++ src/sys/dev/pci/if_iwn.c	Fri Mar 20 16:35:41 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_iwn.c,v 1.93 2020/01/30 06:03:34 thorpej Exp $	*/
+/*	$NetBSD: if_iwn.c,v 1.94 2020/03/20 16:35:41 sevan Exp $	*/
 /*	$OpenBSD: if_iwn.c,v 1.135 2014/09/10 07:22:09 dcoppa Exp $	*/
 
 /*-
@@ -22,7 +22,7 @@
  * adapters.
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_iwn.c,v 1.93 2020/01/30 06:03:34 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_iwn.c,v 1.94 2020/03/20 16:35:41 sevan Exp $");
 
 #define IWN_USE_RBUF	/* Use local storage for RX */
 #undef IWN_HWCRYPTO	/* XXX does not even compile yet */
@@ -614,7 +614,11 @@ iwn_attach(device_t parent __unused, dev
 	/* Override 802.11 state transition machine. */
 	sc->sc_newstate = ic->ic_newstate;
 	ic->ic_newstate = iwn_newstate;
-	ieee80211_media_init(ic, iwn_media_change, ieee80211_media_status);
+
+	/* XXX media locking needs revisiting */
+	mutex_init(&sc->sc_media_mtx, MUTEX_DEFAULT, IPL_SOFTNET);
+	ieee80211_media_init_with_lock(ic,
+	    iwn_media_change, ieee80211_media_status, &sc->sc_media_mtx);
 
 	sc->amrr.amrr_min_success_threshold =  1;
 	sc->amrr.amrr_max_success_threshold = 15;

Index: src/sys/dev/pci/if_iwnvar.h
diff -u src/sys/dev/pci/if_iwnvar.h:1.21 src/sys/dev/pci/if_iwnvar.h:1.22
--- src/sys/dev/pci/if_iwnvar.h:1.21	Sat Oct  5 23:27:20 2019
+++ src/sys/dev/pci/if_iwnvar.h	Fri Mar 20 16:35:41 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_iwnvar.h,v 1.21 2019/10/05 23:27:20 mrg Exp $	*/
+/*	$NetBSD: if_iwnvar.h,v 1.22 2020/03/20 16:35:41 sevan Exp $	*/
 /*	$OpenBSD: if_iwnvar.h,v 1.28 2014/09/09 18:55:08 sthen Exp $	*/
 
 /*-
@@ -324,6 +324,8 @@ struct iwn_softc {
 
 	struct bpf_if *		sc_drvbpf;
 
+	kmutex_t 		sc_media_mtx;	/* XXX */
+
 	union {
 		struct iwn_rx_radiotap_header th;
 		uint8_t	pad[IEEE80211_RADIOTAP_HDRLEN];

Reply via email to