diff --git a/core/mac/src/pe/lim/lim_assoc_utils.c b/core/mac/src/pe/lim/lim_assoc_utils.c index 3d49e7a0543e..88dc45e7f8cd 100644 --- a/core/mac/src/pe/lim/lim_assoc_utils.c +++ b/core/mac/src/pe/lim/lim_assoc_utils.c @@ -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 = diff --git a/core/mac/src/pe/lim/lim_ft.c b/core/mac/src/pe/lim/lim_ft.c index a85e9d6ef340..c7aea5302bed 100644 --- a/core/mac/src/pe/lim/lim_ft.c +++ b/core/mac/src/pe/lim/lim_ft.c @@ -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); } diff --git a/core/mac/src/pe/lim/lim_process_sme_req_messages.c b/core/mac/src/pe/lim/lim_process_sme_req_messages.c index 026a50a89c0e..8de45fe8734f 100644 --- a/core/mac/src/pe/lim/lim_process_sme_req_messages.c +++ b/core/mac/src/pe/lim/lim_process_sme_req_messages.c @@ -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. diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index ffea06c1e74b..ee72ae9a44c9 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -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