wl12xx: AP-mode - configure STA HT rates on join
authorArik Nemtsov <arik@wizery.com>
Sun, 14 Aug 2011 10:17:28 +0000 (13:17 +0300)
committerLuciano Coelho <coelho@ti.com>
Mon, 22 Aug 2011 09:35:29 +0000 (12:35 +0300)
When a new STA joins the BSS, configure the HT rates it supports to the
FW.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
drivers/net/wireless/wl12xx/cmd.c

index d8c39168104188981cba33bafdd1a9a32b0cdc10..d3e938012ac29d6d644e87b9c0afa9b3e144786b 100644 (file)
@@ -1415,10 +1415,12 @@ out_free:
 out:
        return ret;
 }
+
 int wl12xx_cmd_add_peer(struct wl1271 *wl, struct ieee80211_sta *sta, u8 hlid)
 {
        struct wl12xx_cmd_add_peer *cmd;
        int ret;
+       u32 sta_rates;
 
        wl1271_debug(DEBUG_CMD, "cmd add peer %d", (int)hlid);
 
@@ -1437,8 +1439,12 @@ int wl12xx_cmd_add_peer(struct wl1271 *wl, struct ieee80211_sta *sta, u8 hlid)
        cmd->hlid = hlid;
        cmd->wmm = sta->wme ? 1 : 0;
 
-       cmd->supported_rates = cpu_to_le32(wl1271_tx_enabled_rates_get(wl,
-                                               sta->supp_rates[wl->band]));
+       sta_rates = sta->supp_rates[wl->band];
+       if (sta->ht_cap.ht_supported)
+               sta_rates |= sta->ht_cap.mcs.rx_mask[0] << HW_HT_RATES_OFFSET;
+
+       cmd->supported_rates =
+               cpu_to_le32(wl1271_tx_enabled_rates_get(wl, sta_rates));
 
        wl1271_debug(DEBUG_CMD, "new peer rates: 0x%x", cmd->supported_rates);