2008-10-29 12:31:15

by Bob Copeland

[permalink] [raw]
Subject: [PATCH] ath5k: honor FIF_BCN_PRBRESP_PROMISC in STA mode

We were setting RX_FILTER_BEACON even after entering STA mode,
which leads to a lot of unnecessary wakeups. This should fix the
bug "Ath5k driver has too many interrupts per second at idle" at
http://bugzilla.kernel.org/show_bug.cgi?id=11749.

Signed-off-by: Bob Copeland <[email protected]>
---
drivers/net/wireless/ath5k/base.c | 4 +---
1 files changed, 1 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c
index c7ffcbb..5ef8cc4 100644
--- a/drivers/net/wireless/ath5k/base.c
+++ b/drivers/net/wireless/ath5k/base.c
@@ -2952,10 +2952,8 @@ static void ath5k_configure_filter(struct ieee80211_hw *hw,
sc->opmode != NL80211_IFTYPE_MESH_POINT &&
test_bit(ATH_STAT_PROMISC, sc->status))
rfilt |= AR5K_RX_FILTER_PROM;
- if (sc->opmode == NL80211_IFTYPE_STATION ||
- sc->opmode == NL80211_IFTYPE_ADHOC) {
+ if (sc->opmode == NL80211_IFTYPE_ADHOC)
rfilt |= AR5K_RX_FILTER_BEACON;
- }
if (sc->opmode == NL80211_IFTYPE_MESH_POINT)
rfilt |= AR5K_RX_FILTER_CONTROL | AR5K_RX_FILTER_BEACON |
AR5K_RX_FILTER_PROBEREQ | AR5K_RX_FILTER_PROM;
--
1.5.4.2.182.gb3092




2008-10-29 14:51:39

by Nick Kossifidis

[permalink] [raw]
Subject: Re: [PATCH] ath5k: honor FIF_BCN_PRBRESP_PROMISC in STA mode

2008/10/29 Bob Copeland <[email protected]>:
> We were setting RX_FILTER_BEACON even after entering STA mode,
> which leads to a lot of unnecessary wakeups. This should fix the
> bug "Ath5k driver has too many interrupts per second at idle" at
> http://bugzilla.kernel.org/show_bug.cgi?id=11749.
>
> Signed-off-by: Bob Copeland <[email protected]>
> ---
> drivers/net/wireless/ath5k/base.c | 4 +---
> 1 files changed, 1 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c
> index c7ffcbb..5ef8cc4 100644
> --- a/drivers/net/wireless/ath5k/base.c
> +++ b/drivers/net/wireless/ath5k/base.c
> @@ -2952,10 +2952,8 @@ static void ath5k_configure_filter(struct ieee80211_hw *hw,
> sc->opmode != NL80211_IFTYPE_MESH_POINT &&
> test_bit(ATH_STAT_PROMISC, sc->status))
> rfilt |= AR5K_RX_FILTER_PROM;
> - if (sc->opmode == NL80211_IFTYPE_STATION ||
> - sc->opmode == NL80211_IFTYPE_ADHOC) {
> + if (sc->opmode == NL80211_IFTYPE_ADHOC)
> rfilt |= AR5K_RX_FILTER_BEACON;
> - }
> if (sc->opmode == NL80211_IFTYPE_MESH_POINT)
> rfilt |= AR5K_RX_FILTER_CONTROL | AR5K_RX_FILTER_BEACON |
> AR5K_RX_FILTER_PROBEREQ | AR5K_RX_FILTER_PROM;

Acked-by: Nick Kossifidis <[email protected]>



--
GPG ID: 0xD21DB2DB
As you read this post global entropy rises. Have Fun ;-)
Nick