wlcore: use psd_type indexing according to spec
authorYoni Divinsky <yoni.divinsky@ti.com>
Tue, 8 May 2012 11:02:11 +0000 (14:02 +0300)
committerLuciano Coelho <coelho@ti.com>
Tue, 5 Jun 2012 17:24:31 +0000 (20:24 +0300)
In ieee80211.h the uapsd bit mask is defined such that
VO=BIT(0), VI=BIT(1), BK=BIT(2), BE=BIT(3).
The firmware uses the indexing as defined in the ieee80211
spec, meaning that VO=3, VI=2, BK=1, BE=0.

In AP mode when adding peer wlcore needs to convert
the indexing accordingly.

Signed-off-by: Yoni Divinsky <yoni.divinsky@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
drivers/net/wireless/ti/wlcore/cmd.c

index 5b14446..e8c650d 100644 (file)
@@ -1374,9 +1374,12 @@ int wl12xx_cmd_add_peer(struct wl1271 *wl, struct wl12xx_vif *wlvif,
 
        for (i = 0; i < NUM_ACCESS_CATEGORIES_COPY; i++)
                if (sta->wme && (sta->uapsd_queues & BIT(i)))
-                       cmd->psd_type[i] = WL1271_PSD_UPSD_TRIGGER;
+                       cmd->psd_type[NUM_ACCESS_CATEGORIES_COPY-1-i] =
+                                       WL1271_PSD_UPSD_TRIGGER;
                else
-                       cmd->psd_type[i] = WL1271_PSD_LEGACY;
+                       cmd->psd_type[NUM_ACCESS_CATEGORIES_COPY-1-i] =
+                                       WL1271_PSD_LEGACY;
+
 
        sta_rates = sta->supp_rates[wlvif->band];
        if (sta->ht_cap.ht_supported)