Эх сурвалжийг харах

qcacld-3.0: Fix Ext Cap IE mismatch in Probe/Assoc Response frames

qcacld-2.0 to qcacld-3.0 propagation

In SAP mode, while sending Probe response template to HAL from driver,
ext cap IE should be merged only if it is present or received from hostapd.
In function limSendProbeRspTemplateToHal, extcap_present bool is wrongly
initialized to true which leads to updation of the extended Cap IE with
junk values in Probe response even for the cases where driver is not
supposed to update it, i.e. cases where the ext cap IE is not present or
not received from hostapd

Git-commit: a7256f3483c0a26c8715f2ae6166289de6da6b1e
Change-Id: If82fbba4c20b5e96dbe1b11c97ab557ded488f3e
CRs-Fixed: 995545
Selvaraj, Sridhar 9 жил өмнө
parent
commit
94ece202c5

+ 3 - 2
core/mac/src/pe/lim/lim_send_management_frames.c

@@ -532,7 +532,7 @@ lim_send_probe_rsp_mgmt_frame(tpAniSirGlobal mac_ctx,
 	uint8_t sme_sessionid = 0;
 	bool is_vht_enabled = false;
 	tDot11fIEExtCap extracted_ext_cap;
-	bool extracted_ext_cap_flag = true;
+	bool extracted_ext_cap_flag = false;
 
 	/* We don't answer requests in this case*/
 	if (ANI_DRIVER_TYPE(mac_ctx) == eDRIVER_TYPE_MFG)
@@ -734,9 +734,10 @@ lim_send_probe_rsp_mgmt_frame(tpAniSirGlobal mac_ctx,
 					add_ie, &addn_ie_len,
 					&extracted_ext_cap);
 		if (eSIR_SUCCESS != sir_status) {
-			extracted_ext_cap_flag = false;
 			lim_log(mac_ctx, LOG1,
 				FL("Unable to strip off ExtCap IE"));
+		} else {
+			extracted_ext_cap_flag = true;
 		}
 
 		bytes = bytes + addn_ie_len;

+ 3 - 2
core/mac/src/pe/sch/sch_api.c

@@ -387,7 +387,7 @@ uint32_t lim_send_probe_rsp_template_to_hal(tpAniSirGlobal pMac,
 	uint32_t addnIELenWoP2pIe = 0;
 	uint32_t retStatus;
 	tDot11fIEExtCap extracted_extcap;
-	bool extcap_present = true;
+	bool extcap_present = false;
 	tDot11fProbeResponse *prb_rsp_frm;
 	tSirRetStatus status;
 	uint16_t addn_ielen = 0;
@@ -458,8 +458,9 @@ uint32_t lim_send_probe_rsp_template_to_hal(tpAniSirGlobal pMac,
 		status = lim_strip_extcap_update_struct(pMac, addIE,
 				&addn_ielen, &extracted_extcap);
 		if (eSIR_SUCCESS != status) {
-			extcap_present = false;
 			sch_log(pMac, LOG1, FL("extcap not extracted"));
+		} else {
+			extcap_present = true;
 		}
 	}