mwifiex: handle extended supported rates IE for AP
authorAvinash Patil <patila@marvell.com>
Sat, 20 Oct 2012 02:19:20 +0000 (19:19 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 29 Oct 2012 19:20:34 +0000 (15:20 -0400)
During start_ap handler, some rates come as extended supported
rates IE - part of beacon tail IE. This patch adds support for
parsing them and adding to bss_rates TLV for bss_start command
to firmware.

Signed-off-by: Avinash Patil <patila@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/mwifiex/uap_cmd.c

index d95a2d5..8dd7224 100644 (file)
@@ -188,10 +188,19 @@ mwifiex_set_uap_rates(struct mwifiex_uap_bss_param *bss_cfg,
        int var_offset = offsetof(struct ieee80211_mgmt, u.beacon.variable);
        const u8 *var_pos = params->beacon.head + var_offset;
        int len = params->beacon.head_len - var_offset;
+       u8 rate_len = 0;
 
        rate_ie = (void *)cfg80211_find_ie(WLAN_EID_SUPP_RATES, var_pos, len);
-       if (rate_ie)
+       if (rate_ie) {
                memcpy(bss_cfg->rates, rate_ie + 1, rate_ie->len);
+               rate_len = rate_ie->len;
+       }
+
+       rate_ie = (void *)cfg80211_find_ie(WLAN_EID_EXT_SUPP_RATES,
+                                          params->beacon.tail,
+                                          params->beacon.tail_len);
+       if (rate_ie)
+               memcpy(bss_cfg->rates + rate_len, rate_ie + 1, rate_ie->len);
 
        return;
 }