qcacld-3.0: HS20 indication element support

HS20 Indication element parsing is added to indicate
release number of the HS20 passpoint that is present
in Hotspot configurations.

Change-Id: I8671d569d3809ebe5da7233ec862ae2569f5c109
CRs-Fixed: 1019592
diff --git a/core/mac/src/cfg/cfgUtil/dot11f.frms b/core/mac/src/cfg/cfgUtil/dot11f.frms
index 91b3b1d..eb7e29c 100644
--- a/core/mac/src/cfg/cfgUtil/dot11f.frms
+++ b/core/mac/src/cfg/cfgUtil/dot11f.frms
@@ -1860,6 +1860,29 @@
 {
 }
 
+IE hs20vendor_ie (EID_VENDOR_SPECIFIC) OUI (0x50, 0x6F, 0x9A)
+{
+    type,                       1;
+    /* hotspot_configurations */
+    {
+        dgaf_dis:               1;
+        hs_id_present:          2;
+        reserved:               1;
+        release_num:            4;
+    }
+    OPTIONAL UNION hs_id (DISCRIMINATOR hs_id_present)
+    {
+        pps_mo (hs_id_present IS 1)
+        {
+            pps_mo_id,          2;
+        }
+        anqp_domain (hs_id_present IS 2)
+        {
+            anqp_domain_id,     2;
+        }
+    };
+}
+
 IE QComVendorIE (EID_VENDOR_SPECIFIC) OUI (0x00, 0xA0, 0xC6)
 {
     type,      1;
@@ -2924,6 +2947,7 @@
     OPTIE  Vendor1IE;
     OPTIE  vendor2_ie;
     OPTIE  Vendor3IE;
+    OPTIE  hs20vendor_ie;
     OPTIE  ChannelSwitchWrapper;
     OPTIE  QComVendorIE;
     OPTIE  ESEVersion;
@@ -3011,6 +3035,7 @@
     OPTIE  Vendor1IE;
     OPTIE  vendor2_ie;
     OPTIE  Vendor3IE;
+    OPTIE  hs20vendor_ie;
     OPTIE  ChannelSwitchWrapper;
     OPTIE  QComVendorIE;
     OPTIE  ESEVersion;
@@ -3075,6 +3100,7 @@
     OPTIE  Vendor1IE;
     OPTIE  vendor2_ie;
     OPTIE  Vendor3IE;
+    OPTIE  hs20vendor_ie;
     OPTIE  ChannelSwitchWrapper;
     OPTIE  QComVendorIE;
 } // End frame BeaconIEs.
@@ -3114,6 +3140,7 @@
     OPTIE  OperatingMode;
     OPTIE  QosMapSet;
     OPTIE  vendor2_ie;
+    OPTIE  hs20vendor_ie;
 } // End frame AssocRequest.
 
 FRAME AssocResponse                       // 7.2.3.5
@@ -3185,6 +3212,7 @@
     OPTIE  OperatingMode;
     OPTIE  QosMapSet;
     OPTIE  vendor2_ie;
+    OPTIE  hs20vendor_ie;
 } // End frame ReAssocRequest.
 
 FRAME ReAssocResponse                     // 7.2.3.7
@@ -3288,6 +3316,7 @@
     OPTIE  Vendor1IE;
     OPTIE  vendor2_ie;
     OPTIE  Vendor3IE;
+    OPTIE  hs20vendor_ie;
     OPTIE  ChannelSwitchWrapper;
     OPTIE  QComVendorIE;
     OPTIE  ESEVersion;
diff --git a/core/mac/src/include/dot11f.h b/core/mac/src/include/dot11f.h
index e51bd61..ef886c5 100644
--- a/core/mac/src/include/dot11f.h
+++ b/core/mac/src/include/dot11f.h
@@ -35,7 +35,7 @@
  *
  *
  * This file was automatically generated by 'framesc'
- * Wed Mar  2 11:45:36 2016 from the following file(s):
+ * Thu May 26 13:06:28 2016 from the following file(s):
  *
  * dot11f.frms
  *
@@ -7361,6 +7361,56 @@
 }; /* End extern "C". */
 #endif /* C++ */
 
+/* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a} */
+typedef struct sDot11fIEhs20vendor_ie {
+	uint8_t             present;
+	uint8_t             type;
+	uint8_t             dgaf_dis:1;
+	uint8_t        hs_id_present:2;
+	uint8_t             reserved:1;
+	uint8_t          release_num:4;
+	union {
+		struct {
+			uint16_t pps_mo_id;
+		} pps_mo; /* hs_id_present = 1 */
+		struct {
+			uint16_t anqp_domain_id;
+		} anqp_domain; /* hs_id_present = 2 */
+	} hs_id;
+} tDot11fIEhs20vendor_ie;
+
+#define DOT11F_EID_HS20VENDOR_IE (221)
+
+/* N.B. These #defines do *not* include the EID & length */
+#define DOT11F_IE_HS20VENDOR_IE_MIN_LEN (5)
+
+#define DOT11F_IE_HS20VENDOR_IE_MAX_LEN (7)
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* C++ */
+uint32_t dot11f_unpack_ie_hs20vendor_ie(
+	tpAniSirGlobal,
+	uint8_t *,
+	uint8_t,
+	tDot11fIEhs20vendor_ie*);
+
+uint32_t dot11f_pack_ie_hs20vendor_ie(
+	tpAniSirGlobal,
+	tDot11fIEhs20vendor_ie *,
+	uint8_t *,
+	uint32_t,
+	uint32_t*);
+
+uint32_t dot11f_get_packed_ie_hs20vendor_ie(
+	tpAniSirGlobal,
+	tDot11fIEhs20vendor_ie *,
+	uint32_t*);
+
+#ifdef __cplusplus
+}; /* End extern "C". */
+#endif /* C++ */
+
 /* EID 72 (0x48) */
 typedef struct sDot11fIEht2040_bss_coexistence {
 	uint8_t             present;
@@ -7629,6 +7679,7 @@
 	tDot11fIEOperatingMode         OperatingMode;
 	tDot11fIEQosMapSet             QosMapSet;
 	tDot11fIEvendor2_ie            vendor2_ie;
+	tDot11fIEhs20vendor_ie         hs20vendor_ie;
 } tDot11fAssocRequest;
 
 #define DOT11F_ASSOCREQUEST (3)
@@ -7791,6 +7842,7 @@
 	tDot11fIEVendor1IE                   Vendor1IE;
 	tDot11fIEvendor2_ie                  vendor2_ie;
 	tDot11fIEVendor3IE                   Vendor3IE;
+	tDot11fIEhs20vendor_ie               hs20vendor_ie;
 	tDot11fIEChannelSwitchWrapper        ChannelSwitchWrapper;
 	tDot11fIEQComVendorIE                QComVendorIE;
 	tDot11fIEESEVersion                  ESEVersion;
@@ -7884,6 +7936,7 @@
 	tDot11fIEVendor1IE                   Vendor1IE;
 	tDot11fIEvendor2_ie                  vendor2_ie;
 	tDot11fIEVendor3IE                   Vendor3IE;
+	tDot11fIEhs20vendor_ie               hs20vendor_ie;
 	tDot11fIEChannelSwitchWrapper        ChannelSwitchWrapper;
 	tDot11fIEQComVendorIE                QComVendorIE;
 	tDot11fIEESEVersion                  ESEVersion;
@@ -7959,6 +8012,7 @@
 	tDot11fIEVendor1IE                   Vendor1IE;
 	tDot11fIEvendor2_ie                  vendor2_ie;
 	tDot11fIEVendor3IE                   Vendor3IE;
+	tDot11fIEhs20vendor_ie               hs20vendor_ie;
 	tDot11fIEChannelSwitchWrapper        ChannelSwitchWrapper;
 	tDot11fIEQComVendorIE                QComVendorIE;
 } tDot11fBeaconIEs;
@@ -8368,6 +8422,7 @@
 	tDot11fIEVendor1IE                   Vendor1IE;
 	tDot11fIEvendor2_ie                  vendor2_ie;
 	tDot11fIEVendor3IE                   Vendor3IE;
+	tDot11fIEhs20vendor_ie               hs20vendor_ie;
 	tDot11fIEChannelSwitchWrapper        ChannelSwitchWrapper;
 	tDot11fIEQComVendorIE                QComVendorIE;
 	tDot11fIEESEVersion                  ESEVersion;
@@ -8512,6 +8567,7 @@
 	tDot11fIEOperatingMode             OperatingMode;
 	tDot11fIEQosMapSet                 QosMapSet;
 	tDot11fIEvendor2_ie                vendor2_ie;
+	tDot11fIEhs20vendor_ie             hs20vendor_ie;
 } tDot11fReAssocRequest;
 
 #define DOT11F_REASSOCREQUEST (26)
diff --git a/core/mac/src/include/parser_api.h b/core/mac/src/include/parser_api.h
index 4a99241..2156676 100644
--- a/core/mac/src/include/parser_api.h
+++ b/core/mac/src/include/parser_api.h
@@ -155,6 +155,7 @@
 	uint8_t Vendor1IEPresent;
 	tDot11fIEvendor2_ie vendor2_ie;
 	uint8_t Vendor3IEPresent;
+	tDot11fIEhs20vendor_ie hs20vendor_ie;
 	tDot11fIEIBSSParams IBSSParams;
 #ifdef FEATURE_AP_MCC_CH_AVOIDANCE
 	tDot11fIEQComVendorIE   AvoidChannelIE;
@@ -229,6 +230,7 @@
 	tDot11fIEVHTCaps VHTCaps;
 	tDot11fIEOperatingMode operMode;
 	tDot11fIEExtCap ExtCap;
+	tDot11fIEhs20vendor_ie hs20vendor_ie;
 } tSirAssocReq, *tpSirAssocReq;
 
 /* / Association Response structure (one day to be replaced by */
diff --git a/core/mac/src/pe/include/lim_session.h b/core/mac/src/pe/include/lim_session.h
index 779070b..a5bf8f7 100644
--- a/core/mac/src/pe/include/lim_session.h
+++ b/core/mac/src/pe/include/lim_session.h
@@ -467,6 +467,8 @@
 	bool is_vendor_specific_vhtcaps;
 	uint8_t vendor_specific_vht_ie_type;
 	uint8_t vendor_specific_vht_ie_sub_type;
+	/* HS 2.0 Indication */
+	tDot11fIEhs20vendor_ie hs20vendor_ie;
 	/* flag to indicate country code in beacon */
 	uint8_t country_info_present;
 	uint8_t nss;
diff --git a/core/mac/src/pe/lim/lim_assoc_utils.c b/core/mac/src/pe/lim/lim_assoc_utils.c
index 88dc45e..7144f94 100644
--- a/core/mac/src/pe/lim/lim_assoc_utils.c
+++ b/core/mac/src/pe/lim/lim_assoc_utils.c
@@ -3228,6 +3228,22 @@
 		lim_log(mac_ctx, LOG1, FL(
 			"VHT caps are present in vendor specific IE"));
 	}
+
+	/* Update HS 2.0 Information Element */
+	if (beacon_probe_rsp->hs20vendor_ie.present) {
+		lim_log(mac_ctx, LOG1,
+			FL("HS20 Indication Element Present, rel#:%u, id:%u\n"),
+			beacon_probe_rsp->hs20vendor_ie.release_num,
+			beacon_probe_rsp->hs20vendor_ie.hs_id_present);
+		qdf_mem_copy(&session_entry->hs20vendor_ie,
+			&beacon_probe_rsp->hs20vendor_ie,
+			sizeof(tDot11fIEhs20vendor_ie) -
+			sizeof(beacon_probe_rsp->hs20vendor_ie.hs_id));
+		if (beacon_probe_rsp->hs20vendor_ie.hs_id_present)
+			qdf_mem_copy(&session_entry->hs20vendor_ie.hs_id,
+				&beacon_probe_rsp->hs20vendor_ie.hs_id,
+				sizeof(beacon_probe_rsp->hs20vendor_ie.hs_id));
+	}
 }
 
 /**
diff --git a/core/mac/src/pe/lim/lim_prop_exts_utils.c b/core/mac/src/pe/lim/lim_prop_exts_utils.c
index 2a72d6b..68d3961 100644
--- a/core/mac/src/pe/lim/lim_prop_exts_utils.c
+++ b/core/mac/src/pe/lim/lim_prop_exts_utils.c
@@ -216,6 +216,21 @@
 	/* Check if Extended caps are present in probe resp or not */
 	if (beacon_struct->ext_cap.present)
 		session->is_ext_caps_present = true;
+	/* Update HS 2.0 Information Element */
+	if (beacon_struct->hs20vendor_ie.present) {
+		lim_log(mac_ctx, LOG1,
+			FL("HS20 Indication Element Present, rel#:%u, id:%u\n"),
+			beacon_struct->hs20vendor_ie.release_num,
+			beacon_struct->hs20vendor_ie.hs_id_present);
+		qdf_mem_copy(&session->hs20vendor_ie,
+			&beacon_struct->hs20vendor_ie,
+			sizeof(tDot11fIEhs20vendor_ie) -
+			sizeof(beacon_struct->hs20vendor_ie.hs_id));
+		if (beacon_struct->hs20vendor_ie.hs_id_present)
+			qdf_mem_copy(&session->hs20vendor_ie.hs_id,
+				&beacon_struct->hs20vendor_ie.hs_id,
+				sizeof(beacon_struct->hs20vendor_ie.hs_id));
+	}
 	qdf_mem_free(beacon_struct);
 	return;
 } /****** end lim_extract_ap_capability() ******/
diff --git a/core/mac/src/sys/legacy/src/utils/src/dot11f.c b/core/mac/src/sys/legacy/src/utils/src/dot11f.c
index 8c4be95..c5e1bf8 100644
--- a/core/mac/src/sys/legacy/src/utils/src/dot11f.c
+++ b/core/mac/src/sys/legacy/src/utils/src/dot11f.c
@@ -33,7 +33,7 @@
  *
  *
  * This file was automatically generated by 'framesc'
- * Wed Mar  2 11:45:36 2016 from the following file(s):
+ * Thu May 26 13:06:28 2016 from the following file(s):
  *
  * dot11f.frms
  *
@@ -5783,10 +5783,10 @@
 #define SigIeext_chan_switch_ann (0x0079)
 
 
-uint32_t dot11f_unpack_ie_ht2040_bss_coexistence(tpAniSirGlobal pCtx,
-						 uint8_t *pBuf,
-						 uint8_t ielen,
-						 tDot11fIEht2040_bss_coexistence *pDst)
+uint32_t dot11f_unpack_ie_hs20vendor_ie(tpAniSirGlobal pCtx,
+					 uint8_t *pBuf,
+					 uint8_t ielen,
+					 tDot11fIEhs20vendor_ie *pDst)
 {
 	uint32_t status = DOT11F_PARSE_SUCCESS;
 	uint8_t tmp68__;
@@ -5794,18 +5794,64 @@
 	if (pDst->present)
 		status = DOT11F_DUPLICATE_IE;
 	pDst->present = 1;
+	pDst->type = *pBuf;
+	pBuf += 1;
+	ielen -= (uint8_t)1;
 	tmp68__ = *pBuf;
-	pDst->info_request = tmp68__ >> 0 & 0x1;
-	pDst->forty_mhz_intolerant = tmp68__ >> 1 & 0x1;
-	pDst->twenty_mhz_bsswidth_req = tmp68__ >> 2 & 0x1;
-	pDst->obss_scan_exemption_req = tmp68__ >> 3 & 0x1;
-	pDst->obss_scan_exemption_grant = tmp68__ >> 4 & 0x1;
-	pDst->unused = tmp68__ >> 5 & 0x7;
+	pBuf += 1;
+	ielen -= 1;
+	pDst->dgaf_dis = tmp68__ >> 0 & 0x1;
+	pDst->hs_id_present = tmp68__ >> 1 & 0x3;
+	pDst->reserved = tmp68__ >> 3 & 0x1;
+	pDst->release_num = tmp68__ >> 4 & 0xf;
+	if (!ielen) {
+		return 0U;
+	} else {
+		switch (pDst->hs_id_present) {
+		case 1:
+			framesntohs(pCtx, &pDst->hs_id.pps_mo.pps_mo_id,
+				pBuf, 0);
+			pBuf += 2;
+			ielen -= (uint8_t)2;
+			break;
+		case 2:
+			framesntohs(pCtx,
+				&pDst->hs_id.anqp_domain.anqp_domain_id, pBuf, 0);
+			pBuf += 2;
+			ielen -= (uint8_t)2;
+			break;
+		}
+	}
+	(void)pCtx;
+	return status;
+} /* End dot11f_unpack_ie_hs20vendor_ie. */
+
+#define SigIehs20vendor_ie (0x007a)
+
+
+uint32_t dot11f_unpack_ie_ht2040_bss_coexistence(tpAniSirGlobal pCtx,
+						 uint8_t *pBuf,
+						 uint8_t ielen,
+						 tDot11fIEht2040_bss_coexistence *pDst)
+{
+	uint32_t status = DOT11F_PARSE_SUCCESS;
+	uint8_t tmp69__;
+	(void) pBuf; (void)ielen; /* Shutup the compiler */
+	if (pDst->present)
+		status = DOT11F_DUPLICATE_IE;
+	pDst->present = 1;
+	tmp69__ = *pBuf;
+	pDst->info_request = tmp69__ >> 0 & 0x1;
+	pDst->forty_mhz_intolerant = tmp69__ >> 1 & 0x1;
+	pDst->twenty_mhz_bsswidth_req = tmp69__ >> 2 & 0x1;
+	pDst->obss_scan_exemption_req = tmp69__ >> 3 & 0x1;
+	pDst->obss_scan_exemption_grant = tmp69__ >> 4 & 0x1;
+	pDst->unused = tmp69__ >> 5 & 0x7;
 	(void)pCtx;
 	return status;
 } /* End dot11f_unpack_ie_ht2040_bss_coexistence. */
 
-#define SigIeht2040_bss_coexistence (0x007a)
+#define SigIeht2040_bss_coexistence (0x007b)
 
 
 uint32_t dot11f_unpack_ie_ht2040_bss_intolerant_report(tpAniSirGlobal pCtx,
@@ -5832,7 +5878,7 @@
 	return status;
 } /* End dot11f_unpack_ie_ht2040_bss_intolerant_report. */
 
-#define SigIeht2040_bss_intolerant_report (0x007b)
+#define SigIeht2040_bss_intolerant_report (0x007c)
 
 
 uint32_t dot11f_unpack_ie_sec_chan_offset_ele(tpAniSirGlobal pCtx,
@@ -5850,7 +5896,7 @@
 	return status;
 } /* End dot11f_unpack_ie_sec_chan_offset_ele. */
 
-#define SigIesec_chan_offset_ele (0x007c)
+#define SigIesec_chan_offset_ele (0x007d)
 
 
 static const tFFDefn FFS_vendor2_ie[] = {
@@ -5895,7 +5941,7 @@
 	return status;
 } /* End dot11f_unpack_ie_vendor2_ie. */
 
-#define SigIevendor2_ie (0x007d)
+#define SigIevendor2_ie (0x007e)
 
 
 static const tFFDefn FFS_AddTSRequest[] = {
@@ -6116,6 +6162,10 @@
 	offsetof(tDot11fIEvendor2_ie, present), 0, "vendor2_ie",
 	0, 7, 28, SigIevendor2_ie, {0, 144, 76, 0, 0},
 	3, DOT11F_EID_VENDOR2_IE, 0, },
+	{ offsetof(tDot11fAssocRequest, hs20vendor_ie),
+	offsetof(tDot11fIEhs20vendor_ie, present), 0, "hs20vendor_ie",
+	0, 7, 9, SigIehs20vendor_ie, {80, 111, 154, 0, 0},
+	3, DOT11F_EID_HS20VENDOR_IE, 0, },
 	{0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },};
 
 uint32_t dot11f_unpack_assoc_request(tpAniSirGlobal pCtx,
@@ -6473,6 +6523,10 @@
 	{ offsetof(tDot11fBeacon, Vendor3IE), offsetof(tDot11fIEVendor3IE,
 	present), 0, "Vendor3IE", 0, 5, 5, SigIeVendor3IE, {0, 22, 50, 0, 0},
 	3, DOT11F_EID_VENDOR3IE, 0, },
+	{ offsetof(tDot11fBeacon, hs20vendor_ie),
+	offsetof(tDot11fIEhs20vendor_ie, present), 0, "hs20vendor_ie",
+	0, 7, 9, SigIehs20vendor_ie, {80, 111, 154, 0, 0},
+	3, DOT11F_EID_HS20VENDOR_IE, 0, },
 	{ offsetof(tDot11fBeacon, ChannelSwitchWrapper),
 	offsetof(tDot11fIEChannelSwitchWrapper, present), 0,
 	"ChannelSwitchWrapper", 0, 2, 7, SigIeChannelSwitchWrapper,
@@ -6667,6 +6721,10 @@
 	{ offsetof(tDot11fBeacon2, Vendor3IE), offsetof(tDot11fIEVendor3IE,
 	present), 0, "Vendor3IE", 0, 5, 5, SigIeVendor3IE, {0, 22, 50, 0, 0},
 	3, DOT11F_EID_VENDOR3IE, 0, },
+	{ offsetof(tDot11fBeacon2, hs20vendor_ie),
+	offsetof(tDot11fIEhs20vendor_ie, present), 0, "hs20vendor_ie",
+	0, 7, 9, SigIehs20vendor_ie, {80, 111, 154, 0, 0},
+	3, DOT11F_EID_HS20VENDOR_IE, 0, },
 	{ offsetof(tDot11fBeacon2, ChannelSwitchWrapper),
 	offsetof(tDot11fIEChannelSwitchWrapper, present), 0,
 	"ChannelSwitchWrapper", 0, 2, 7, SigIeChannelSwitchWrapper,
@@ -6860,6 +6918,10 @@
 	{ offsetof(tDot11fBeaconIEs, Vendor3IE), offsetof(tDot11fIEVendor3IE,
 	present), 0, "Vendor3IE", 0, 5, 5, SigIeVendor3IE, {0, 22, 50, 0, 0},
 	3, DOT11F_EID_VENDOR3IE, 0, },
+	{ offsetof(tDot11fBeaconIEs, hs20vendor_ie),
+	offsetof(tDot11fIEhs20vendor_ie, present), 0, "hs20vendor_ie",
+	0, 7, 9, SigIehs20vendor_ie, {80, 111, 154, 0, 0},
+	3, DOT11F_EID_HS20VENDOR_IE, 0, },
 	{ offsetof(tDot11fBeaconIEs, ChannelSwitchWrapper),
 	offsetof(tDot11fIEChannelSwitchWrapper, present), 0,
 	"ChannelSwitchWrapper", 0, 2, 7, SigIeChannelSwitchWrapper,
@@ -7462,6 +7524,10 @@
 	{ offsetof(tDot11fProbeResponse, Vendor3IE), offsetof(tDot11fIEVendor3IE,
 	present), 0, "Vendor3IE", 0, 5, 5, SigIeVendor3IE, {0, 22, 50, 0, 0},
 	3, DOT11F_EID_VENDOR3IE, 0, },
+	{ offsetof(tDot11fProbeResponse, hs20vendor_ie),
+	offsetof(tDot11fIEhs20vendor_ie, present), 0, "hs20vendor_ie",
+	0, 7, 9, SigIehs20vendor_ie, {80, 111, 154, 0, 0},
+	3, DOT11F_EID_HS20VENDOR_IE, 0, },
 	{ offsetof(tDot11fProbeResponse, ChannelSwitchWrapper),
 	offsetof(tDot11fIEChannelSwitchWrapper, present), 0,
 	"ChannelSwitchWrapper", 0, 2, 7, SigIeChannelSwitchWrapper,
@@ -7710,6 +7776,10 @@
 	offsetof(tDot11fIEvendor2_ie, present), 0, "vendor2_ie",
 	0, 7, 28, SigIevendor2_ie, {0, 144, 76, 0, 0},
 	3, DOT11F_EID_VENDOR2_IE, 0, },
+	{ offsetof(tDot11fReAssocRequest, hs20vendor_ie),
+	offsetof(tDot11fIEhs20vendor_ie, present), 0, "hs20vendor_ie",
+	0, 7, 9, SigIehs20vendor_ie, {80, 111, 154, 0, 0},
+	3, DOT11F_EID_HS20VENDOR_IE, 0, },
 	{0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },};
 
 uint32_t dot11f_unpack_re_assoc_request(tpAniSirGlobal pCtx,
@@ -10091,6 +10161,15 @@
 						    sizeof(tDot11fIEext_chan_switch_ann) *
 						    countOffset));
 					break;
+				case SigIehs20vendor_ie:
+					status |=
+						dot11f_unpack_ie_hs20vendor_ie(
+						    pCtx, pBufRemaining, len,
+						    (tDot11fIEhs20vendor_ie *)
+						    (pFrm + pIe->offset +
+						    sizeof(tDot11fIEhs20vendor_ie) *
+						    countOffset));
+					break;
 				case SigIeht2040_bss_coexistence:
 					status |=
 						dot11f_unpack_ie_ht2040_bss_coexistence(
@@ -11273,6 +11352,31 @@
 	return status;
 } /* End dot11f_get_packed_ie_wsc_reassoc_res. */
 
+uint32_t dot11f_get_packed_ie_hs20vendor_ie(tpAniSirGlobal pCtx,
+	tDot11fIEhs20vendor_ie *pIe, uint32_t *pnNeeded)
+{
+	uint32_t status = DOT11F_PARSE_SUCCESS;
+	(void)pCtx;
+	while (pIe->present) {
+		*pnNeeded += 1;
+		*pnNeeded += 1;
+		if (pIe->hs_id_present) {
+			switch (pIe->hs_id_present) {
+			case 1:
+				*pnNeeded += 2;
+				break;
+			case 2:
+				*pnNeeded += 2;
+				break;
+			}
+		} else {
+			break;
+		}
+		break;
+	}
+	return status;
+} /* End dot11f_get_packed_ie_hs20vendor_ie. */
+
 uint32_t dot11f_get_packed_ie_vendor2_ie(tpAniSirGlobal pCtx,
 	tDot11fIEvendor2_ie *pIe, uint32_t *pnNeeded)
 {
@@ -12720,6 +12824,14 @@
 					  (pFrm + pIe->offset + offset * i))->
 					  present;
 					break;
+				case SigIehs20vendor_ie:
+					offset = sizeof(tDot11fIEhs20vendor_ie);
+					status |=
+						dot11f_get_packed_ie_hs20vendor_ie(
+						pCtx, (tDot11fIEhs20vendor_ie *)
+						(pFrm + pIe->offset + offset * i),
+						pnNeeded);
+					break;
 				case SigIeht2040_bss_coexistence:
 					offset = sizeof(tDot11fIEht2040_bss_coexistence);
 					byteCount = 1;
@@ -13035,25 +13147,25 @@
 				 tDot11fFfCapabilities *pSrc,
 				 uint8_t *pBuf)
 {
-	uint16_t tmp69__;
-	tmp69__ = 0U;
-	tmp69__ |= (pSrc->ess << 0);
-	tmp69__ |= (pSrc->ibss << 1);
-	tmp69__ |= (pSrc->cfPollable << 2);
-	tmp69__ |= (pSrc->cfPollReq << 3);
-	tmp69__ |= (pSrc->privacy << 4);
-	tmp69__ |= (pSrc->shortPreamble << 5);
-	tmp69__ |= (pSrc->pbcc << 6);
-	tmp69__ |= (pSrc->channelAgility << 7);
-	tmp69__ |= (pSrc->spectrumMgt << 8);
-	tmp69__ |= (pSrc->qos << 9);
-	tmp69__ |= (pSrc->shortSlotTime << 10);
-	tmp69__ |= (pSrc->apsd << 11);
-	tmp69__ |= (pSrc->rrm << 12);
-	tmp69__ |= (pSrc->dsssOfdm << 13);
-	tmp69__ |= (pSrc->delayedBA << 14);
-	tmp69__ |= (pSrc->immediateBA << 15);
-	frameshtons(pCtx, pBuf, tmp69__, 0);
+	uint16_t tmp70__;
+	tmp70__ = 0U;
+	tmp70__ |= (pSrc->ess << 0);
+	tmp70__ |= (pSrc->ibss << 1);
+	tmp70__ |= (pSrc->cfPollable << 2);
+	tmp70__ |= (pSrc->cfPollReq << 3);
+	tmp70__ |= (pSrc->privacy << 4);
+	tmp70__ |= (pSrc->shortPreamble << 5);
+	tmp70__ |= (pSrc->pbcc << 6);
+	tmp70__ |= (pSrc->channelAgility << 7);
+	tmp70__ |= (pSrc->spectrumMgt << 8);
+	tmp70__ |= (pSrc->qos << 9);
+	tmp70__ |= (pSrc->shortSlotTime << 10);
+	tmp70__ |= (pSrc->apsd << 11);
+	tmp70__ |= (pSrc->rrm << 12);
+	tmp70__ |= (pSrc->dsssOfdm << 13);
+	tmp70__ |= (pSrc->delayedBA << 14);
+	tmp70__ |= (pSrc->immediateBA << 15);
+	frameshtons(pCtx, pBuf, tmp70__, 0);
 	(void)pCtx;
 } /* End dot11f_pack_ff_capabilities. */
 
@@ -13117,13 +13229,13 @@
 				  tDot11fFfOperatingMode *pSrc,
 				  uint8_t *pBuf)
 {
-	uint8_t tmp70__;
-	tmp70__ = 0U;
-	tmp70__ |= (pSrc->chanWidth << 0);
-	tmp70__ |= (pSrc->reserved << 2);
-	tmp70__ |= (pSrc->rxNSS << 4);
-	tmp70__ |= (pSrc->rxNSSType << 7);
-	*pBuf = tmp70__;
+	uint8_t tmp71__;
+	tmp71__ = 0U;
+	tmp71__ |= (pSrc->chanWidth << 0);
+	tmp71__ |= (pSrc->reserved << 2);
+	tmp71__ |= (pSrc->rxNSS << 4);
+	tmp71__ |= (pSrc->rxNSSType << 7);
+	*pBuf = tmp71__;
 	(void)pCtx;
 } /* End dot11f_pack_ff_operating_mode. */
 
@@ -13163,12 +13275,12 @@
 				   tDot11fFfSMPowerModeSet *pSrc,
 				   uint8_t *pBuf)
 {
-	uint8_t tmp71__;
-	tmp71__ = 0U;
-	tmp71__ |= (pSrc->PowerSave_En << 0);
-	tmp71__ |= (pSrc->Mode << 1);
-	tmp71__ |= (pSrc->reserved << 2);
-	*pBuf = tmp71__;
+	uint8_t tmp72__;
+	tmp72__ = 0U;
+	tmp72__ |= (pSrc->PowerSave_En << 0);
+	tmp72__ |= (pSrc->Mode << 1);
+	tmp72__ |= (pSrc->reserved << 2);
+	*pBuf = tmp72__;
 	(void)pCtx;
 } /* End dot11f_pack_ff_sm_power_mode_set. */
 
@@ -13208,19 +13320,19 @@
 			   tDot11fFfTSInfo *pSrc,
 			   uint8_t *pBuf)
 {
-	uint32_t tmp72__;
-	tmp72__ = 0U;
-	tmp72__ |= (pSrc->traffic_type << 0);
-	tmp72__ |= (pSrc->tsid << 1);
-	tmp72__ |= (pSrc->direction << 5);
-	tmp72__ |= (pSrc->access_policy << 7);
-	tmp72__ |= (pSrc->aggregation << 9);
-	tmp72__ |= (pSrc->psb << 10);
-	tmp72__ |= (pSrc->user_priority << 11);
-	tmp72__ |= (pSrc->tsinfo_ack_pol << 14);
-	tmp72__ |= (pSrc->schedule << 16);
-	tmp72__ |= (pSrc->unused << 17);
-	frameshtonl(pCtx, pBuf, tmp72__, 0);
+	uint32_t tmp73__;
+	tmp73__ = 0U;
+	tmp73__ |= (pSrc->traffic_type << 0);
+	tmp73__ |= (pSrc->tsid << 1);
+	tmp73__ |= (pSrc->direction << 5);
+	tmp73__ |= (pSrc->access_policy << 7);
+	tmp73__ |= (pSrc->aggregation << 9);
+	tmp73__ |= (pSrc->psb << 10);
+	tmp73__ |= (pSrc->user_priority << 11);
+	tmp73__ |= (pSrc->tsinfo_ack_pol << 14);
+	tmp73__ |= (pSrc->schedule << 16);
+	tmp73__ |= (pSrc->unused << 17);
+	frameshtonl(pCtx, pBuf, tmp73__, 0);
 	(void)pCtx;
 } /* End dot11f_pack_ff_ts_info. */
 
@@ -13276,13 +13388,13 @@
 					       tDot11fFfext_chan_switch_ann_action *pSrc,
 					       uint8_t *pBuf)
 {
-	uint32_t tmp73__;
-	tmp73__ = 0U;
-	tmp73__ |= (pSrc->switch_mode << 0);
-	tmp73__ |= (pSrc->op_class << 8);
-	tmp73__ |= (pSrc->new_channel << 16);
-	tmp73__ |= (pSrc->switch_count << 24);
-	frameshtonl(pCtx, pBuf, tmp73__, 0);
+	uint32_t tmp74__;
+	tmp74__ = 0U;
+	tmp74__ |= (pSrc->switch_mode << 0);
+	tmp74__ |= (pSrc->op_class << 8);
+	tmp74__ |= (pSrc->new_channel << 16);
+	tmp74__ |= (pSrc->switch_count << 24);
+	frameshtonl(pCtx, pBuf, tmp74__, 0);
 	(void)pCtx;
 } /* End dot11f_pack_ff_ext_chan_switch_ann_action. */
 
@@ -13353,7 +13465,7 @@
 	uint8_t *pTlvLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint8_t tmp74__;
+	uint8_t tmp75__;
 	nNeeded += 3;
 	if (nNeeded > nBuf)
 		return DOT11F_BUFFER_OVERFLOW;
@@ -13362,10 +13474,10 @@
 		pBuf += 1; *pnConsumed += 1;
 		pTlvLen = pBuf;
 		pBuf += 1; *pnConsumed += 1;
-		tmp74__ = 0U;
-		tmp74__ |= (pSrc->minor << 0);
-		tmp74__ |= (pSrc->major << 4);
-		*pBuf = tmp74__;
+		tmp75__ = 0U;
+		tmp75__ |= (pSrc->minor << 0);
+		tmp75__ |= (pSrc->major << 4);
+		*pBuf = tmp75__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
@@ -14322,7 +14434,7 @@
 	uint8_t *pTlvLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint8_t tmp75__;
+	uint8_t tmp76__;
 	nNeeded += 5;
 	if (nNeeded > nBuf)
 		return DOT11F_BUFFER_OVERFLOW;
@@ -14331,10 +14443,10 @@
 		pBuf += 2; *pnConsumed += 2;
 		pTlvLen = pBuf;
 		pBuf += 2; *pnConsumed += 2;
-		tmp75__ = 0U;
-		tmp75__ |= (pSrc->minor << 0);
-		tmp75__ |= (pSrc->major << 4);
-		*pBuf = tmp75__;
+		tmp76__ = 0U;
+		tmp76__ |= (pSrc->minor << 0);
+		tmp76__ |= (pSrc->major << 4);
+		*pBuf = tmp76__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
@@ -14443,7 +14555,7 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint16_t tmp76__;
+	uint16_t tmp77__;
 	nNeeded  +=  (pSrc->num_key + 11);
 	while (pSrc->present) {
 		if (nNeeded > nBuf)
@@ -14452,10 +14564,10 @@
 		++pBuf; ++(*pnConsumed);
 		pIeLen = pBuf;
 		++pBuf; ++(*pnConsumed);
-		tmp76__ = 0U;
-		tmp76__ |= (pSrc->keyId << 0);
-		tmp76__ |= (pSrc->reserved << 2);
-		frameshtons(pCtx, pBuf, tmp76__, 0);
+		tmp77__ = 0U;
+		tmp77__ |= (pSrc->keyId << 0);
+		tmp77__ |= (pSrc->reserved << 2);
+		frameshtons(pCtx, pBuf, tmp77__, 0);
 		*pnConsumed += 2;
 		pBuf += 2;
 		nBuf -=  2 ;
@@ -14864,11 +14976,11 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint8_t tmp77__;
 	uint8_t tmp78__;
 	uint8_t tmp79__;
 	uint8_t tmp80__;
 	uint8_t tmp81__;
+	uint8_t tmp82__;
 	nNeeded  += 5;
 	while (pSrc->present) {
 		if (nNeeded > nBuf)
@@ -14877,60 +14989,60 @@
 		++pBuf; ++(*pnConsumed);
 		pIeLen = pBuf;
 		++pBuf; ++(*pnConsumed);
-		tmp77__ = 0U;
-		tmp77__ |= (pSrc->LinkMeasurement << 0);
-		tmp77__ |= (pSrc->NeighborRpt << 1);
-		tmp77__ |= (pSrc->parallel << 2);
-		tmp77__ |= (pSrc->repeated << 3);
-		tmp77__ |= (pSrc->BeaconPassive << 4);
-		tmp77__ |= (pSrc->BeaconActive << 5);
-		tmp77__ |= (pSrc->BeaconTable << 6);
-		tmp77__ |= (pSrc->BeaconRepCond << 7);
-		*pBuf = tmp77__;
-		*pnConsumed += 1;
-		pBuf += 1;
-		nBuf -=  1 ;
 		tmp78__ = 0U;
-		tmp78__ |= (pSrc->FrameMeasurement << 0);
-		tmp78__ |= (pSrc->ChannelLoad << 1);
-		tmp78__ |= (pSrc->NoiseHistogram << 2);
-		tmp78__ |= (pSrc->statistics << 3);
-		tmp78__ |= (pSrc->LCIMeasurement << 4);
-		tmp78__ |= (pSrc->LCIAzimuth << 5);
-		tmp78__ |= (pSrc->TCMCapability << 6);
-		tmp78__ |= (pSrc->triggeredTCM << 7);
+		tmp78__ |= (pSrc->LinkMeasurement << 0);
+		tmp78__ |= (pSrc->NeighborRpt << 1);
+		tmp78__ |= (pSrc->parallel << 2);
+		tmp78__ |= (pSrc->repeated << 3);
+		tmp78__ |= (pSrc->BeaconPassive << 4);
+		tmp78__ |= (pSrc->BeaconActive << 5);
+		tmp78__ |= (pSrc->BeaconTable << 6);
+		tmp78__ |= (pSrc->BeaconRepCond << 7);
 		*pBuf = tmp78__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
 		tmp79__ = 0U;
-		tmp79__ |= (pSrc->APChanReport << 0);
-		tmp79__ |= (pSrc->RRMMIBEnabled << 1);
-		tmp79__ |= (pSrc->operatingChanMax << 2);
-		tmp79__ |= (pSrc->nonOperatinChanMax << 5);
+		tmp79__ |= (pSrc->FrameMeasurement << 0);
+		tmp79__ |= (pSrc->ChannelLoad << 1);
+		tmp79__ |= (pSrc->NoiseHistogram << 2);
+		tmp79__ |= (pSrc->statistics << 3);
+		tmp79__ |= (pSrc->LCIMeasurement << 4);
+		tmp79__ |= (pSrc->LCIAzimuth << 5);
+		tmp79__ |= (pSrc->TCMCapability << 6);
+		tmp79__ |= (pSrc->triggeredTCM << 7);
 		*pBuf = tmp79__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
 		tmp80__ = 0U;
-		tmp80__ |= (pSrc->MeasurementPilot << 0);
-		tmp80__ |= (pSrc->MeasurementPilotEnabled << 3);
-		tmp80__ |= (pSrc->NeighborTSFOffset << 4);
-		tmp80__ |= (pSrc->RCPIMeasurement << 5);
-		tmp80__ |= (pSrc->RSNIMeasurement << 6);
-		tmp80__ |= (pSrc->BssAvgAccessDelay << 7);
+		tmp80__ |= (pSrc->APChanReport << 0);
+		tmp80__ |= (pSrc->RRMMIBEnabled << 1);
+		tmp80__ |= (pSrc->operatingChanMax << 2);
+		tmp80__ |= (pSrc->nonOperatinChanMax << 5);
 		*pBuf = tmp80__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
 		tmp81__ = 0U;
-		tmp81__ |= (pSrc->BSSAvailAdmission << 0);
-		tmp81__ |= (pSrc->AntennaInformation << 1);
-		tmp81__ |= (pSrc->fine_time_meas_rpt << 2);
-		tmp81__ |= (pSrc->lci_capability << 3);
-		tmp81__ |= (pSrc->reserved << 4);
+		tmp81__ |= (pSrc->MeasurementPilot << 0);
+		tmp81__ |= (pSrc->MeasurementPilotEnabled << 3);
+		tmp81__ |= (pSrc->NeighborTSFOffset << 4);
+		tmp81__ |= (pSrc->RCPIMeasurement << 5);
+		tmp81__ |= (pSrc->RSNIMeasurement << 6);
+		tmp81__ |= (pSrc->BssAvgAccessDelay << 7);
 		*pBuf = tmp81__;
 		*pnConsumed += 1;
+		pBuf += 1;
+		nBuf -=  1 ;
+		tmp82__ = 0U;
+		tmp82__ |= (pSrc->BSSAvailAdmission << 0);
+		tmp82__ |= (pSrc->AntennaInformation << 1);
+		tmp82__ |= (pSrc->fine_time_meas_rpt << 2);
+		tmp82__ |= (pSrc->lci_capability << 3);
+		tmp82__ |= (pSrc->reserved << 4);
+		*pBuf = tmp82__;
+		*pnConsumed += 1;
 		/* fieldsEndFlag  = 1 */
 		nBuf -=  1 ;
 		break;
@@ -15009,7 +15121,7 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint16_t tmp82__;
+	uint16_t tmp83__;
 	nNeeded  += 14;
 	while (pSrc->present) {
 		if (nNeeded > nBuf)
@@ -15018,12 +15130,12 @@
 		++pBuf; ++(*pnConsumed);
 		pIeLen = pBuf;
 		++pBuf; ++(*pnConsumed);
-		tmp82__ = 0U;
-		tmp82__ |= (pSrc->aggregation << 0);
-		tmp82__ |= (pSrc->tsid << 1);
-		tmp82__ |= (pSrc->direction << 5);
-		tmp82__ |= (pSrc->reserved << 7);
-		frameshtons(pCtx, pBuf, tmp82__, 0);
+		tmp83__ = 0U;
+		tmp83__ |= (pSrc->aggregation << 0);
+		tmp83__ |= (pSrc->tsid << 1);
+		tmp83__ |= (pSrc->direction << 5);
+		tmp83__ |= (pSrc->reserved << 7);
+		frameshtons(pCtx, pBuf, tmp83__, 0);
 		*pnConsumed += 2;
 		pBuf += 2;
 		nBuf -=  2 ;
@@ -15250,9 +15362,9 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint16_t tmp83__;
-	uint8_t tmp84__;
-	uint16_t tmp85__;
+	uint16_t tmp84__;
+	uint8_t tmp85__;
+	uint16_t tmp86__;
 	nNeeded  += 55;
 	while (pSrc->present) {
 		if (nNeeded > nBuf)
@@ -15261,30 +15373,30 @@
 		++pBuf; ++(*pnConsumed);
 		pIeLen = pBuf;
 		++pBuf; ++(*pnConsumed);
-		tmp83__ = 0U;
-		tmp83__ |= (pSrc->traffic_type << 0);
-		tmp83__ |= (pSrc->tsid << 1);
-		tmp83__ |= (pSrc->direction << 5);
-		tmp83__ |= (pSrc->access_policy << 7);
-		tmp83__ |= (pSrc->aggregation << 9);
-		tmp83__ |= (pSrc->psb << 10);
-		tmp83__ |= (pSrc->user_priority << 11);
-		tmp83__ |= (pSrc->tsinfo_ack_pol << 14);
-		frameshtons(pCtx, pBuf, tmp83__, 0);
+		tmp84__ = 0U;
+		tmp84__ |= (pSrc->traffic_type << 0);
+		tmp84__ |= (pSrc->tsid << 1);
+		tmp84__ |= (pSrc->direction << 5);
+		tmp84__ |= (pSrc->access_policy << 7);
+		tmp84__ |= (pSrc->aggregation << 9);
+		tmp84__ |= (pSrc->psb << 10);
+		tmp84__ |= (pSrc->user_priority << 11);
+		tmp84__ |= (pSrc->tsinfo_ack_pol << 14);
+		frameshtons(pCtx, pBuf, tmp84__, 0);
 		*pnConsumed += 2;
 		pBuf += 2;
 		nBuf -=  2 ;
-		tmp84__ = 0U;
-		tmp84__ |= (pSrc->schedule << 0);
-		tmp84__ |= (pSrc->unused << 1);
-		*pBuf = tmp84__;
+		tmp85__ = 0U;
+		tmp85__ |= (pSrc->schedule << 0);
+		tmp85__ |= (pSrc->unused << 1);
+		*pBuf = tmp85__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
-		tmp85__ = 0U;
-		tmp85__ |= (pSrc->size << 0);
-		tmp85__ |= (pSrc->fixed << 15);
-		frameshtons(pCtx, pBuf, tmp85__, 0);
+		tmp86__ = 0U;
+		tmp86__ |= (pSrc->size << 0);
+		tmp86__ |= (pSrc->fixed << 15);
+		frameshtons(pCtx, pBuf, tmp86__, 0);
 		*pnConsumed += 2;
 		pBuf += 2;
 		nBuf -=  2 ;
@@ -15348,9 +15460,9 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint32_t tmp86__;
-	uint16_t tmp87__;
+	uint32_t tmp87__;
 	uint16_t tmp88__;
+	uint16_t tmp89__;
 	nNeeded  += 12;
 	while (pSrc->present) {
 		if (nNeeded > nBuf)
@@ -15359,48 +15471,48 @@
 		++pBuf; ++(*pnConsumed);
 		pIeLen = pBuf;
 		++pBuf; ++(*pnConsumed);
-		tmp86__ = 0U;
-		tmp86__ |= (pSrc->maxMPDULen << 0);
-		tmp86__ |= (pSrc->supportedChannelWidthSet << 2);
-		tmp86__ |= (pSrc->ldpcCodingCap << 4);
-		tmp86__ |= (pSrc->shortGI80MHz << 5);
-		tmp86__ |= (pSrc->shortGI160and80plus80MHz << 6);
-		tmp86__ |= (pSrc->txSTBC << 7);
-		tmp86__ |= (pSrc->rxSTBC << 8);
-		tmp86__ |= (pSrc->suBeamFormerCap << 11);
-		tmp86__ |= (pSrc->suBeamformeeCap << 12);
-		tmp86__ |= (pSrc->csnofBeamformerAntSup << 13);
-		tmp86__ |= (pSrc->numSoundingDim << 16);
-		tmp86__ |= (pSrc->muBeamformerCap << 19);
-		tmp86__ |= (pSrc->muBeamformeeCap << 20);
-		tmp86__ |= (pSrc->vhtTXOPPS << 21);
-		tmp86__ |= (pSrc->htcVHTCap << 22);
-		tmp86__ |= (pSrc->maxAMPDULenExp << 23);
-		tmp86__ |= (pSrc->vhtLinkAdaptCap << 26);
-		tmp86__ |= (pSrc->rxAntPattern << 28);
-		tmp86__ |= (pSrc->txAntPattern << 29);
-		tmp86__ |= (pSrc->reserved1 << 30);
-		frameshtonl(pCtx, pBuf, tmp86__, 0);
+		tmp87__ = 0U;
+		tmp87__ |= (pSrc->maxMPDULen << 0);
+		tmp87__ |= (pSrc->supportedChannelWidthSet << 2);
+		tmp87__ |= (pSrc->ldpcCodingCap << 4);
+		tmp87__ |= (pSrc->shortGI80MHz << 5);
+		tmp87__ |= (pSrc->shortGI160and80plus80MHz << 6);
+		tmp87__ |= (pSrc->txSTBC << 7);
+		tmp87__ |= (pSrc->rxSTBC << 8);
+		tmp87__ |= (pSrc->suBeamFormerCap << 11);
+		tmp87__ |= (pSrc->suBeamformeeCap << 12);
+		tmp87__ |= (pSrc->csnofBeamformerAntSup << 13);
+		tmp87__ |= (pSrc->numSoundingDim << 16);
+		tmp87__ |= (pSrc->muBeamformerCap << 19);
+		tmp87__ |= (pSrc->muBeamformeeCap << 20);
+		tmp87__ |= (pSrc->vhtTXOPPS << 21);
+		tmp87__ |= (pSrc->htcVHTCap << 22);
+		tmp87__ |= (pSrc->maxAMPDULenExp << 23);
+		tmp87__ |= (pSrc->vhtLinkAdaptCap << 26);
+		tmp87__ |= (pSrc->rxAntPattern << 28);
+		tmp87__ |= (pSrc->txAntPattern << 29);
+		tmp87__ |= (pSrc->reserved1 << 30);
+		frameshtonl(pCtx, pBuf, tmp87__, 0);
 		*pnConsumed += 4;
 		pBuf += 4;
 		nBuf -=  4 ;
 		frameshtons(pCtx, pBuf, pSrc->rxMCSMap, 0);
 		*pnConsumed += 2;
 		pBuf += 2;
-		tmp87__ = 0U;
-		tmp87__ |= (pSrc->rxHighSupDataRate << 0);
-		tmp87__ |= (pSrc->reserved2 << 13);
-		frameshtons(pCtx, pBuf, tmp87__, 0);
+		tmp88__ = 0U;
+		tmp88__ |= (pSrc->rxHighSupDataRate << 0);
+		tmp88__ |= (pSrc->reserved2 << 13);
+		frameshtons(pCtx, pBuf, tmp88__, 0);
 		*pnConsumed += 2;
 		pBuf += 2;
 		nBuf -=  2 ;
 		frameshtons(pCtx, pBuf, pSrc->txMCSMap, 0);
 		*pnConsumed += 2;
 		pBuf += 2;
-		tmp88__ = 0U;
-		tmp88__ |= (pSrc->txSupDataRate << 0);
-		tmp88__ |= (pSrc->reserved3 << 13);
-		frameshtons(pCtx, pBuf, tmp88__, 0);
+		tmp89__ = 0U;
+		tmp89__ |= (pSrc->txSupDataRate << 0);
+		tmp89__ |= (pSrc->reserved3 << 13);
+		frameshtons(pCtx, pBuf, tmp89__, 0);
 		*pnConsumed += 2;
 		/* fieldsEndFlag  = 1 */
 		nBuf -=  2 ;
@@ -15460,7 +15572,7 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint16_t tmp89__;
+	uint16_t tmp90__;
 	nNeeded  += 15;
 	while (pSrc->present) {
 		if (nNeeded > nBuf)
@@ -15482,12 +15594,12 @@
 		*pBuf = pSrc->version;
 		*pnConsumed += 1;
 		pBuf += 1;
-		tmp89__ = 0U;
-		tmp89__ |= (pSrc->aggregation << 0);
-		tmp89__ |= (pSrc->tsid << 1);
-		tmp89__ |= (pSrc->direction << 5);
-		tmp89__ |= (pSrc->reserved << 7);
-		frameshtons(pCtx, pBuf, tmp89__, 0);
+		tmp90__ = 0U;
+		tmp90__ |= (pSrc->aggregation << 0);
+		tmp90__ |= (pSrc->tsid << 1);
+		tmp90__ |= (pSrc->direction << 5);
+		tmp90__ |= (pSrc->reserved << 7);
+		frameshtons(pCtx, pBuf, tmp90__, 0);
 		*pnConsumed += 2;
 		pBuf += 2;
 		nBuf -=  2 ;
@@ -15721,9 +15833,9 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint16_t tmp90__;
-	uint8_t tmp91__;
-	uint16_t tmp92__;
+	uint16_t tmp91__;
+	uint8_t tmp92__;
+	uint16_t tmp93__;
 	nNeeded  += 38;
 	while (pSrc->present) {
 		if (nNeeded > nBuf)
@@ -15745,30 +15857,30 @@
 		*pBuf = pSrc->version;
 		*pnConsumed += 1;
 		pBuf += 1;
-		tmp90__ = 0U;
-		tmp90__ |= (pSrc->traffic_type << 0);
-		tmp90__ |= (pSrc->tsid << 1);
-		tmp90__ |= (pSrc->direction << 5);
-		tmp90__ |= (pSrc->access_policy << 7);
-		tmp90__ |= (pSrc->aggregation << 9);
-		tmp90__ |= (pSrc->psb << 10);
-		tmp90__ |= (pSrc->user_priority << 11);
-		tmp90__ |= (pSrc->tsinfo_ack_pol << 14);
-		frameshtons(pCtx, pBuf, tmp90__, 0);
+		tmp91__ = 0U;
+		tmp91__ |= (pSrc->traffic_type << 0);
+		tmp91__ |= (pSrc->tsid << 1);
+		tmp91__ |= (pSrc->direction << 5);
+		tmp91__ |= (pSrc->access_policy << 7);
+		tmp91__ |= (pSrc->aggregation << 9);
+		tmp91__ |= (pSrc->psb << 10);
+		tmp91__ |= (pSrc->user_priority << 11);
+		tmp91__ |= (pSrc->tsinfo_ack_pol << 14);
+		frameshtons(pCtx, pBuf, tmp91__, 0);
 		*pnConsumed += 2;
 		pBuf += 2;
 		nBuf -=  2 ;
-		tmp91__ = 0U;
-		tmp91__ |= (pSrc->tsinfo_rsvd << 0);
-		tmp91__ |= (pSrc->burst_size_defn << 7);
-		*pBuf = tmp91__;
+		tmp92__ = 0U;
+		tmp92__ |= (pSrc->tsinfo_rsvd << 0);
+		tmp92__ |= (pSrc->burst_size_defn << 7);
+		*pBuf = tmp92__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
-		tmp92__ = 0U;
-		tmp92__ |= (pSrc->size << 0);
-		tmp92__ |= (pSrc->fixed << 15);
-		frameshtons(pCtx, pBuf, tmp92__, 0);
+		tmp93__ = 0U;
+		tmp93__ |= (pSrc->size << 0);
+		tmp93__ |= (pSrc->fixed << 15);
+		frameshtons(pCtx, pBuf, tmp93__, 0);
 		*pnConsumed += 2;
 		pBuf += 2;
 		nBuf -=  2 ;
@@ -15925,8 +16037,8 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint8_t tmp93__;
 	uint8_t tmp94__;
+	uint8_t tmp95__;
 	uint32_t status = DOT11F_PARSE_SUCCESS;
 	status = dot11f_get_packed_ie_neighbor_rpt(pCtx, pSrc, &nNeeded);
 	if (!DOT11F_SUCCEEDED(status))
@@ -15941,24 +16053,24 @@
 		DOT11F_MEMCPY(pCtx, pBuf, pSrc->bssid, 6);
 		*pnConsumed += 6;
 		pBuf += 6;
-		tmp93__ = 0U;
-		tmp93__ |= (pSrc->APReachability << 0);
-		tmp93__ |= (pSrc->Security << 2);
-		tmp93__ |= (pSrc->KeyScope << 3);
-		tmp93__ |= (pSrc->SpecMgmtCap << 4);
-		tmp93__ |= (pSrc->QosCap << 5);
-		tmp93__ |= (pSrc->apsd << 6);
-		tmp93__ |= (pSrc->rrm << 7);
-		*pBuf = tmp93__;
+		tmp94__ = 0U;
+		tmp94__ |= (pSrc->APReachability << 0);
+		tmp94__ |= (pSrc->Security << 2);
+		tmp94__ |= (pSrc->KeyScope << 3);
+		tmp94__ |= (pSrc->SpecMgmtCap << 4);
+		tmp94__ |= (pSrc->QosCap << 5);
+		tmp94__ |= (pSrc->apsd << 6);
+		tmp94__ |= (pSrc->rrm << 7);
+		*pBuf = tmp94__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
-		tmp94__ = 0U;
-		tmp94__ |= (pSrc->DelayedBA << 0);
-		tmp94__ |= (pSrc->ImmBA << 1);
-		tmp94__ |= (pSrc->MobilityDomain << 2);
-		tmp94__ |= (pSrc->reserved << 3);
-		*pBuf = tmp94__;
+		tmp95__ = 0U;
+		tmp95__ |= (pSrc->DelayedBA << 0);
+		tmp95__ |= (pSrc->ImmBA << 1);
+		tmp95__ |= (pSrc->MobilityDomain << 2);
+		tmp95__ |= (pSrc->reserved << 3);
+		*pBuf = tmp95__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
@@ -16292,7 +16404,6 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint8_t tmp95__;
 	uint8_t tmp96__;
 	uint8_t tmp97__;
 	uint8_t tmp98__;
@@ -16300,6 +16411,7 @@
 	uint8_t tmp100__;
 	uint8_t tmp101__;
 	uint8_t tmp102__;
+	uint8_t tmp103__;
 	nNeeded  += 18;
 	while (pSrc->present) {
 		if (nNeeded > nBuf)
@@ -16314,76 +16426,76 @@
 		*pBuf = pSrc->reserved;
 		*pnConsumed += 1;
 		pBuf += 1;
-		tmp95__ = 0U;
-		tmp95__ |= (pSrc->acbe_aifsn << 0);
-		tmp95__ |= (pSrc->acbe_acm << 4);
-		tmp95__ |= (pSrc->acbe_aci << 5);
-		tmp95__ |= (pSrc->unused1 << 7);
-		*pBuf = tmp95__;
+		tmp96__ = 0U;
+		tmp96__ |= (pSrc->acbe_aifsn << 0);
+		tmp96__ |= (pSrc->acbe_acm << 4);
+		tmp96__ |= (pSrc->acbe_aci << 5);
+		tmp96__ |= (pSrc->unused1 << 7);
+		*pBuf = tmp96__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
-		tmp96__ = 0U;
-		tmp96__ |= (pSrc->acbe_acwmin << 0);
-		tmp96__ |= (pSrc->acbe_acwmax << 4);
-		*pBuf = tmp96__;
+		tmp97__ = 0U;
+		tmp97__ |= (pSrc->acbe_acwmin << 0);
+		tmp97__ |= (pSrc->acbe_acwmax << 4);
+		*pBuf = tmp97__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
 		frameshtons(pCtx, pBuf, pSrc->acbe_txoplimit, 0);
 		*pnConsumed += 2;
 		pBuf += 2;
-		tmp97__ = 0U;
-		tmp97__ |= (pSrc->acbk_aifsn << 0);
-		tmp97__ |= (pSrc->acbk_acm << 4);
-		tmp97__ |= (pSrc->acbk_aci << 5);
-		tmp97__ |= (pSrc->unused2 << 7);
-		*pBuf = tmp97__;
+		tmp98__ = 0U;
+		tmp98__ |= (pSrc->acbk_aifsn << 0);
+		tmp98__ |= (pSrc->acbk_acm << 4);
+		tmp98__ |= (pSrc->acbk_aci << 5);
+		tmp98__ |= (pSrc->unused2 << 7);
+		*pBuf = tmp98__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
-		tmp98__ = 0U;
-		tmp98__ |= (pSrc->acbk_acwmin << 0);
-		tmp98__ |= (pSrc->acbk_acwmax << 4);
-		*pBuf = tmp98__;
+		tmp99__ = 0U;
+		tmp99__ |= (pSrc->acbk_acwmin << 0);
+		tmp99__ |= (pSrc->acbk_acwmax << 4);
+		*pBuf = tmp99__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
 		frameshtons(pCtx, pBuf, pSrc->acbk_txoplimit, 0);
 		*pnConsumed += 2;
 		pBuf += 2;
-		tmp99__ = 0U;
-		tmp99__ |= (pSrc->acvi_aifsn << 0);
-		tmp99__ |= (pSrc->acvi_acm << 4);
-		tmp99__ |= (pSrc->acvi_aci << 5);
-		tmp99__ |= (pSrc->unused3 << 7);
-		*pBuf = tmp99__;
+		tmp100__ = 0U;
+		tmp100__ |= (pSrc->acvi_aifsn << 0);
+		tmp100__ |= (pSrc->acvi_acm << 4);
+		tmp100__ |= (pSrc->acvi_aci << 5);
+		tmp100__ |= (pSrc->unused3 << 7);
+		*pBuf = tmp100__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
-		tmp100__ = 0U;
-		tmp100__ |= (pSrc->acvi_acwmin << 0);
-		tmp100__ |= (pSrc->acvi_acwmax << 4);
-		*pBuf = tmp100__;
+		tmp101__ = 0U;
+		tmp101__ |= (pSrc->acvi_acwmin << 0);
+		tmp101__ |= (pSrc->acvi_acwmax << 4);
+		*pBuf = tmp101__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
 		frameshtons(pCtx, pBuf, pSrc->acvi_txoplimit, 0);
 		*pnConsumed += 2;
 		pBuf += 2;
-		tmp101__ = 0U;
-		tmp101__ |= (pSrc->acvo_aifsn << 0);
-		tmp101__ |= (pSrc->acvo_acm << 4);
-		tmp101__ |= (pSrc->acvo_aci << 5);
-		tmp101__ |= (pSrc->unused4 << 7);
-		*pBuf = tmp101__;
+		tmp102__ = 0U;
+		tmp102__ |= (pSrc->acvo_aifsn << 0);
+		tmp102__ |= (pSrc->acvo_acm << 4);
+		tmp102__ |= (pSrc->acvo_aci << 5);
+		tmp102__ |= (pSrc->unused4 << 7);
+		*pBuf = tmp102__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
-		tmp102__ = 0U;
-		tmp102__ |= (pSrc->acvo_acwmin << 0);
-		tmp102__ |= (pSrc->acvo_acwmax << 4);
-		*pBuf = tmp102__;
+		tmp103__ = 0U;
+		tmp103__ |= (pSrc->acvo_acwmin << 0);
+		tmp103__ |= (pSrc->acvo_acwmax << 4);
+		*pBuf = tmp103__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
@@ -16408,7 +16520,7 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint8_t tmp103__;
+	uint8_t tmp104__;
 	nNeeded  += 1;
 	while (pSrc->present) {
 		if (nNeeded > nBuf)
@@ -16417,12 +16529,12 @@
 		++pBuf; ++(*pnConsumed);
 		pIeLen = pBuf;
 		++pBuf; ++(*pnConsumed);
-		tmp103__ = 0U;
-		tmp103__ |= (pSrc->non_erp_present << 0);
-		tmp103__ |= (pSrc->use_prot << 1);
-		tmp103__ |= (pSrc->barker_preamble << 2);
-		tmp103__ |= (pSrc->unused << 3);
-		*pBuf = tmp103__;
+		tmp104__ = 0U;
+		tmp104__ |= (pSrc->non_erp_present << 0);
+		tmp104__ |= (pSrc->use_prot << 1);
+		tmp104__ |= (pSrc->barker_preamble << 2);
+		tmp104__ |= (pSrc->unused << 3);
+		*pBuf = tmp104__;
 		*pnConsumed += 1;
 		/* fieldsEndFlag  = 1 */
 		nBuf -=  1 ;
@@ -16481,7 +16593,7 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint8_t tmp104__;
+	uint8_t tmp105__;
 	nNeeded  += 2;
 	while (pSrc->present) {
 		if (nNeeded > nBuf)
@@ -16501,10 +16613,10 @@
 		*pBuf = pSrc->mgmt_state;
 		*pnConsumed += 1;
 		pBuf += 1;
-		tmp104__ = 0U;
-		tmp104__ |= (pSrc->mbssid_mask << 0);
-		tmp104__ |= (pSrc->reserved << 3);
-		*pBuf = tmp104__;
+		tmp105__ = 0U;
+		tmp105__ |= (pSrc->mbssid_mask << 0);
+		tmp105__ |= (pSrc->reserved << 3);
+		*pBuf = tmp105__;
 		*pnConsumed += 1;
 		/* fieldsEndFlag  = 1 */
 		nBuf -=  1 ;
@@ -16855,7 +16967,7 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint16_t tmp105__;
+	uint16_t tmp106__;
 	uint32_t status = DOT11F_PARSE_SUCCESS;
 	status = dot11f_get_packed_ieft_info(pCtx, pSrc, &nNeeded);
 	if (!DOT11F_SUCCEEDED(status))
@@ -16867,10 +16979,10 @@
 		++pBuf; --nBuf; ++(*pnConsumed);
 		pIeLen = pBuf;
 		++pBuf; --nBuf; ++(*pnConsumed);
-		tmp105__ = 0U;
-		tmp105__ |= (pSrc->reserved << 0);
-		tmp105__ |= (pSrc->IECount << 8);
-		frameshtons(pCtx, pBuf, tmp105__, 0);
+		tmp106__ = 0U;
+		tmp106__ |= (pSrc->reserved << 0);
+		tmp106__ |= (pSrc->IECount << 8);
+		frameshtons(pCtx, pBuf, tmp106__, 0);
 		*pnConsumed += 2;
 		pBuf += 2;
 		nBuf -=  2 ;
@@ -16908,11 +17020,11 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint16_t tmp106__;
-	uint8_t tmp107__;
-	uint16_t tmp108__;
-	uint32_t tmp109__;
-	uint8_t tmp110__;
+	uint16_t tmp107__;
+	uint8_t tmp108__;
+	uint16_t tmp109__;
+	uint32_t tmp110__;
+	uint8_t tmp111__;
 	nNeeded  +=  (pSrc->num_rsvd + 26);
 	while (pSrc->present) {
 		if (nNeeded > nBuf)
@@ -16921,77 +17033,77 @@
 		++pBuf; ++(*pnConsumed);
 		pIeLen = pBuf;
 		++pBuf; ++(*pnConsumed);
-		tmp106__ = 0U;
-		tmp106__ |= (pSrc->advCodingCap << 0);
-		tmp106__ |= (pSrc->supportedChannelWidthSet << 1);
-		tmp106__ |= (pSrc->mimoPowerSave << 2);
-		tmp106__ |= (pSrc->greenField << 4);
-		tmp106__ |= (pSrc->shortGI20MHz << 5);
-		tmp106__ |= (pSrc->shortGI40MHz << 6);
-		tmp106__ |= (pSrc->txSTBC << 7);
-		tmp106__ |= (pSrc->rxSTBC << 8);
-		tmp106__ |= (pSrc->delayedBA << 10);
-		tmp106__ |= (pSrc->maximalAMSDUsize << 11);
-		tmp106__ |= (pSrc->dsssCckMode40MHz << 12);
-		tmp106__ |= (pSrc->psmp << 13);
-		tmp106__ |= (pSrc->stbcControlFrame << 14);
-		tmp106__ |= (pSrc->lsigTXOPProtection << 15);
-		frameshtons(pCtx, pBuf, tmp106__, 0);
+		tmp107__ = 0U;
+		tmp107__ |= (pSrc->advCodingCap << 0);
+		tmp107__ |= (pSrc->supportedChannelWidthSet << 1);
+		tmp107__ |= (pSrc->mimoPowerSave << 2);
+		tmp107__ |= (pSrc->greenField << 4);
+		tmp107__ |= (pSrc->shortGI20MHz << 5);
+		tmp107__ |= (pSrc->shortGI40MHz << 6);
+		tmp107__ |= (pSrc->txSTBC << 7);
+		tmp107__ |= (pSrc->rxSTBC << 8);
+		tmp107__ |= (pSrc->delayedBA << 10);
+		tmp107__ |= (pSrc->maximalAMSDUsize << 11);
+		tmp107__ |= (pSrc->dsssCckMode40MHz << 12);
+		tmp107__ |= (pSrc->psmp << 13);
+		tmp107__ |= (pSrc->stbcControlFrame << 14);
+		tmp107__ |= (pSrc->lsigTXOPProtection << 15);
+		frameshtons(pCtx, pBuf, tmp107__, 0);
 		*pnConsumed += 2;
 		pBuf += 2;
 		nBuf -=  2 ;
-		tmp107__ = 0U;
-		tmp107__ |= (pSrc->maxRxAMPDUFactor << 0);
-		tmp107__ |= (pSrc->mpduDensity << 2);
-		tmp107__ |= (pSrc->reserved1 << 5);
-		*pBuf = tmp107__;
+		tmp108__ = 0U;
+		tmp108__ |= (pSrc->maxRxAMPDUFactor << 0);
+		tmp108__ |= (pSrc->mpduDensity << 2);
+		tmp108__ |= (pSrc->reserved1 << 5);
+		*pBuf = tmp108__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
 		DOT11F_MEMCPY(pCtx, pBuf, pSrc->supportedMCSSet, 16);
 		*pnConsumed += 16;
 		pBuf += 16;
-		tmp108__ = 0U;
-		tmp108__ |= (pSrc->pco << 0);
-		tmp108__ |= (pSrc->transitionTime << 1);
-		tmp108__ |= (pSrc->reserved2 << 3);
-		tmp108__ |= (pSrc->mcsFeedback << 8);
-		tmp108__ |= (pSrc->reserved3 << 10);
-		frameshtons(pCtx, pBuf, tmp108__, 0);
+		tmp109__ = 0U;
+		tmp109__ |= (pSrc->pco << 0);
+		tmp109__ |= (pSrc->transitionTime << 1);
+		tmp109__ |= (pSrc->reserved2 << 3);
+		tmp109__ |= (pSrc->mcsFeedback << 8);
+		tmp109__ |= (pSrc->reserved3 << 10);
+		frameshtons(pCtx, pBuf, tmp109__, 0);
 		*pnConsumed += 2;
 		pBuf += 2;
 		nBuf -=  2 ;
-		tmp109__ = 0U;
-		tmp109__ |= (pSrc->txBF << 0);
-		tmp109__ |= (pSrc->rxStaggeredSounding << 1);
-		tmp109__ |= (pSrc->txStaggeredSounding << 2);
-		tmp109__ |= (pSrc->rxZLF << 3);
-		tmp109__ |= (pSrc->txZLF << 4);
-		tmp109__ |= (pSrc->implicitTxBF << 5);
-		tmp109__ |= (pSrc->calibration << 6);
-		tmp109__ |= (pSrc->explicitCSITxBF << 8);
-		tmp109__ |= (pSrc->explicitUncompressedSteeringMatrix << 9);
-		tmp109__ |= (pSrc->explicitBFCSIFeedback << 10);
-		tmp109__ |= (pSrc->explicitUncompressedSteeringMatrixFeedback << 13);
-		tmp109__ |= (pSrc->explicitCompressedSteeringMatrixFeedback << 16);
-		tmp109__ |= (pSrc->csiNumBFAntennae << 19);
-		tmp109__ |= (pSrc->uncompressedSteeringMatrixBFAntennae << 21);
-		tmp109__ |= (pSrc->compressedSteeringMatrixBFAntennae << 23);
-		tmp109__ |= (pSrc->reserved4 << 25);
-		frameshtonl(pCtx, pBuf, tmp109__, 0);
+		tmp110__ = 0U;
+		tmp110__ |= (pSrc->txBF << 0);
+		tmp110__ |= (pSrc->rxStaggeredSounding << 1);
+		tmp110__ |= (pSrc->txStaggeredSounding << 2);
+		tmp110__ |= (pSrc->rxZLF << 3);
+		tmp110__ |= (pSrc->txZLF << 4);
+		tmp110__ |= (pSrc->implicitTxBF << 5);
+		tmp110__ |= (pSrc->calibration << 6);
+		tmp110__ |= (pSrc->explicitCSITxBF << 8);
+		tmp110__ |= (pSrc->explicitUncompressedSteeringMatrix << 9);
+		tmp110__ |= (pSrc->explicitBFCSIFeedback << 10);
+		tmp110__ |= (pSrc->explicitUncompressedSteeringMatrixFeedback << 13);
+		tmp110__ |= (pSrc->explicitCompressedSteeringMatrixFeedback << 16);
+		tmp110__ |= (pSrc->csiNumBFAntennae << 19);
+		tmp110__ |= (pSrc->uncompressedSteeringMatrixBFAntennae << 21);
+		tmp110__ |= (pSrc->compressedSteeringMatrixBFAntennae << 23);
+		tmp110__ |= (pSrc->reserved4 << 25);
+		frameshtonl(pCtx, pBuf, tmp110__, 0);
 		*pnConsumed += 4;
 		pBuf += 4;
 		nBuf -=  4 ;
-		tmp110__ = 0U;
-		tmp110__ |= (pSrc->antennaSelection << 0);
-		tmp110__ |= (pSrc->explicitCSIFeedbackTx << 1);
-		tmp110__ |= (pSrc->antennaIndicesFeedbackTx << 2);
-		tmp110__ |= (pSrc->explicitCSIFeedback << 3);
-		tmp110__ |= (pSrc->antennaIndicesFeedback << 4);
-		tmp110__ |= (pSrc->rxAS << 5);
-		tmp110__ |= (pSrc->txSoundingPPDUs << 6);
-		tmp110__ |= (pSrc->reserved5 << 7);
-		*pBuf = tmp110__;
+		tmp111__ = 0U;
+		tmp111__ |= (pSrc->antennaSelection << 0);
+		tmp111__ |= (pSrc->explicitCSIFeedbackTx << 1);
+		tmp111__ |= (pSrc->antennaIndicesFeedbackTx << 2);
+		tmp111__ |= (pSrc->explicitCSIFeedback << 3);
+		tmp111__ |= (pSrc->antennaIndicesFeedback << 4);
+		tmp111__ |= (pSrc->rxAS << 5);
+		tmp111__ |= (pSrc->txSoundingPPDUs << 6);
+		tmp111__ |= (pSrc->reserved5 << 7);
+		*pBuf = tmp111__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
@@ -17016,9 +17128,9 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint8_t tmp111__;
-	uint16_t tmp112__;
+	uint8_t tmp112__;
 	uint16_t tmp113__;
+	uint16_t tmp114__;
 	nNeeded  +=  (pSrc->num_rsvd + 22);
 	while (pSrc->present) {
 		if (nNeeded > nBuf)
@@ -17030,35 +17142,35 @@
 		*pBuf = pSrc->primaryChannel;
 		*pnConsumed += 1;
 		pBuf += 1;
-		tmp111__ = 0U;
-		tmp111__ |= (pSrc->secondaryChannelOffset << 0);
-		tmp111__ |= (pSrc->recommendedTxWidthSet << 2);
-		tmp111__ |= (pSrc->rifsMode << 3);
-		tmp111__ |= (pSrc->controlledAccessOnly << 4);
-		tmp111__ |= (pSrc->serviceIntervalGranularity << 5);
-		*pBuf = tmp111__;
+		tmp112__ = 0U;
+		tmp112__ |= (pSrc->secondaryChannelOffset << 0);
+		tmp112__ |= (pSrc->recommendedTxWidthSet << 2);
+		tmp112__ |= (pSrc->rifsMode << 3);
+		tmp112__ |= (pSrc->controlledAccessOnly << 4);
+		tmp112__ |= (pSrc->serviceIntervalGranularity << 5);
+		*pBuf = tmp112__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
-		tmp112__ = 0U;
-		tmp112__ |= (pSrc->opMode << 0);
-		tmp112__ |= (pSrc->nonGFDevicesPresent << 2);
-		tmp112__ |= (pSrc->transmitBurstLimit << 3);
-		tmp112__ |= (pSrc->obssNonHTStaPresent << 4);
-		tmp112__ |= (pSrc->reserved << 5);
-		frameshtons(pCtx, pBuf, tmp112__, 0);
+		tmp113__ = 0U;
+		tmp113__ |= (pSrc->opMode << 0);
+		tmp113__ |= (pSrc->nonGFDevicesPresent << 2);
+		tmp113__ |= (pSrc->transmitBurstLimit << 3);
+		tmp113__ |= (pSrc->obssNonHTStaPresent << 4);
+		tmp113__ |= (pSrc->reserved << 5);
+		frameshtons(pCtx, pBuf, tmp113__, 0);
 		*pnConsumed += 2;
 		pBuf += 2;
 		nBuf -=  2 ;
-		tmp113__ = 0U;
-		tmp113__ |= (pSrc->basicSTBCMCS << 0);
-		tmp113__ |= (pSrc->dualCTSProtection << 7);
-		tmp113__ |= (pSrc->secondaryBeacon << 8);
-		tmp113__ |= (pSrc->lsigTXOPProtectionFullSupport << 9);
-		tmp113__ |= (pSrc->pcoActive << 10);
-		tmp113__ |= (pSrc->pcoPhase << 11);
-		tmp113__ |= (pSrc->reserved2 << 12);
-		frameshtons(pCtx, pBuf, tmp113__, 0);
+		tmp114__ = 0U;
+		tmp114__ |= (pSrc->basicSTBCMCS << 0);
+		tmp114__ |= (pSrc->dualCTSProtection << 7);
+		tmp114__ |= (pSrc->secondaryBeacon << 8);
+		tmp114__ |= (pSrc->lsigTXOPProtectionFullSupport << 9);
+		tmp114__ |= (pSrc->pcoActive << 10);
+		tmp114__ |= (pSrc->pcoPhase << 11);
+		tmp114__ |= (pSrc->reserved2 << 12);
+		frameshtons(pCtx, pBuf, tmp114__, 0);
 		*pnConsumed += 2;
 		pBuf += 2;
 		nBuf -=  2 ;
@@ -17150,9 +17262,9 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint8_t tmp114__;
 	uint8_t tmp115__;
 	uint8_t tmp116__;
+	uint8_t tmp117__;
 	uint32_t status = DOT11F_PARSE_SUCCESS;
 	status = dot11f_get_packed_ie_measurement_report(pCtx, pSrc, &nNeeded);
 	if (!DOT11F_SUCCEEDED(status))
@@ -17167,12 +17279,12 @@
 		*pBuf = pSrc->token;
 		*pnConsumed += 1;
 		pBuf += 1;
-		tmp114__ = 0U;
-		tmp114__ |= (pSrc->late << 0);
-		tmp114__ |= (pSrc->incapable << 1);
-		tmp114__ |= (pSrc->refused << 2);
-		tmp114__ |= (pSrc->unused << 3);
-		*pBuf = tmp114__;
+		tmp115__ = 0U;
+		tmp115__ |= (pSrc->late << 0);
+		tmp115__ |= (pSrc->incapable << 1);
+		tmp115__ |= (pSrc->refused << 2);
+		tmp115__ |= (pSrc->unused << 3);
+		*pBuf = tmp115__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
@@ -17191,14 +17303,14 @@
 				frameshtons(pCtx, pBuf, pSrc->report.Basic.meas_duration, 0);
 				*pnConsumed += 2;
 				pBuf += 2;
-				tmp115__ = 0U;
-				tmp115__ |= (pSrc->report.Basic.bss << 0);
-				tmp115__ |= (pSrc->report.Basic.ofdm_preamble << 1);
-				tmp115__ |= (pSrc->report.Basic.unid_signal << 2);
-				tmp115__ |= (pSrc->report.Basic.rader << 3);
-				tmp115__ |= (pSrc->report.Basic.unmeasured << 4);
-				tmp115__ |= (pSrc->report.Basic.unused << 5);
-				*pBuf = tmp115__;
+				tmp116__ = 0U;
+				tmp116__ |= (pSrc->report.Basic.bss << 0);
+				tmp116__ |= (pSrc->report.Basic.ofdm_preamble << 1);
+				tmp116__ |= (pSrc->report.Basic.unid_signal << 2);
+				tmp116__ |= (pSrc->report.Basic.rader << 3);
+				tmp116__ |= (pSrc->report.Basic.unmeasured << 4);
+				tmp116__ |= (pSrc->report.Basic.unused << 5);
+				*pBuf = tmp116__;
 				*pnConsumed += 1;
 				/* fieldsEndFlag  = 1 */
 				nBuf -=  1 ;
@@ -17265,10 +17377,10 @@
 				frameshtons(pCtx, pBuf, pSrc->report.Beacon.meas_duration, 0);
 				*pnConsumed += 2;
 				pBuf += 2;
-				tmp116__ = 0U;
-				tmp116__ |= (pSrc->report.Beacon.condensed_PHY << 0);
-				tmp116__ |= (pSrc->report.Beacon.reported_frame_type << 7);
-				*pBuf = tmp116__;
+				tmp117__ = 0U;
+				tmp117__ |= (pSrc->report.Beacon.condensed_PHY << 0);
+				tmp117__ |= (pSrc->report.Beacon.reported_frame_type << 7);
+				*pBuf = tmp117__;
 				*pnConsumed += 1;
 				pBuf += 1;
 				nBuf -=  1 ;
@@ -17317,7 +17429,7 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint8_t tmp117__;
+	uint8_t tmp118__;
 	uint32_t status = DOT11F_PARSE_SUCCESS;
 	status = dot11f_get_packed_ie_measurement_request(pCtx, pSrc, &nNeeded);
 	if (!DOT11F_SUCCEEDED(status))
@@ -17332,14 +17444,14 @@
 		*pBuf = pSrc->measurement_token;
 		*pnConsumed += 1;
 		pBuf += 1;
-		tmp117__ = 0U;
-		tmp117__ |= (pSrc->parallel << 0);
-		tmp117__ |= (pSrc->enable << 1);
-		tmp117__ |= (pSrc->request << 2);
-		tmp117__ |= (pSrc->report << 3);
-		tmp117__ |= (pSrc->durationMandatory << 4);
-		tmp117__ |= (pSrc->unused << 5);
-		*pBuf = tmp117__;
+		tmp118__ = 0U;
+		tmp118__ |= (pSrc->parallel << 0);
+		tmp118__ |= (pSrc->enable << 1);
+		tmp118__ |= (pSrc->request << 2);
+		tmp118__ |= (pSrc->report << 3);
+		tmp118__ |= (pSrc->durationMandatory << 4);
+		tmp118__ |= (pSrc->unused << 5);
+		*pBuf = tmp118__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
@@ -17453,7 +17565,7 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint8_t tmp118__;
+	uint8_t tmp119__;
 	nNeeded  += 3;
 	while (pSrc->present) {
 		if (nNeeded > nBuf)
@@ -17465,11 +17577,11 @@
 		frameshtons(pCtx, pBuf, pSrc->MDID, 0);
 		*pnConsumed += 2;
 		pBuf += 2;
-		tmp118__ = 0U;
-		tmp118__ |= (pSrc->overDSCap << 0);
-		tmp118__ |= (pSrc->resourceReqCap << 1);
-		tmp118__ |= (pSrc->reserved << 2);
-		*pBuf = tmp118__;
+		tmp119__ = 0U;
+		tmp119__ |= (pSrc->overDSCap << 0);
+		tmp119__ |= (pSrc->resourceReqCap << 1);
+		tmp119__ |= (pSrc->reserved << 2);
+		*pBuf = tmp119__;
 		*pnConsumed += 1;
 		/* fieldsEndFlag  = 1 */
 		nBuf -=  1 ;
@@ -17491,8 +17603,8 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint8_t tmp119__;
 	uint8_t tmp120__;
+	uint8_t tmp121__;
 	uint32_t status = DOT11F_PARSE_SUCCESS;
 	status = dot11f_get_packed_ie_neighbor_report(pCtx, pSrc, &nNeeded);
 	if (!DOT11F_SUCCEEDED(status))
@@ -17507,24 +17619,24 @@
 		DOT11F_MEMCPY(pCtx, pBuf, pSrc->bssid, 6);
 		*pnConsumed += 6;
 		pBuf += 6;
-		tmp119__ = 0U;
-		tmp119__ |= (pSrc->APReachability << 0);
-		tmp119__ |= (pSrc->Security << 2);
-		tmp119__ |= (pSrc->KeyScope << 3);
-		tmp119__ |= (pSrc->SpecMgmtCap << 4);
-		tmp119__ |= (pSrc->QosCap << 5);
-		tmp119__ |= (pSrc->apsd << 6);
-		tmp119__ |= (pSrc->rrm << 7);
-		*pBuf = tmp119__;
+		tmp120__ = 0U;
+		tmp120__ |= (pSrc->APReachability << 0);
+		tmp120__ |= (pSrc->Security << 2);
+		tmp120__ |= (pSrc->KeyScope << 3);
+		tmp120__ |= (pSrc->SpecMgmtCap << 4);
+		tmp120__ |= (pSrc->QosCap << 5);
+		tmp120__ |= (pSrc->apsd << 6);
+		tmp120__ |= (pSrc->rrm << 7);
+		*pBuf = tmp120__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
-		tmp120__ = 0U;
-		tmp120__ |= (pSrc->DelayedBA << 0);
-		tmp120__ |= (pSrc->ImmBA << 1);
-		tmp120__ |= (pSrc->MobilityDomain << 2);
-		tmp120__ |= (pSrc->reserved << 3);
-		*pBuf = tmp120__;
+		tmp121__ = 0U;
+		tmp121__ |= (pSrc->DelayedBA << 0);
+		tmp121__ |= (pSrc->ImmBA << 1);
+		tmp121__ |= (pSrc->MobilityDomain << 2);
+		tmp121__ |= (pSrc->reserved << 3);
+		*pBuf = tmp121__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
@@ -17612,7 +17724,7 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint8_t tmp121__;
+	uint8_t tmp122__;
 	nNeeded  += 1;
 	while (pSrc->present) {
 		if (nNeeded > nBuf)
@@ -17621,12 +17733,12 @@
 		++pBuf; ++(*pnConsumed);
 		pIeLen = pBuf;
 		++pBuf; ++(*pnConsumed);
-		tmp121__ = 0U;
-		tmp121__ |= (pSrc->chanWidth << 0);
-		tmp121__ |= (pSrc->reserved << 2);
-		tmp121__ |= (pSrc->rxNSS << 4);
-		tmp121__ |= (pSrc->rxNSSType << 7);
-		*pBuf = tmp121__;
+		tmp122__ = 0U;
+		tmp122__ |= (pSrc->chanWidth << 0);
+		tmp122__ |= (pSrc->reserved << 2);
+		tmp122__ |= (pSrc->rxNSS << 4);
+		tmp122__ |= (pSrc->rxNSSType << 7);
+		*pBuf = tmp122__;
 		*pnConsumed += 1;
 		/* fieldsEndFlag  = 1 */
 		nBuf -=  1 ;
@@ -18101,7 +18213,7 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint8_t tmp122__;
+	uint8_t tmp123__;
 	nNeeded  += 1;
 	while (pSrc->present) {
 		if (nNeeded > nBuf)
@@ -18110,13 +18222,13 @@
 		++pBuf; ++(*pnConsumed);
 		pIeLen = pBuf;
 		++pBuf; ++(*pnConsumed);
-		tmp122__ = 0U;
-		tmp122__ |= (pSrc->ac_bk_traffic_aval << 0);
-		tmp122__ |= (pSrc->ac_be_traffic_aval << 1);
-		tmp122__ |= (pSrc->ac_vi_traffic_aval << 2);
-		tmp122__ |= (pSrc->ac_vo_traffic_aval << 3);
-		tmp122__ |= (pSrc->reserved << 4);
-		*pBuf = tmp122__;
+		tmp123__ = 0U;
+		tmp123__ |= (pSrc->ac_bk_traffic_aval << 0);
+		tmp123__ |= (pSrc->ac_be_traffic_aval << 1);
+		tmp123__ |= (pSrc->ac_vi_traffic_aval << 2);
+		tmp123__ |= (pSrc->ac_vo_traffic_aval << 3);
+		tmp123__ |= (pSrc->reserved << 4);
+		*pBuf = tmp123__;
 		*pnConsumed += 1;
 		/* fieldsEndFlag  = 1 */
 		nBuf -=  1 ;
@@ -18272,7 +18384,7 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint8_t tmp123__;
+	uint8_t tmp124__;
 	nNeeded  += 1;
 	while (pSrc->present) {
 		if (nNeeded > nBuf)
@@ -18281,13 +18393,13 @@
 		++pBuf; ++(*pnConsumed);
 		pIeLen = pBuf;
 		++pBuf; ++(*pnConsumed);
-		tmp123__ = 0U;
-		tmp123__ |= (pSrc->count << 0);
-		tmp123__ |= (pSrc->qack << 4);
-		tmp123__ |= (pSrc->qreq << 5);
-		tmp123__ |= (pSrc->txopreq << 6);
-		tmp123__ |= (pSrc->reserved << 7);
-		*pBuf = tmp123__;
+		tmp124__ = 0U;
+		tmp124__ |= (pSrc->count << 0);
+		tmp124__ |= (pSrc->qack << 4);
+		tmp124__ |= (pSrc->qreq << 5);
+		tmp124__ |= (pSrc->txopreq << 6);
+		tmp124__ |= (pSrc->reserved << 7);
+		*pBuf = tmp124__;
 		*pnConsumed += 1;
 		/* fieldsEndFlag  = 1 */
 		nBuf -=  1 ;
@@ -18309,7 +18421,7 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint8_t tmp124__;
+	uint8_t tmp125__;
 	nNeeded  += 1;
 	while (pSrc->present) {
 		if (nNeeded > nBuf)
@@ -18318,15 +18430,15 @@
 		++pBuf; ++(*pnConsumed);
 		pIeLen = pBuf;
 		++pBuf; ++(*pnConsumed);
-		tmp124__ = 0U;
-		tmp124__ |= (pSrc->acvo_uapsd << 0);
-		tmp124__ |= (pSrc->acvi_uapsd << 1);
-		tmp124__ |= (pSrc->acbk_uapsd << 2);
-		tmp124__ |= (pSrc->acbe_uapsd << 3);
-		tmp124__ |= (pSrc->qack << 4);
-		tmp124__ |= (pSrc->max_sp_length << 5);
-		tmp124__ |= (pSrc->more_data_ack << 7);
-		*pBuf = tmp124__;
+		tmp125__ = 0U;
+		tmp125__ |= (pSrc->acvo_uapsd << 0);
+		tmp125__ |= (pSrc->acvi_uapsd << 1);
+		tmp125__ |= (pSrc->acbk_uapsd << 2);
+		tmp125__ |= (pSrc->acbe_uapsd << 3);
+		tmp125__ |= (pSrc->qack << 4);
+		tmp125__ |= (pSrc->max_sp_length << 5);
+		tmp125__ |= (pSrc->more_data_ack << 7);
+		*pBuf = tmp125__;
 		*pnConsumed += 1;
 		/* fieldsEndFlag  = 1 */
 		nBuf -=  1 ;
@@ -18963,7 +19075,7 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint16_t tmp125__;
+	uint16_t tmp126__;
 	uint32_t status = DOT11F_PARSE_SUCCESS;
 	status = dot11f_get_packed_iewapi(pCtx, pSrc, &nNeeded);
 	if (!DOT11F_SUCCEEDED(status))
@@ -18993,10 +19105,10 @@
 		DOT11F_MEMCPY(pCtx, pBuf, pSrc->multicast_cipher_suite, 4);
 		*pnConsumed += 4;
 		pBuf += 4;
-		tmp125__ = 0U;
-		tmp125__ |= (pSrc->preauth << 0);
-		tmp125__ |= (pSrc->reserved << 1);
-		frameshtons(pCtx, pBuf, tmp125__, 0);
+		tmp126__ = 0U;
+		tmp126__ |= (pSrc->preauth << 0);
+		tmp126__ |= (pSrc->reserved << 1);
+		frameshtons(pCtx, pBuf, tmp126__, 0);
 		*pnConsumed += 2;
 		pBuf += 2;
 		nBuf -=  2 ;
@@ -19136,7 +19248,7 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint8_t tmp126__;
+	uint8_t tmp127__;
 	nNeeded  += 2;
 	while (pSrc->present) {
 		if (nNeeded > nBuf)
@@ -19158,13 +19270,13 @@
 		*pBuf = pSrc->version;
 		*pnConsumed += 1;
 		pBuf += 1;
-		tmp126__ = 0U;
-		tmp126__ |= (pSrc->reserved << 0);
-		tmp126__ |= (pSrc->qack << 4);
-		tmp126__ |= (pSrc->queue_request << 5);
-		tmp126__ |= (pSrc->txop_request << 6);
-		tmp126__ |= (pSrc->more_ack << 7);
-		*pBuf = tmp126__;
+		tmp127__ = 0U;
+		tmp127__ |= (pSrc->reserved << 0);
+		tmp127__ |= (pSrc->qack << 4);
+		tmp127__ |= (pSrc->queue_request << 5);
+		tmp127__ |= (pSrc->txop_request << 6);
+		tmp127__ |= (pSrc->more_ack << 7);
+		*pBuf = tmp127__;
 		*pnConsumed += 1;
 		/* fieldsEndFlag  = 1 */
 		nBuf -=  1 ;
@@ -19186,54 +19298,6 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint8_t tmp127__;
-	nNeeded  += 2;
-	while (pSrc->present) {
-		if (nNeeded > nBuf)
-			return DOT11F_BUFFER_OVERFLOW;
-		*pBuf = 221;
-		++pBuf; ++(*pnConsumed);
-		pIeLen = pBuf;
-		++pBuf; ++(*pnConsumed);
-		*pBuf = 0x0;
-		++pBuf; ++(*pnConsumed);
-		*pBuf = 0x50;
-		++pBuf; ++(*pnConsumed);
-		*pBuf = 0xf2;
-		++pBuf; ++(*pnConsumed);
-		*pBuf = 0x2;
-		++pBuf; ++(*pnConsumed);
-		*pBuf = 0x0;
-		++pBuf; ++(*pnConsumed);
-		*pBuf = pSrc->version;
-		*pnConsumed += 1;
-		pBuf += 1;
-		tmp127__ = 0U;
-		tmp127__ |= (pSrc->param_set_count << 0);
-		tmp127__ |= (pSrc->reserved << 4);
-		tmp127__ |= (pSrc->uapsd << 7);
-		*pBuf = tmp127__;
-		*pnConsumed += 1;
-		/* fieldsEndFlag  = 1 */
-		nBuf -=  1 ;
-		break;
-	}
-	(void)pCtx;
-	if (pIeLen) {
-		*pIeLen = *pnConsumed - nConsumedOnEntry - 2;
-	}
-	return DOT11F_PARSE_SUCCESS;
-} /* End dot11f_pack_ie_wmm_info_ap. */
-
-uint32_t dot11f_pack_ie_wmm_info_station(tpAniSirGlobal pCtx,
-				       tDot11fIEWMMInfoStation *pSrc,
-				       uint8_t *pBuf,
-				       uint32_t nBuf,
-				       uint32_t *pnConsumed)
-{
-	uint8_t *pIeLen = 0;
-	uint32_t nConsumedOnEntry = *pnConsumed;
-	uint32_t nNeeded = 0U;
 	uint8_t tmp128__;
 	nNeeded  += 2;
 	while (pSrc->present) {
@@ -19257,13 +19321,9 @@
 		*pnConsumed += 1;
 		pBuf += 1;
 		tmp128__ = 0U;
-		tmp128__ |= (pSrc->acvo_uapsd << 0);
-		tmp128__ |= (pSrc->acvi_uapsd << 1);
-		tmp128__ |= (pSrc->acbk_uapsd << 2);
-		tmp128__ |= (pSrc->acbe_uapsd << 3);
-		tmp128__ |= (pSrc->reserved1 << 4);
-		tmp128__ |= (pSrc->max_sp_length << 5);
-		tmp128__ |= (pSrc->reserved2 << 7);
+		tmp128__ |= (pSrc->param_set_count << 0);
+		tmp128__ |= (pSrc->reserved << 4);
+		tmp128__ |= (pSrc->uapsd << 7);
 		*pBuf = tmp128__;
 		*pnConsumed += 1;
 		/* fieldsEndFlag  = 1 */
@@ -19275,6 +19335,58 @@
 		*pIeLen = *pnConsumed - nConsumedOnEntry - 2;
 	}
 	return DOT11F_PARSE_SUCCESS;
+} /* End dot11f_pack_ie_wmm_info_ap. */
+
+uint32_t dot11f_pack_ie_wmm_info_station(tpAniSirGlobal pCtx,
+				       tDot11fIEWMMInfoStation *pSrc,
+				       uint8_t *pBuf,
+				       uint32_t nBuf,
+				       uint32_t *pnConsumed)
+{
+	uint8_t *pIeLen = 0;
+	uint32_t nConsumedOnEntry = *pnConsumed;
+	uint32_t nNeeded = 0U;
+	uint8_t tmp129__;
+	nNeeded  += 2;
+	while (pSrc->present) {
+		if (nNeeded > nBuf)
+			return DOT11F_BUFFER_OVERFLOW;
+		*pBuf = 221;
+		++pBuf; ++(*pnConsumed);
+		pIeLen = pBuf;
+		++pBuf; ++(*pnConsumed);
+		*pBuf = 0x0;
+		++pBuf; ++(*pnConsumed);
+		*pBuf = 0x50;
+		++pBuf; ++(*pnConsumed);
+		*pBuf = 0xf2;
+		++pBuf; ++(*pnConsumed);
+		*pBuf = 0x2;
+		++pBuf; ++(*pnConsumed);
+		*pBuf = 0x0;
+		++pBuf; ++(*pnConsumed);
+		*pBuf = pSrc->version;
+		*pnConsumed += 1;
+		pBuf += 1;
+		tmp129__ = 0U;
+		tmp129__ |= (pSrc->acvo_uapsd << 0);
+		tmp129__ |= (pSrc->acvi_uapsd << 1);
+		tmp129__ |= (pSrc->acbk_uapsd << 2);
+		tmp129__ |= (pSrc->acbe_uapsd << 3);
+		tmp129__ |= (pSrc->reserved1 << 4);
+		tmp129__ |= (pSrc->max_sp_length << 5);
+		tmp129__ |= (pSrc->reserved2 << 7);
+		*pBuf = tmp129__;
+		*pnConsumed += 1;
+		/* fieldsEndFlag  = 1 */
+		nBuf -=  1 ;
+		break;
+	}
+	(void)pCtx;
+	if (pIeLen) {
+		*pIeLen = *pnConsumed - nConsumedOnEntry - 2;
+	}
+	return DOT11F_PARSE_SUCCESS;
 } /* End dot11f_pack_ie_wmm_info_station. */
 
 uint32_t dot11f_pack_ie_wmm_params(tpAniSirGlobal pCtx,
@@ -19286,7 +19398,6 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint8_t tmp129__;
 	uint8_t tmp130__;
 	uint8_t tmp131__;
 	uint8_t tmp132__;
@@ -19294,6 +19405,7 @@
 	uint8_t tmp134__;
 	uint8_t tmp135__;
 	uint8_t tmp136__;
+	uint8_t tmp137__;
 	nNeeded  += 19;
 	while (pSrc->present) {
 		if (nNeeded > nBuf)
@@ -19321,76 +19433,76 @@
 		*pBuf = pSrc->reserved2;
 		*pnConsumed += 1;
 		pBuf += 1;
-		tmp129__ = 0U;
-		tmp129__ |= (pSrc->acbe_aifsn << 0);
-		tmp129__ |= (pSrc->acbe_acm << 4);
-		tmp129__ |= (pSrc->acbe_aci << 5);
-		tmp129__ |= (pSrc->unused1 << 7);
-		*pBuf = tmp129__;
+		tmp130__ = 0U;
+		tmp130__ |= (pSrc->acbe_aifsn << 0);
+		tmp130__ |= (pSrc->acbe_acm << 4);
+		tmp130__ |= (pSrc->acbe_aci << 5);
+		tmp130__ |= (pSrc->unused1 << 7);
+		*pBuf = tmp130__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
-		tmp130__ = 0U;
-		tmp130__ |= (pSrc->acbe_acwmin << 0);
-		tmp130__ |= (pSrc->acbe_acwmax << 4);
-		*pBuf = tmp130__;
+		tmp131__ = 0U;
+		tmp131__ |= (pSrc->acbe_acwmin << 0);
+		tmp131__ |= (pSrc->acbe_acwmax << 4);
+		*pBuf = tmp131__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
 		frameshtons(pCtx, pBuf, pSrc->acbe_txoplimit, 0);
 		*pnConsumed += 2;
 		pBuf += 2;
-		tmp131__ = 0U;
-		tmp131__ |= (pSrc->acbk_aifsn << 0);
-		tmp131__ |= (pSrc->acbk_acm << 4);
-		tmp131__ |= (pSrc->acbk_aci << 5);
-		tmp131__ |= (pSrc->unused2 << 7);
-		*pBuf = tmp131__;
+		tmp132__ = 0U;
+		tmp132__ |= (pSrc->acbk_aifsn << 0);
+		tmp132__ |= (pSrc->acbk_acm << 4);
+		tmp132__ |= (pSrc->acbk_aci << 5);
+		tmp132__ |= (pSrc->unused2 << 7);
+		*pBuf = tmp132__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
-		tmp132__ = 0U;
-		tmp132__ |= (pSrc->acbk_acwmin << 0);
-		tmp132__ |= (pSrc->acbk_acwmax << 4);
-		*pBuf = tmp132__;
+		tmp133__ = 0U;
+		tmp133__ |= (pSrc->acbk_acwmin << 0);
+		tmp133__ |= (pSrc->acbk_acwmax << 4);
+		*pBuf = tmp133__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
 		frameshtons(pCtx, pBuf, pSrc->acbk_txoplimit, 0);
 		*pnConsumed += 2;
 		pBuf += 2;
-		tmp133__ = 0U;
-		tmp133__ |= (pSrc->acvi_aifsn << 0);
-		tmp133__ |= (pSrc->acvi_acm << 4);
-		tmp133__ |= (pSrc->acvi_aci << 5);
-		tmp133__ |= (pSrc->unused3 << 7);
-		*pBuf = tmp133__;
+		tmp134__ = 0U;
+		tmp134__ |= (pSrc->acvi_aifsn << 0);
+		tmp134__ |= (pSrc->acvi_acm << 4);
+		tmp134__ |= (pSrc->acvi_aci << 5);
+		tmp134__ |= (pSrc->unused3 << 7);
+		*pBuf = tmp134__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
-		tmp134__ = 0U;
-		tmp134__ |= (pSrc->acvi_acwmin << 0);
-		tmp134__ |= (pSrc->acvi_acwmax << 4);
-		*pBuf = tmp134__;
+		tmp135__ = 0U;
+		tmp135__ |= (pSrc->acvi_acwmin << 0);
+		tmp135__ |= (pSrc->acvi_acwmax << 4);
+		*pBuf = tmp135__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
 		frameshtons(pCtx, pBuf, pSrc->acvi_txoplimit, 0);
 		*pnConsumed += 2;
 		pBuf += 2;
-		tmp135__ = 0U;
-		tmp135__ |= (pSrc->acvo_aifsn << 0);
-		tmp135__ |= (pSrc->acvo_acm << 4);
-		tmp135__ |= (pSrc->acvo_aci << 5);
-		tmp135__ |= (pSrc->unused4 << 7);
-		*pBuf = tmp135__;
+		tmp136__ = 0U;
+		tmp136__ |= (pSrc->acvo_aifsn << 0);
+		tmp136__ |= (pSrc->acvo_acm << 4);
+		tmp136__ |= (pSrc->acvo_aci << 5);
+		tmp136__ |= (pSrc->unused4 << 7);
+		*pBuf = tmp136__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
-		tmp136__ = 0U;
-		tmp136__ |= (pSrc->acvo_acwmin << 0);
-		tmp136__ |= (pSrc->acvo_acwmax << 4);
-		*pBuf = tmp136__;
+		tmp137__ = 0U;
+		tmp137__ |= (pSrc->acvo_acwmin << 0);
+		tmp137__ |= (pSrc->acvo_acwmax << 4);
+		*pBuf = tmp137__;
 		*pnConsumed += 1;
 		pBuf += 1;
 		nBuf -=  1 ;
@@ -19976,6 +20088,70 @@
 	return DOT11F_PARSE_SUCCESS;
 } /* End dot11f_pack_ie_ext_chan_switch_ann. */
 
+uint32_t dot11f_pack_ie_hs20vendor_ie(tpAniSirGlobal pCtx,
+				      tDot11fIEhs20vendor_ie *pSrc,
+				      uint8_t *pBuf,
+				      uint32_t nBuf,
+				      uint32_t *pnConsumed)
+{
+	uint8_t *pIeLen = 0;
+	uint32_t nConsumedOnEntry = *pnConsumed;
+	uint32_t nNeeded = 0U;
+	uint8_t tmp138__;
+	uint32_t status = DOT11F_PARSE_SUCCESS;
+	status = dot11f_get_packed_ie_hs20vendor_ie(pCtx, pSrc, &nNeeded);
+	if (!DOT11F_SUCCEEDED(status))
+		return status;
+	while (pSrc->present) {
+		if (nNeeded > nBuf)
+			return DOT11F_BUFFER_OVERFLOW;
+		*pBuf = 221;
+		++pBuf; ++(*pnConsumed);
+		pIeLen = pBuf;
+		++pBuf; ++(*pnConsumed);
+		*pBuf = 0x50;
+		++pBuf; ++(*pnConsumed);
+		*pBuf = 0x6f;
+		++pBuf; ++(*pnConsumed);
+		*pBuf = 0x9a;
+		++pBuf; ++(*pnConsumed);
+		*pBuf = pSrc->type;
+		*pnConsumed += 1;
+		pBuf += 1;
+		tmp138__ = 0U;
+		tmp138__ |= (pSrc->dgaf_dis << 0);
+		tmp138__ |= (pSrc->hs_id_present << 1);
+		tmp138__ |= (pSrc->reserved << 3);
+		tmp138__ |= (pSrc->release_num << 4);
+		*pBuf = tmp138__;
+		*pnConsumed += 1;
+		pBuf += 1;
+		nBuf -=  1 ;
+		if (pSrc->hs_id_present) {
+			switch (pSrc->hs_id_present) {
+			case 1:
+				frameshtons(pCtx, pBuf, pSrc->hs_id.pps_mo.pps_mo_id, 0);
+				*pnConsumed += 2;
+				/* fieldsEndFlag = 1 */
+				break;
+			case 2:
+				frameshtons(pCtx, pBuf, pSrc->hs_id.anqp_domain.anqp_domain_id, 0);
+				*pnConsumed += 2;
+				/* fieldsEndFlag = 1 */
+				break;
+			}
+		} else {
+			break;
+		}
+		break;
+	}
+	(void)pCtx;
+	if (pIeLen) {
+		*pIeLen = *pnConsumed - nConsumedOnEntry - 2;
+	}
+	return status;
+} /* End dot11f_pack_ie_hs20vendor_ie. */
+
 uint32_t dot11f_pack_ie_ht2040_bss_coexistence(tpAniSirGlobal pCtx,
 					       tDot11fIEht2040_bss_coexistence *pSrc,
 					       uint8_t *pBuf,
@@ -19985,7 +20161,7 @@
 	uint8_t *pIeLen = 0;
 	uint32_t nConsumedOnEntry = *pnConsumed;
 	uint32_t nNeeded = 0U;
-	uint8_t tmp137__;
+	uint8_t tmp139__;
 	nNeeded  += 1;
 	while (pSrc->present) {
 		if (nNeeded > nBuf)
@@ -19994,14 +20170,14 @@
 		++pBuf; ++(*pnConsumed);
 		pIeLen = pBuf;
 		++pBuf; ++(*pnConsumed);
-		tmp137__ = 0U;
-		tmp137__ |= (pSrc->info_request << 0);
-		tmp137__ |= (pSrc->forty_mhz_intolerant << 1);
-		tmp137__ |= (pSrc->twenty_mhz_bsswidth_req << 2);
-		tmp137__ |= (pSrc->obss_scan_exemption_req << 3);
-		tmp137__ |= (pSrc->obss_scan_exemption_grant << 4);
-		tmp137__ |= (pSrc->unused << 5);
-		*pBuf = tmp137__;
+		tmp139__ = 0U;
+		tmp139__ |= (pSrc->info_request << 0);
+		tmp139__ |= (pSrc->forty_mhz_intolerant << 1);
+		tmp139__ |= (pSrc->twenty_mhz_bsswidth_req << 2);
+		tmp139__ |= (pSrc->obss_scan_exemption_req << 3);
+		tmp139__ |= (pSrc->obss_scan_exemption_grant << 4);
+		tmp139__ |= (pSrc->unused << 5);
+		*pBuf = tmp139__;
 		*pnConsumed += 1;
 		/* fieldsEndFlag  = 1 */
 		nBuf -=  1 ;
@@ -22016,6 +22192,14 @@
 				sizeof(tDot11fIEext_chan_switch_ann) * i),
 				pBufRemaining, nBufRemaining, &len);
 			break;
+			case SigIehs20vendor_ie:
+			status |=
+				dot11f_pack_ie_hs20vendor_ie(
+				pCtx, (tDot11fIEhs20vendor_ie *)
+				(pSrc + pIe->offset +
+				sizeof(tDot11fIEhs20vendor_ie) * i),
+				pBufRemaining, nBufRemaining, &len);
+			break;
 			case SigIeht2040_bss_coexistence:
 			status |=
 				dot11f_pack_ie_ht2040_bss_coexistence(
diff --git a/core/mac/src/sys/legacy/src/utils/src/parser_api.c b/core/mac/src/sys/legacy/src/utils/src/parser_api.c
index 8063d79..49c3ab9 100644
--- a/core/mac/src/sys/legacy/src/utils/src/parser_api.c
+++ b/core/mac/src/sys/legacy/src/utils/src/parser_api.c
@@ -2490,6 +2490,21 @@
 				&pr->vendor2_ie.VHTOperation,
 				sizeof(tDot11fIEVHTOperation));
 	}
+	/* Update HS 2.0 Information Element */
+	if (pr->hs20vendor_ie.present) {
+		lim_log(pMac, LOG1,
+			FL("HS20 Indication Element Present, rel#:%u, id:%u\n"),
+			pr->hs20vendor_ie.release_num,
+			pr->hs20vendor_ie.hs_id_present);
+		qdf_mem_copy(&pProbeResp->hs20vendor_ie,
+			&pr->hs20vendor_ie,
+			sizeof(tDot11fIEhs20vendor_ie) -
+			sizeof(pr->hs20vendor_ie.hs_id));
+		if (pr->hs20vendor_ie.hs_id_present)
+			qdf_mem_copy(&pProbeResp->hs20vendor_ie.hs_id,
+				&pr->hs20vendor_ie.hs_id,
+				sizeof(pr->hs20vendor_ie.hs_id));
+	}
 	qdf_mem_free(pr);
 	return eSIR_SUCCESS;
 
@@ -3652,6 +3667,21 @@
 		qdf_mem_copy(&pBeaconStruct->ext_cap, &pBies->ExtCap,
 				sizeof(tDot11fIEExtCap));
 	}
+	/* Update HS 2.0 Information Element */
+	if (pBies->hs20vendor_ie.present) {
+		lim_log(pMac, LOG1,
+			FL("HS20 Indication Element Present, rel#:%u, id:%u\n"),
+			pBies->hs20vendor_ie.release_num,
+			pBies->hs20vendor_ie.hs_id_present);
+		qdf_mem_copy(&pBeaconStruct->hs20vendor_ie,
+			&pBies->hs20vendor_ie,
+			sizeof(tDot11fIEhs20vendor_ie) -
+			sizeof(pBies->hs20vendor_ie.hs_id));
+		if (pBies->hs20vendor_ie.hs_id_present)
+			qdf_mem_copy(&pBeaconStruct->hs20vendor_ie.hs_id,
+				&pBies->hs20vendor_ie.hs_id,
+				sizeof(pBies->hs20vendor_ie.hs_id));
+	}
 	qdf_mem_free(pBies);
 	return eSIR_SUCCESS;
 } /* End sir_parse_beacon_ie. */
@@ -3982,6 +4012,21 @@
 				&pBeacon->VHTOperation,
 				sizeof(tDot11fIEVHTOperation));
 	}
+	/* Update HS 2.0 Information Element */
+	if (pBeacon->hs20vendor_ie.present) {
+		lim_log(pMac, LOG1,
+			FL("HS20 Indication Element Present, rel#:%u, id:%u\n"),
+			pBeacon->hs20vendor_ie.release_num,
+			pBeacon->hs20vendor_ie.hs_id_present);
+		qdf_mem_copy(&pBeaconStruct->hs20vendor_ie,
+			&pBeacon->hs20vendor_ie,
+			sizeof(tDot11fIEhs20vendor_ie) -
+			sizeof(pBeacon->hs20vendor_ie.hs_id));
+		if (pBeacon->hs20vendor_ie.hs_id_present)
+			qdf_mem_copy(&pBeaconStruct->hs20vendor_ie.hs_id,
+				&pBeacon->hs20vendor_ie.hs_id,
+				sizeof(pBeacon->hs20vendor_ie.hs_id));
+	}
 #ifdef FEATURE_AP_MCC_CH_AVOIDANCE
 	if (pBeacon->QComVendorIE.present) {
 		pBeaconStruct->AvoidChannelIE.present =