summaryrefslogtreecommitdiffstats
path: root/sys/net80211/ieee80211_input.c
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2009-06-02 00:33:28 +0000
committersam <sam@FreeBSD.org>2009-06-02 00:33:28 +0000
commit35d42ca22fe811992438e1615568d4e7635edba0 (patch)
treeccf8dc084c04cab525bd2e37c6e5fc02f735b98b /sys/net80211/ieee80211_input.c
parent97e535876ee2651cea94436136470eb9445e3f95 (diff)
downloadFreeBSD-src-35d42ca22fe811992438e1615568d4e7635edba0.zip
FreeBSD-src-35d42ca22fe811992438e1615568d4e7635edba0.tar.gz
Fix monitor mode vaps to work as intended:
o track # bpf taps on monitor mode vaps instead of # monitor mode vaps o spam monitor mode taps on tx/rx o fix ieee80211_radiotap_rx_all to dispatch frames only if the vap is up o while here print radiotap (and superg) state in show com
Diffstat (limited to 'sys/net80211/ieee80211_input.c')
-rw-r--r--sys/net80211/ieee80211_input.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/net80211/ieee80211_input.c b/sys/net80211/ieee80211_input.c
index 3cd9d8a..53c2285 100644
--- a/sys/net80211/ieee80211_input.c
+++ b/sys/net80211/ieee80211_input.c
@@ -60,6 +60,8 @@ ieee80211_input_all(struct ieee80211com *ic, struct mbuf *m, int rssi, int nf)
struct ieee80211vap *vap;
int type = -1;
+ m->m_flags |= M_BCAST; /* NB: mark for bpf tap'ing */
+
/* XXX locking */
TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) {
struct ieee80211_node *ni;
@@ -199,6 +201,9 @@ ieee80211_deliver_data(struct ieee80211vap *vap,
struct ether_header *eh = mtod(m, struct ether_header *);
struct ifnet *ifp = vap->iv_ifp;
+ /* clear driver/net80211 flags before passing up */
+ m->m_flags &= ~(M_80211_RX | M_MCAST | M_BCAST);
+
/* NB: see hostap_deliver_data, this path doesn't handle hostap */
KASSERT(vap->iv_opmode != IEEE80211_M_HOSTAP, ("gack, hostap"));
/*
@@ -214,9 +219,6 @@ ieee80211_deliver_data(struct ieee80211vap *vap,
IEEE80211_NODE_STAT(ni, rx_ucast);
m->m_pkthdr.rcvif = ifp;
- /* clear driver/net80211 flags before passing up */
- m->m_flags &= ~M_80211_RX;
-
if (ni->ni_vlan != 0) {
/* attach vlan tag */
m->m_pkthdr.ether_vtag = ni->ni_vlan;
OpenPOWER on IntegriCloud