ath5k: enable Power-Save Polls by setting the association ID
authorLuis R. Rodriguez <lrodriguez@atheros.com>
Wed, 7 Oct 2009 00:44:34 +0000 (20:44 -0400)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 7 Oct 2009 20:39:51 +0000 (16:39 -0400)
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>
drivers/net/wireless/ath/ath5k/base.c
drivers/net/wireless/ath/ath5k/reset.c

index 01da83d75ef4b6d530aa5ab9483ebc401c681d66..07c1e52b5a0c9f190f87370801e96ce909d68ab1 100644 (file)
@@ -3211,8 +3211,7 @@ static void ath5k_bss_info_changed(struct ieee80211_hw *hw,
        if (changes & BSS_CHANGED_BSSID) {
                /* Cache for later use during resets */
                memcpy(common->curbssid, bss_conf->bssid, ETH_ALEN);
-               /* XXX: assoc id is set to 0 for now, mac80211 doesn't have
-                * a clean way of letting us retrieve this yet. */
+               common->curaid = 0;
                ath5k_hw_set_associd(ah);
                mmiowb();
        }
@@ -3226,6 +3225,14 @@ static void ath5k_bss_info_changed(struct ieee80211_hw *hw,
                        set_beacon_filter(hw, sc->assoc);
                ath5k_hw_set_ledstate(sc->ah, sc->assoc ?
                        AR5K_LED_ASSOC : AR5K_LED_INIT);
+               if (bss_conf->assoc) {
+                       ATH5K_DBG(sc, ATH5K_DEBUG_ANY,
+                                 "Bss Info ASSOC %d, bssid: %pM\n",
+                                 bss_conf->aid, common->curbssid);
+                       common->curaid = bss_conf->aid;
+                       ath5k_hw_set_associd(ah);
+                       /* Once ANI is available you would start it here */
+               }
        }
 
        if (changes & BSS_CHANGED_BEACON) {
index fb898154879446cd6ccf95f901bce18300be009a..3dab3d856d7b3409af819832d397320a8bf7b6b7 100644 (file)
@@ -1187,7 +1187,6 @@ int ath5k_hw_reset(struct ath5k_hw *ah, enum nl80211_iftype op_mode,
         */
 
        /* Restore bssid and bssid mask */
-       /* XXX: add ah->aid once mac80211 gives this to us */
        ath5k_hw_set_associd(ah);
 
        /* Set PCU config */