Module Name:    src
Committed By:   thorpej
Date:           Fri May 22 20:27:16 UTC 2020

Modified Files:
        src/sys/dev/pci: if_iwm.c if_iwmvar.h

Log Message:
This driver sleeps during iwm_media_change(), and thus requires an
adaptive mutex for the media lock.


To generate a diff of this commit:
cvs rdiff -u -r1.84 -r1.85 src/sys/dev/pci/if_iwm.c
cvs rdiff -u -r1.19 -r1.20 src/sys/dev/pci/if_iwmvar.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_iwm.c
diff -u src/sys/dev/pci/if_iwm.c:1.84 src/sys/dev/pci/if_iwm.c:1.85
--- src/sys/dev/pci/if_iwm.c:1.84	Thu Jan 30 06:03:34 2020
+++ src/sys/dev/pci/if_iwm.c	Fri May 22 20:27:16 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_iwm.c,v 1.84 2020/01/30 06:03:34 thorpej Exp $	*/
+/*	$NetBSD: if_iwm.c,v 1.85 2020/05/22 20:27:16 thorpej Exp $	*/
 /*	OpenBSD: if_iwm.c,v 1.148 2016/11/19 21:07:08 stsp Exp	*/
 #define IEEE80211_NO_HT
 /*
@@ -106,7 +106,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_iwm.c,v 1.84 2020/01/30 06:03:34 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_iwm.c,v 1.85 2020/05/22 20:27:16 thorpej Exp $");
 
 #include <sys/param.h>
 #include <sys/conf.h>
@@ -7774,7 +7774,12 @@ iwm_preinit(struct iwm_softc *sc)
 	/* Override 802.11 state transition machine. */
 	sc->sc_newstate = ic->ic_newstate;
 	ic->ic_newstate = iwm_newstate;
-	ieee80211_media_init(ic, iwm_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,
+	    iwm_media_change, ieee80211_media_status, &sc->sc_media_mtx);
+
 	ieee80211_announce(ic);
 
 	iwm_radiotap_attach(sc);

Index: src/sys/dev/pci/if_iwmvar.h
diff -u src/sys/dev/pci/if_iwmvar.h:1.19 src/sys/dev/pci/if_iwmvar.h:1.20
--- src/sys/dev/pci/if_iwmvar.h:1.19	Sat Oct  5 23:27:20 2019
+++ src/sys/dev/pci/if_iwmvar.h	Fri May 22 20:27:16 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_iwmvar.h,v 1.19 2019/10/05 23:27:20 mrg Exp $	*/
+/*	$NetBSD: if_iwmvar.h,v 1.20 2020/05/22 20:27:16 thorpej Exp $	*/
 /*	OpenBSD: if_iwmvar.h,v 1.24 2016/09/21 13:53:18 stsp Exp 	*/
 
 /*
@@ -499,6 +499,8 @@ struct iwm_softc {
 
 	struct bpf_if *sc_drvbpf;
 
+	kmutex_t	sc_media_mtx;	/* XXX */
+
 	union {
 		struct iwm_rx_radiotap_header th;
 		uint8_t	pad[IEEE80211_RADIOTAP_HDRLEN];

Reply via email to