diff options
author | 2020-02-19 11:05:04 +0000 | |
---|---|---|
committer | 2020-02-19 11:05:04 +0000 | |
commit | bdb45ccff38903b99c46fd88a94f68dbafc18255 (patch) | |
tree | 238da3af1fed8a393ebc344cf221cb87e471db1a | |
parent | Separate singular and plural (diff) | |
download | wireguard-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.c | 24 | ||||
-rw-r--r-- | sys/dev/ic/rt2560.c | 32 | ||||
-rw-r--r-- | sys/dev/ic/rt2661.c | 32 | ||||
-rw-r--r-- | sys/dev/ic/rt2860.c | 22 |
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 |