mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-13 08:07:32 -04:00
qcacld-3.0: Fix NULL SSID filled in connected roam profile
Connected roam profile's SSID is used to get the BSS entry from kernel and indicate the same to kernel in cfg80211_connect_bss. If the roam profile's SSID is NULL, the BSS entry indicated to kernel is with NULL SSID and this result in disconnect from supplicant as it assume that SSID of AP changed. Fix is to fill the SSID in connected roam profile from roam profile if SSID is NULL in beacon. Change-Id: Ie42eceb50b6af551ac1f4ca7d37b73eff107dfbd CRs-Fixed: 2349572
This commit is contained in:
parent
3f7cb65660
commit
ea9e8bcf92
1 changed files with 21 additions and 4 deletions
|
|
@ -8985,11 +8985,19 @@ QDF_STATUS csr_roam_save_connected_information(tpAniSirGlobal mac,
|
|||
#endif
|
||||
/* save ssid */
|
||||
if (QDF_IS_STATUS_SUCCESS(status)) {
|
||||
if (pIesTemp->SSID.present) {
|
||||
if (pIesTemp->SSID.present &&
|
||||
!csr_is_nullssid(pIesTemp->SSID.ssid,
|
||||
pIesTemp->SSID.num_ssid)) {
|
||||
pConnectProfile->SSID.length = pIesTemp->SSID.num_ssid;
|
||||
qdf_mem_copy(pConnectProfile->SSID.ssId,
|
||||
pIesTemp->SSID.ssid,
|
||||
pIesTemp->SSID.num_ssid);
|
||||
} else if (pProfile->SSIDs.SSIDList) {
|
||||
pConnectProfile->SSID.length =
|
||||
pProfile->SSIDs.SSIDList[0].SSID.length;
|
||||
qdf_mem_copy(pConnectProfile->SSID.ssId,
|
||||
pProfile->SSIDs.SSIDList[0].SSID.ssId,
|
||||
pConnectProfile->SSID.length);
|
||||
}
|
||||
/* Save the bss desc */
|
||||
status = csr_roam_save_connected_bss_desc(mac, sessionId,
|
||||
|
|
@ -15022,16 +15030,25 @@ QDF_STATUS csr_send_join_req_msg(tpAniSirGlobal mac, uint32_t sessionId,
|
|||
csr_join_req->length = msgLen;
|
||||
csr_join_req->sessionId = (uint8_t) sessionId;
|
||||
csr_join_req->transactionId = 0;
|
||||
if (pIes->SSID.present && pIes->SSID.num_ssid) {
|
||||
if (pIes->SSID.present &&
|
||||
!csr_is_nullssid(pIes->SSID.ssid,
|
||||
pIes->SSID.num_ssid)) {
|
||||
csr_join_req->ssId.length = pIes->SSID.num_ssid;
|
||||
qdf_mem_copy(&csr_join_req->ssId.ssId, pIes->SSID.ssid,
|
||||
pIes->SSID.num_ssid);
|
||||
} else
|
||||
} else if (pProfile->SSIDs.SSIDList) {
|
||||
csr_join_req->ssId.length =
|
||||
pProfile->SSIDs.SSIDList[0].SSID.length;
|
||||
qdf_mem_copy(&csr_join_req->ssId.ssId,
|
||||
pProfile->SSIDs.SSIDList[0].SSID.ssId,
|
||||
csr_join_req->ssId.length);
|
||||
} else {
|
||||
csr_join_req->ssId.length = 0;
|
||||
}
|
||||
qdf_mem_copy(&csr_join_req->selfMacAddr, &pSession->selfMacAddr,
|
||||
sizeof(tSirMacAddr));
|
||||
sme_err("Connecting to ssid:%.*s bssid: "MAC_ADDRESS_STR" rssi: %d channel: %d country_code: %c%c",
|
||||
pIes->SSID.num_ssid, pIes->SSID.ssid,
|
||||
csr_join_req->ssId.length, csr_join_req->ssId.ssId,
|
||||
MAC_ADDR_ARRAY(pBssDescription->bssId),
|
||||
pBssDescription->rssi, pBssDescription->channelId,
|
||||
mac->scan.countryCodeCurrent[0],
|
||||
|
|
|
|||
Loading…
Reference in a new issue