summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorclaudio <claudio@openbsd.org>2020-02-19 11:05:04 +0000
committerclaudio <claudio@openbsd.org>2020-02-19 11:05:04 +0000
commitbdb45ccff38903b99c46fd88a94f68dbafc18255 (patch)
tree238da3af1fed8a393ebc344cf221cb87e471db1a
parentSeparate singular and plural (diff)
downloadwireguard-openbsd-bdb45ccff38903b99c46fd88a94f68dbafc18255.tar.xz
wireguard-openbsd-bdb45ccff38903b99c46fd88a94f68dbafc18255.zip
Similar to other wireless drivers use bpf_mtap_hdr() to prepend the
radiotap header instead of using a fack mbuf in the stack. OK stsp@
-rw-r--r--sys/dev/ic/ath.c24
-rw-r--r--sys/dev/ic/rt2560.c32
-rw-r--r--sys/dev/ic/rt2661.c32
-rw-r--r--sys/dev/ic/rt2860.c22
4 files changed, 24 insertions, 86 deletions
diff --git a/sys/dev/ic/ath.c b/sys/dev/ic/ath.c
index dd571921ddc..aae0b2a87ff 100644
--- a/sys/dev/ic/ath.c
+++ b/sys/dev/ic/ath.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ath.c,v 1.117 2019/09/12 12:55:06 stsp Exp $ */
+/* $OpenBSD: ath.c,v 1.118 2020/02/19 11:05:04 claudio Exp $ */
/* $NetBSD: ath.c,v 1.37 2004/08/18 21:59:39 dyoung Exp $ */
/*-
@@ -1922,8 +1922,6 @@ ath_rx_proc(void *arg, int npending)
#if NBPFILTER > 0
if (sc->sc_drvbpf) {
- struct mbuf mb;
-
sc->sc_rxtap.wr_flags = IEEE80211_RADIOTAP_F_FCS;
sc->sc_rxtap.wr_rate =
sc->sc_hwmap[ds->ds_rxstat.rs_rate] &
@@ -1932,13 +1930,8 @@ ath_rx_proc(void *arg, int npending)
sc->sc_rxtap.wr_rssi = ds->ds_rxstat.rs_rssi;
sc->sc_rxtap.wr_max_rssi = ic->ic_max_rssi;
- mb.m_data = (caddr_t)&sc->sc_rxtap;
- mb.m_len = sc->sc_rxtap_len;
- mb.m_next = m;
- mb.m_nextpkt = NULL;
- mb.m_type = 0;
- mb.m_flags = 0;
- bpf_mtap(sc->sc_drvbpf, &mb, BPF_DIRECTION_IN);
+ bpf_mtap_hdr(sc->sc_drvbpf, &sc->sc_rxtap,
+ sc->sc_rxtap_len, m, BPF_DIRECTION_IN);
}
#endif
m_adj(m, -IEEE80211_CRC_LEN);
@@ -2307,8 +2300,6 @@ ath_tx_start(struct ath_softc *sc, struct ieee80211_node *ni,
bpf_mtap(ic->ic_rawbpf, m0, BPF_DIRECTION_OUT);
if (sc->sc_drvbpf) {
- struct mbuf mb;
-
sc->sc_txtap.wt_flags = 0;
if (shortPreamble)
sc->sc_txtap.wt_flags |= IEEE80211_RADIOTAP_F_SHORTPRE;
@@ -2320,13 +2311,8 @@ ath_tx_start(struct ath_softc *sc, struct ieee80211_node *ni,
sc->sc_txtap.wt_antenna = antenna;
sc->sc_txtap.wt_hwqueue = hwqueue;
- mb.m_data = (caddr_t)&sc->sc_txtap;
- mb.m_len = sc->sc_txtap_len;
- mb.m_next = m0;
- mb.m_nextpkt = NULL;
- mb.m_type = 0;
- mb.m_flags = 0;
- bpf_mtap(sc->sc_drvbpf, &mb, BPF_DIRECTION_OUT);
+ bpf_mtap_hdr(sc->sc_drvbpf, &sc->sc_txtap, sc->sc_txtap_len,
+ m0, BPF_DIRECTION_OUT);
}
#endif
diff --git a/sys/dev/ic/rt2560.c b/sys/dev/ic/rt2560.c
index 6808304fc20..7009e393e54 100644
--- a/sys/dev/ic/rt2560.c
+++ b/sys/dev/ic/rt2560.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rt2560.c,v 1.85 2019/09/12 12:55:07 stsp Exp $ */
+/* $OpenBSD: rt2560.c,v 1.86 2020/02/19 11:05:04 claudio Exp $ */
/*-
* Copyright (c) 2005, 2006
@@ -1171,7 +1171,6 @@ rt2560_decryption_intr(struct rt2560_softc *sc)
#if NBPFILTER > 0
if (sc->sc_drvbpf != NULL) {
- struct mbuf mb;
struct rt2560_rx_radiotap_header *tap = &sc->sc_rxtap;
uint32_t tsf_lo, tsf_hi;
@@ -1189,13 +1188,8 @@ rt2560_decryption_intr(struct rt2560_softc *sc)
tap->wr_antenna = sc->rx_ant;
tap->wr_antsignal = desc->rssi;
- mb.m_data = (caddr_t)tap;
- mb.m_len = sc->sc_txtap_len;
- mb.m_next = m;
- mb.m_nextpkt = NULL;
- mb.m_type = 0;
- mb.m_flags = 0;
- bpf_mtap(sc->sc_drvbpf, &mb, BPF_DIRECTION_IN);
+ bpf_mtap_hdr(sc->sc_drvbpf, tap, sc->sc_txtap_len, m,
+ BPF_DIRECTION_IN);
}
#endif
wh = mtod(m, struct ieee80211_frame *);
@@ -1632,7 +1626,6 @@ rt2560_tx_mgt(struct rt2560_softc *sc, struct mbuf *m0,
#if NBPFILTER > 0
if (sc->sc_drvbpf != NULL) {
- struct mbuf mb;
struct rt2560_tx_radiotap_header *tap = &sc->sc_txtap;
tap->wt_flags = 0;
@@ -1641,13 +1634,8 @@ rt2560_tx_mgt(struct rt2560_softc *sc, struct mbuf *m0,
tap->wt_chan_flags = htole16(ic->ic_ibss_chan->ic_flags);
tap->wt_antenna = sc->tx_ant;
- mb.m_data = (caddr_t)tap;
- mb.m_len = sc->sc_txtap_len;
- mb.m_next = m0;
- mb.m_nextpkt = NULL;
- mb.m_type = 0;
- mb.m_flags = 0;
- bpf_mtap(sc->sc_drvbpf, &mb, BPF_DIRECTION_OUT);
+ bpf_mtap_hdr(sc->sc_drvbpf, tap, sc->sc_txtap_len, m0,
+ BPF_DIRECTION_OUT);
}
#endif
@@ -1864,7 +1852,6 @@ rt2560_tx_data(struct rt2560_softc *sc, struct mbuf *m0,
#if NBPFILTER > 0
if (sc->sc_drvbpf != NULL) {
- struct mbuf mb;
struct rt2560_tx_radiotap_header *tap = &sc->sc_txtap;
tap->wt_flags = 0;
@@ -1873,13 +1860,8 @@ rt2560_tx_data(struct rt2560_softc *sc, struct mbuf *m0,
tap->wt_chan_flags = htole16(ic->ic_ibss_chan->ic_flags);
tap->wt_antenna = sc->tx_ant;
- mb.m_data = (caddr_t)tap;
- mb.m_len = sc->sc_txtap_len;
- mb.m_next = m0;
- mb.m_nextpkt = NULL;
- mb.m_type = 0;
- mb.m_flags = 0;
- bpf_mtap(sc->sc_drvbpf, &mb, BPF_DIRECTION_OUT);
+ bpf_mtap_hdr(sc->sc_drvbpf, tap, sc->sc_txtap_len, m0,
+ BPF_DIRECTION_OUT);
}
#endif
diff --git a/sys/dev/ic/rt2661.c b/sys/dev/ic/rt2661.c
index 002e73c389b..9e90245697e 100644
--- a/sys/dev/ic/rt2661.c
+++ b/sys/dev/ic/rt2661.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rt2661.c,v 1.95 2019/09/12 12:55:07 stsp Exp $ */
+/* $OpenBSD: rt2661.c,v 1.96 2020/02/19 11:05:04 claudio Exp $ */
/*-
* Copyright (c) 2006
@@ -1247,7 +1247,6 @@ rt2661_rx_intr(struct rt2661_softc *sc)
#if NBPFILTER > 0
if (sc->sc_drvbpf != NULL) {
- struct mbuf mb;
struct rt2661_rx_radiotap_header *tap = &sc->sc_rxtap;
uint32_t tsf_lo, tsf_hi;
@@ -1263,13 +1262,8 @@ rt2661_rx_intr(struct rt2661_softc *sc)
tap->wr_chan_flags = htole16(sc->sc_curchan->ic_flags);
tap->wr_antsignal = desc->rssi;
- mb.m_data = (caddr_t)tap;
- mb.m_len = sc->sc_rxtap_len;
- mb.m_next = m;
- mb.m_nextpkt = NULL;
- mb.m_type = 0;
- mb.m_flags = 0;
- bpf_mtap(sc->sc_drvbpf, &mb, BPF_DIRECTION_IN);
+ bpf_mtap_hdr(sc->sc_drvbpf, tap, sc->sc_rxtap_len, m,
+ BPF_DIRECTION_IN);
}
#endif
@@ -1632,7 +1626,6 @@ rt2661_tx_mgt(struct rt2661_softc *sc, struct mbuf *m0,
#if NBPFILTER > 0
if (sc->sc_drvbpf != NULL) {
- struct mbuf mb;
struct rt2661_tx_radiotap_header *tap = &sc->sc_txtap;
tap->wt_flags = 0;
@@ -1640,13 +1633,8 @@ rt2661_tx_mgt(struct rt2661_softc *sc, struct mbuf *m0,
tap->wt_chan_freq = htole16(sc->sc_curchan->ic_freq);
tap->wt_chan_flags = htole16(sc->sc_curchan->ic_flags);
- mb.m_data = (caddr_t)tap;
- mb.m_len = sc->sc_txtap_len;
- mb.m_next = m0;
- mb.m_nextpkt = NULL;
- mb.m_type = 0;
- mb.m_flags = 0;
- bpf_mtap(sc->sc_drvbpf, &mb, BPF_DIRECTION_OUT);
+ bpf_mtap_hdr(sc->sc_drvbpf, tap, sc->sc_txtap_len, m0,
+ BPF_DIRECTION_OUT);
}
#endif
@@ -1864,7 +1852,6 @@ rt2661_tx_data(struct rt2661_softc *sc, struct mbuf *m0,
#if NBPFILTER > 0
if (sc->sc_drvbpf != NULL) {
- struct mbuf mb;
struct rt2661_tx_radiotap_header *tap = &sc->sc_txtap;
tap->wt_flags = 0;
@@ -1872,13 +1859,8 @@ rt2661_tx_data(struct rt2661_softc *sc, struct mbuf *m0,
tap->wt_chan_freq = htole16(sc->sc_curchan->ic_freq);
tap->wt_chan_flags = htole16(sc->sc_curchan->ic_flags);
- mb.m_data = (caddr_t)tap;
- mb.m_len = sc->sc_txtap_len;
- mb.m_next = m0;
- mb.m_nextpkt = NULL;
- mb.m_type = 0;
- mb.m_flags = 0;
- bpf_mtap(sc->sc_drvbpf, &mb, BPF_DIRECTION_OUT);
+ bpf_mtap_hdr(sc->sc_drvbpf, tap, sc->sc_txtap_len, m0,
+ BPF_DIRECTION_OUT);
}
#endif
diff --git a/sys/dev/ic/rt2860.c b/sys/dev/ic/rt2860.c
index bd82a8480b4..bc8763376c3 100644
--- a/sys/dev/ic/rt2860.c
+++ b/sys/dev/ic/rt2860.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rt2860.c,v 1.97 2019/09/12 12:55:07 stsp Exp $ */
+/* $OpenBSD: rt2860.c,v 1.98 2020/02/19 11:05:04 claudio Exp $ */
/*-
* Copyright (c) 2007-2010 Damien Bergamini <damien.bergamini@free.fr>
@@ -1272,7 +1272,6 @@ rt2860_rx_intr(struct rt2860_softc *sc)
int error;
#if NBPFILTER > 0
struct rt2860_rx_radiotap_header *tap;
- struct mbuf mb;
uint16_t phy;
#endif
@@ -1405,13 +1404,8 @@ rt2860_rx_intr(struct rt2860_softc *sc)
}
break;
}
- mb.m_data = (caddr_t)tap;
- mb.m_len = sc->sc_rxtap_len;
- mb.m_next = m;
- mb.m_nextpkt = NULL;
- mb.m_type = 0;
- mb.m_flags = 0;
- bpf_mtap(sc->sc_drvbpf, &mb, BPF_DIRECTION_IN);
+ bpf_mtap_hdr(sc->sc_drvbpf, tap, sc->sc_rxtap_len, m,
+ BPF_DIRECTION_IN);
skipbpf:
#endif
/* grab a reference to the source node */
@@ -1645,7 +1639,6 @@ rt2860_tx(struct rt2860_softc *sc, struct mbuf *m, struct ieee80211_node *ni)
#if NBPFILTER > 0
if (__predict_false(sc->sc_drvbpf != NULL)) {
struct rt2860_tx_radiotap_header *tap = &sc->sc_txtap;
- struct mbuf mb;
tap->wt_flags = 0;
tap->wt_rate = rt2860_rates[ridx].rate;
@@ -1655,13 +1648,8 @@ rt2860_tx(struct rt2860_softc *sc, struct mbuf *m, struct ieee80211_node *ni)
if (mcs & RT2860_PHY_SHPRE)
tap->wt_flags |= IEEE80211_RADIOTAP_F_SHORTPRE;
- mb.m_data = (caddr_t)tap;
- mb.m_len = sc->sc_txtap_len;
- mb.m_next = m;
- mb.m_nextpkt = NULL;
- mb.m_type = 0;
- mb.m_flags = 0;
- bpf_mtap(sc->sc_drvbpf, &mb, BPF_DIRECTION_OUT);
+ bpf_mtap_hdr(sc->sc_drvbpf, tap, sc->sc_txtap_len, m,
+ BPF_DIRECTION_OUT);
}
#endif