Browse Source

qcacld-3.0: Host driver changes to support 11ai frame parsing

As part of Ic1b670e23f637f11b494422ad9954c1d7515e833, frame parser
files are changes to support 11ai frames parsing.

This changes addresses required host driver changes to support
the 11ai frame parsing.

Change-Id: Ia62d546ba1507d8541382369102840be316c466c
CRs-Fixed: 2028592
Selvaraj, Sridhar 8 years ago
parent
commit
75afbebffe

+ 2 - 2
core/hdd/src/wlan_hdd_assoc.c

@@ -5252,7 +5252,7 @@ static int32_t hdd_process_genie(hdd_adapter_t *pAdapter,
 		RSNIeLen = gen_ie_len - 2;
 		RSNIeLen = gen_ie_len - 2;
 		/* Unpack the RSN IE */
 		/* Unpack the RSN IE */
 		dot11f_unpack_ie_rsn((tpAniSirGlobal) halHandle,
 		dot11f_unpack_ie_rsn((tpAniSirGlobal) halHandle,
-				     pRsnIe, RSNIeLen, &dot11RSNIE);
+				     pRsnIe, RSNIeLen, &dot11RSNIE, false);
 		/* Copy out the encryption and authentication types */
 		/* Copy out the encryption and authentication types */
 		hdd_debug("pairwise cipher suite count: %d",
 		hdd_debug("pairwise cipher suite count: %d",
 			 dot11RSNIE.pwise_cipher_suite_count);
 			 dot11RSNIE.pwise_cipher_suite_count);
@@ -5320,7 +5320,7 @@ static int32_t hdd_process_genie(hdd_adapter_t *pAdapter,
 		RSNIeLen = gen_ie_len - (2 + 4);
 		RSNIeLen = gen_ie_len - (2 + 4);
 		/* Unpack the WPA IE */
 		/* Unpack the WPA IE */
 		dot11f_unpack_ie_wpa((tpAniSirGlobal) halHandle,
 		dot11f_unpack_ie_wpa((tpAniSirGlobal) halHandle,
-				     pRsnIe, RSNIeLen, &dot11WPAIE);
+				     pRsnIe, RSNIeLen, &dot11WPAIE, false);
 		/* Copy out the encryption and authentication types */
 		/* Copy out the encryption and authentication types */
 		hdd_debug("WPA unicast cipher suite count: %d",
 		hdd_debug("WPA unicast cipher suite count: %d",
 			 dot11WPAIE.unicast_cipher_count);
 			 dot11WPAIE.unicast_cipher_count);

+ 4 - 3
core/hdd/src/wlan_hdd_cfg80211.c

@@ -14618,9 +14618,10 @@ static int wlan_hdd_cfg80211_set_privacy_ibss(hdd_adapter_t *pAdapter,
 				 * and four byte WiFi OUI
 				 * and four byte WiFi OUI
 				 */
 				 */
 				dot11f_unpack_ie_wpa((tpAniSirGlobal) halHandle,
 				dot11f_unpack_ie_wpa((tpAniSirGlobal) halHandle,
-						     &ie[2 + 4],
-						     ie[1] - 4, &dot11WPAIE);
-				/* Extract the multicast cipher, the
+						     &ie[2 + 4], ie[1] - 4,
+						     &dot11WPAIE, false);
+				/*
+				 * Extract the multicast cipher, the
 				 * encType for unicast cipher for
 				 * encType for unicast cipher for
 				 * wpa-none is none
 				 * wpa-none is none
 				 */
 				 */

+ 4 - 3
core/hdd/src/wlan_hdd_hostapd.c

@@ -2177,7 +2177,7 @@ int hdd_softap_unpack_ie(tHalHandle halHandle,
 		/* Unpack the RSN IE */
 		/* Unpack the RSN IE */
 		memset(&dot11RSNIE, 0, sizeof(tDot11fIERSN));
 		memset(&dot11RSNIE, 0, sizeof(tDot11fIERSN));
 		dot11f_unpack_ie_rsn((tpAniSirGlobal) halHandle,
 		dot11f_unpack_ie_rsn((tpAniSirGlobal) halHandle,
-				     pRsnIe, RSNIeLen, &dot11RSNIE);
+				     pRsnIe, RSNIeLen, &dot11RSNIE, false);
 		/* Copy out the encryption and authentication types */
 		/* Copy out the encryption and authentication types */
 		hdd_debug("pairwise cipher suite count: %d",
 		hdd_debug("pairwise cipher suite count: %d",
 		       dot11RSNIE.pwise_cipher_suite_count);
 		       dot11RSNIE.pwise_cipher_suite_count);
@@ -2214,7 +2214,7 @@ int hdd_softap_unpack_ie(tHalHandle halHandle,
 		/* Unpack the WPA IE */
 		/* Unpack the WPA IE */
 		memset(&dot11WPAIE, 0, sizeof(tDot11fIEWPA));
 		memset(&dot11WPAIE, 0, sizeof(tDot11fIEWPA));
 		dot11f_unpack_ie_wpa((tpAniSirGlobal) halHandle,
 		dot11f_unpack_ie_wpa((tpAniSirGlobal) halHandle,
-				     pRsnIe, RSNIeLen, &dot11WPAIE);
+				     pRsnIe, RSNIeLen, &dot11WPAIE, false);
 		/* Copy out the encryption and authentication types */
 		/* Copy out the encryption and authentication types */
 		hdd_debug("WPA unicast cipher suite count: %d",
 		hdd_debug("WPA unicast cipher suite count: %d",
 		       dot11WPAIE.unicast_cipher_count);
 		       dot11WPAIE.unicast_cipher_count);
@@ -6340,7 +6340,8 @@ static bool wlan_hdd_get_sap_obss(hdd_adapter_t *pHostapdAdapter)
 	if (ie && ie[1]) {
 	if (ie && ie[1]) {
 		qdf_mem_copy(ht_cap_ie, &ie[2], DOT11F_IE_HTCAPS_MAX_LEN);
 		qdf_mem_copy(ht_cap_ie, &ie[2], DOT11F_IE_HTCAPS_MAX_LEN);
 		dot11f_unpack_ie_ht_caps((tpAniSirGlobal)hdd_ctx->hHal,
 		dot11f_unpack_ie_ht_caps((tpAniSirGlobal)hdd_ctx->hHal,
-					ht_cap_ie, ie[1], &dot11_ht_cap_ie);
+					ht_cap_ie, ie[1], &dot11_ht_cap_ie,
+					false);
 		return dot11_ht_cap_ie.supportedChannelWidthSet;
 		return dot11_ht_cap_ie.supportedChannelWidthSet;
 	}
 	}
 
 

+ 1 - 1
core/hdd/src/wlan_hdd_scan.c

@@ -340,7 +340,7 @@ static int hdd_indicate_scan_result(hdd_scan_info_t *scanInfo,
 
 
 		dot11f_unpack_beacon_i_es((tpAniSirGlobal)
 		dot11f_unpack_beacon_i_es((tpAniSirGlobal)
 					  hHal, (uint8_t *) descriptor->ieFields,
 					  hHal, (uint8_t *) descriptor->ieFields,
-					  ie_length, &dot11BeaconIEs);
+					  ie_length, &dot11BeaconIEs, false);
 
 
 		pDot11SSID = &dot11BeaconIEs.SSID;
 		pDot11SSID = &dot11BeaconIEs.SSID;
 
 

+ 14 - 12
core/mac/src/pe/lim/lim_process_action_frame.c

@@ -239,7 +239,7 @@ static void __lim_process_channel_switch_action_frame(tpAniSirGlobal mac_ctx,
 
 
 	/* Unpack channel switch frame */
 	/* Unpack channel switch frame */
 	status = dot11f_unpack_channel_switch(mac_ctx, body_ptr, frame_len,
 	status = dot11f_unpack_channel_switch(mac_ctx, body_ptr, frame_len,
-			chnl_switch_frame);
+			chnl_switch_frame, false);
 
 
 	if (DOT11F_FAILED(status)) {
 	if (DOT11F_FAILED(status)) {
 		lim_log(mac_ctx, LOGE,
 		lim_log(mac_ctx, LOGE,
@@ -378,7 +378,7 @@ lim_process_ext_channel_switch_action_frame(tpAniSirGlobal mac_ctx,
 
 
 	/* Unpack channel switch frame */
 	/* Unpack channel switch frame */
 	status = dot11f_unpack_ext_channel_switch_action_frame(mac_ctx,
 	status = dot11f_unpack_ext_channel_switch_action_frame(mac_ctx,
-			body, frame_len, ext_channel_switch_frame);
+			body, frame_len, ext_channel_switch_frame, false);
 
 
 	if (DOT11F_FAILED(status)) {
 	if (DOT11F_FAILED(status)) {
 
 
@@ -492,7 +492,7 @@ static void __lim_process_operating_mode_action_frame(tpAniSirGlobal mac_ctx,
 	}
 	}
 	/* Unpack channel switch frame */
 	/* Unpack channel switch frame */
 	status = dot11f_unpack_operating_mode(mac_ctx, body_ptr, frame_len,
 	status = dot11f_unpack_operating_mode(mac_ctx, body_ptr, frame_len,
-			operating_mode_frm);
+			operating_mode_frm, false);
 	if (DOT11F_FAILED(status)) {
 	if (DOT11F_FAILED(status)) {
 		lim_log(mac_ctx, LOGE,
 		lim_log(mac_ctx, LOGE,
 			FL("Failed to unpack and parse (0x%08x, %d bytes)"),
 			FL("Failed to unpack and parse (0x%08x, %d bytes)"),
@@ -625,7 +625,7 @@ static void __lim_process_gid_management_action_frame(tpAniSirGlobal mac_ctx,
 
 
 	/* Unpack Gid Mangement Action frame */
 	/* Unpack Gid Mangement Action frame */
 	status = dot11f_unpack_vht_gid_management_action_frame(mac_ctx,
 	status = dot11f_unpack_vht_gid_management_action_frame(mac_ctx,
-			body_ptr, frame_len, gid_mgmt_frame);
+			body_ptr, frame_len, gid_mgmt_frame, false);
 	if (DOT11F_FAILED(status)) {
 	if (DOT11F_FAILED(status)) {
 		lim_log(mac_ctx, LOGE,
 		lim_log(mac_ctx, LOGE,
 			FL("Fail to parse an Grp id frame (0x%08x, %d bytes):"),
 			FL("Fail to parse an Grp id frame (0x%08x, %d bytes):"),
@@ -1295,7 +1295,8 @@ __lim_process_sm_power_save_update(tpAniSirGlobal pMac, uint8_t *pRxPacketInfo,
 	}
 	}
 
 
 	/**Unpack the received frame */
 	/**Unpack the received frame */
-	nStatus = dot11f_unpack_sm_power_save(pMac, pBody, frameLen, &frmSMPower);
+	nStatus = dot11f_unpack_sm_power_save(pMac, pBody, frameLen,
+					      &frmSMPower, false);
 
 
 	if (DOT11F_FAILED(nStatus)) {
 	if (DOT11F_FAILED(nStatus)) {
 		lim_log(pMac, LOGE,
 		lim_log(pMac, LOGE,
@@ -1382,9 +1383,8 @@ __lim_process_radio_measure_request(tpAniSirGlobal pMac, uint8_t *pRxPacketInfo,
 	}
 	}
 
 
 	/**Unpack the received frame */
 	/**Unpack the received frame */
-	nStatus = dot11f_unpack_radio_measurement_request(pMac,
-								pBody,
-								frameLen, frm);
+	nStatus = dot11f_unpack_radio_measurement_request(pMac, pBody,
+							  frameLen, frm, false);
 
 
 	if (DOT11F_FAILED(nStatus)) {
 	if (DOT11F_FAILED(nStatus)) {
 		lim_log(pMac, LOGE,
 		lim_log(pMac, LOGE,
@@ -1427,7 +1427,8 @@ __lim_process_link_measurement_req(tpAniSirGlobal pMac, uint8_t *pRxPacketInfo,
 
 
 	/**Unpack the received frame */
 	/**Unpack the received frame */
 	nStatus =
 	nStatus =
-		dot11f_unpack_link_measurement_request(pMac, pBody, frameLen, &frm);
+		dot11f_unpack_link_measurement_request(pMac, pBody, frameLen,
+						       &frm, false);
 
 
 	if (DOT11F_FAILED(nStatus)) {
 	if (DOT11F_FAILED(nStatus)) {
 		lim_log(pMac, LOGE,
 		lim_log(pMac, LOGE,
@@ -1480,7 +1481,8 @@ __lim_process_neighbor_report(tpAniSirGlobal pMac, uint8_t *pRxPacketInfo,
 
 
 	/**Unpack the received frame */
 	/**Unpack the received frame */
 	nStatus =
 	nStatus =
-		dot11f_unpack_neighbor_report_response(pMac, pBody, frameLen, pFrm);
+		dot11f_unpack_neighbor_report_response(pMac, pBody,
+						       frameLen, pFrm, false);
 
 
 	if (DOT11F_FAILED(nStatus)) {
 	if (DOT11F_FAILED(nStatus)) {
 		lim_log(pMac, LOGE,
 		lim_log(pMac, LOGE,
@@ -1755,7 +1757,7 @@ static void lim_process_addba_req(tpAniSirGlobal mac_ctx, uint8_t *rx_pkt_info,
 
 
 	/* Unpack ADDBA request frame */
 	/* Unpack ADDBA request frame */
 	status = dot11f_unpack_addba_req(mac_ctx, body_ptr, frame_len,
 	status = dot11f_unpack_addba_req(mac_ctx, body_ptr, frame_len,
-					 addba_req);
+					 addba_req, false);
 
 
 	if (DOT11F_FAILED(status)) {
 	if (DOT11F_FAILED(status)) {
 		lim_log(mac_ctx, LOGE,
 		lim_log(mac_ctx, LOGE,
@@ -1836,7 +1838,7 @@ static void lim_process_delba_req(tpAniSirGlobal mac_ctx, uint8_t *rx_pkt_info,
 
 
 	/* Unpack DELBA request frame */
 	/* Unpack DELBA request frame */
 	status = dot11f_unpack_delba_req(mac_ctx, body_ptr, frame_len,
 	status = dot11f_unpack_delba_req(mac_ctx, body_ptr, frame_len,
-					 delba_req);
+					 delba_req, false);
 
 
 	if (DOT11F_FAILED(status)) {
 	if (DOT11F_FAILED(status)) {
 		lim_log(mac_ctx, LOGE,
 		lim_log(mac_ctx, LOGE,

+ 2 - 2
core/mac/src/pe/lim/lim_process_assoc_req_frame.c

@@ -805,7 +805,7 @@ static bool lim_chk_n_process_wpa_rsn_ie(tpAniSirGlobal mac_ctx,
 					dot11f_unpack_ie_rsn(mac_ctx,
 					dot11f_unpack_ie_rsn(mac_ctx,
 						&assoc_req->rsn.info[0],
 						&assoc_req->rsn.info[0],
 						assoc_req->rsn.length,
 						assoc_req->rsn.length,
-						&dot11f_ie_rsn);
+						&dot11f_ie_rsn, false);
 
 
 					/* Check RSN version is supported */
 					/* Check RSN version is supported */
 					if (SIR_MAC_OUI_VERSION_1 ==
 					if (SIR_MAC_OUI_VERSION_1 ==
@@ -880,7 +880,7 @@ static bool lim_chk_n_process_wpa_rsn_ie(tpAniSirGlobal mac_ctx,
 					dot11f_unpack_ie_wpa(mac_ctx,
 					dot11f_unpack_ie_wpa(mac_ctx,
 						&assoc_req->wpa.info[4],
 						&assoc_req->wpa.info[4],
 						assoc_req->wpa.length,
 						assoc_req->wpa.length,
-						&dot11f_ie_wpa);
+						&dot11f_ie_wpa, false);
 					/*
 					/*
 					 * check the groupwise and pairwise
 					 * check the groupwise and pairwise
 					 * cipher suites
 					 * cipher suites

+ 4 - 4
core/mac/src/pe/lim/lim_sme_req_utils.c

@@ -299,13 +299,13 @@ lim_set_rs_nie_wp_aiefrom_sme_start_bss_req_message(tpAniSirGlobal mac_ctx,
 		lim_log(mac_ctx, LOG1, FL("Only RSN IE is present"));
 		lim_log(mac_ctx, LOG1, FL("Only RSN IE is present"));
 		dot11f_unpack_ie_rsn(mac_ctx, &rsn_ie->rsnIEdata[2],
 		dot11f_unpack_ie_rsn(mac_ctx, &rsn_ie->rsnIEdata[2],
 				     (uint8_t) rsn_ie->length,
 				     (uint8_t) rsn_ie->length,
-				     &session->gStartBssRSNIe);
+				     &session->gStartBssRSNIe, false);
 	} else if ((rsn_ie->length == rsn_ie->rsnIEdata[1] + 2)
 	} else if ((rsn_ie->length == rsn_ie->rsnIEdata[1] + 2)
 		   && (rsn_ie->rsnIEdata[0] == SIR_MAC_WPA_EID)) {
 		   && (rsn_ie->rsnIEdata[0] == SIR_MAC_WPA_EID)) {
 		lim_log(mac_ctx, LOG1, FL("Only WPA IE is present"));
 		lim_log(mac_ctx, LOG1, FL("Only WPA IE is present"));
 		dot11f_unpack_ie_wpa(mac_ctx, &rsn_ie->rsnIEdata[6],
 		dot11f_unpack_ie_wpa(mac_ctx, &rsn_ie->rsnIEdata[6],
 				     (uint8_t) rsn_ie->length - 4,
 				     (uint8_t) rsn_ie->length - 4,
-				     &session->gStartBssWPAIe);
+				     &session->gStartBssWPAIe, false);
 	}
 	}
 	/* Check validity of WPA IE */
 	/* Check validity of WPA IE */
 	if (wpa_idx + 6 >= SIR_MAC_MAX_IE_LENGTH)
 	if (wpa_idx + 6 >= SIR_MAC_MAX_IE_LENGTH)
@@ -326,10 +326,10 @@ lim_set_rs_nie_wp_aiefrom_sme_start_bss_req_message(tpAniSirGlobal mac_ctx,
 		/* Both RSN and WPA IEs are present */
 		/* Both RSN and WPA IEs are present */
 		dot11f_unpack_ie_rsn(mac_ctx, &rsn_ie->rsnIEdata[2],
 		dot11f_unpack_ie_rsn(mac_ctx, &rsn_ie->rsnIEdata[2],
 				     (uint8_t) rsn_ie->length,
 				     (uint8_t) rsn_ie->length,
-				     &session->gStartBssRSNIe);
+				     &session->gStartBssRSNIe, false);
 		dot11f_unpack_ie_wpa(mac_ctx, &rsn_ie->rsnIEdata[wpa_idx + 6],
 		dot11f_unpack_ie_wpa(mac_ctx, &rsn_ie->rsnIEdata[wpa_idx + 6],
 				     rsn_ie->rsnIEdata[wpa_idx + 1] - 4,
 				     rsn_ie->rsnIEdata[wpa_idx + 1] - 4,
-				     &session->gStartBssWPAIe);
+				     &session->gStartBssWPAIe, false);
 	}
 	}
 	return true;
 	return true;
 }
 }

+ 2 - 2
core/mac/src/pe/lim/lim_utils.c

@@ -6815,7 +6815,7 @@ tSirRetStatus lim_strip_supp_op_class_update_struct(tpAniSirGlobal mac_ctx,
 
 
 	/* update the extracted supp op class to struct*/
 	/* update the extracted supp op class to struct*/
 	if (DOT11F_PARSE_SUCCESS != dot11f_unpack_ie_supp_operating_classes(
 	if (DOT11F_PARSE_SUCCESS != dot11f_unpack_ie_supp_operating_classes(
-	    mac_ctx, &extracted_buff[2], extracted_buff[1], dst)) {
+	    mac_ctx, &extracted_buff[2], extracted_buff[1], dst, false)) {
 		lim_log(mac_ctx, LOGE, FL("dot11f_unpack Parse Error "));
 		lim_log(mac_ctx, LOGE, FL("dot11f_unpack Parse Error "));
 		return eSIR_FAILURE;
 		return eSIR_FAILURE;
 	}
 	}
@@ -6859,7 +6859,7 @@ void lim_update_extcap_struct(tpAniSirGlobal mac_ctx,
 	qdf_mem_copy(&out[0], &buf[2], buf[1]);
 	qdf_mem_copy(&out[0], &buf[2], buf[1]);
 
 
 	if (DOT11F_PARSE_SUCCESS != dot11f_unpack_ie_ext_cap(mac_ctx, &out[0],
 	if (DOT11F_PARSE_SUCCESS != dot11f_unpack_ie_ext_cap(mac_ctx, &out[0],
-					buf[1], dst))
+							buf[1], dst, false))
 		lim_log(mac_ctx, LOGE, FL("dot11f_unpack Parse Error "));
 		lim_log(mac_ctx, LOGE, FL("dot11f_unpack Parse Error "));
 }
 }
 
 

+ 32 - 22
core/mac/src/sys/legacy/src/utils/src/parser_api.c

@@ -1545,7 +1545,7 @@ populate_dot11f_rsn(tpAniSirGlobal pMac,
 		if (0 <= idx) {
 		if (0 <= idx) {
 			status = dot11f_unpack_ie_rsn(pMac, pRsnIe->rsnIEdata + idx + 2,   /* EID, length */
 			status = dot11f_unpack_ie_rsn(pMac, pRsnIe->rsnIEdata + idx + 2,   /* EID, length */
 						      pRsnIe->rsnIEdata[idx + 1],
 						      pRsnIe->rsnIEdata[idx + 1],
-						      pDot11f);
+						      pDot11f, false);
 			if (DOT11F_FAILED(status)) {
 			if (DOT11F_FAILED(status)) {
 				pe_err("Parse failure in Populate Dot11fRSN (0x%08x)",
 				pe_err("Parse failure in Populate Dot11fRSN (0x%08x)",
 					status);
 					status);
@@ -1594,7 +1594,7 @@ populate_dot11f_wapi(tpAniSirGlobal pMac,
 		if (0 <= idx) {
 		if (0 <= idx) {
 			status = dot11f_unpack_ie_wapi(pMac, pRsnIe->rsnIEdata + idx + 2,  /* EID, length */
 			status = dot11f_unpack_ie_wapi(pMac, pRsnIe->rsnIEdata + idx + 2,  /* EID, length */
 						       pRsnIe->rsnIEdata[idx + 1],
 						       pRsnIe->rsnIEdata[idx + 1],
-						       pDot11f);
+						       pDot11f, false);
 			if (DOT11F_FAILED(status)) {
 			if (DOT11F_FAILED(status)) {
 				pe_err("Parse failure in populate_dot11f_wapi (0x%08x)",
 				pe_err("Parse failure in populate_dot11f_wapi (0x%08x)",
 					status);
 					status);
@@ -2124,7 +2124,7 @@ populate_dot11f_wpa(tpAniSirGlobal pMac,
 		if (0 <= idx) {
 		if (0 <= idx) {
 			status = dot11f_unpack_ie_wpa(pMac, pRsnIe->rsnIEdata + idx + 2 + 4,       /* EID, length, OUI */
 			status = dot11f_unpack_ie_wpa(pMac, pRsnIe->rsnIEdata + idx + 2 + 4,       /* EID, length, OUI */
 						      pRsnIe->rsnIEdata[idx + 1] - 4,   /* OUI */
 						      pRsnIe->rsnIEdata[idx + 1] - 4,   /* OUI */
-						      pDot11f);
+						      pDot11f, false);
 			if (DOT11F_FAILED(status)) {
 			if (DOT11F_FAILED(status)) {
 				pe_err("Parse failure in Populate Dot11fWPA (0x%08x)",
 				pe_err("Parse failure in Populate Dot11fWPA (0x%08x)",
 					status);
 					status);
@@ -2170,7 +2170,7 @@ sir_convert_probe_req_frame2_struct(tpAniSirGlobal pMac,
 	qdf_mem_set((uint8_t *) pProbeReq, sizeof(tSirProbeReq), 0);
 	qdf_mem_set((uint8_t *) pProbeReq, sizeof(tSirProbeReq), 0);
 
 
 	/* delegate to the framesc-generated code, */
 	/* delegate to the framesc-generated code, */
-	status = dot11f_unpack_probe_request(pMac, pFrame, nFrame, &pr);
+	status = dot11f_unpack_probe_request(pMac, pFrame, nFrame, &pr, false);
 	if (DOT11F_FAILED(status)) {
 	if (DOT11F_FAILED(status)) {
 		lim_log(pMac, LOGE,
 		lim_log(pMac, LOGE,
 			FL("Failed to parse a Probe Request (0x%08x, %d bytes):"),
 			FL("Failed to parse a Probe Request (0x%08x, %d bytes):"),
@@ -2320,7 +2320,7 @@ tSirRetStatus sir_convert_probe_frame2_struct(tpAniSirGlobal pMac,
 	}
 	}
 
 
 	/* delegate to the framesc-generated code, */
 	/* delegate to the framesc-generated code, */
-	status = dot11f_unpack_probe_response(pMac, pFrame, nFrame, pr);
+	status = dot11f_unpack_probe_response(pMac, pFrame, nFrame, pr, false);
 	if (DOT11F_FAILED(status)) {
 	if (DOT11F_FAILED(status)) {
 		lim_log(pMac, LOGE,
 		lim_log(pMac, LOGE,
 			FL("Failed to parse a Probe Response (0x%08x, %d bytes):"),
 			FL("Failed to parse a Probe Response (0x%08x, %d bytes):"),
@@ -2636,7 +2636,7 @@ sir_convert_assoc_req_frame2_struct(tpAniSirGlobal pMac,
 	qdf_mem_set((uint8_t *) pAssocReq, sizeof(tSirAssocReq), 0);
 	qdf_mem_set((uint8_t *) pAssocReq, sizeof(tSirAssocReq), 0);
 
 
 	/* delegate to the framesc-generated code, */
 	/* delegate to the framesc-generated code, */
-	status = dot11f_unpack_assoc_request(pMac, pFrame, nFrame, ar);
+	status = dot11f_unpack_assoc_request(pMac, pFrame, nFrame, ar, false);
 	if (DOT11F_FAILED(status)) {
 	if (DOT11F_FAILED(status)) {
 		lim_log(pMac, LOGE,
 		lim_log(pMac, LOGE,
 			FL("Failed to parse an Association Request (0x%08x, %d bytes):"),
 			FL("Failed to parse an Association Request (0x%08x, %d bytes):"),
@@ -2844,7 +2844,7 @@ sir_convert_assoc_resp_frame2_struct(tpAniSirGlobal pMac,
 	qdf_mem_set((uint8_t *) pAssocRsp, sizeof(tSirAssocRsp), 0);
 	qdf_mem_set((uint8_t *) pAssocRsp, sizeof(tSirAssocRsp), 0);
 
 
 	/* delegate to the framesc-generated code, */
 	/* delegate to the framesc-generated code, */
-	status = dot11f_unpack_assoc_response(pMac, pFrame, nFrame, &ar);
+	status = dot11f_unpack_assoc_response(pMac, pFrame, nFrame, &ar, false);
 	if (DOT11F_FAILED(status)) {
 	if (DOT11F_FAILED(status)) {
 		lim_log(pMac, LOGE,
 		lim_log(pMac, LOGE,
 			FL("Failed to parse an Association Response (0x%08x, %d bytes):"),
 			FL("Failed to parse an Association Response (0x%08x, %d bytes):"),
@@ -3077,7 +3077,8 @@ sir_convert_reassoc_req_frame2_struct(tpAniSirGlobal pMac,
 	qdf_mem_set((uint8_t *) pAssocReq, sizeof(tSirAssocReq), 0);
 	qdf_mem_set((uint8_t *) pAssocReq, sizeof(tSirAssocReq), 0);
 
 
 	/* delegate to the framesc-generated code, */
 	/* delegate to the framesc-generated code, */
-	status = dot11f_unpack_re_assoc_request(pMac, pFrame, nFrame, &ar);
+	status = dot11f_unpack_re_assoc_request(pMac, pFrame, nFrame,
+						&ar, false);
 	if (DOT11F_FAILED(status)) {
 	if (DOT11F_FAILED(status)) {
 		lim_log(pMac, LOGE,
 		lim_log(pMac, LOGE,
 			FL("Failed to parse a Re-association Request (0x%08x, %d bytes):"),
 			FL("Failed to parse a Re-association Request (0x%08x, %d bytes):"),
@@ -3269,7 +3270,8 @@ sir_beacon_ie_ese_bcn_report(tpAniSirGlobal pMac,
 	}
 	}
 	qdf_mem_zero(pBies, sizeof(tDot11fBeaconIEs));
 	qdf_mem_zero(pBies, sizeof(tDot11fBeaconIEs));
 	/* delegate to the framesc-generated code, */
 	/* delegate to the framesc-generated code, */
-	status = dot11f_unpack_beacon_i_es(pMac, pPayload, nPayload, pBies);
+	status = dot11f_unpack_beacon_i_es(pMac, pPayload, nPayload,
+					   pBies, false);
 
 
 	if (DOT11F_FAILED(status)) {
 	if (DOT11F_FAILED(status)) {
 		lim_log(pMac, LOGE,
 		lim_log(pMac, LOGE,
@@ -3563,7 +3565,8 @@ sir_parse_beacon_ie(tpAniSirGlobal pMac,
 	}
 	}
 	qdf_mem_zero(pBies, sizeof(tDot11fBeaconIEs));
 	qdf_mem_zero(pBies, sizeof(tDot11fBeaconIEs));
 	/* delegate to the framesc-generated code, */
 	/* delegate to the framesc-generated code, */
-	status = dot11f_unpack_beacon_i_es(pMac, pPayload, nPayload, pBies);
+	status = dot11f_unpack_beacon_i_es(pMac, pPayload, nPayload,
+					   pBies, false);
 
 
 	if (DOT11F_FAILED(status)) {
 	if (DOT11F_FAILED(status)) {
 		lim_log(pMac, LOGE,
 		lim_log(pMac, LOGE,
@@ -3878,7 +3881,7 @@ sir_convert_beacon_frame2_struct(tpAniSirGlobal pMac,
 	qdf_mem_copy(pBeaconStruct->bssid, pHdr->sa, 6);
 	qdf_mem_copy(pBeaconStruct->bssid, pHdr->sa, 6);
 
 
 	/* delegate to the framesc-generated code, */
 	/* delegate to the framesc-generated code, */
-	status = dot11f_unpack_beacon(pMac, pPayload, nPayload, pBeacon);
+	status = dot11f_unpack_beacon(pMac, pPayload, nPayload, pBeacon, false);
 	if (DOT11F_FAILED(status)) {
 	if (DOT11F_FAILED(status)) {
 		lim_log(pMac, LOGE,
 		lim_log(pMac, LOGE,
 			FL("Failed to parse Beacon IEs (0x%08x, %d bytes):"),
 			FL("Failed to parse Beacon IEs (0x%08x, %d bytes):"),
@@ -4249,7 +4252,8 @@ sir_convert_auth_frame2_struct(tpAniSirGlobal pMac,
 	qdf_mem_set((uint8_t *) pAuth, sizeof(tSirMacAuthFrameBody), 0);
 	qdf_mem_set((uint8_t *) pAuth, sizeof(tSirMacAuthFrameBody), 0);
 
 
 	/* delegate to the framesc-generated code, */
 	/* delegate to the framesc-generated code, */
-	status = dot11f_unpack_authentication(pMac, pFrame, nFrame, &auth);
+	status = dot11f_unpack_authentication(pMac, pFrame, nFrame,
+					      &auth, false);
 	if (DOT11F_FAILED(status)) {
 	if (DOT11F_FAILED(status)) {
 		lim_log(pMac, LOGE,
 		lim_log(pMac, LOGE,
 			FL("Failed to parse an Authentication frame (0x%08x, %d bytes):"),
 			FL("Failed to parse an Authentication frame (0x%08x, %d bytes):"),
@@ -4304,12 +4308,13 @@ sir_convert_addts_req2_struct(tpAniSirGlobal pMac,
 	/* delegate to the framesc-generated code, */
 	/* delegate to the framesc-generated code, */
 	switch (*pFrame) {
 	switch (*pFrame) {
 	case SIR_MAC_ACTION_QOS_MGMT:
 	case SIR_MAC_ACTION_QOS_MGMT:
-		status = dot11f_unpack_add_ts_request(pMac, pFrame, nFrame, &addts);
+		status = dot11f_unpack_add_ts_request(pMac, pFrame, nFrame,
+						      &addts, false);
 		break;
 		break;
 	case SIR_MAC_ACTION_WME:
 	case SIR_MAC_ACTION_WME:
 		status =
 		status =
 			dot11f_unpack_wmm_add_ts_request(pMac, pFrame, nFrame,
 			dot11f_unpack_wmm_add_ts_request(pMac, pFrame, nFrame,
-							 &wmmaddts);
+							 &wmmaddts, false);
 		break;
 		break;
 	default:
 	default:
 		lim_log(pMac, LOGE, FL("sir_convert_addts_req2_struct invoked "
 		lim_log(pMac, LOGE, FL("sir_convert_addts_req2_struct invoked "
@@ -4443,12 +4448,13 @@ sir_convert_addts_rsp2_struct(tpAniSirGlobal pMac,
 	switch (*pFrame) {
 	switch (*pFrame) {
 	case SIR_MAC_ACTION_QOS_MGMT:
 	case SIR_MAC_ACTION_QOS_MGMT:
 		status =
 		status =
-			dot11f_unpack_add_ts_response(pMac, pFrame, nFrame, &addts);
+			dot11f_unpack_add_ts_response(pMac, pFrame, nFrame,
+						      &addts, false);
 		break;
 		break;
 	case SIR_MAC_ACTION_WME:
 	case SIR_MAC_ACTION_WME:
 		status =
 		status =
 			dot11f_unpack_wmm_add_ts_response(pMac, pFrame, nFrame,
 			dot11f_unpack_wmm_add_ts_response(pMac, pFrame, nFrame,
-							  &wmmaddts);
+							  &wmmaddts, false);
 		break;
 		break;
 	default:
 	default:
 		lim_log(pMac, LOGE, FL("sir_convert_addts_rsp2_struct invoked "
 		lim_log(pMac, LOGE, FL("sir_convert_addts_rsp2_struct invoked "
@@ -4618,10 +4624,12 @@ sir_convert_delts_req2_struct(tpAniSirGlobal pMac,
 	/* delegate to the framesc-generated code, */
 	/* delegate to the framesc-generated code, */
 	switch (*pFrame) {
 	switch (*pFrame) {
 	case SIR_MAC_ACTION_QOS_MGMT:
 	case SIR_MAC_ACTION_QOS_MGMT:
-		status = dot11f_unpack_del_ts(pMac, pFrame, nFrame, &delts);
+		status = dot11f_unpack_del_ts(pMac, pFrame, nFrame,
+					      &delts, false);
 		break;
 		break;
 	case SIR_MAC_ACTION_WME:
 	case SIR_MAC_ACTION_WME:
-		status = dot11f_unpack_wmm_del_ts(pMac, pFrame, nFrame, &wmmdelts);
+		status = dot11f_unpack_wmm_del_ts(pMac, pFrame, nFrame,
+						  &wmmdelts, false);
 		break;
 		break;
 	default:
 	default:
 		lim_log(pMac, LOGE, FL("sirConvertDeltsRsp2Struct invoked "
 		lim_log(pMac, LOGE, FL("sirConvertDeltsRsp2Struct invoked "
@@ -4688,7 +4696,8 @@ sir_convert_qos_map_configure_frame2_struct(tpAniSirGlobal pMac,
 	tDot11fQosMapConfigure mapConfigure;
 	tDot11fQosMapConfigure mapConfigure;
 	uint32_t status;
 	uint32_t status;
 	status =
 	status =
-		dot11f_unpack_qos_map_configure(pMac, pFrame, nFrame, &mapConfigure);
+		dot11f_unpack_qos_map_configure(pMac, pFrame, nFrame,
+						&mapConfigure, false);
 	if (DOT11F_FAILED(status) || !mapConfigure.QosMapSet.present) {
 	if (DOT11F_FAILED(status) || !mapConfigure.QosMapSet.present) {
 		pe_err("Failed to parse Qos Map Configure frame (0x%08x, %d bytes):",
 		pe_err("Failed to parse Qos Map Configure frame (0x%08x, %d bytes):",
 			   status, nFrame);
 			   status, nFrame);
@@ -4718,7 +4727,7 @@ sir_convert_tpc_req_frame2_struct(tpAniSirGlobal pMac,
 	uint32_t status;
 	uint32_t status;
 	qdf_mem_set((uint8_t *) pTpcReqFrame, sizeof(tSirMacTpcReqActionFrame),
 	qdf_mem_set((uint8_t *) pTpcReqFrame, sizeof(tSirMacTpcReqActionFrame),
 		    0);
 		    0);
-	status = dot11f_unpack_tpc_request(pMac, pFrame, nFrame, &req);
+	status = dot11f_unpack_tpc_request(pMac, pFrame, nFrame, &req, false);
 	if (DOT11F_FAILED(status)) {
 	if (DOT11F_FAILED(status)) {
 		pe_err("Failed to parse a TPC Request frame (0x%08x, %d bytes):",
 		pe_err("Failed to parse a TPC Request frame (0x%08x, %d bytes):",
 			   status, nFrame);
 			   status, nFrame);
@@ -4759,7 +4768,8 @@ sir_convert_meas_req_frame2_struct(tpAniSirGlobal pMac,
 		    sizeof(tpSirMacMeasReqActionFrame), 0);
 		    sizeof(tpSirMacMeasReqActionFrame), 0);
 
 
 	/* delegate to the framesc-generated code, */
 	/* delegate to the framesc-generated code, */
-	status = dot11f_unpack_measurement_request(pMac, pFrame, nFrame, &mr);
+	status = dot11f_unpack_measurement_request(pMac, pFrame,
+						   nFrame, &mr, false);
 	if (DOT11F_FAILED(status)) {
 	if (DOT11F_FAILED(status)) {
 		pe_err("Failed to parse a Measurement Request frame (0x%08x, %d bytes):",
 		pe_err("Failed to parse a Measurement Request frame (0x%08x, %d bytes):",
 			   status, nFrame);
 			   status, nFrame);
@@ -5632,7 +5642,7 @@ tSirRetStatus populate_dot11f_assoc_res_wsc_ie(tpAniSirGlobal pMac,
 		/* retreive WSC IE from given AssocReq */
 		/* retreive WSC IE from given AssocReq */
 		dot11f_unpack_ie_wsc_assoc_req(pMac, wscIe + 2 + 4,     /* EID, length, OUI */
 		dot11f_unpack_ie_wsc_assoc_req(pMac, wscIe + 2 + 4,     /* EID, length, OUI */
 					       wscIe[1] - 4, /* length without OUI */
 					       wscIe[1] - 4, /* length without OUI */
-					       &parsedWscAssocReq);
+					       &parsedWscAssocReq, false);
 		pDot11f->present = 1;
 		pDot11f->present = 1;
 		/* version has to be 0x10 */
 		/* version has to be 0x10 */
 		pDot11f->Version.present = 1;
 		pDot11f->Version.present = 1;

+ 1 - 1
core/sme/src/csr/csr_roam_preauth.c

@@ -651,7 +651,7 @@ void csr_roam_ft_pre_auth_rsp_processor(tHalHandle hal,
 
 
 		status = dot11f_unpack_authentication(mac_ctx,
 		status = dot11f_unpack_authentication(mac_ctx,
 				preauth_rsp->ft_ies,
 				preauth_rsp->ft_ies,
-				preauth_rsp->ft_ies_length, p_auth);
+				preauth_rsp->ft_ies_length, p_auth, false);
 		if (DOT11F_FAILED(status))
 		if (DOT11F_FAILED(status))
 			sme_err("Failed to parse an Authentication frame");
 			sme_err("Failed to parse an Authentication frame");
 		else if (p_auth->MobilityDomain.present)
 		else if (p_auth->MobilityDomain.present)

+ 3 - 4
core/sme/src/csr/csr_util.c

@@ -1703,10 +1703,9 @@ QDF_STATUS csr_parse_bss_description_ies(tHalHandle hHal,
 		      GET_FIELD_OFFSET(tSirBssDescription, ieFields));
 		      GET_FIELD_OFFSET(tSirBssDescription, ieFields));
 
 
 	if (ieLen > 0 && pIEStruct) {
 	if (ieLen > 0 && pIEStruct) {
-		if (!DOT11F_FAILED
-			    (dot11f_unpack_beacon_i_es
-				    (pMac, (uint8_t *) pBssDesc->ieFields, ieLen,
-				    pIEStruct))) {
+		if (!DOT11F_FAILED(dot11f_unpack_beacon_i_es
+				    (pMac, (uint8_t *) pBssDesc->ieFields,
+				    ieLen, pIEStruct, false))) {
 			status = QDF_STATUS_SUCCESS;
 			status = QDF_STATUS_SUCCESS;
 		}
 		}
 	}
 	}