[7570][7872][7885][9610] wlbt:2.4GHz softAP RX throughput is low.
authorHimani Gupta <himani.g2@samsung.com>
Wed, 30 May 2018 14:18:50 +0000 (19:48 +0530)
committerTarun Karela <t.karela@samsung.com>
Fri, 22 Jun 2018 08:49:56 +0000 (09:49 +0100)
Added RX STBC support in host.Hence improving the data rate.

Change-Id: Ia53405a1414a459f62060b1c8d673ffffbacb9ba
SCSC-Bug-Id: SSB-40341
Signed-off-by: Himani Gupta <himani.g2@samsung.com>
drivers/net/wireless/scsc/cfg80211_ops.c

index e36a1e93416cc264b93b8d9e68c09546eedc950a..630a0de569b9b3d6cbd333ea4036d7ee70265c98 100755 (executable)
@@ -2029,11 +2029,15 @@ int slsi_start_ap(struct wiphy *wiphy, struct net_device *dev,
        if (ndev_vif->chandef->width <= NL80211_CHAN_WIDTH_20) {
                /* Enable LDPC, SGI20 and SGI40 for both SoftAP & P2PGO if firmware supports */
                if (cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, settings->beacon.tail, settings->beacon.tail_len)) {
-                       u8 enforce_ht_cap = sdev->fw_ht_cap[0] & (IEEE80211_HT_CAP_LDPC_CODING |
+                       u8 enforce_ht_cap1 = sdev->fw_ht_cap[0] & (IEEE80211_HT_CAP_LDPC_CODING |
                                                                  IEEE80211_HT_CAP_SGI_20 |
                                                                  IEEE80211_HT_CAP_SGI_40);
+                       u8 enforce_ht_cap2 = sdev->fw_ht_cap[1] & (IEEE80211_HT_CAP_RX_STBC >> 8);
+
+                       slsi_modify_ies(dev, WLAN_EID_HT_CAPABILITY, (u8 *)settings->beacon.tail,
+                                       settings->beacon.tail_len, 2, enforce_ht_cap1);
                        slsi_modify_ies(dev, WLAN_EID_HT_CAPABILITY, (u8 *)settings->beacon.tail,
-                                       settings->beacon.tail_len, 2, enforce_ht_cap);
+                                       settings->beacon.tail_len, 3, enforce_ht_cap2);
                }
        } else if (cfg80211_chandef_valid(ndev_vif->chandef)) {
                u8 *ht_operation_ie;
@@ -2066,12 +2070,16 @@ int slsi_start_ap(struct wiphy *wiphy, struct net_device *dev,
                 */
                if (cfg80211_find_ie(WLAN_EID_HT_CAPABILITY, settings->beacon.tail,
                                     settings->beacon.tail_len)) {
-                       u8 enforce_ht_cap = sdev->fw_ht_cap[0] & (IEEE80211_HT_CAP_SUP_WIDTH_20_40 |
+                       u8 enforce_ht_cap1 = sdev->fw_ht_cap[0] & (IEEE80211_HT_CAP_SUP_WIDTH_20_40 |
                                                                  IEEE80211_HT_CAP_SGI_20 |
                                                                  IEEE80211_HT_CAP_SGI_40 |
                                                                  IEEE80211_HT_CAP_LDPC_CODING);
+                       u8 enforce_ht_cap2 = sdev->fw_ht_cap[1] & (IEEE80211_HT_CAP_RX_STBC >> 8);
+
+                       slsi_modify_ies(dev, WLAN_EID_HT_CAPABILITY, (u8 *)settings->beacon.tail,
+                                       settings->beacon.tail_len, 2, enforce_ht_cap1);
                        slsi_modify_ies(dev, WLAN_EID_HT_CAPABILITY, (u8 *)settings->beacon.tail,
-                                       settings->beacon.tail_len, 2, enforce_ht_cap);
+                                       settings->beacon.tail_len, 3, enforce_ht_cap2);
                }
        }
 #endif