Browse Source

qcacld-3.0: Use LDPC flag from Vendor IE for VHT20 case

qcacld-2.0 to qcacld-3.0 propagation

Update LDPC flag from Vendor IE instead of VHT capabilities
for VHT20 case.

Change-Id: I7bb916353586529fb78f1caeda68687663e44af2
CRs-Fixed: 2091292
Visweswara Tanuku 7 years ago
parent
commit
2e2ac0338d
1 changed files with 17 additions and 10 deletions
  1. 17 10
      core/mac/src/pe/lim/lim_assoc_utils.c

+ 17 - 10
core/mac/src/pe/lim/lim_assoc_utils.c

@@ -3606,6 +3606,7 @@ tSirRetStatus lim_sta_send_add_bss(tpAniSirGlobal pMac, tpSirAssocRsp pAssocRsp,
 	uint32_t retCode;
 	tpDphHashNode pStaDs = NULL;
 	uint8_t chanWidthSupp = 0;
+	bool is_vht_cap_in_vendor_ie = false;
 	uint32_t enableTxBF20MHz;
 	tDot11fIEVHTCaps *vht_caps = NULL;
 	tDot11fIEVHTOperation *vht_oper = NULL;
@@ -3851,6 +3852,7 @@ tSirRetStatus lim_sta_send_add_bss(tpAniSirGlobal pMac, tpSirAssocRsp pAssocRsp,
 			else if (pAssocRsp->vendor_vht_ie.VHTCaps.present) {
 				vht_caps = &pAssocRsp->vendor_vht_ie.VHTCaps;
 				pe_debug("VHT Caps are in vendor Specfic IE");
+				is_vht_cap_in_vendor_ie = true;
 			}
 
 			if ((vht_caps != NULL) && (vht_caps->suBeamFormerCap ||
@@ -3931,17 +3933,17 @@ tSirRetStatus lim_sta_send_add_bss(tpAniSirGlobal pMac, tpSirAssocRsp pAssocRsp,
 		 * hardcode this values to 0.
 		 */
 		if (psessionEntry->htConfig.ht_sgi20) {
-				pAddBssParams->staContext.fShortGI20Mhz =
-					(uint8_t)pAssocRsp->HTCaps.shortGI20MHz;
-			} else {
-				pAddBssParams->staContext.fShortGI20Mhz = false;
-			}
+			pAddBssParams->staContext.fShortGI20Mhz =
+				(uint8_t)pAssocRsp->HTCaps.shortGI20MHz;
+		} else {
+			pAddBssParams->staContext.fShortGI20Mhz = false;
+		}
 
 		if (psessionEntry->htConfig.ht_sgi40) {
 			pAddBssParams->staContext.fShortGI40Mhz =
 				(uint8_t) pAssocRsp->HTCaps.shortGI40MHz;
 		} else {
-				pAddBssParams->staContext.fShortGI40Mhz = false;
+			pAddBssParams->staContext.fShortGI40Mhz = false;
 		}
 
 		if (!pAddBssParams->staContext.vhtCapable)
@@ -3973,11 +3975,16 @@ tSirRetStatus lim_sta_send_add_bss(tpAniSirGlobal pMac, tpSirAssocRsp pAssocRsp,
 				pe_debug("VHT Caps is in vendor Specfic IE");
 			}
 			if (vht_caps != NULL &&
-				(psessionEntry->txLdpcIniFeatureEnabled & 0x2))
-				pAddBssParams->staContext.vhtLdpcCapable =
-					(uint8_t) vht_caps->ldpcCodingCap;
-			else
+				(psessionEntry->txLdpcIniFeatureEnabled & 0x2)) {
+				if (!is_vht_cap_in_vendor_ie)
+					pAddBssParams->staContext.vhtLdpcCapable =
+					  (uint8_t) pAssocRsp->VHTCaps.ldpcCodingCap;
+				else
+					pAddBssParams->staContext.vhtLdpcCapable =
+					    (uint8_t) vht_caps->ldpcCodingCap;
+			} else {
 				pAddBssParams->staContext.vhtLdpcCapable = 0;
+			}
 		}
 
 		if (pBeaconStruct->HTInfo.present)