Module Name: src
Committed By: thorpej
Date: Fri Mar 20 13:33:23 UTC 2020
Modified Files:
src/sys/dev/pci: if_iwi.c if_iwivar.h
Log Message:
This driver sleeps during iwi_media_change(), and thus requires an
adaptive mutex for the media lock.
To generate a diff of this commit:
cvs rdiff -u -r1.113 -r1.114 src/sys/dev/pci/if_iwi.c
cvs rdiff -u -r1.19 -r1.20 src/sys/dev/pci/if_iwivar.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_iwi.c
diff -u src/sys/dev/pci/if_iwi.c:1.113 src/sys/dev/pci/if_iwi.c:1.114
--- src/sys/dev/pci/if_iwi.c:1.113 Thu Jan 30 06:03:34 2020
+++ src/sys/dev/pci/if_iwi.c Fri Mar 20 13:33:23 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: if_iwi.c,v 1.113 2020/01/30 06:03:34 thorpej Exp $ */
+/* $NetBSD: if_iwi.c,v 1.114 2020/03/20 13:33:23 thorpej Exp $ */
/* $OpenBSD: if_iwi.c,v 1.111 2010/11/15 19:11:57 damien Exp $ */
/*-
@@ -19,7 +19,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_iwi.c,v 1.113 2020/01/30 06:03:34 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_iwi.c,v 1.114 2020/03/20 13:33:23 thorpej Exp $");
/*-
* Intel(R) PRO/Wireless 2200BG/2225BG/2915ABG driver
@@ -375,7 +375,11 @@ iwi_attach(device_t parent, device_t sel
/* override state transition machine */
sc->sc_newstate = ic->ic_newstate;
ic->ic_newstate = iwi_newstate;
- ieee80211_media_init(ic, iwi_media_change, iwi_media_status);
+
+ /* XXX media locking needs revisiting */
+ mutex_init(&sc->sc_media_mtx, MUTEX_DEFAULT, IPL_SOFTNET);
+ ieee80211_media_init_with_lock(ic,
+ iwi_media_change, iwi_media_status, &sc->sc_media_mtx);
/*
* Allocate rings.
Index: src/sys/dev/pci/if_iwivar.h
diff -u src/sys/dev/pci/if_iwivar.h:1.19 src/sys/dev/pci/if_iwivar.h:1.20
--- src/sys/dev/pci/if_iwivar.h:1.19 Thu Feb 2 10:05:35 2017
+++ src/sys/dev/pci/if_iwivar.h Fri Mar 20 13:33:23 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: if_iwivar.h,v 1.19 2017/02/02 10:05:35 nonaka Exp $ */
+/* $NetBSD: if_iwivar.h,v 1.20 2020/03/20 13:33:23 thorpej Exp $ */
/*-
* Copyright (c) 2004, 2005
@@ -148,6 +148,8 @@ struct iwi_softc {
bus_size_t sc_sz;
void *sc_soft_ih;
+ kmutex_t sc_media_mtx; /* XXX */
+
struct sysctllog *sc_sysctllog;
int antenna;