mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-15 01:01:56 -04:00
qcacld-3.0: Fix STA sending SMPS force mode when connected to 1x1 AP
qcacld-2.0 to qcacld-3.0 propagation Peer supported NSS should be updated based on the presence of HT and VHT capabilities in the beacon/probe response IE from the AP. Also, update session supported NSS during reassociation. Otherwise, station will end up sending SMPS action frames to AP which only supports 1x1 mode. CRs-Fixed: 979545 Change-Id: Ie2dbfbb577f08c5090101e1330184e72a9f6cd46
This commit is contained in:
parent
ef777d4dc0
commit
5482d6a4d0
4 changed files with 34 additions and 7 deletions
|
|
@ -1399,7 +1399,7 @@ tSirRetStatus lim_populate_vht_mcs_set(tpAniSirGlobal mac_ctx,
|
|||
}
|
||||
rates->vhtTxHighestDataRate = (uint16_t) val;
|
||||
|
||||
if (peer_vht_caps == NULL)
|
||||
if ((peer_vht_caps == NULL) || (!peer_vht_caps->present))
|
||||
return eSIR_SUCCESS;
|
||||
|
||||
rates->vhtTxHighestDataRate =
|
||||
|
|
|
|||
|
|
@ -686,9 +686,19 @@ void lim_fill_ft_session(tpAniSirGlobal pMac,
|
|||
|
||||
pftSessionEntry->enableHtSmps = psessionEntry->enableHtSmps;
|
||||
pftSessionEntry->smpsMode = psessionEntry->smpsMode;
|
||||
lim_log(pMac, LOG1, FL("FT session enable smps: %d mode: %d"),
|
||||
/*
|
||||
* By default supported NSS 1x1 is set to true
|
||||
* and later on updated while determining session
|
||||
* supported rates which is the intersection of
|
||||
* self and peer rates
|
||||
*/
|
||||
pftSessionEntry->supported_nss_1x1 = true;
|
||||
lim_log(pMac, LOG1,
|
||||
FL("FT enable smps: %d mode: %d supported nss 1x1: %d"),
|
||||
pftSessionEntry->enableHtSmps,
|
||||
pftSessionEntry->smpsMode);
|
||||
pftSessionEntry->smpsMode,
|
||||
pftSessionEntry->supported_nss_1x1);
|
||||
|
||||
|
||||
qdf_mem_free(pBeaconStruct);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1729,11 +1729,19 @@ __lim_process_sme_join_req(tpAniSirGlobal mac_ctx, uint32_t *msg_buf)
|
|||
session->htSmpsvalue = sme_join_req->htSmps;
|
||||
session->send_smps_action =
|
||||
sme_join_req->send_smps_action;
|
||||
/*
|
||||
* By default supported NSS 1x1 is set to true
|
||||
* and later on updated while determining session
|
||||
* supported rates which is the intersection of
|
||||
* self and peer rates
|
||||
*/
|
||||
session->supported_nss_1x1 = true;
|
||||
lim_log(mac_ctx, LOG1,
|
||||
FL("enable Smps: %d mode: %d send action: %d"),
|
||||
FL("enable Smps: %d mode: %d send action: %d supported nss 1x1: %d"),
|
||||
session->enableHtSmps,
|
||||
session->htSmpsvalue,
|
||||
session->send_smps_action);
|
||||
session->send_smps_action,
|
||||
session->supported_nss_1x1);
|
||||
|
||||
/*Store Persona */
|
||||
session->pePersona = sme_join_req->staPersona;
|
||||
|
|
@ -2154,10 +2162,11 @@ static void __lim_process_sme_reassoc_req(tpAniSirGlobal mac_ctx,
|
|||
session_entry->send_smps_action =
|
||||
reassoc_req->send_smps_action;
|
||||
lim_log(mac_ctx, LOG1,
|
||||
FL("enableHtSmps: %d htSmps: %d send action: %d"),
|
||||
FL("enableHtSmps: %d htSmps: %d send action: %d supported nss 1x1: %d"),
|
||||
session_entry->enableHtSmps,
|
||||
session_entry->htSmpsvalue,
|
||||
session_entry->send_smps_action);
|
||||
session_entry->send_smps_action,
|
||||
session_entry->supported_nss_1x1);
|
||||
/*
|
||||
* Reassociate request is expected
|
||||
* in link established state only.
|
||||
|
|
|
|||
|
|
@ -8638,11 +8638,19 @@ static void csr_roam_roaming_state_reassoc_rsp_processor(tpAniSirGlobal pMac,
|
|||
&pMac->roam.neighborRoamInfo[pSmeJoinRsp->sessionId];
|
||||
tCsrRoamInfo roamInfo;
|
||||
uint32_t roamId = 0;
|
||||
tCsrRoamSession *csr_session;
|
||||
|
||||
if (eSIR_SME_SUCCESS == pSmeJoinRsp->statusCode) {
|
||||
QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
|
||||
FL("CSR SmeReassocReq Successful"));
|
||||
result = eCsrReassocSuccess;
|
||||
csr_session = CSR_GET_SESSION(pMac, pSmeJoinRsp->sessionId);
|
||||
if (NULL != csr_session) {
|
||||
csr_session->supported_nss_1x1 =
|
||||
pSmeJoinRsp->supported_nss_1x1;
|
||||
sms_log(pMac, LOG1, FL("SME session supported nss: %d"),
|
||||
csr_session->supported_nss_1x1);
|
||||
}
|
||||
/*
|
||||
* Since the neighbor roam algorithm uses reassoc req for
|
||||
* handoff instead of join, we need the response contents while
|
||||
|
|
|
|||
Loading…
Reference in a new issue