aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/iwn/if_iwn.c
diff options
context:
space:
mode:
authorHans Petter Selasky <hselasky@FreeBSD.org>2020-01-30 10:28:01 +0000
committerHans Petter Selasky <hselasky@FreeBSD.org>2020-01-30 10:28:01 +0000
commitb65f813c1ab99448278961c5ca80dc422b1eae29 (patch)
treee9d3fc16d93a1cb5b2c696d2422cf4d78ae0199c /sys/dev/iwn/if_iwn.c
parent21c4082de9e2cf9a0fd81a9a981ab06022956847 (diff)
Widen EPOCH(9) usage in PCI WLAN drivers.
Make sure all occurrences of ieee80211_input_xxx() in sys/dev are covered by a network epoch section. Do not depend on the interrupt handler nor any taskqueues being in a network epoch section. This patch should unbreak the PCI WLAN drivers after r357004. Pointy hat: glebius@ Sponsored by: Mellanox Technologies
Notes
Notes: svn path=/head/; revision=357291
Diffstat (limited to 'sys/dev/iwn/if_iwn.c')
-rw-r--r--sys/dev/iwn/if_iwn.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/dev/iwn/if_iwn.c b/sys/dev/iwn/if_iwn.c
index e3b87f214ec2..7a9829ae6e47 100644
--- a/sys/dev/iwn/if_iwn.c
+++ b/sys/dev/iwn/if_iwn.c
@@ -3031,6 +3031,7 @@ static void
iwn_rx_done(struct iwn_softc *sc, struct iwn_rx_desc *desc,
struct iwn_rx_data *data)
{
+ struct epoch_tracker et;
struct iwn_ops *ops = &sc->ops;
struct ieee80211com *ic = &sc->sc_ic;
struct iwn_rx_ring *ring = &sc->rxq;
@@ -3190,6 +3191,7 @@ iwn_rx_done(struct iwn_softc *sc, struct iwn_rx_desc *desc,
}
IWN_UNLOCK(sc);
+ NET_EPOCH_ENTER(et);
/* Send the frame to the 802.11 layer. */
if (ni != NULL) {
@@ -3201,6 +3203,7 @@ iwn_rx_done(struct iwn_softc *sc, struct iwn_rx_desc *desc,
} else
(void)ieee80211_input_all(ic, m, rssi - nf, nf);
+ NET_EPOCH_EXIT(et);
IWN_LOCK(sc);
DPRINTF(sc, IWN_DEBUG_TRACE, "->%s: end\n",__func__);