qcacld-3.0: Update phy mode correctly in link adapter as well

Currently host driver does not update phy mode in link adapter.
When host driver gets country update or set fcc constraint
command it tries to check if there is any change in phy mode
for all the connected adapters. Since link adapter is connected
adapter and at the time of connect success driver does not update
phy mode in link adapter, this check fails for link adapter
and host driver issues disconnect.

To fix this issue, update the phy mode correctly in link
adapter as well at the time of connect success.

Change-Id: Ia208fa183c8d1fa7f902cb614bf9ca704bc30ed6
CRs-Fixed: 3313529
This commit is contained in:
Ashish Kumar Dhanotiya
2022-10-14 18:27:51 +05:30
committed by Madan Koyyalamudi
parent 37a7e25ce1
commit a897a6e3ea

View File

@@ -985,6 +985,7 @@ static void hdd_cm_save_connect_info(struct hdd_adapter *adapter,
tDot11fBeaconIEs *bcn_ie; tDot11fBeaconIEs *bcn_ie;
struct s_ext_cap *p_ext_cap = NULL; struct s_ext_cap *p_ext_cap = NULL;
mac_handle_t mac_handle = hdd_adapter_get_mac_handle(adapter); mac_handle_t mac_handle = hdd_adapter_get_mac_handle(adapter);
uint32_t phymode;
sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter); sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter);
bcn_ie = qdf_mem_malloc(sizeof(*bcn_ie)); bcn_ie = qdf_mem_malloc(sizeof(*bcn_ie));
@@ -997,6 +998,13 @@ static void hdd_cm_save_connect_info(struct hdd_adapter *adapter,
ucfg_dp_conn_info_set_bssid(vdev, &rsp->bssid); ucfg_dp_conn_info_set_bssid(vdev, &rsp->bssid);
hdd_objmgr_put_vdev_by_user(vdev, WLAN_DP_ID); hdd_objmgr_put_vdev_by_user(vdev, WLAN_DP_ID);
} }
phymode = wlan_reg_get_max_phymode(adapter->hdd_ctx->pdev,
REG_PHYMODE_MAX,
rsp->freq);
sta_ctx->reg_phymode = csr_convert_from_reg_phy_mode(phymode);
sta_ctx->conn_info.assoc_status_code = rsp->status_code; sta_ctx->conn_info.assoc_status_code = rsp->status_code;
crypto_params = wlan_crypto_vdev_get_crypto_params(adapter->vdev); crypto_params = wlan_crypto_vdev_get_crypto_params(adapter->vdev);
@@ -1160,7 +1168,6 @@ hdd_cm_connect_success_pre_user_update(struct wlan_objmgr_vdev *vdev,
bool is_roam = rsp->is_reassoc; bool is_roam = rsp->is_reassoc;
ol_txrx_soc_handle soc = cds_get_context(QDF_MODULE_ID_SOC); ol_txrx_soc_handle soc = cds_get_context(QDF_MODULE_ID_SOC);
uint8_t uapsd_mask = 0; uint8_t uapsd_mask = 0;
uint32_t phymode;
uint32_t time_buffer_size; uint32_t time_buffer_size;
struct hdd_adapter *assoc_link_adapter; struct hdd_adapter *assoc_link_adapter;
@@ -1199,10 +1206,6 @@ hdd_cm_connect_success_pre_user_update(struct wlan_objmgr_vdev *vdev,
if (assoc_link_adapter) if (assoc_link_adapter)
hdd_cm_save_connect_info(assoc_link_adapter, rsp); hdd_cm_save_connect_info(assoc_link_adapter, rsp);
} }
phymode = wlan_reg_get_max_phymode(hdd_ctx->pdev, REG_PHYMODE_MAX,
rsp->freq);
sta_ctx->reg_phymode = csr_convert_from_reg_phy_mode(phymode);
if (hdd_add_beacon_filter(adapter) != 0) if (hdd_add_beacon_filter(adapter) != 0)
hdd_err("add beacon filter failed"); hdd_err("add beacon filter failed");