aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/usb/wlan
diff options
context:
space:
mode:
authorHans Petter Selasky <hselasky@FreeBSD.org>2020-01-30 09:41:48 +0000
committerHans Petter Selasky <hselasky@FreeBSD.org>2020-01-30 09:41:48 +0000
commit21c4082de9e2cf9a0fd81a9a981ab06022956847 (patch)
treeabb608e4e2dfef7d0936d0bf68ebb5c35db9207f /sys/dev/usb/wlan
parent3cfabd81a1861b96a344c6b7cfef0149e3cf2d33 (diff)
downloadsrc-21c4082de9e2cf9a0fd81a9a981ab06022956847.tar.gz
src-21c4082de9e2cf9a0fd81a9a981ab06022956847.zip
Widen EPOCH(9) usage in USB WLAN drivers.
This patch should unbreak the USB WLAN drivers after r357004. Pointy hat: glebius@ Sponsored by: Mellanox Technologies
Notes
Notes: svn path=/head/; revision=357288
Diffstat (limited to 'sys/dev/usb/wlan')
-rw-r--r--sys/dev/usb/wlan/if_rum.c3
-rw-r--r--sys/dev/usb/wlan/if_run.c3
-rw-r--r--sys/dev/usb/wlan/if_uath.c3
-rw-r--r--sys/dev/usb/wlan/if_upgt.c3
-rw-r--r--sys/dev/usb/wlan/if_ural.c3
-rw-r--r--sys/dev/usb/wlan/if_urtw.c3
-rw-r--r--sys/dev/usb/wlan/if_zyd.c3
7 files changed, 21 insertions, 0 deletions
diff --git a/sys/dev/usb/wlan/if_rum.c b/sys/dev/usb/wlan/if_rum.c
index 2dcb29adaa5d..b623c57e0df1 100644
--- a/sys/dev/usb/wlan/if_rum.c
+++ b/sys/dev/usb/wlan/if_rum.c
@@ -1168,6 +1168,7 @@ rum_bulk_read_callback(struct usb_xfer *xfer, usb_error_t error)
struct ieee80211com *ic = &sc->sc_ic;
struct ieee80211_frame_min *wh;
struct ieee80211_node *ni;
+ struct epoch_tracker et;
struct mbuf *m = NULL;
struct usb_page_cache *pc;
uint32_t flags;
@@ -1286,6 +1287,7 @@ tr_setup:
else
ni = NULL;
+ NET_EPOCH_ENTER(et);
if (ni != NULL) {
(void) ieee80211_input(ni, m, rssi,
RT2573_NOISE_FLOOR);
@@ -1293,6 +1295,7 @@ tr_setup:
} else
(void) ieee80211_input_all(ic, m, rssi,
RT2573_NOISE_FLOOR);
+ NET_EPOCH_EXIT(et);
}
RUM_LOCK(sc);
rum_start(sc);
diff --git a/sys/dev/usb/wlan/if_run.c b/sys/dev/usb/wlan/if_run.c
index 26872b309e31..5cad57417736 100644
--- a/sys/dev/usb/wlan/if_run.c
+++ b/sys/dev/usb/wlan/if_run.c
@@ -2811,6 +2811,7 @@ run_rx_frame(struct run_softc *sc, struct mbuf *m, uint32_t dmalen)
struct ieee80211com *ic = &sc->sc_ic;
struct ieee80211_frame *wh;
struct ieee80211_node *ni;
+ struct epoch_tracker et;
struct rt2870_rxd *rxd;
struct rt2860_rxwi *rxwi;
uint32_t flags;
@@ -2929,12 +2930,14 @@ run_rx_frame(struct run_softc *sc, struct mbuf *m, uint32_t dmalen)
}
}
+ NET_EPOCH_ENTER(et);
if (ni != NULL) {
(void)ieee80211_input(ni, m, rssi, nf);
ieee80211_free_node(ni);
} else {
(void)ieee80211_input_all(ic, m, rssi, nf);
}
+ NET_EPOCH_EXIT(et);
return;
diff --git a/sys/dev/usb/wlan/if_uath.c b/sys/dev/usb/wlan/if_uath.c
index c6a79614e914..d67f47636c40 100644
--- a/sys/dev/usb/wlan/if_uath.c
+++ b/sys/dev/usb/wlan/if_uath.c
@@ -2705,6 +2705,7 @@ uath_bulk_rx_callback(struct usb_xfer *xfer, usb_error_t error)
struct ieee80211com *ic = &sc->sc_ic;
struct ieee80211_frame *wh;
struct ieee80211_node *ni;
+ struct epoch_tracker et;
struct mbuf *m = NULL;
struct uath_data *data;
struct uath_rx_desc *desc = NULL;
@@ -2751,6 +2752,7 @@ setup:
ni = ieee80211_find_rxnode(ic,
(struct ieee80211_frame_min *)wh);
nf = -95; /* XXX */
+ NET_EPOCH_ENTER(et);
if (ni != NULL) {
(void) ieee80211_input(ni, m,
(int)be32toh(desc->rssi), nf);
@@ -2759,6 +2761,7 @@ setup:
} else
(void) ieee80211_input_all(ic, m,
(int)be32toh(desc->rssi), nf);
+ NET_EPOCH_EXIT(et);
m = NULL;
desc = NULL;
}
diff --git a/sys/dev/usb/wlan/if_upgt.c b/sys/dev/usb/wlan/if_upgt.c
index 7451381411fa..9d4335816769 100644
--- a/sys/dev/usb/wlan/if_upgt.c
+++ b/sys/dev/usb/wlan/if_upgt.c
@@ -2211,6 +2211,7 @@ upgt_bulk_rx_callback(struct usb_xfer *xfer, usb_error_t error)
struct ieee80211com *ic = &sc->sc_ic;
struct ieee80211_frame *wh;
struct ieee80211_node *ni;
+ struct epoch_tracker et;
struct mbuf *m = NULL;
struct upgt_data *data;
int8_t nf;
@@ -2248,12 +2249,14 @@ setup:
ni = ieee80211_find_rxnode(ic,
(struct ieee80211_frame_min *)wh);
nf = -95; /* XXX */
+ NET_EPOCH_ENTER(et);
if (ni != NULL) {
(void) ieee80211_input(ni, m, rssi, nf);
/* node is no longer needed */
ieee80211_free_node(ni);
} else
(void) ieee80211_input_all(ic, m, rssi, nf);
+ NET_EPOCH_EXIT(et);
m = NULL;
}
UPGT_LOCK(sc);
diff --git a/sys/dev/usb/wlan/if_ural.c b/sys/dev/usb/wlan/if_ural.c
index a71666379190..c2f1f85891bb 100644
--- a/sys/dev/usb/wlan/if_ural.c
+++ b/sys/dev/usb/wlan/if_ural.c
@@ -851,6 +851,7 @@ ural_bulk_read_callback(struct usb_xfer *xfer, usb_error_t error)
struct ural_softc *sc = usbd_xfer_softc(xfer);
struct ieee80211com *ic = &sc->sc_ic;
struct ieee80211_node *ni;
+ struct epoch_tracker et;
struct mbuf *m = NULL;
struct usb_page_cache *pc;
uint32_t flags;
@@ -931,11 +932,13 @@ tr_setup:
if (m) {
ni = ieee80211_find_rxnode(ic,
mtod(m, struct ieee80211_frame_min *));
+ NET_EPOCH_ENTER(et);
if (ni != NULL) {
(void) ieee80211_input(ni, m, rssi, nf);
ieee80211_free_node(ni);
} else
(void) ieee80211_input_all(ic, m, rssi, nf);
+ NET_EPOCH_EXIT(et);
}
RAL_LOCK(sc);
ural_start(sc);
diff --git a/sys/dev/usb/wlan/if_urtw.c b/sys/dev/usb/wlan/if_urtw.c
index 1a5db0c0a98d..280506f49bd6 100644
--- a/sys/dev/usb/wlan/if_urtw.c
+++ b/sys/dev/usb/wlan/if_urtw.c
@@ -4042,6 +4042,7 @@ urtw_bulk_rx_callback(struct usb_xfer *xfer, usb_error_t error)
struct urtw_softc *sc = usbd_xfer_softc(xfer);
struct ieee80211com *ic = &sc->sc_ic;
struct ieee80211_node *ni;
+ struct epoch_tracker et;
struct mbuf *m = NULL;
struct urtw_data *data;
int8_t nf = -95;
@@ -4085,12 +4086,14 @@ setup:
} else
ni = NULL;
+ NET_EPOCH_ENTER(et);
if (ni != NULL) {
(void) ieee80211_input(ni, m, rssi, nf);
/* node is no longer needed */
ieee80211_free_node(ni);
} else
(void) ieee80211_input_all(ic, m, rssi, nf);
+ NET_EPOCH_EXIT(et);
m = NULL;
}
URTW_LOCK(sc);
diff --git a/sys/dev/usb/wlan/if_zyd.c b/sys/dev/usb/wlan/if_zyd.c
index d823034ea94f..99b032661592 100644
--- a/sys/dev/usb/wlan/if_zyd.c
+++ b/sys/dev/usb/wlan/if_zyd.c
@@ -2223,6 +2223,7 @@ zyd_bulk_read_callback(struct usb_xfer *xfer, usb_error_t error)
struct zyd_softc *sc = usbd_xfer_softc(xfer);
struct ieee80211com *ic = &sc->sc_ic;
struct ieee80211_node *ni;
+ struct epoch_tracker et;
struct zyd_rx_desc desc;
struct mbuf *m;
struct usb_page_cache *pc;
@@ -2278,6 +2279,7 @@ tr_setup:
* "ieee80211_input" here, and not some lines up!
*/
ZYD_UNLOCK(sc);
+ NET_EPOCH_ENTER(et);
for (i = 0; i < sc->sc_rx_count; i++) {
rssi = sc->sc_rx_data[i].rssi;
m = sc->sc_rx_data[i].m;
@@ -2293,6 +2295,7 @@ tr_setup:
} else
(void)ieee80211_input_all(ic, m, rssi, nf);
}
+ NET_EPOCH_EXIT(et);
ZYD_LOCK(sc);
zyd_start(sc);
break;