aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/ath
diff options
context:
space:
mode:
authorSam Leffler <sam@FreeBSD.org>2003-09-15 19:41:54 +0000
committerSam Leffler <sam@FreeBSD.org>2003-09-15 19:41:54 +0000
commitecddff40a0035523d7e3daceb917f65859befedd (patch)
treefda7f711eb1d9b74d9e01d4224bec0895727f270 /sys/dev/ath
parent18f897abe0850838884c467406e77e294a8fe6cd (diff)
Notes
Diffstat (limited to 'sys/dev/ath')
-rw-r--r--sys/dev/ath/if_ath.c16
1 files changed, 3 insertions, 13 deletions
diff --git a/sys/dev/ath/if_ath.c b/sys/dev/ath/if_ath.c
index 17760e1e3794..aab78c03ea3c 100644
--- a/sys/dev/ath/if_ath.c
+++ b/sys/dev/ath/if_ath.c
@@ -403,6 +403,7 @@ ath_intr(void *arg)
ath_hal_dumpstate(ah);
}
#endif /* AR_DEBUG */
+ status &= sc->sc_imask; /* discard unasked for bits */
if (status & HAL_INT_FATAL) {
sc->sc_stats.ast_hardware++;
ath_hal_intrset(ah, 0); /* disable intr's until reset */
@@ -1519,7 +1520,7 @@ ath_rx_proc(void *arg, int npending)
}
len = ds->ds_rxstat.rs_datalen;
- if (len < sizeof(struct ieee80211_frame)) {
+ if (len < IEEE80211_MIN_LEN) {
DPRINTF(("ath_rx_proc: short packet %d\n", len));
sc->sc_stats.ast_rx_tooshort++;
goto rx_next;
@@ -1528,18 +1529,6 @@ ath_rx_proc(void *arg, int npending)
bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap,
BUS_DMASYNC_POSTREAD);
- wh = mtod(m, struct ieee80211_frame *);
- if ((wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK) ==
- IEEE80211_FC0_TYPE_CTL &&
- ic->ic_opmode != IEEE80211_M_MONITOR) {
- /*
- * Discard control frame when not in monitor mode.
- */
- DPRINTF(("ath_rx_proc: control frame\n"));
- sc->sc_stats.ast_rx_ctl++;
- goto rx_next;
- }
-
bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap);
bf->bf_m = NULL;
m->m_pkthdr.rcvif = ifp;
@@ -1570,6 +1559,7 @@ ath_rx_proc(void *arg, int npending)
}
m_adj(m, -IEEE80211_CRC_LEN);
+ wh = mtod(m, struct ieee80211_frame *);
if (wh->i_fc[1] & IEEE80211_FC1_WEP) {
/*
* WEP is decrypted by hardware. Clear WEP bit