summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoradrian <adrian@FreeBSD.org>2011-03-26 10:52:37 +0000
committeradrian <adrian@FreeBSD.org>2011-03-26 10:52:37 +0000
commit4f32c1a13f363162f975d999393bd4fd4744aed6 (patch)
tree3dc2e4b8b0a155609e5d564e0f3c379caf784e94
parentb49c51915d551686c40da73f6abd499dd5649cef (diff)
downloadFreeBSD-src-4f32c1a13f363162f975d999393bd4fd4744aed6.zip
FreeBSD-src-4f32c1a13f363162f975d999393bd4fd4744aed6.tar.gz
Add in the hardware PS-POLL frame reception setting, but leave it disabled
by default. Adventourous souls with an AR9220/AR9280 or later and who have a device that sends PS-POLL frames may wish to try tinkering with this option and get back to me.
-rw-r--r--sys/dev/ath/if_ath.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/sys/dev/ath/if_ath.c b/sys/dev/ath/if_ath.c
index 6f7ed75..9ecf51f 100644
--- a/sys/dev/ath/if_ath.c
+++ b/sys/dev/ath/if_ath.c
@@ -1927,6 +1927,19 @@ ath_calcrxfilter(struct ath_softc *sc)
if (ic->ic_opmode == IEEE80211_M_HOSTAP &&
IEEE80211_IS_CHAN_ANYG(ic->ic_curchan))
rfilt |= HAL_RX_FILTER_BEACON;
+
+#if 0
+ /*
+ * Enable hardware PS-POLL only for hostap mode;
+ * STA mode sends PS-POLL frames but never
+ * sends them.
+ */
+ if (ath_hal_getcapability(ah, HAL_CAP_HAS_PSPOLL,
+ 0, NULL) == HAL_OK &&
+ ic->ic_opmode == IEEE80211_M_HOSTAP)
+ rfilt |= HAL_RX_FILTER_PSPOLL;
+#endif
+
if (sc->sc_nmeshvaps) {
rfilt |= HAL_RX_FILTER_BEACON;
if (sc->sc_hasbmatch)
@@ -1936,8 +1949,14 @@ ath_calcrxfilter(struct ath_softc *sc)
}
if (ic->ic_opmode == IEEE80211_M_MONITOR)
rfilt |= HAL_RX_FILTER_CONTROL;
+
+ /*
+ * Enable RX of compressed BAR frames only when doing
+ * 802.11n. Required for A-MPDU.
+ */
if (IEEE80211_IS_CHAN_HT(ic->ic_curchan))
rfilt |= HAL_RX_FILTER_COMPBAR;
+
DPRINTF(sc, ATH_DEBUG_MODE, "%s: RX filter 0x%x, %s if_flags 0x%x\n",
__func__, rfilt, ieee80211_opmode_name[ic->ic_opmode], ifp->if_flags);
return rfilt;
OpenPOWER on IntegriCloud