mwifiex: use VHT MCS mask in set bitrate mask handler
authorAmitkumar Karwar <akarwar@marvell.com>
Sat, 8 Mar 2014 03:41:28 +0000 (19:41 -0800)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 14 Mar 2014 18:49:13 +0000 (14:49 -0400)
As V15 firmware supports VHT rate configuration, we can use this
information received in set bitrate mask handler.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/mwifiex/cfg80211.c

index 51ce99cfcfb97f633028ceb045fb5b3b17d4494a..ee45d626eedb0b812365e440d1eb84ab75e7da3b 100644 (file)
@@ -1158,9 +1158,10 @@ static int mwifiex_cfg80211_set_bitrate_mask(struct wiphy *wiphy,
        struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev);
        u16 bitmap_rates[MAX_BITMAP_RATES_SIZE];
        enum ieee80211_band band;
+       struct mwifiex_adapter *adapter = priv->adapter;
 
        if (!priv->media_connected) {
-               dev_err(priv->adapter->dev,
+               dev_err(adapter->dev,
                        "Can not set Tx data rate in disconnected state\n");
                return -EINVAL;
        }
@@ -1181,9 +1182,16 @@ static int mwifiex_cfg80211_set_bitrate_mask(struct wiphy *wiphy,
 
        /* Fill HT MCS rates */
        bitmap_rates[2] = mask->control[band].ht_mcs[0];
-       if (priv->adapter->hw_dev_mcs_support == HT_STREAM_2X2)
+       if (adapter->hw_dev_mcs_support == HT_STREAM_2X2)
                bitmap_rates[2] |= mask->control[band].ht_mcs[1] << 8;
 
+       /* Fill VHT MCS rates */
+       if (adapter->fw_api_ver == MWIFIEX_FW_V15) {
+               bitmap_rates[10] = mask->control[band].vht_mcs[0];
+               if (adapter->hw_dev_mcs_support == HT_STREAM_2X2)
+                       bitmap_rates[11] = mask->control[band].vht_mcs[1];
+       }
+
        return mwifiex_send_cmd(priv, HostCmd_CMD_TX_RATE_CFG,
                                HostCmd_ACT_GEN_SET, 0, bitmap_rates, true);
 }