diff options
author | Luis R. Rodriguez <lrodriguez@atheros.com> | 2009-10-06 20:44:34 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-10-07 16:39:51 -0400 |
commit | 8ce54c5a5f5d2f4f03993395d60f3110670002ca (patch) | |
tree | 636345a71ec097688b66da271b8cfc0275b7f645 | |
parent | a3f86bff1c056f47c2df4c58bfcf7bdda8eaf9d0 (diff) |
ath5k: enable Power-Save Polls by setting the association ID
mac80211 has long provided us the association ID. This isn't useful except
for Power-Save polling which now gets enabled. We can now poll for our
pending frames on the AP during power save.
You can review the details of Power-Save on the wireless wiki:
http://wireless.kernel.org/en/developers/Documentation/ieee80211/power-savings
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/ath/ath5k/base.c | 11 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath5k/reset.c | 1 |
2 files changed, 9 insertions, 3 deletions
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c index 01da83d75ef4..07c1e52b5a0c 100644 --- a/drivers/net/wireless/ath/ath5k/base.c +++ b/drivers/net/wireless/ath/ath5k/base.c | |||
@@ -3211,8 +3211,7 @@ static void ath5k_bss_info_changed(struct ieee80211_hw *hw, | |||
3211 | if (changes & BSS_CHANGED_BSSID) { | 3211 | if (changes & BSS_CHANGED_BSSID) { |
3212 | /* Cache for later use during resets */ | 3212 | /* Cache for later use during resets */ |
3213 | memcpy(common->curbssid, bss_conf->bssid, ETH_ALEN); | 3213 | memcpy(common->curbssid, bss_conf->bssid, ETH_ALEN); |
3214 | /* XXX: assoc id is set to 0 for now, mac80211 doesn't have | 3214 | common->curaid = 0; |
3215 | * a clean way of letting us retrieve this yet. */ | ||
3216 | ath5k_hw_set_associd(ah); | 3215 | ath5k_hw_set_associd(ah); |
3217 | mmiowb(); | 3216 | mmiowb(); |
3218 | } | 3217 | } |
@@ -3226,6 +3225,14 @@ static void ath5k_bss_info_changed(struct ieee80211_hw *hw, | |||
3226 | set_beacon_filter(hw, sc->assoc); | 3225 | set_beacon_filter(hw, sc->assoc); |
3227 | ath5k_hw_set_ledstate(sc->ah, sc->assoc ? | 3226 | ath5k_hw_set_ledstate(sc->ah, sc->assoc ? |
3228 | AR5K_LED_ASSOC : AR5K_LED_INIT); | 3227 | AR5K_LED_ASSOC : AR5K_LED_INIT); |
3228 | if (bss_conf->assoc) { | ||
3229 | ATH5K_DBG(sc, ATH5K_DEBUG_ANY, | ||
3230 | "Bss Info ASSOC %d, bssid: %pM\n", | ||
3231 | bss_conf->aid, common->curbssid); | ||
3232 | common->curaid = bss_conf->aid; | ||
3233 | ath5k_hw_set_associd(ah); | ||
3234 | /* Once ANI is available you would start it here */ | ||
3235 | } | ||
3229 | } | 3236 | } |
3230 | 3237 | ||
3231 | if (changes & BSS_CHANGED_BEACON) { | 3238 | if (changes & BSS_CHANGED_BEACON) { |
diff --git a/drivers/net/wireless/ath/ath5k/reset.c b/drivers/net/wireless/ath/ath5k/reset.c index fb8981548794..3dab3d856d7b 100644 --- a/drivers/net/wireless/ath/ath5k/reset.c +++ b/drivers/net/wireless/ath/ath5k/reset.c | |||
@@ -1187,7 +1187,6 @@ int ath5k_hw_reset(struct ath5k_hw *ah, enum nl80211_iftype op_mode, | |||
1187 | */ | 1187 | */ |
1188 | 1188 | ||
1189 | /* Restore bssid and bssid mask */ | 1189 | /* Restore bssid and bssid mask */ |
1190 | /* XXX: add ah->aid once mac80211 gives this to us */ | ||
1191 | ath5k_hw_set_associd(ah); | 1190 | ath5k_hw_set_associd(ah); |
1192 | 1191 | ||
1193 | /* Set PCU config */ | 1192 | /* Set PCU config */ |