qcacld-3.0: Fix the IOT issue with TxBF CSN value
Advertise the min of self TxBF CSN and APs TxBF CSN value to fix the IOT issue with the AP. Change-Id: Ifa2872ef62925f99bf49ef504ade4a4bb431672b CRs-Fixed: 2158667
This commit is contained in:

committed by
snandini

parent
d523f0dcab
commit
9493c72d73
@@ -14810,6 +14810,7 @@ QDF_STATUS csr_send_join_req_msg(tpAniSirGlobal pMac, uint32_t sessionId,
|
|||||||
tpCsrNeighborRoamControlInfo neigh_roam_info;
|
tpCsrNeighborRoamControlInfo neigh_roam_info;
|
||||||
uint32_t value = 0, value1 = 0;
|
uint32_t value = 0, value1 = 0;
|
||||||
QDF_STATUS packetdump_timer_status;
|
QDF_STATUS packetdump_timer_status;
|
||||||
|
tDot11fIEVHTCaps *vht_caps = NULL;
|
||||||
|
|
||||||
if (!pSession) {
|
if (!pSession) {
|
||||||
sme_err("session %d not found", sessionId);
|
sme_err("session %d not found", sessionId);
|
||||||
@@ -15313,8 +15314,12 @@ QDF_STATUS csr_send_join_req_msg(tpAniSirGlobal pMac, uint32_t sessionId,
|
|||||||
|
|
||||||
csr_join_req->vht_config.su_beam_formee = value;
|
csr_join_req->vht_config.su_beam_formee = value;
|
||||||
|
|
||||||
|
if (pIes->VHTCaps.present)
|
||||||
|
vht_caps = &pIes->VHTCaps;
|
||||||
|
else if (pIes->vendor_vht_ie.VHTCaps.present)
|
||||||
|
vht_caps = &pIes->vendor_vht_ie.VHTCaps;
|
||||||
/* Set BF CSN value only if SU Bformee is enabled */
|
/* Set BF CSN value only if SU Bformee is enabled */
|
||||||
if (csr_join_req->vht_config.su_beam_formee) {
|
if (vht_caps && csr_join_req->vht_config.su_beam_formee) {
|
||||||
txBFCsnValue = (uint8_t)value1;
|
txBFCsnValue = (uint8_t)value1;
|
||||||
/*
|
/*
|
||||||
* Certain commercial AP display a bad behavior when
|
* Certain commercial AP display a bad behavior when
|
||||||
@@ -15324,18 +15329,11 @@ QDF_STATUS csr_send_join_req_msg(tpAniSirGlobal pMac, uint32_t sessionId,
|
|||||||
* CSN cap of less than 4. To avoid such issues, take a
|
* CSN cap of less than 4. To avoid such issues, take a
|
||||||
* min of self and peer CSN while sending ASSOC request.
|
* min of self and peer CSN while sending ASSOC request.
|
||||||
*/
|
*/
|
||||||
if (txBFCsnValue < 4) {
|
if (pIes->Vendor1IE.present &&
|
||||||
if (IS_BSS_VHT_CAPABLE(pIes->VHTCaps) &&
|
vht_caps->csnofBeamformerAntSup < 4) {
|
||||||
pIes->VHTCaps.csnofBeamformerAntSup)
|
if (vht_caps->csnofBeamformerAntSup)
|
||||||
txBFCsnValue = QDF_MIN(txBFCsnValue,
|
txBFCsnValue = QDF_MIN(txBFCsnValue,
|
||||||
pIes->VHTCaps.csnofBeamformerAntSup);
|
vht_caps->csnofBeamformerAntSup);
|
||||||
else if (IS_BSS_VHT_CAPABLE(
|
|
||||||
pIes->vendor_vht_ie.VHTCaps)
|
|
||||||
&& pIes->vendor_vht_ie.VHTCaps.
|
|
||||||
csnofBeamformerAntSup)
|
|
||||||
txBFCsnValue = QDF_MIN(txBFCsnValue,
|
|
||||||
pIes->vendor_vht_ie.
|
|
||||||
VHTCaps.csnofBeamformerAntSup);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
csr_join_req->vht_config.csnof_beamformer_antSup = txBFCsnValue;
|
csr_join_req->vht_config.csnof_beamformer_antSup = txBFCsnValue;
|
||||||
|
Reference in New Issue
Block a user