qcacld-3.0: Keep driver synced with proper dot11 mode as per INI
The INI param gDot11Mode is used to indicate the support that the driver should advertise. Currently the behavior of the driver is out of sync with the mode supported over the air and the mode provided to the framework. In one particular case, the driver sends VHT supported as true to the framework even though the INI gDot11Mode is set to 11n only. This results in the frames to be transmitted with 11n capabilities while the mode advertised is different. To rectify this, check for the dot11 mode before setting the corresponding supported bit in the wiphy. The value being advertised should be the intersection of gDot11Mode INI and the driver and firmware capability. Change-Id: Ic2f1558c72fc801df9d7ca6b3a0182619b93cf0d CRs-Fixed: 2612620
Este cometimento está contido em:

cometido por
nshrivas

ascendente
8df8c5e314
cometimento
9243462d48
@@ -15656,7 +15656,12 @@ QDF_STATUS wlan_hdd_update_wiphy_supported_band(struct hdd_context *hdd_ctx)
|
||||
hdd_err("could not get VHT capability");
|
||||
|
||||
if (is_vht_for_24ghz &&
|
||||
sme_is_feature_supported_by_fw(DOT11AC))
|
||||
sme_is_feature_supported_by_fw(DOT11AC) &&
|
||||
(cfg->dot11Mode == eHDD_DOT11_MODE_AUTO ||
|
||||
cfg->dot11Mode == eHDD_DOT11_MODE_11ac_ONLY ||
|
||||
cfg->dot11Mode == eHDD_DOT11_MODE_11ac ||
|
||||
cfg->dot11Mode == eHDD_DOT11_MODE_11ax ||
|
||||
cfg->dot11Mode == eHDD_DOT11_MODE_11ax_ONLY))
|
||||
wlan_hdd_band_2_4_ghz.vht_cap.vht_supported = 1;
|
||||
}
|
||||
if (!hdd_is_5g_supported(hdd_ctx) ||
|
||||
@@ -15687,6 +15692,13 @@ QDF_STATUS wlan_hdd_update_wiphy_supported_band(struct hdd_context *hdd_ctx)
|
||||
HDD_NL80211_BAND_5GHZ]->channels +
|
||||
len_5g_ch, len_srd_ch);
|
||||
|
||||
if (cfg->dot11Mode != eHDD_DOT11_MODE_AUTO &&
|
||||
cfg->dot11Mode != eHDD_DOT11_MODE_11ac &&
|
||||
cfg->dot11Mode != eHDD_DOT11_MODE_11ac_ONLY &&
|
||||
cfg->dot11Mode != eHDD_DOT11_MODE_11ax &&
|
||||
cfg->dot11Mode != eHDD_DOT11_MODE_11ax_ONLY)
|
||||
wlan_hdd_band_5_ghz.vht_cap.vht_supported = 0;
|
||||
|
||||
hdd_init_6ghz(hdd_ctx);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
|
@@ -2250,7 +2250,9 @@ int hdd_update_tgt_cfg(hdd_handle_t hdd_handle, struct wma_tgt_cfg *cfg)
|
||||
hdd_update_tgt_ht_cap(hdd_ctx, &cfg->ht_cap);
|
||||
|
||||
hdd_update_tgt_vht_cap(hdd_ctx, &cfg->vht_cap);
|
||||
if (cfg->services.en_11ax) {
|
||||
if (cfg->services.en_11ax &&
|
||||
(hdd_ctx->config->dot11Mode == eHDD_DOT11_MODE_11ax ||
|
||||
hdd_ctx->config->dot11Mode == eHDD_DOT11_MODE_11ax_ONLY)) {
|
||||
hdd_debug("11AX: 11ax is enabled - update HDD config");
|
||||
hdd_update_tgt_he_cap(hdd_ctx, cfg);
|
||||
hdd_update_wiphy_he_cap(hdd_ctx);
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador