mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 21:59:12 -04:00
qcacld-3.0: Post message to SME upon DelBSS/DelSta failure
qcacld-2.0 to qcacld-3.0 propagation. This fix ensures that a response message is sent back to SME if a DelBSS/DelSta failure is returned by firmware, without which SME command can get stuck. Change-Id: I42425809ef93d447af0b34aee05e601e30a18ccc CRs-Fixed: 810491
This commit is contained in:
parent
30728082b2
commit
dcd3b5a3a2
1 changed files with 34 additions and 37 deletions
|
|
@ -2181,46 +2181,43 @@ void lim_process_sta_mlm_del_sta_rsp(tpAniSirGlobal pMac, tpSirMsgQ limMsgQ,
|
|||
lim_log(pMac, LOGE, FL("Encountered NULL Pointer"));
|
||||
goto end;
|
||||
}
|
||||
if (CDF_STATUS_SUCCESS == pDelStaParams->status) {
|
||||
pStaDs =
|
||||
dph_get_hash_entry(pMac, DPH_STA_HASH_INDEX_PEER,
|
||||
&psessionEntry->dph.dphHashTable);
|
||||
if (pStaDs == NULL) {
|
||||
/* TODO: any response to be sent out here ? */
|
||||
lim_log(pMac, LOGE, FL("DPH Entry for STA %X missing."),
|
||||
lim_log(pMac, LOG1, FL("Del STA RSP received. Status:%d AssocID:%d"),
|
||||
pDelStaParams->status, pDelStaParams->assocId);
|
||||
|
||||
if (CDF_STATUS_SUCCESS != pDelStaParams->status)
|
||||
lim_log(pMac, LOGE, FL(
|
||||
"Del STA failed! Status:%d, proceeding with Del BSS"),
|
||||
pDelStaParams->status);
|
||||
|
||||
pStaDs = dph_get_hash_entry(pMac, DPH_STA_HASH_INDEX_PEER,
|
||||
&psessionEntry->dph.dphHashTable);
|
||||
if (pStaDs == NULL) {
|
||||
lim_log(pMac, LOGE, FL("DPH Entry for STA %X missing."),
|
||||
pDelStaParams->assocId);
|
||||
statusCode = eSIR_SME_REFUSED;
|
||||
goto end;
|
||||
}
|
||||
if (eLIM_MLM_WT_DEL_STA_RSP_STATE != psessionEntry->limMlmState) {
|
||||
/* TODO: any response to be sent out here ? */
|
||||
lim_log(pMac, LOGE,
|
||||
FL
|
||||
("Received unexpected WMA_DELETE_STA_RSP in state %s"),
|
||||
lim_mlm_state_str(psessionEntry->limMlmState));
|
||||
statusCode = eSIR_SME_REFUSED;
|
||||
goto end;
|
||||
}
|
||||
PELOG1(lim_log
|
||||
(pMac, LOG1, FL("STA AssocID %d MAC "), pStaDs->assocId);
|
||||
lim_print_mac_addr(pMac, pStaDs->staAddr, LOG1);
|
||||
)
|
||||
lim_log(pMac, LOGW,
|
||||
FL("DEL_STA_RSP received for assocID: %X"),
|
||||
pDelStaParams->assocId);
|
||||
/* we must complete all cleanup related to delSta before calling limDelBSS. */
|
||||
if (0 != limMsgQ->bodyptr) {
|
||||
cdf_mem_free(pDelStaParams);
|
||||
limMsgQ->bodyptr = NULL;
|
||||
}
|
||||
statusCode =
|
||||
(tSirResultCodes) lim_del_bss(pMac, pStaDs, 0, psessionEntry);
|
||||
return;
|
||||
} else {
|
||||
lim_log(pMac, LOGE, FL("DEL_STA failed for sta Id %d"),
|
||||
pDelStaParams->staIdx);
|
||||
statusCode = eSIR_SME_REFUSED;
|
||||
goto end;
|
||||
}
|
||||
if (eLIM_MLM_WT_DEL_STA_RSP_STATE != psessionEntry->limMlmState) {
|
||||
lim_log(pMac, LOGE, FL(
|
||||
"Received unexpected WDA_DELETE_STA_RSP in state %s"),
|
||||
lim_mlm_state_str(psessionEntry->limMlmState));
|
||||
statusCode = eSIR_SME_REFUSED;
|
||||
goto end;
|
||||
}
|
||||
lim_log(pMac, LOG1, FL("STA AssocID %d MAC "), pStaDs->assocId);
|
||||
lim_print_mac_addr(pMac, pStaDs->staAddr, LOG1);
|
||||
/*
|
||||
* we must complete all cleanup related to delSta before
|
||||
* calling limDelBSS.
|
||||
*/
|
||||
if (0 != limMsgQ->bodyptr) {
|
||||
cdf_mem_free(pDelStaParams);
|
||||
limMsgQ->bodyptr = NULL;
|
||||
}
|
||||
/* Proceed to do DelBSS even if DelSta resulted in failure */
|
||||
statusCode = (tSirResultCodes)lim_del_bss(pMac, pStaDs, 0,
|
||||
psessionEntry);
|
||||
return;
|
||||
end:
|
||||
if (0 != limMsgQ->bodyptr) {
|
||||
cdf_mem_free(pDelStaParams);
|
||||
|
|
|
|||
Loading…
Reference in a new issue