diff --git a/CORE/MAC/src/include/dot11f.h b/CORE/MAC/src/include/dot11f.h
index c8aa6ef..0fe2963 100644
--- a/CORE/MAC/src/include/dot11f.h
+++ b/CORE/MAC/src/include/dot11f.h
@@ -52,7 +52,7 @@
   *
   *
   * This file was automatically generated by 'framesc'
-  * Mon Feb 25 17:00:55 2013 from the following file(s):
+  * Wed Mar  6 12:08:58 2013 from the following file(s):
   *
   * dot11f.frms
   * 
@@ -5006,11 +5006,7 @@
     tANI_U8      pwise_cipher_suites[4][4];
     tANI_U16     akm_suite_count;
     tANI_U8      akm_suites[4][4];
-    tANI_U16          preauth: 1;
-    tANI_U16         no_pwise: 1;
-    tANI_U16 PTKSA_replay_counter: 2;
-    tANI_U16 GTKSA_replay_counter: 2;
-    tANI_U16         reserved: 10;
+    tANI_U8      RSN_Cap[2];
     tANI_U16     pmkid_count;
     tANI_U8      pmkid[4][16];
 } tDot11fIERSN;
diff --git a/CORE/MAC/src/pe/lim/limAssocUtils.c b/CORE/MAC/src/pe/lim/limAssocUtils.c
index 641302c..21ee5e3 100644
--- a/CORE/MAC/src/pe/lim/limAssocUtils.c
+++ b/CORE/MAC/src/pe/lim/limAssocUtils.c
@@ -493,8 +493,10 @@
     {
         return eSIR_MAC_INVALID_PAIRWISE_CIPHER_STATUS;
     }
-    /* Check RSN capabilities */
-    if(rxRSNIe.preauth == true) //this is supported by AP only
+    /* Check RSN capabilities
+     * Bit 0 of First Byte - PreAuthentication Capability
+     */
+    if(((rxRSNIe.RSN_Cap[0] >> 0) & 0x1) == true) //this is supported by AP only
     {
         return eSIR_MAC_INVALID_RSN_IE_CAPABILITIES_STATUS;
     }
diff --git a/CORE/SME/src/csr/csrApiScan.c b/CORE/SME/src/csr/csrApiScan.c
index d42b05f..8cb0c64 100644
--- a/CORE/SME/src/csr/csrApiScan.c
+++ b/CORE/SME/src/csr/csrApiScan.c
@@ -2576,7 +2576,7 @@
             
                 if( HAL_STATUS_SUCCESS( status ) )
                 {
-                    if ( pIes->RSN.preauth )
+                    if ( (pIes->RSN.RSN_Cap[0] >> 0) & 0x1 ) // Bit 0 offirst byte - PreAuthentication Capability
                     {
                         pSession->PmkidCandidateInfo[pSession->NumPmkidCandidate].preAuthSupported = eANI_BOOLEAN_TRUE;
                     }
diff --git a/CORE/SME/src/csr/csrUtil.c b/CORE/SME/src/csr/csrUtil.c
index 4ff9279..cc98b82 100644
--- a/CORE/SME/src/csr/csrUtil.c
+++ b/CORE/SME/src/csr/csrUtil.c
@@ -3675,11 +3675,12 @@
         }
         if ( Capabilities )
         {
-            Capabilities->PreAuthSupported = pRSNIe->preauth;
-            Capabilities->NoPairwise = pRSNIe->no_pwise;
-            Capabilities->PTKSAReplayCounter = pRSNIe->PTKSA_replay_counter;
-            Capabilities->GTKSAReplayCounter = pRSNIe->GTKSA_replay_counter;
-            Capabilities->Reserved = pRSNIe->reserved;
+            Capabilities->PreAuthSupported = (pRSNIe->RSN_Cap[0] >> 0) & 0x1 ; // Bit 0 PreAuthentication
+            Capabilities->NoPairwise = (pRSNIe->RSN_Cap[0] >> 1) & 0x1 ; // Bit 1 No Pairwise
+            Capabilities->PTKSAReplayCounter = (pRSNIe->RSN_Cap[0] >> 2) & 0x3 ; // Bit 2, 3 PTKSA Replay Counter
+            Capabilities->GTKSAReplayCounter = (pRSNIe->RSN_Cap[0] >> 4) & 0x3 ; // Bit 4,5 GTKSA Replay Counter
+            Capabilities->Reserved = (pRSNIe->RSN_Cap[0] >> 6) & 0x3 ; // remaining reserved
+            Capabilities->Reserved = (Capabilities->Reserved >> 2) | (pRSNIe->RSN_Cap[1]  & 0xff) ; // remaining reserved
         }
     }
     return( fAcceptableCyphers );
diff --git a/CORE/SYS/legacy/src/utils/src/dot11f.c b/CORE/SYS/legacy/src/utils/src/dot11f.c
index 2ae00aa..5eeaa87 100644
--- a/CORE/SYS/legacy/src/utils/src/dot11f.c
+++ b/CORE/SYS/legacy/src/utils/src/dot11f.c
@@ -50,7 +50,7 @@
   *
   *
   * This file was automatically generated by 'framesc'
-  * Mon Feb 25 17:00:55 2013 from the following file(s):
+  * Wed Mar  6 12:08:58 2013 from the following file(s):
   *
   * dot11f.frms
   * 
@@ -4481,7 +4481,6 @@
 tANI_U32 dot11fUnpackIeRSN(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIERSN *pDst)
 {
     tANI_U32 status = DOT11F_PARSE_SUCCESS;
-    tANI_U16 tmp65__;
     (void) pBuf; (void)ielen; /* Shutup the compiler */
     if (pDst->present) status = DOT11F_DUPLICATE_IE;
     pDst->present = 1;
@@ -4537,14 +4536,17 @@
     DOT11F_MEMCPY(pCtx, pDst->akm_suites, pBuf, ( pDst->akm_suite_count * 4 ) );
     pBuf += ( pDst->akm_suite_count * 4 );
     ielen -= ( pDst->akm_suite_count * 4 );
-    framesntohs(pCtx, &tmp65__, pBuf, 0);
-    pBuf += 2;
-    ielen -= 2;
-    pDst->preauth = tmp65__ >> 0 & 0x1;
-    pDst->no_pwise = tmp65__ >> 1 & 0x1;
-    pDst->PTKSA_replay_counter = tmp65__ >> 2 & 0x3;
-    pDst->GTKSA_replay_counter = tmp65__ >> 4 & 0x3;
-    pDst->reserved = tmp65__ >> 6 & 0x3ff;
+    if ( ! ielen )
+    {
+        pDst->pmkid_count = 0U;
+        return 0U;
+    }
+    else
+    {
+        DOT11F_MEMCPY(pCtx, pDst->RSN_Cap, pBuf, 2);
+        pBuf += 2;
+        ielen -= (tANI_U8)2;
+    }
     if ( ! ielen )
     {
         pDst->pmkid_count = 0U;
@@ -4713,49 +4715,49 @@
 tANI_U32 dot11fUnpackIeVHTCaps(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEVHTCaps *pDst)
 {
     tANI_U32 status = DOT11F_PARSE_SUCCESS;
-    tANI_U32 tmp66__;
+    tANI_U32 tmp65__;
+    tANI_U16 tmp66__;
     tANI_U16 tmp67__;
-    tANI_U16 tmp68__;
     (void) pBuf; (void)ielen; /* Shutup the compiler */
     if (pDst->present) status = DOT11F_DUPLICATE_IE;
     pDst->present = 1;
-    framesntohl(pCtx, &tmp66__, pBuf, 0);
+    framesntohl(pCtx, &tmp65__, pBuf, 0);
     pBuf += 4;
     ielen -= 4;
-    pDst->maxMPDULen = tmp66__ >> 0 & 0x3;
-    pDst->supportedChannelWidthSet = tmp66__ >> 2 & 0x3;
-    pDst->ldpcCodingCap = tmp66__ >> 4 & 0x1;
-    pDst->shortGI80MHz = tmp66__ >> 5 & 0x1;
-    pDst->shortGI160and80plus80MHz = tmp66__ >> 6 & 0x1;
-    pDst->txSTBC = tmp66__ >> 7 & 0x1;
-    pDst->rxSTBC = tmp66__ >> 8 & 0x7;
-    pDst->suBeamFormerCap = tmp66__ >> 11 & 0x1;
-    pDst->suBeamformeeCap = tmp66__ >> 12 & 0x1;
-    pDst->csnofBeamformerAntSup = tmp66__ >> 13 & 0x7;
-    pDst->numSoundingDim = tmp66__ >> 16 & 0x7;
-    pDst->muBeamformerCap = tmp66__ >> 19 & 0x1;
-    pDst->muBeamformeeCap = tmp66__ >> 20 & 0x1;
-    pDst->vhtTXOPPS = tmp66__ >> 21 & 0x1;
-    pDst->htcVHTCap = tmp66__ >> 22 & 0x1;
-    pDst->maxAMPDULenExp = tmp66__ >> 23 & 0x7;
-    pDst->vhtLinkAdaptCap = tmp66__ >> 26 & 0x3;
-    pDst->rxAntPattern = tmp66__ >> 28 & 0x1;
-    pDst->txAntPattern = tmp66__ >> 29 & 0x1;
-    pDst->reserved1 = tmp66__ >> 30 & 0x3;
+    pDst->maxMPDULen = tmp65__ >> 0 & 0x3;
+    pDst->supportedChannelWidthSet = tmp65__ >> 2 & 0x3;
+    pDst->ldpcCodingCap = tmp65__ >> 4 & 0x1;
+    pDst->shortGI80MHz = tmp65__ >> 5 & 0x1;
+    pDst->shortGI160and80plus80MHz = tmp65__ >> 6 & 0x1;
+    pDst->txSTBC = tmp65__ >> 7 & 0x1;
+    pDst->rxSTBC = tmp65__ >> 8 & 0x7;
+    pDst->suBeamFormerCap = tmp65__ >> 11 & 0x1;
+    pDst->suBeamformeeCap = tmp65__ >> 12 & 0x1;
+    pDst->csnofBeamformerAntSup = tmp65__ >> 13 & 0x7;
+    pDst->numSoundingDim = tmp65__ >> 16 & 0x7;
+    pDst->muBeamformerCap = tmp65__ >> 19 & 0x1;
+    pDst->muBeamformeeCap = tmp65__ >> 20 & 0x1;
+    pDst->vhtTXOPPS = tmp65__ >> 21 & 0x1;
+    pDst->htcVHTCap = tmp65__ >> 22 & 0x1;
+    pDst->maxAMPDULenExp = tmp65__ >> 23 & 0x7;
+    pDst->vhtLinkAdaptCap = tmp65__ >> 26 & 0x3;
+    pDst->rxAntPattern = tmp65__ >> 28 & 0x1;
+    pDst->txAntPattern = tmp65__ >> 29 & 0x1;
+    pDst->reserved1 = tmp65__ >> 30 & 0x3;
     framesntohs(pCtx, &pDst->rxMCSMap, pBuf, 0);
     pBuf += 2;
     ielen -= (tANI_U8)2;
-    framesntohs(pCtx, &tmp67__, pBuf, 0);
+    framesntohs(pCtx, &tmp66__, pBuf, 0);
     pBuf += 2;
     ielen -= 2;
-    pDst->rxHighSupDataRate = tmp67__ >> 0 & 0x1fff;
-    pDst->reserved2 = tmp67__ >> 13 & 0x7;
+    pDst->rxHighSupDataRate = tmp66__ >> 0 & 0x1fff;
+    pDst->reserved2 = tmp66__ >> 13 & 0x7;
     framesntohs(pCtx, &pDst->txMCSMap, pBuf, 0);
     pBuf += 2;
     ielen -= (tANI_U8)2;
-    framesntohs(pCtx, &tmp68__, pBuf, 0);
-    pDst->txSupDataRate = tmp68__ >> 0 & 0x1fff;
-    pDst->reserved3 = tmp68__ >> 13 & 0x7;
+    framesntohs(pCtx, &tmp67__, pBuf, 0);
+    pDst->txSupDataRate = tmp67__ >> 0 & 0x1fff;
+    pDst->reserved3 = tmp67__ >> 13 & 0x7;
     (void)pCtx;
     return status;
 } /* End dot11fUnpackIeVHTCaps. */
@@ -4815,7 +4817,7 @@
 tANI_U32 dot11fUnpackIeWAPI(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWAPI *pDst)
 {
     tANI_U32 status = DOT11F_PARSE_SUCCESS;
-    tANI_U16 tmp69__;
+    tANI_U16 tmp68__;
     (void) pBuf; (void)ielen; /* Shutup the compiler */
     if (pDst->present) status = DOT11F_DUPLICATE_IE;
     pDst->present = 1;
@@ -4852,11 +4854,11 @@
     DOT11F_MEMCPY(pCtx, pDst->multicast_cipher_suite, pBuf, 4);
     pBuf += 4;
     ielen -= (tANI_U8)4;
-    framesntohs(pCtx, &tmp69__, pBuf, 0);
+    framesntohs(pCtx, &tmp68__, pBuf, 0);
     pBuf += 2;
     ielen -= 2;
-    pDst->preauth = tmp69__ >> 0 & 0x1;
-    pDst->reserved = tmp69__ >> 1 & 0x7fff;
+    pDst->preauth = tmp68__ >> 0 & 0x1;
+    pDst->reserved = tmp68__ >> 1 & 0x7fff;
     if ( ! ielen )
     {
         pDst->bkid_count = 0U;
@@ -4941,7 +4943,7 @@
 tANI_U32 dot11fUnpackIeWMMCaps(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWMMCaps *pDst)
 {
     tANI_U32 status = DOT11F_PARSE_SUCCESS;
-    tANI_U8 tmp70__;
+    tANI_U8 tmp69__;
     (void) pBuf; (void)ielen; /* Shutup the compiler */
     if (pDst->present) status = DOT11F_DUPLICATE_IE;
     pDst->present = 1;
@@ -4953,12 +4955,12 @@
             pDst->present = 0;
             return ( status | DOT11F_BAD_FIXED_VALUE );
     }
-    tmp70__ = *pBuf;
-    pDst->reserved = tmp70__ >> 0 & 0xf;
-    pDst->qack = tmp70__ >> 4 & 0x1;
-    pDst->queue_request = tmp70__ >> 5 & 0x1;
-    pDst->txop_request = tmp70__ >> 6 & 0x1;
-    pDst->more_ack = tmp70__ >> 7 & 0x1;
+    tmp69__ = *pBuf;
+    pDst->reserved = tmp69__ >> 0 & 0xf;
+    pDst->qack = tmp69__ >> 4 & 0x1;
+    pDst->queue_request = tmp69__ >> 5 & 0x1;
+    pDst->txop_request = tmp69__ >> 6 & 0x1;
+    pDst->more_ack = tmp69__ >> 7 & 0x1;
     (void)pCtx;
     return status;
 } /* End dot11fUnpackIeWMMCaps. */
@@ -4969,17 +4971,17 @@
 tANI_U32 dot11fUnpackIeWMMInfoAp(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWMMInfoAp *pDst)
 {
     tANI_U32 status = DOT11F_PARSE_SUCCESS;
-    tANI_U8 tmp71__;
+    tANI_U8 tmp70__;
     (void) pBuf; (void)ielen; /* Shutup the compiler */
     if (pDst->present) status = DOT11F_DUPLICATE_IE;
     pDst->present = 1;
     pDst->version = *pBuf;
     pBuf += 1;
     ielen -= (tANI_U8)1;
-    tmp71__ = *pBuf;
-    pDst->param_set_count = tmp71__ >> 0 & 0xf;
-    pDst->reserved = tmp71__ >> 4 & 0x7;
-    pDst->uapsd = tmp71__ >> 7 & 0x1;
+    tmp70__ = *pBuf;
+    pDst->param_set_count = tmp70__ >> 0 & 0xf;
+    pDst->reserved = tmp70__ >> 4 & 0x7;
+    pDst->uapsd = tmp70__ >> 7 & 0x1;
     (void)pCtx;
     return status;
 } /* End dot11fUnpackIeWMMInfoAp. */
@@ -4990,21 +4992,21 @@
 tANI_U32 dot11fUnpackIeWMMInfoStation(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWMMInfoStation *pDst)
 {
     tANI_U32 status = DOT11F_PARSE_SUCCESS;
-    tANI_U8 tmp72__;
+    tANI_U8 tmp71__;
     (void) pBuf; (void)ielen; /* Shutup the compiler */
     if (pDst->present) status = DOT11F_DUPLICATE_IE;
     pDst->present = 1;
     pDst->version = *pBuf;
     pBuf += 1;
     ielen -= (tANI_U8)1;
-    tmp72__ = *pBuf;
-    pDst->acvo_uapsd = tmp72__ >> 0 & 0x1;
-    pDst->acvi_uapsd = tmp72__ >> 1 & 0x1;
-    pDst->acbk_uapsd = tmp72__ >> 2 & 0x1;
-    pDst->acbe_uapsd = tmp72__ >> 3 & 0x1;
-    pDst->reserved1 = tmp72__ >> 4 & 0x1;
-    pDst->max_sp_length = tmp72__ >> 5 & 0x3;
-    pDst->reserved2 = tmp72__ >> 7 & 0x1;
+    tmp71__ = *pBuf;
+    pDst->acvo_uapsd = tmp71__ >> 0 & 0x1;
+    pDst->acvi_uapsd = tmp71__ >> 1 & 0x1;
+    pDst->acbk_uapsd = tmp71__ >> 2 & 0x1;
+    pDst->acbe_uapsd = tmp71__ >> 3 & 0x1;
+    pDst->reserved1 = tmp71__ >> 4 & 0x1;
+    pDst->max_sp_length = tmp71__ >> 5 & 0x3;
+    pDst->reserved2 = tmp71__ >> 7 & 0x1;
     (void)pCtx;
     return status;
 } /* End dot11fUnpackIeWMMInfoStation. */
@@ -5015,6 +5017,7 @@
 tANI_U32 dot11fUnpackIeWMMParams(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWMMParams *pDst)
 {
     tANI_U32 status = DOT11F_PARSE_SUCCESS;
+    tANI_U8 tmp72__;
     tANI_U8 tmp73__;
     tANI_U8 tmp74__;
     tANI_U8 tmp75__;
@@ -5022,7 +5025,6 @@
     tANI_U8 tmp77__;
     tANI_U8 tmp78__;
     tANI_U8 tmp79__;
-    tANI_U8 tmp80__;
     (void) pBuf; (void)ielen; /* Shutup the compiler */
     if (pDst->present) status = DOT11F_DUPLICATE_IE;
     pDst->present = 1;
@@ -5040,63 +5042,63 @@
     pDst->reserved2 = *pBuf;
     pBuf += 1;
     ielen -= (tANI_U8)1;
+    tmp72__ = *pBuf;
+    pBuf += 1;
+    ielen -= 1;
+    pDst->acbe_aifsn = tmp72__ >> 0 & 0xf;
+    pDst->acbe_acm = tmp72__ >> 4 & 0x1;
+    pDst->acbe_aci = tmp72__ >> 5 & 0x3;
+    pDst->unused1 = tmp72__ >> 7 & 0x1;
     tmp73__ = *pBuf;
     pBuf += 1;
     ielen -= 1;
-    pDst->acbe_aifsn = tmp73__ >> 0 & 0xf;
-    pDst->acbe_acm = tmp73__ >> 4 & 0x1;
-    pDst->acbe_aci = tmp73__ >> 5 & 0x3;
-    pDst->unused1 = tmp73__ >> 7 & 0x1;
-    tmp74__ = *pBuf;
-    pBuf += 1;
-    ielen -= 1;
-    pDst->acbe_acwmin = tmp74__ >> 0 & 0xf;
-    pDst->acbe_acwmax = tmp74__ >> 4 & 0xf;
+    pDst->acbe_acwmin = tmp73__ >> 0 & 0xf;
+    pDst->acbe_acwmax = tmp73__ >> 4 & 0xf;
     framesntohs(pCtx, &pDst->acbe_txoplimit, pBuf, 0);
     pBuf += 2;
     ielen -= (tANI_U8)2;
+    tmp74__ = *pBuf;
+    pBuf += 1;
+    ielen -= 1;
+    pDst->acbk_aifsn = tmp74__ >> 0 & 0xf;
+    pDst->acbk_acm = tmp74__ >> 4 & 0x1;
+    pDst->acbk_aci = tmp74__ >> 5 & 0x3;
+    pDst->unused2 = tmp74__ >> 7 & 0x1;
     tmp75__ = *pBuf;
     pBuf += 1;
     ielen -= 1;
-    pDst->acbk_aifsn = tmp75__ >> 0 & 0xf;
-    pDst->acbk_acm = tmp75__ >> 4 & 0x1;
-    pDst->acbk_aci = tmp75__ >> 5 & 0x3;
-    pDst->unused2 = tmp75__ >> 7 & 0x1;
-    tmp76__ = *pBuf;
-    pBuf += 1;
-    ielen -= 1;
-    pDst->acbk_acwmin = tmp76__ >> 0 & 0xf;
-    pDst->acbk_acwmax = tmp76__ >> 4 & 0xf;
+    pDst->acbk_acwmin = tmp75__ >> 0 & 0xf;
+    pDst->acbk_acwmax = tmp75__ >> 4 & 0xf;
     framesntohs(pCtx, &pDst->acbk_txoplimit, pBuf, 0);
     pBuf += 2;
     ielen -= (tANI_U8)2;
+    tmp76__ = *pBuf;
+    pBuf += 1;
+    ielen -= 1;
+    pDst->acvi_aifsn = tmp76__ >> 0 & 0xf;
+    pDst->acvi_acm = tmp76__ >> 4 & 0x1;
+    pDst->acvi_aci = tmp76__ >> 5 & 0x3;
+    pDst->unused3 = tmp76__ >> 7 & 0x1;
     tmp77__ = *pBuf;
     pBuf += 1;
     ielen -= 1;
-    pDst->acvi_aifsn = tmp77__ >> 0 & 0xf;
-    pDst->acvi_acm = tmp77__ >> 4 & 0x1;
-    pDst->acvi_aci = tmp77__ >> 5 & 0x3;
-    pDst->unused3 = tmp77__ >> 7 & 0x1;
-    tmp78__ = *pBuf;
-    pBuf += 1;
-    ielen -= 1;
-    pDst->acvi_acwmin = tmp78__ >> 0 & 0xf;
-    pDst->acvi_acwmax = tmp78__ >> 4 & 0xf;
+    pDst->acvi_acwmin = tmp77__ >> 0 & 0xf;
+    pDst->acvi_acwmax = tmp77__ >> 4 & 0xf;
     framesntohs(pCtx, &pDst->acvi_txoplimit, pBuf, 0);
     pBuf += 2;
     ielen -= (tANI_U8)2;
+    tmp78__ = *pBuf;
+    pBuf += 1;
+    ielen -= 1;
+    pDst->acvo_aifsn = tmp78__ >> 0 & 0xf;
+    pDst->acvo_acm = tmp78__ >> 4 & 0x1;
+    pDst->acvo_aci = tmp78__ >> 5 & 0x3;
+    pDst->unused4 = tmp78__ >> 7 & 0x1;
     tmp79__ = *pBuf;
     pBuf += 1;
     ielen -= 1;
-    pDst->acvo_aifsn = tmp79__ >> 0 & 0xf;
-    pDst->acvo_acm = tmp79__ >> 4 & 0x1;
-    pDst->acvo_aci = tmp79__ >> 5 & 0x3;
-    pDst->unused4 = tmp79__ >> 7 & 0x1;
-    tmp80__ = *pBuf;
-    pBuf += 1;
-    ielen -= 1;
-    pDst->acvo_acwmin = tmp80__ >> 0 & 0xf;
-    pDst->acvo_acwmax = tmp80__ >> 4 & 0xf;
+    pDst->acvo_acwmin = tmp79__ >> 0 & 0xf;
+    pDst->acvo_acwmax = tmp79__ >> 4 & 0xf;
     framesntohs(pCtx, &pDst->acvo_txoplimit, pBuf, 0);
     (void)pCtx;
     return status;
@@ -8572,11 +8574,7 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* ) pFrm->RSN.pwise_cipher_suites, 4 * pFrm->RSN.pwise_cipher_suite_count);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* )&pFrm->RSN.akm_suite_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* ) pFrm->RSN.akm_suites, 4 * pFrm->RSN.akm_suite_count);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("preauth (1): %d\n"), pFrm->RSN.preauth);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("no_pwise (1): %d\n"), pFrm->RSN.no_pwise);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("PTKSA_replay_counter (2): %d\n"), pFrm->RSN.PTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("GTKSA_replay_counter (2): %d\n"), pFrm->RSN.GTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("reserved (10): %d\n"), pFrm->RSN.reserved);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* )&pFrm->RSN.RSN_Cap, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* )&pFrm->RSN.pmkid_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* ) pFrm->RSN.pmkid, 16 * pFrm->RSN.pmkid_count);
         }
@@ -9674,11 +9672,7 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* ) pFrm->RSN.pwise_cipher_suites, 4 * pFrm->RSN.pwise_cipher_suite_count);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* )&pFrm->RSN.akm_suite_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* ) pFrm->RSN.akm_suites, 4 * pFrm->RSN.akm_suite_count);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("preauth (1): %d\n"), pFrm->RSN.preauth);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("no_pwise (1): %d\n"), pFrm->RSN.no_pwise);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("PTKSA_replay_counter (2): %d\n"), pFrm->RSN.PTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("GTKSA_replay_counter (2): %d\n"), pFrm->RSN.GTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("reserved (10): %d\n"), pFrm->RSN.reserved);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* )&pFrm->RSN.RSN_Cap, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* )&pFrm->RSN.pmkid_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* ) pFrm->RSN.pmkid, 16 * pFrm->RSN.pmkid_count);
         }
@@ -10771,11 +10765,7 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* ) pFrm->RSN.pwise_cipher_suites, 4 * pFrm->RSN.pwise_cipher_suite_count);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* )&pFrm->RSN.akm_suite_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* ) pFrm->RSN.akm_suites, 4 * pFrm->RSN.akm_suite_count);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("preauth (1): %d\n"), pFrm->RSN.preauth);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("no_pwise (1): %d\n"), pFrm->RSN.no_pwise);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("PTKSA_replay_counter (2): %d\n"), pFrm->RSN.PTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("GTKSA_replay_counter (2): %d\n"), pFrm->RSN.GTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("reserved (10): %d\n"), pFrm->RSN.reserved);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* )&pFrm->RSN.RSN_Cap, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* )&pFrm->RSN.pmkid_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* ) pFrm->RSN.pmkid, 16 * pFrm->RSN.pmkid_count);
         }
@@ -14247,11 +14237,7 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* ) pFrm->RSN.pwise_cipher_suites, 4 * pFrm->RSN.pwise_cipher_suite_count);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* )&pFrm->RSN.akm_suite_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* ) pFrm->RSN.akm_suites, 4 * pFrm->RSN.akm_suite_count);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("preauth (1): %d\n"), pFrm->RSN.preauth);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("no_pwise (1): %d\n"), pFrm->RSN.no_pwise);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("PTKSA_replay_counter (2): %d\n"), pFrm->RSN.PTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("GTKSA_replay_counter (2): %d\n"), pFrm->RSN.GTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("reserved (10): %d\n"), pFrm->RSN.reserved);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* )&pFrm->RSN.RSN_Cap, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* )&pFrm->RSN.pmkid_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* ) pFrm->RSN.pmkid, 16 * pFrm->RSN.pmkid_count);
         }
@@ -17910,11 +17896,7 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), ( tANI_U8* ) pFrm->RSN.pwise_cipher_suites, 4 * pFrm->RSN.pwise_cipher_suite_count);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), ( tANI_U8* )&pFrm->RSN.akm_suite_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), ( tANI_U8* ) pFrm->RSN.akm_suites, 4 * pFrm->RSN.akm_suite_count);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), FRFL("preauth (1): %d\n"), pFrm->RSN.preauth);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), FRFL("no_pwise (1): %d\n"), pFrm->RSN.no_pwise);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), FRFL("PTKSA_replay_counter (2): %d\n"), pFrm->RSN.PTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), FRFL("GTKSA_replay_counter (2): %d\n"), pFrm->RSN.GTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), FRFL("reserved (10): %d\n"), pFrm->RSN.reserved);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), ( tANI_U8* )&pFrm->RSN.RSN_Cap, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), ( tANI_U8* )&pFrm->RSN.pmkid_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), ( tANI_U8* ) pFrm->RSN.pmkid, 16 * pFrm->RSN.pmkid_count);
         }
@@ -18289,11 +18271,7 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), ( tANI_U8* ) pFrm->RSN.pwise_cipher_suites, 4 * pFrm->RSN.pwise_cipher_suite_count);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), ( tANI_U8* )&pFrm->RSN.akm_suite_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), ( tANI_U8* ) pFrm->RSN.akm_suites, 4 * pFrm->RSN.akm_suite_count);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), FRFL("preauth (1): %d\n"), pFrm->RSN.preauth);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), FRFL("no_pwise (1): %d\n"), pFrm->RSN.no_pwise);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), FRFL("PTKSA_replay_counter (2): %d\n"), pFrm->RSN.PTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), FRFL("GTKSA_replay_counter (2): %d\n"), pFrm->RSN.GTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), FRFL("reserved (10): %d\n"), pFrm->RSN.reserved);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), ( tANI_U8* )&pFrm->RSN.RSN_Cap, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), ( tANI_U8* )&pFrm->RSN.pmkid_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), ( tANI_U8* ) pFrm->RSN.pmkid, 16 * pFrm->RSN.pmkid_count);
         }
@@ -18567,11 +18545,7 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), ( tANI_U8* ) pFrm->RSN.pwise_cipher_suites, 4 * pFrm->RSN.pwise_cipher_suite_count);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), ( tANI_U8* )&pFrm->RSN.akm_suite_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), ( tANI_U8* ) pFrm->RSN.akm_suites, 4 * pFrm->RSN.akm_suite_count);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), FRFL("preauth (1): %d\n"), pFrm->RSN.preauth);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), FRFL("no_pwise (1): %d\n"), pFrm->RSN.no_pwise);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), FRFL("PTKSA_replay_counter (2): %d\n"), pFrm->RSN.PTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), FRFL("GTKSA_replay_counter (2): %d\n"), pFrm->RSN.GTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), FRFL("reserved (10): %d\n"), pFrm->RSN.reserved);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), ( tANI_U8* )&pFrm->RSN.RSN_Cap, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), ( tANI_U8* )&pFrm->RSN.pmkid_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), ( tANI_U8* ) pFrm->RSN.pmkid, 16 * pFrm->RSN.pmkid_count);
         }
@@ -18923,11 +18897,7 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), ( tANI_U8* ) pFrm->RSN.pwise_cipher_suites, 4 * pFrm->RSN.pwise_cipher_suite_count);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), ( tANI_U8* )&pFrm->RSN.akm_suite_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), ( tANI_U8* ) pFrm->RSN.akm_suites, 4 * pFrm->RSN.akm_suite_count);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), FRFL("preauth (1): %d\n"), pFrm->RSN.preauth);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), FRFL("no_pwise (1): %d\n"), pFrm->RSN.no_pwise);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), FRFL("PTKSA_replay_counter (2): %d\n"), pFrm->RSN.PTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), FRFL("GTKSA_replay_counter (2): %d\n"), pFrm->RSN.GTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), FRFL("reserved (10): %d\n"), pFrm->RSN.reserved);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), ( tANI_U8* )&pFrm->RSN.RSN_Cap, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), ( tANI_U8* )&pFrm->RSN.pmkid_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), ( tANI_U8* ) pFrm->RSN.pmkid, 16 * pFrm->RSN.pmkid_count);
         }
@@ -20157,7 +20127,7 @@
                             break;
                 case SigIeRICDataDesc:
                         //reset the pointers back since this is a container IE and it doesnt have its own EID and Len.
-                        pBufRemaining -= 2; nBufRemaining += 2;
+                        *pBufRemaining -= 2; nBufRemaining += 2;
                         if ( pIe && pIe->noui ) 
                             { 
                                 pBufRemaining -= pIe->noui;
@@ -21200,7 +21170,11 @@
         }
         else break;
         *pnNeeded += ( pIe->akm_suite_count * 4 );
-        *pnNeeded += 2;
+        if ( pIe->RSN_Cap )
+        {
+            *pnNeeded += 2;
+        }
+        else break;
         if ( pIe->pmkid_count )
         {
             *pnNeeded += 2;
@@ -22739,13 +22713,13 @@
                                    tDot11fFfAddBAParameterSet *pSrc,
                                    tANI_U8 *pBuf)
 {
-    tANI_U16 tmp81__;
-    tmp81__ = 0U;
-    tmp81__ |= ( pSrc->amsduSupported << 0 );
-    tmp81__ |= ( pSrc->policy << 1 );
-    tmp81__ |= ( pSrc->tid << 2 );
-    tmp81__ |= ( pSrc->bufferSize << 6 );
-    frameshtons(pCtx, pBuf, tmp81__, 0);
+    tANI_U16 tmp80__;
+    tmp80__ = 0U;
+    tmp80__ |= ( pSrc->amsduSupported << 0 );
+    tmp80__ |= ( pSrc->policy << 1 );
+    tmp80__ |= ( pSrc->tid << 2 );
+    tmp80__ |= ( pSrc->bufferSize << 6 );
+    frameshtons(pCtx, pBuf, tmp80__, 0);
     (void)pCtx;
 } /* End dot11fPackFfAddBAParameterSet. */
 
@@ -22769,11 +22743,11 @@
                                            tDot11fFfBAStartingSequenceControl *pSrc,
                                            tANI_U8 *pBuf)
 {
-    tANI_U16 tmp82__;
-    tmp82__ = 0U;
-    tmp82__ |= ( pSrc->fragNumber << 0 );
-    tmp82__ |= ( pSrc->ssn << 4 );
-    frameshtons(pCtx, pBuf, tmp82__, 0);
+    tANI_U16 tmp81__;
+    tmp81__ = 0U;
+    tmp81__ |= ( pSrc->fragNumber << 0 );
+    tmp81__ |= ( pSrc->ssn << 4 );
+    frameshtons(pCtx, pBuf, tmp81__, 0);
     (void)pCtx;
 } /* End dot11fPackFfBAStartingSequenceControl. */
 
@@ -22797,25 +22771,25 @@
                               tDot11fFfCapabilities *pSrc,
                               tANI_U8 *pBuf)
 {
-    tANI_U16 tmp83__;
-    tmp83__ = 0U;
-    tmp83__ |= ( pSrc->ess << 0 );
-    tmp83__ |= ( pSrc->ibss << 1 );
-    tmp83__ |= ( pSrc->cfPollable << 2 );
-    tmp83__ |= ( pSrc->cfPollReq << 3 );
-    tmp83__ |= ( pSrc->privacy << 4 );
-    tmp83__ |= ( pSrc->shortPreamble << 5 );
-    tmp83__ |= ( pSrc->pbcc << 6 );
-    tmp83__ |= ( pSrc->channelAgility << 7 );
-    tmp83__ |= ( pSrc->spectrumMgt << 8 );
-    tmp83__ |= ( pSrc->qos << 9 );
-    tmp83__ |= ( pSrc->shortSlotTime << 10 );
-    tmp83__ |= ( pSrc->apsd << 11 );
-    tmp83__ |= ( pSrc->rrm << 12 );
-    tmp83__ |= ( pSrc->dsssOfdm << 13 );
-    tmp83__ |= ( pSrc->delayedBA << 14 );
-    tmp83__ |= ( pSrc->immediateBA << 15 );
-    frameshtons(pCtx, pBuf, tmp83__, 0);
+    tANI_U16 tmp82__;
+    tmp82__ = 0U;
+    tmp82__ |= ( pSrc->ess << 0 );
+    tmp82__ |= ( pSrc->ibss << 1 );
+    tmp82__ |= ( pSrc->cfPollable << 2 );
+    tmp82__ |= ( pSrc->cfPollReq << 3 );
+    tmp82__ |= ( pSrc->privacy << 4 );
+    tmp82__ |= ( pSrc->shortPreamble << 5 );
+    tmp82__ |= ( pSrc->pbcc << 6 );
+    tmp82__ |= ( pSrc->channelAgility << 7 );
+    tmp82__ |= ( pSrc->spectrumMgt << 8 );
+    tmp82__ |= ( pSrc->qos << 9 );
+    tmp82__ |= ( pSrc->shortSlotTime << 10 );
+    tmp82__ |= ( pSrc->apsd << 11 );
+    tmp82__ |= ( pSrc->rrm << 12 );
+    tmp82__ |= ( pSrc->dsssOfdm << 13 );
+    tmp82__ |= ( pSrc->delayedBA << 14 );
+    tmp82__ |= ( pSrc->immediateBA << 15 );
+    frameshtons(pCtx, pBuf, tmp82__, 0);
     (void)pCtx;
 } /* End dot11fPackFfCapabilities. */
 
@@ -22839,12 +22813,12 @@
                                    tDot11fFfDelBAParameterSet *pSrc,
                                    tANI_U8 *pBuf)
 {
-    tANI_U16 tmp84__;
-    tmp84__ = 0U;
-    tmp84__ |= ( pSrc->reserved << 0 );
-    tmp84__ |= ( pSrc->initiator << 11 );
-    tmp84__ |= ( pSrc->tid << 12 );
-    frameshtons(pCtx, pBuf, tmp84__, 0);
+    tANI_U16 tmp83__;
+    tmp83__ = 0U;
+    tmp83__ |= ( pSrc->reserved << 0 );
+    tmp83__ |= ( pSrc->initiator << 11 );
+    tmp83__ |= ( pSrc->tid << 12 );
+    frameshtons(pCtx, pBuf, tmp83__, 0);
     (void)pCtx;
 } /* End dot11fPackFfDelBAParameterSet. */
 
@@ -22892,13 +22866,13 @@
                                tDot11fFfOperatingMode *pSrc,
                                tANI_U8 *pBuf)
 {
-    tANI_U8 tmp85__;
-    tmp85__ = 0U;
-    tmp85__ |= ( pSrc->chanWidth << 0 );
-    tmp85__ |= ( pSrc->reserved << 2 );
-    tmp85__ |= ( pSrc->rxNSS << 4 );
-    tmp85__ |= ( pSrc->rxNSSType << 7 );
-    *pBuf = tmp85__;
+    tANI_U8 tmp84__;
+    tmp84__ = 0U;
+    tmp84__ |= ( pSrc->chanWidth << 0 );
+    tmp84__ |= ( pSrc->reserved << 2 );
+    tmp84__ |= ( pSrc->rxNSS << 4 );
+    tmp84__ |= ( pSrc->rxNSSType << 7 );
+    *pBuf = tmp84__;
     (void)pCtx;
 } /* End dot11fPackFfOperatingMode. */
 
@@ -22954,12 +22928,12 @@
                                 tDot11fFfSMPowerModeSet *pSrc,
                                 tANI_U8 *pBuf)
 {
-    tANI_U8 tmp86__;
-    tmp86__ = 0U;
-    tmp86__ |= ( pSrc->PowerSave_En << 0 );
-    tmp86__ |= ( pSrc->Mode << 1 );
-    tmp86__ |= ( pSrc->reserved << 2 );
-    *pBuf = tmp86__;
+    tANI_U8 tmp85__;
+    tmp85__ = 0U;
+    tmp85__ |= ( pSrc->PowerSave_En << 0 );
+    tmp85__ |= ( pSrc->Mode << 1 );
+    tmp85__ |= ( pSrc->reserved << 2 );
+    *pBuf = tmp85__;
     (void)pCtx;
 } /* End dot11fPackFfSMPowerModeSet. */
 
@@ -22999,19 +22973,19 @@
                         tDot11fFfTSInfo *pSrc,
                         tANI_U8 *pBuf)
 {
-    tANI_U32 tmp87__;
-    tmp87__ = 0U;
-    tmp87__ |= ( pSrc->traffic_type << 0 );
-    tmp87__ |= ( pSrc->tsid << 1 );
-    tmp87__ |= ( pSrc->direction << 5 );
-    tmp87__ |= ( pSrc->access_policy << 7 );
-    tmp87__ |= ( pSrc->aggregation << 9 );
-    tmp87__ |= ( pSrc->psb << 10 );
-    tmp87__ |= ( pSrc->user_priority << 11 );
-    tmp87__ |= ( pSrc->tsinfo_ack_pol << 14 );
-    tmp87__ |= ( pSrc->schedule << 16 );
-    tmp87__ |= ( pSrc->unused << 17 );
-    frameshtonl(pCtx, pBuf, tmp87__, 0);
+    tANI_U32 tmp86__;
+    tmp86__ = 0U;
+    tmp86__ |= ( pSrc->traffic_type << 0 );
+    tmp86__ |= ( pSrc->tsid << 1 );
+    tmp86__ |= ( pSrc->direction << 5 );
+    tmp86__ |= ( pSrc->access_policy << 7 );
+    tmp86__ |= ( pSrc->aggregation << 9 );
+    tmp86__ |= ( pSrc->psb << 10 );
+    tmp86__ |= ( pSrc->user_priority << 11 );
+    tmp86__ |= ( pSrc->tsinfo_ack_pol << 14 );
+    tmp86__ |= ( pSrc->schedule << 16 );
+    tmp86__ |= ( pSrc->unused << 17 );
+    frameshtonl(pCtx, pBuf, tmp86__, 0);
     (void)pCtx;
 } /* End dot11fPackFfTSInfo. */
 
@@ -23108,7 +23082,7 @@
     tANI_U8* pTlvLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U8 tmp88__;
+    tANI_U8 tmp87__;
     nNeeded += 3;
     if ( nNeeded > nBuf ) return DOT11F_BUFFER_OVERFLOW;
     while ( pSrc->present )
@@ -23117,10 +23091,10 @@
         pBuf += 1; *pnConsumed += 1;
         pTlvLen = pBuf;
         pBuf += 1; *pnConsumed += 1;
-        tmp88__ = 0U;
-        tmp88__ |= ( pSrc->minor << 0 );
-        tmp88__ |= ( pSrc->major << 4 );
-        *pBuf = tmp88__;
+        tmp87__ = 0U;
+        tmp87__ |= ( pSrc->minor << 0 );
+        tmp87__ |= ( pSrc->major << 4 );
+        *pBuf = tmp87__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
@@ -24329,7 +24303,7 @@
     tANI_U8* pTlvLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U8 tmp89__;
+    tANI_U8 tmp88__;
     nNeeded += 5;
     if ( nNeeded > nBuf ) return DOT11F_BUFFER_OVERFLOW;
     while ( pSrc->present )
@@ -24338,10 +24312,10 @@
         pBuf += 2; *pnConsumed += 2;
         pTlvLen = pBuf;
         pBuf += 2; *pnConsumed += 2;
-        tmp89__ = 0U;
-        tmp89__ |= ( pSrc->minor << 0 );
-        tmp89__ |= ( pSrc->major << 4 );
-        *pBuf = tmp89__;
+        tmp88__ = 0U;
+        tmp88__ |= ( pSrc->minor << 0 );
+        tmp88__ |= ( pSrc->major << 4 );
+        *pBuf = tmp88__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
@@ -24547,7 +24521,7 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U16 tmp90__;
+    tANI_U16 tmp89__;
     nNeeded  +=  (pSrc->num_key + 11);
     while ( pSrc->present )
     {
@@ -24556,10 +24530,10 @@
         ++pBuf; ++(*pnConsumed);
         pIeLen = pBuf;
         ++pBuf; ++(*pnConsumed);
-        tmp90__ = 0U;
-        tmp90__ |= ( pSrc->keyId << 0 );
-        tmp90__ |= ( pSrc->reserved << 2 );
-        frameshtons(pCtx, pBuf, tmp90__, 0);
+        tmp89__ = 0U;
+        tmp89__ |= ( pSrc->keyId << 0 );
+        tmp89__ |= ( pSrc->reserved << 2 );
+        frameshtons(pCtx, pBuf, tmp89__, 0);
         *pnConsumed += 2;
         pBuf += 2;
         nBuf -=  2 ;
@@ -24816,6 +24790,7 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
+    tANI_U8 tmp90__;
     tANI_U8 tmp91__;
     tANI_U8 tmp92__;
     tANI_U8 tmp93__;
@@ -24823,7 +24798,6 @@
     tANI_U8 tmp95__;
     tANI_U8 tmp96__;
     tANI_U8 tmp97__;
-    tANI_U8 tmp98__;
     nNeeded  += 18;
     while ( pSrc->present )
     {
@@ -24838,76 +24812,76 @@
         *pBuf = pSrc->reserved;
         *pnConsumed += 1;
         pBuf += 1;
-        tmp91__ = 0U;
-        tmp91__ |= ( pSrc->acbe_aifsn << 0 );
-        tmp91__ |= ( pSrc->acbe_acm << 4 );
-        tmp91__ |= ( pSrc->acbe_aci << 5 );
-        tmp91__ |= ( pSrc->unused1 << 7 );
-        *pBuf = tmp91__;
+        tmp90__ = 0U;
+        tmp90__ |= ( pSrc->acbe_aifsn << 0 );
+        tmp90__ |= ( pSrc->acbe_acm << 4 );
+        tmp90__ |= ( pSrc->acbe_aci << 5 );
+        tmp90__ |= ( pSrc->unused1 << 7 );
+        *pBuf = tmp90__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
-        tmp92__ = 0U;
-        tmp92__ |= ( pSrc->acbe_min << 0 );
-        tmp92__ |= ( pSrc->acbe_max << 4 );
-        *pBuf = tmp92__;
+        tmp91__ = 0U;
+        tmp91__ |= ( pSrc->acbe_min << 0 );
+        tmp91__ |= ( pSrc->acbe_max << 4 );
+        *pBuf = tmp91__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
         frameshtons(pCtx, pBuf, pSrc->acbe_txoplimit, 0);
         *pnConsumed += 2;
         pBuf += 2;
-        tmp93__ = 0U;
-        tmp93__ |= ( pSrc->acbk_aifsn << 0 );
-        tmp93__ |= ( pSrc->acbk_acm << 4 );
-        tmp93__ |= ( pSrc->acbk_aci << 5 );
-        tmp93__ |= ( pSrc->unused2 << 7 );
-        *pBuf = tmp93__;
+        tmp92__ = 0U;
+        tmp92__ |= ( pSrc->acbk_aifsn << 0 );
+        tmp92__ |= ( pSrc->acbk_acm << 4 );
+        tmp92__ |= ( pSrc->acbk_aci << 5 );
+        tmp92__ |= ( pSrc->unused2 << 7 );
+        *pBuf = tmp92__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
-        tmp94__ = 0U;
-        tmp94__ |= ( pSrc->acbk_min << 0 );
-        tmp94__ |= ( pSrc->acbk_max << 4 );
-        *pBuf = tmp94__;
+        tmp93__ = 0U;
+        tmp93__ |= ( pSrc->acbk_min << 0 );
+        tmp93__ |= ( pSrc->acbk_max << 4 );
+        *pBuf = tmp93__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
         frameshtons(pCtx, pBuf, pSrc->acbk_txoplimit, 0);
         *pnConsumed += 2;
         pBuf += 2;
-        tmp95__ = 0U;
-        tmp95__ |= ( pSrc->acvi_aifsn << 0 );
-        tmp95__ |= ( pSrc->acvi_acm << 4 );
-        tmp95__ |= ( pSrc->acvi_aci << 5 );
-        tmp95__ |= ( pSrc->unused3 << 7 );
-        *pBuf = tmp95__;
+        tmp94__ = 0U;
+        tmp94__ |= ( pSrc->acvi_aifsn << 0 );
+        tmp94__ |= ( pSrc->acvi_acm << 4 );
+        tmp94__ |= ( pSrc->acvi_aci << 5 );
+        tmp94__ |= ( pSrc->unused3 << 7 );
+        *pBuf = tmp94__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
-        tmp96__ = 0U;
-        tmp96__ |= ( pSrc->acvi_min << 0 );
-        tmp96__ |= ( pSrc->acvi_max << 4 );
-        *pBuf = tmp96__;
+        tmp95__ = 0U;
+        tmp95__ |= ( pSrc->acvi_min << 0 );
+        tmp95__ |= ( pSrc->acvi_max << 4 );
+        *pBuf = tmp95__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
         frameshtons(pCtx, pBuf, pSrc->acvi_txoplimit, 0);
         *pnConsumed += 2;
         pBuf += 2;
-        tmp97__ = 0U;
-        tmp97__ |= ( pSrc->acvo_aifsn << 0 );
-        tmp97__ |= ( pSrc->acvo_acm << 4 );
-        tmp97__ |= ( pSrc->acvo_aci << 5 );
-        tmp97__ |= ( pSrc->unused4 << 7 );
-        *pBuf = tmp97__;
+        tmp96__ = 0U;
+        tmp96__ |= ( pSrc->acvo_aifsn << 0 );
+        tmp96__ |= ( pSrc->acvo_acm << 4 );
+        tmp96__ |= ( pSrc->acvo_aci << 5 );
+        tmp96__ |= ( pSrc->unused4 << 7 );
+        *pBuf = tmp96__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
-        tmp98__ = 0U;
-        tmp98__ |= ( pSrc->acvo_min << 0 );
-        tmp98__ |= ( pSrc->acvo_max << 4 );
-        *pBuf = tmp98__;
+        tmp97__ = 0U;
+        tmp97__ |= ( pSrc->acvo_min << 0 );
+        tmp97__ |= ( pSrc->acvo_max << 4 );
+        *pBuf = tmp97__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
@@ -25095,7 +25069,7 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U16 tmp99__;
+    tANI_U16 tmp98__;
     nNeeded  += 6;
     while ( pSrc->present )
     {
@@ -25110,10 +25084,10 @@
         frameshtons(pCtx, pBuf, pSrc->baPolicy, 0);
         *pnConsumed += 2;
         pBuf += 2;
-        tmp99__ = 0U;
-        tmp99__ |= ( pSrc->baBufferSize << 0 );
-        tmp99__ |= ( pSrc->rsvd << 12 );
-        frameshtons(pCtx, pBuf, tmp99__, 0);
+        tmp98__ = 0U;
+        tmp98__ |= ( pSrc->baBufferSize << 0 );
+        tmp98__ |= ( pSrc->rsvd << 12 );
+        frameshtons(pCtx, pBuf, tmp98__, 0);
         *pnConsumed += 2;
         // fieldsEndFlag  = 1 
         nBuf -=  2 ;
@@ -25532,11 +25506,11 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
+    tANI_U8 tmp99__;
     tANI_U8 tmp100__;
     tANI_U8 tmp101__;
     tANI_U8 tmp102__;
     tANI_U8 tmp103__;
-    tANI_U8 tmp104__;
     nNeeded  += 5;
     while ( pSrc->present )
     {
@@ -25545,58 +25519,58 @@
         ++pBuf; ++(*pnConsumed);
         pIeLen = pBuf;
         ++pBuf; ++(*pnConsumed);
+        tmp99__ = 0U;
+        tmp99__ |= ( pSrc->LinkMeasurement << 0 );
+        tmp99__ |= ( pSrc->NeighborRpt << 1 );
+        tmp99__ |= ( pSrc->parallel << 2 );
+        tmp99__ |= ( pSrc->repeated << 3 );
+        tmp99__ |= ( pSrc->BeaconPassive << 4 );
+        tmp99__ |= ( pSrc->BeaconActive << 5 );
+        tmp99__ |= ( pSrc->BeaconTable << 6 );
+        tmp99__ |= ( pSrc->BeaconRepCond << 7 );
+        *pBuf = tmp99__;
+        *pnConsumed += 1;
+        pBuf += 1;
+        nBuf -=  1 ;
         tmp100__ = 0U;
-        tmp100__ |= ( pSrc->LinkMeasurement << 0 );
-        tmp100__ |= ( pSrc->NeighborRpt << 1 );
-        tmp100__ |= ( pSrc->parallel << 2 );
-        tmp100__ |= ( pSrc->repeated << 3 );
-        tmp100__ |= ( pSrc->BeaconPassive << 4 );
-        tmp100__ |= ( pSrc->BeaconActive << 5 );
-        tmp100__ |= ( pSrc->BeaconTable << 6 );
-        tmp100__ |= ( pSrc->BeaconRepCond << 7 );
+        tmp100__ |= ( pSrc->FrameMeasurement << 0 );
+        tmp100__ |= ( pSrc->ChannelLoad << 1 );
+        tmp100__ |= ( pSrc->NoiseHistogram << 2 );
+        tmp100__ |= ( pSrc->statistics << 3 );
+        tmp100__ |= ( pSrc->LCIMeasurement << 4 );
+        tmp100__ |= ( pSrc->LCIAzimuth << 5 );
+        tmp100__ |= ( pSrc->TCMCapability << 6 );
+        tmp100__ |= ( pSrc->triggeredTCM << 7 );
         *pBuf = tmp100__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
         tmp101__ = 0U;
-        tmp101__ |= ( pSrc->FrameMeasurement << 0 );
-        tmp101__ |= ( pSrc->ChannelLoad << 1 );
-        tmp101__ |= ( pSrc->NoiseHistogram << 2 );
-        tmp101__ |= ( pSrc->statistics << 3 );
-        tmp101__ |= ( pSrc->LCIMeasurement << 4 );
-        tmp101__ |= ( pSrc->LCIAzimuth << 5 );
-        tmp101__ |= ( pSrc->TCMCapability << 6 );
-        tmp101__ |= ( pSrc->triggeredTCM << 7 );
+        tmp101__ |= ( pSrc->APChanReport << 0 );
+        tmp101__ |= ( pSrc->RRMMIBEnabled << 1 );
+        tmp101__ |= ( pSrc->operatingChanMax << 2 );
+        tmp101__ |= ( pSrc->nonOperatinChanMax << 5 );
         *pBuf = tmp101__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
         tmp102__ = 0U;
-        tmp102__ |= ( pSrc->APChanReport << 0 );
-        tmp102__ |= ( pSrc->RRMMIBEnabled << 1 );
-        tmp102__ |= ( pSrc->operatingChanMax << 2 );
-        tmp102__ |= ( pSrc->nonOperatinChanMax << 5 );
+        tmp102__ |= ( pSrc->MeasurementPilot << 0 );
+        tmp102__ |= ( pSrc->MeasurementPilotEnabled << 3 );
+        tmp102__ |= ( pSrc->NeighborTSFOffset << 4 );
+        tmp102__ |= ( pSrc->RCPIMeasurement << 5 );
+        tmp102__ |= ( pSrc->RSNIMeasurement << 6 );
+        tmp102__ |= ( pSrc->BssAvgAccessDelay << 7 );
         *pBuf = tmp102__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
         tmp103__ = 0U;
-        tmp103__ |= ( pSrc->MeasurementPilot << 0 );
-        tmp103__ |= ( pSrc->MeasurementPilotEnabled << 3 );
-        tmp103__ |= ( pSrc->NeighborTSFOffset << 4 );
-        tmp103__ |= ( pSrc->RCPIMeasurement << 5 );
-        tmp103__ |= ( pSrc->RSNIMeasurement << 6 );
-        tmp103__ |= ( pSrc->BssAvgAccessDelay << 7 );
+        tmp103__ |= ( pSrc->BSSAvailAdmission << 0 );
+        tmp103__ |= ( pSrc->AntennaInformation << 1 );
+        tmp103__ |= ( pSrc->reserved << 2 );
         *pBuf = tmp103__;
         *pnConsumed += 1;
-        pBuf += 1;
-        nBuf -=  1 ;
-        tmp104__ = 0U;
-        tmp104__ |= ( pSrc->BSSAvailAdmission << 0 );
-        tmp104__ |= ( pSrc->AntennaInformation << 1 );
-        tmp104__ |= ( pSrc->reserved << 2 );
-        *pBuf = tmp104__;
-        *pnConsumed += 1;
         // fieldsEndFlag  = 1 
         nBuf -=  1 ;
         break;
@@ -25678,7 +25652,7 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U16 tmp105__;
+    tANI_U16 tmp104__;
     nNeeded  += 14;
     while ( pSrc->present )
     {
@@ -25687,12 +25661,12 @@
         ++pBuf; ++(*pnConsumed);
         pIeLen = pBuf;
         ++pBuf; ++(*pnConsumed);
-        tmp105__ = 0U;
-        tmp105__ |= ( pSrc->aggregation << 0 );
-        tmp105__ |= ( pSrc->tsid << 1 );
-        tmp105__ |= ( pSrc->direction << 5 );
-        tmp105__ |= ( pSrc->reserved << 7 );
-        frameshtons(pCtx, pBuf, tmp105__, 0);
+        tmp104__ = 0U;
+        tmp104__ |= ( pSrc->aggregation << 0 );
+        tmp104__ |= ( pSrc->tsid << 1 );
+        tmp104__ |= ( pSrc->direction << 5 );
+        tmp104__ |= ( pSrc->reserved << 7 );
+        frameshtons(pCtx, pBuf, tmp104__, 0);
         *pnConsumed += 2;
         pBuf += 2;
         nBuf -=  2 ;
@@ -25892,9 +25866,9 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U16 tmp106__;
-    tANI_U8 tmp107__;
-    tANI_U16 tmp108__;
+    tANI_U16 tmp105__;
+    tANI_U8 tmp106__;
+    tANI_U16 tmp107__;
     nNeeded  += 55;
     while ( pSrc->present )
     {
@@ -25903,30 +25877,30 @@
         ++pBuf; ++(*pnConsumed);
         pIeLen = pBuf;
         ++pBuf; ++(*pnConsumed);
-        tmp106__ = 0U;
-        tmp106__ |= ( pSrc->traffic_type << 0 );
-        tmp106__ |= ( pSrc->tsid << 1 );
-        tmp106__ |= ( pSrc->direction << 5 );
-        tmp106__ |= ( pSrc->access_policy << 7 );
-        tmp106__ |= ( pSrc->aggregation << 9 );
-        tmp106__ |= ( pSrc->psb << 10 );
-        tmp106__ |= ( pSrc->user_priority << 11 );
-        tmp106__ |= ( pSrc->tsinfo_ack_pol << 14 );
-        frameshtons(pCtx, pBuf, tmp106__, 0);
+        tmp105__ = 0U;
+        tmp105__ |= ( pSrc->traffic_type << 0 );
+        tmp105__ |= ( pSrc->tsid << 1 );
+        tmp105__ |= ( pSrc->direction << 5 );
+        tmp105__ |= ( pSrc->access_policy << 7 );
+        tmp105__ |= ( pSrc->aggregation << 9 );
+        tmp105__ |= ( pSrc->psb << 10 );
+        tmp105__ |= ( pSrc->user_priority << 11 );
+        tmp105__ |= ( pSrc->tsinfo_ack_pol << 14 );
+        frameshtons(pCtx, pBuf, tmp105__, 0);
         *pnConsumed += 2;
         pBuf += 2;
         nBuf -=  2 ;
-        tmp107__ = 0U;
-        tmp107__ |= ( pSrc->schedule << 0 );
-        tmp107__ |= ( pSrc->unused << 1 );
-        *pBuf = tmp107__;
+        tmp106__ = 0U;
+        tmp106__ |= ( pSrc->schedule << 0 );
+        tmp106__ |= ( pSrc->unused << 1 );
+        *pBuf = tmp106__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
-        tmp108__ = 0U;
-        tmp108__ |= ( pSrc->size << 0 );
-        tmp108__ |= ( pSrc->fixed << 15 );
-        frameshtons(pCtx, pBuf, tmp108__, 0);
+        tmp107__ = 0U;
+        tmp107__ |= ( pSrc->size << 0 );
+        tmp107__ |= ( pSrc->fixed << 15 );
+        frameshtons(pCtx, pBuf, tmp107__, 0);
         *pnConsumed += 2;
         pBuf += 2;
         nBuf -=  2 ;
@@ -25991,7 +25965,7 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U16 tmp109__;
+    tANI_U16 tmp108__;
     nNeeded  += 15;
     while ( pSrc->present )
     {
@@ -26013,12 +25987,12 @@
         *pBuf = pSrc->version;
         *pnConsumed += 1;
         pBuf += 1;
-        tmp109__ = 0U;
-        tmp109__ |= ( pSrc->aggregation << 0 );
-        tmp109__ |= ( pSrc->tsid << 1 );
-        tmp109__ |= ( pSrc->direction << 5 );
-        tmp109__ |= ( pSrc->reserved << 7 );
-        frameshtons(pCtx, pBuf, tmp109__, 0);
+        tmp108__ = 0U;
+        tmp108__ |= ( pSrc->aggregation << 0 );
+        tmp108__ |= ( pSrc->tsid << 1 );
+        tmp108__ |= ( pSrc->direction << 5 );
+        tmp108__ |= ( pSrc->reserved << 7 );
+        frameshtons(pCtx, pBuf, tmp108__, 0);
         *pnConsumed += 2;
         pBuf += 2;
         nBuf -=  2 ;
@@ -26257,9 +26231,9 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U16 tmp110__;
-    tANI_U8 tmp111__;
-    tANI_U16 tmp112__;
+    tANI_U16 tmp109__;
+    tANI_U8 tmp110__;
+    tANI_U16 tmp111__;
     nNeeded  += 38;
     while ( pSrc->present )
     {
@@ -26281,30 +26255,30 @@
         *pBuf = pSrc->version;
         *pnConsumed += 1;
         pBuf += 1;
-        tmp110__ = 0U;
-        tmp110__ |= ( pSrc->traffic_type << 0 );
-        tmp110__ |= ( pSrc->tsid << 1 );
-        tmp110__ |= ( pSrc->direction << 5 );
-        tmp110__ |= ( pSrc->access_policy << 7 );
-        tmp110__ |= ( pSrc->aggregation << 9 );
-        tmp110__ |= ( pSrc->psb << 10 );
-        tmp110__ |= ( pSrc->user_priority << 11 );
-        tmp110__ |= ( pSrc->tsinfo_ack_pol << 14 );
-        frameshtons(pCtx, pBuf, tmp110__, 0);
+        tmp109__ = 0U;
+        tmp109__ |= ( pSrc->traffic_type << 0 );
+        tmp109__ |= ( pSrc->tsid << 1 );
+        tmp109__ |= ( pSrc->direction << 5 );
+        tmp109__ |= ( pSrc->access_policy << 7 );
+        tmp109__ |= ( pSrc->aggregation << 9 );
+        tmp109__ |= ( pSrc->psb << 10 );
+        tmp109__ |= ( pSrc->user_priority << 11 );
+        tmp109__ |= ( pSrc->tsinfo_ack_pol << 14 );
+        frameshtons(pCtx, pBuf, tmp109__, 0);
         *pnConsumed += 2;
         pBuf += 2;
         nBuf -=  2 ;
-        tmp111__ = 0U;
-        tmp111__ |= ( pSrc->tsinfo_rsvd << 0 );
-        tmp111__ |= ( pSrc->burst_size_defn << 7 );
-        *pBuf = tmp111__;
+        tmp110__ = 0U;
+        tmp110__ |= ( pSrc->tsinfo_rsvd << 0 );
+        tmp110__ |= ( pSrc->burst_size_defn << 7 );
+        *pBuf = tmp110__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
-        tmp112__ = 0U;
-        tmp112__ |= ( pSrc->size << 0 );
-        tmp112__ |= ( pSrc->fixed << 15 );
-        frameshtons(pCtx, pBuf, tmp112__, 0);
+        tmp111__ = 0U;
+        tmp111__ |= ( pSrc->size << 0 );
+        tmp111__ |= ( pSrc->fixed << 15 );
+        frameshtons(pCtx, pBuf, tmp111__, 0);
         *pnConsumed += 2;
         pBuf += 2;
         nBuf -=  2 ;
@@ -26449,7 +26423,7 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U8 tmp113__;
+    tANI_U8 tmp112__;
     nNeeded  += 2;
     while ( pSrc->present )
     {
@@ -26469,10 +26443,10 @@
         *pBuf = pSrc->mgmt_state;
         *pnConsumed += 1;
         pBuf += 1;
-        tmp113__ = 0U;
-        tmp113__ |= ( pSrc->mbssid_mask << 0 );
-        tmp113__ |= ( pSrc->reserved << 3 );
-        *pBuf = tmp113__;
+        tmp112__ = 0U;
+        tmp112__ |= ( pSrc->mbssid_mask << 0 );
+        tmp112__ |= ( pSrc->reserved << 3 );
+        *pBuf = tmp112__;
         *pnConsumed += 1;
         // fieldsEndFlag  = 1 
         nBuf -=  1 ;
@@ -26832,6 +26806,7 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
+    tANI_U8 tmp113__;
     tANI_U8 tmp114__;
     tANI_U8 tmp115__;
     tANI_U8 tmp116__;
@@ -26839,7 +26814,6 @@
     tANI_U8 tmp118__;
     tANI_U8 tmp119__;
     tANI_U8 tmp120__;
-    tANI_U8 tmp121__;
     nNeeded  += 18;
     while ( pSrc->present )
     {
@@ -26854,76 +26828,76 @@
         *pBuf = pSrc->reserved;
         *pnConsumed += 1;
         pBuf += 1;
-        tmp114__ = 0U;
-        tmp114__ |= ( pSrc->acbe_aifsn << 0 );
-        tmp114__ |= ( pSrc->acbe_acm << 4 );
-        tmp114__ |= ( pSrc->acbe_aci << 5 );
-        tmp114__ |= ( pSrc->unused1 << 7 );
-        *pBuf = tmp114__;
+        tmp113__ = 0U;
+        tmp113__ |= ( pSrc->acbe_aifsn << 0 );
+        tmp113__ |= ( pSrc->acbe_acm << 4 );
+        tmp113__ |= ( pSrc->acbe_aci << 5 );
+        tmp113__ |= ( pSrc->unused1 << 7 );
+        *pBuf = tmp113__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
-        tmp115__ = 0U;
-        tmp115__ |= ( pSrc->acbe_acwmin << 0 );
-        tmp115__ |= ( pSrc->acbe_acwmax << 4 );
-        *pBuf = tmp115__;
+        tmp114__ = 0U;
+        tmp114__ |= ( pSrc->acbe_acwmin << 0 );
+        tmp114__ |= ( pSrc->acbe_acwmax << 4 );
+        *pBuf = tmp114__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
         frameshtons(pCtx, pBuf, pSrc->acbe_txoplimit, 0);
         *pnConsumed += 2;
         pBuf += 2;
-        tmp116__ = 0U;
-        tmp116__ |= ( pSrc->acbk_aifsn << 0 );
-        tmp116__ |= ( pSrc->acbk_acm << 4 );
-        tmp116__ |= ( pSrc->acbk_aci << 5 );
-        tmp116__ |= ( pSrc->unused2 << 7 );
-        *pBuf = tmp116__;
+        tmp115__ = 0U;
+        tmp115__ |= ( pSrc->acbk_aifsn << 0 );
+        tmp115__ |= ( pSrc->acbk_acm << 4 );
+        tmp115__ |= ( pSrc->acbk_aci << 5 );
+        tmp115__ |= ( pSrc->unused2 << 7 );
+        *pBuf = tmp115__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
-        tmp117__ = 0U;
-        tmp117__ |= ( pSrc->acbk_acwmin << 0 );
-        tmp117__ |= ( pSrc->acbk_acwmax << 4 );
-        *pBuf = tmp117__;
+        tmp116__ = 0U;
+        tmp116__ |= ( pSrc->acbk_acwmin << 0 );
+        tmp116__ |= ( pSrc->acbk_acwmax << 4 );
+        *pBuf = tmp116__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
         frameshtons(pCtx, pBuf, pSrc->acbk_txoplimit, 0);
         *pnConsumed += 2;
         pBuf += 2;
-        tmp118__ = 0U;
-        tmp118__ |= ( pSrc->acvi_aifsn << 0 );
-        tmp118__ |= ( pSrc->acvi_acm << 4 );
-        tmp118__ |= ( pSrc->acvi_aci << 5 );
-        tmp118__ |= ( pSrc->unused3 << 7 );
-        *pBuf = tmp118__;
+        tmp117__ = 0U;
+        tmp117__ |= ( pSrc->acvi_aifsn << 0 );
+        tmp117__ |= ( pSrc->acvi_acm << 4 );
+        tmp117__ |= ( pSrc->acvi_aci << 5 );
+        tmp117__ |= ( pSrc->unused3 << 7 );
+        *pBuf = tmp117__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
-        tmp119__ = 0U;
-        tmp119__ |= ( pSrc->acvi_acwmin << 0 );
-        tmp119__ |= ( pSrc->acvi_acwmax << 4 );
-        *pBuf = tmp119__;
+        tmp118__ = 0U;
+        tmp118__ |= ( pSrc->acvi_acwmin << 0 );
+        tmp118__ |= ( pSrc->acvi_acwmax << 4 );
+        *pBuf = tmp118__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
         frameshtons(pCtx, pBuf, pSrc->acvi_txoplimit, 0);
         *pnConsumed += 2;
         pBuf += 2;
-        tmp120__ = 0U;
-        tmp120__ |= ( pSrc->acvo_aifsn << 0 );
-        tmp120__ |= ( pSrc->acvo_acm << 4 );
-        tmp120__ |= ( pSrc->acvo_aci << 5 );
-        tmp120__ |= ( pSrc->unused4 << 7 );
-        *pBuf = tmp120__;
+        tmp119__ = 0U;
+        tmp119__ |= ( pSrc->acvo_aifsn << 0 );
+        tmp119__ |= ( pSrc->acvo_acm << 4 );
+        tmp119__ |= ( pSrc->acvo_aci << 5 );
+        tmp119__ |= ( pSrc->unused4 << 7 );
+        *pBuf = tmp119__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
-        tmp121__ = 0U;
-        tmp121__ |= ( pSrc->acvo_acwmin << 0 );
-        tmp121__ |= ( pSrc->acvo_acwmax << 4 );
-        *pBuf = tmp121__;
+        tmp120__ = 0U;
+        tmp120__ |= ( pSrc->acvo_acwmin << 0 );
+        tmp120__ |= ( pSrc->acvo_acwmax << 4 );
+        *pBuf = tmp120__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
@@ -26949,7 +26923,7 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U8 tmp122__;
+    tANI_U8 tmp121__;
     nNeeded  += 1;
     while ( pSrc->present )
     {
@@ -26958,12 +26932,12 @@
         ++pBuf; ++(*pnConsumed);
         pIeLen = pBuf;
         ++pBuf; ++(*pnConsumed);
-        tmp122__ = 0U;
-        tmp122__ |= ( pSrc->non_erp_present << 0 );
-        tmp122__ |= ( pSrc->use_prot << 1 );
-        tmp122__ |= ( pSrc->barker_preamble << 2 );
-        tmp122__ |= ( pSrc->unused << 3 );
-        *pBuf = tmp122__;
+        tmp121__ = 0U;
+        tmp121__ |= ( pSrc->non_erp_present << 0 );
+        tmp121__ |= ( pSrc->use_prot << 1 );
+        tmp121__ |= ( pSrc->barker_preamble << 2 );
+        tmp121__ |= ( pSrc->unused << 3 );
+        *pBuf = tmp121__;
         *pnConsumed += 1;
         // fieldsEndFlag  = 1 
         nBuf -=  1 ;
@@ -26986,9 +26960,9 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U32 tmp123__;
+    tANI_U32 tmp122__;
+    tANI_U16 tmp123__;
     tANI_U16 tmp124__;
-    tANI_U16 tmp125__;
     nNeeded  += 8;
     while ( pSrc->present )
     {
@@ -26997,69 +26971,69 @@
         ++pBuf; ++(*pnConsumed);
         pIeLen = pBuf;
         ++pBuf; ++(*pnConsumed);
-        tmp123__ = 0U;
-        tmp123__ |= ( pSrc->bssCoexistMgmtSupport << 0 );
-        tmp123__ |= ( pSrc->reserved1 << 1 );
-        tmp123__ |= ( pSrc->extChanSwitch << 2 );
-        tmp123__ |= ( pSrc->reserved2 << 3 );
-        tmp123__ |= ( pSrc->psmpCap << 4 );
-        tmp123__ |= ( pSrc->reserved3 << 5 );
-        tmp123__ |= ( pSrc->spsmpCap << 6 );
-        tmp123__ |= ( pSrc->event << 7 );
-        tmp123__ |= ( pSrc->diagnostics << 8 );
-        tmp123__ |= ( pSrc->multiDiagnostics << 9 );
-        tmp123__ |= ( pSrc->locTracking << 10 );
-        tmp123__ |= ( pSrc->FMS << 11 );
-        tmp123__ |= ( pSrc->proxyARPService << 12 );
-        tmp123__ |= ( pSrc->coLocIntfReporting << 13 );
-        tmp123__ |= ( pSrc->civicLoc << 14 );
-        tmp123__ |= ( pSrc->geospatialLoc << 15 );
-        tmp123__ |= ( pSrc->TFS << 16 );
-        tmp123__ |= ( pSrc->wnmSleepMode << 17 );
-        tmp123__ |= ( pSrc->timBroadcast << 18 );
-        tmp123__ |= ( pSrc->bssTransition << 19 );
-        tmp123__ |= ( pSrc->qosTrafficCap << 20 );
-        tmp123__ |= ( pSrc->acStaCnt << 21 );
-        tmp123__ |= ( pSrc->multiBSSID << 22 );
-        tmp123__ |= ( pSrc->timingMeas << 23 );
-        tmp123__ |= ( pSrc->chanUsage << 24 );
-        tmp123__ |= ( pSrc->ssidList << 25 );
-        tmp123__ |= ( pSrc->DMS << 26 );
-        tmp123__ |= ( pSrc->UTCTSFOffset << 27 );
-        tmp123__ |= ( pSrc->TDLSPeerUAPSDBufferSTA << 28 );
-        tmp123__ |= ( pSrc->TDLSPeerPSMSupp << 29 );
-        tmp123__ |= ( pSrc->TDLSChannelSwitching << 30 );
-        tmp123__ |= ( pSrc->interworkingService << 31 );
-        frameshtonl(pCtx, pBuf, tmp123__, 0);
+        tmp122__ = 0U;
+        tmp122__ |= ( pSrc->bssCoexistMgmtSupport << 0 );
+        tmp122__ |= ( pSrc->reserved1 << 1 );
+        tmp122__ |= ( pSrc->extChanSwitch << 2 );
+        tmp122__ |= ( pSrc->reserved2 << 3 );
+        tmp122__ |= ( pSrc->psmpCap << 4 );
+        tmp122__ |= ( pSrc->reserved3 << 5 );
+        tmp122__ |= ( pSrc->spsmpCap << 6 );
+        tmp122__ |= ( pSrc->event << 7 );
+        tmp122__ |= ( pSrc->diagnostics << 8 );
+        tmp122__ |= ( pSrc->multiDiagnostics << 9 );
+        tmp122__ |= ( pSrc->locTracking << 10 );
+        tmp122__ |= ( pSrc->FMS << 11 );
+        tmp122__ |= ( pSrc->proxyARPService << 12 );
+        tmp122__ |= ( pSrc->coLocIntfReporting << 13 );
+        tmp122__ |= ( pSrc->civicLoc << 14 );
+        tmp122__ |= ( pSrc->geospatialLoc << 15 );
+        tmp122__ |= ( pSrc->TFS << 16 );
+        tmp122__ |= ( pSrc->wnmSleepMode << 17 );
+        tmp122__ |= ( pSrc->timBroadcast << 18 );
+        tmp122__ |= ( pSrc->bssTransition << 19 );
+        tmp122__ |= ( pSrc->qosTrafficCap << 20 );
+        tmp122__ |= ( pSrc->acStaCnt << 21 );
+        tmp122__ |= ( pSrc->multiBSSID << 22 );
+        tmp122__ |= ( pSrc->timingMeas << 23 );
+        tmp122__ |= ( pSrc->chanUsage << 24 );
+        tmp122__ |= ( pSrc->ssidList << 25 );
+        tmp122__ |= ( pSrc->DMS << 26 );
+        tmp122__ |= ( pSrc->UTCTSFOffset << 27 );
+        tmp122__ |= ( pSrc->TDLSPeerUAPSDBufferSTA << 28 );
+        tmp122__ |= ( pSrc->TDLSPeerPSMSupp << 29 );
+        tmp122__ |= ( pSrc->TDLSChannelSwitching << 30 );
+        tmp122__ |= ( pSrc->interworkingService << 31 );
+        frameshtonl(pCtx, pBuf, tmp122__, 0);
         *pnConsumed += 4;
         pBuf += 4;
         nBuf -=  4 ;
-        tmp124__ = 0U;
-        tmp124__ |= ( pSrc->qosMap << 0 );
-        tmp124__ |= ( pSrc->EBR << 1 );
-        tmp124__ |= ( pSrc->sspnInterface << 2 );
-        tmp124__ |= ( pSrc->reserved4 << 3 );
-        tmp124__ |= ( pSrc->msgCFCap << 4 );
-        tmp124__ |= ( pSrc->TDLSSupport << 5 );
-        tmp124__ |= ( pSrc->TDLSProhibited << 6 );
-        tmp124__ |= ( pSrc->TDLSChanSwitProhibited << 7 );
-        tmp124__ |= ( pSrc->rejectUnadmittedTraffic << 8 );
-        tmp124__ |= ( pSrc->serviceIntervalGranularity << 9 );
-        tmp124__ |= ( pSrc->identifierLoc << 12 );
-        tmp124__ |= ( pSrc->uapsdCoexistence << 13 );
-        tmp124__ |= ( pSrc->wnmNotification << 14 );
-        tmp124__ |= ( pSrc->reserved5 << 15 );
-        frameshtons(pCtx, pBuf, tmp124__, 0);
+        tmp123__ = 0U;
+        tmp123__ |= ( pSrc->qosMap << 0 );
+        tmp123__ |= ( pSrc->EBR << 1 );
+        tmp123__ |= ( pSrc->sspnInterface << 2 );
+        tmp123__ |= ( pSrc->reserved4 << 3 );
+        tmp123__ |= ( pSrc->msgCFCap << 4 );
+        tmp123__ |= ( pSrc->TDLSSupport << 5 );
+        tmp123__ |= ( pSrc->TDLSProhibited << 6 );
+        tmp123__ |= ( pSrc->TDLSChanSwitProhibited << 7 );
+        tmp123__ |= ( pSrc->rejectUnadmittedTraffic << 8 );
+        tmp123__ |= ( pSrc->serviceIntervalGranularity << 9 );
+        tmp123__ |= ( pSrc->identifierLoc << 12 );
+        tmp123__ |= ( pSrc->uapsdCoexistence << 13 );
+        tmp123__ |= ( pSrc->wnmNotification << 14 );
+        tmp123__ |= ( pSrc->reserved5 << 15 );
+        frameshtons(pCtx, pBuf, tmp123__, 0);
         *pnConsumed += 2;
         pBuf += 2;
         nBuf -=  2 ;
-        tmp125__ = 0U;
-        tmp125__ |= ( pSrc->UTF8SSID << 0 );
-        tmp125__ |= ( pSrc->reserved6 << 1 );
-        tmp125__ |= ( pSrc->TDLSWiderBW << 13 );
-        tmp125__ |= ( pSrc->operModeNotification << 14 );
-        tmp125__ |= ( pSrc->reserved7 << 15 );
-        frameshtons(pCtx, pBuf, tmp125__, 0);
+        tmp124__ = 0U;
+        tmp124__ |= ( pSrc->UTF8SSID << 0 );
+        tmp124__ |= ( pSrc->reserved6 << 1 );
+        tmp124__ |= ( pSrc->TDLSWiderBW << 13 );
+        tmp124__ |= ( pSrc->operModeNotification << 14 );
+        tmp124__ |= ( pSrc->reserved7 << 15 );
+        frameshtons(pCtx, pBuf, tmp124__, 0);
         *pnConsumed += 2;
         // fieldsEndFlag  = 1 
         nBuf -=  2 ;
@@ -27256,7 +27230,7 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U16 tmp126__;
+    tANI_U16 tmp125__;
     tANI_U32 status = DOT11F_PARSE_SUCCESS;
     status = dot11fGetPackedIEFTInfo(pCtx, pSrc, &nNeeded);
     if ( ! DOT11F_SUCCEEDED( status ) ) return status;
@@ -27267,10 +27241,10 @@
         ++pBuf; --nBuf; ++(*pnConsumed);
         pIeLen = pBuf;
         ++pBuf; --nBuf; ++(*pnConsumed);
-        tmp126__ = 0U;
-        tmp126__ |= ( pSrc->reserved << 0 );
-        tmp126__ |= ( pSrc->IECount << 8 );
-        frameshtons(pCtx, pBuf, tmp126__, 0);
+        tmp125__ = 0U;
+        tmp125__ |= ( pSrc->reserved << 0 );
+        tmp125__ |= ( pSrc->IECount << 8 );
+        frameshtons(pCtx, pBuf, tmp125__, 0);
         *pnConsumed += 2;
         pBuf += 2;
         nBuf -=  2 ;
@@ -27342,11 +27316,11 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U16 tmp127__;
-    tANI_U8 tmp128__;
-    tANI_U16 tmp129__;
-    tANI_U32 tmp130__;
-    tANI_U8 tmp131__;
+    tANI_U16 tmp126__;
+    tANI_U8 tmp127__;
+    tANI_U16 tmp128__;
+    tANI_U32 tmp129__;
+    tANI_U8 tmp130__;
     nNeeded  +=  (pSrc->num_rsvd + 26);
     while ( pSrc->present )
     {
@@ -27355,77 +27329,77 @@
         ++pBuf; ++(*pnConsumed);
         pIeLen = pBuf;
         ++pBuf; ++(*pnConsumed);
-        tmp127__ = 0U;
-        tmp127__ |= ( pSrc->advCodingCap << 0 );
-        tmp127__ |= ( pSrc->supportedChannelWidthSet << 1 );
-        tmp127__ |= ( pSrc->mimoPowerSave << 2 );
-        tmp127__ |= ( pSrc->greenField << 4 );
-        tmp127__ |= ( pSrc->shortGI20MHz << 5 );
-        tmp127__ |= ( pSrc->shortGI40MHz << 6 );
-        tmp127__ |= ( pSrc->txSTBC << 7 );
-        tmp127__ |= ( pSrc->rxSTBC << 8 );
-        tmp127__ |= ( pSrc->delayedBA << 10 );
-        tmp127__ |= ( pSrc->maximalAMSDUsize << 11 );
-        tmp127__ |= ( pSrc->dsssCckMode40MHz << 12 );
-        tmp127__ |= ( pSrc->psmp << 13 );
-        tmp127__ |= ( pSrc->stbcControlFrame << 14 );
-        tmp127__ |= ( pSrc->lsigTXOPProtection << 15 );
-        frameshtons(pCtx, pBuf, tmp127__, 0);
+        tmp126__ = 0U;
+        tmp126__ |= ( pSrc->advCodingCap << 0 );
+        tmp126__ |= ( pSrc->supportedChannelWidthSet << 1 );
+        tmp126__ |= ( pSrc->mimoPowerSave << 2 );
+        tmp126__ |= ( pSrc->greenField << 4 );
+        tmp126__ |= ( pSrc->shortGI20MHz << 5 );
+        tmp126__ |= ( pSrc->shortGI40MHz << 6 );
+        tmp126__ |= ( pSrc->txSTBC << 7 );
+        tmp126__ |= ( pSrc->rxSTBC << 8 );
+        tmp126__ |= ( pSrc->delayedBA << 10 );
+        tmp126__ |= ( pSrc->maximalAMSDUsize << 11 );
+        tmp126__ |= ( pSrc->dsssCckMode40MHz << 12 );
+        tmp126__ |= ( pSrc->psmp << 13 );
+        tmp126__ |= ( pSrc->stbcControlFrame << 14 );
+        tmp126__ |= ( pSrc->lsigTXOPProtection << 15 );
+        frameshtons(pCtx, pBuf, tmp126__, 0);
         *pnConsumed += 2;
         pBuf += 2;
         nBuf -=  2 ;
-        tmp128__ = 0U;
-        tmp128__ |= ( pSrc->maxRxAMPDUFactor << 0 );
-        tmp128__ |= ( pSrc->mpduDensity << 2 );
-        tmp128__ |= ( pSrc->reserved1 << 5 );
-        *pBuf = tmp128__;
+        tmp127__ = 0U;
+        tmp127__ |= ( pSrc->maxRxAMPDUFactor << 0 );
+        tmp127__ |= ( pSrc->mpduDensity << 2 );
+        tmp127__ |= ( pSrc->reserved1 << 5 );
+        *pBuf = tmp127__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
         DOT11F_MEMCPY(pCtx, pBuf, pSrc->supportedMCSSet, 16);
         *pnConsumed += 16;
         pBuf += 16;
-        tmp129__ = 0U;
-        tmp129__ |= ( pSrc->pco << 0 );
-        tmp129__ |= ( pSrc->transitionTime << 1 );
-        tmp129__ |= ( pSrc->reserved2 << 3 );
-        tmp129__ |= ( pSrc->mcsFeedback << 8 );
-        tmp129__ |= ( pSrc->reserved3 << 10 );
-        frameshtons(pCtx, pBuf, tmp129__, 0);
+        tmp128__ = 0U;
+        tmp128__ |= ( pSrc->pco << 0 );
+        tmp128__ |= ( pSrc->transitionTime << 1 );
+        tmp128__ |= ( pSrc->reserved2 << 3 );
+        tmp128__ |= ( pSrc->mcsFeedback << 8 );
+        tmp128__ |= ( pSrc->reserved3 << 10 );
+        frameshtons(pCtx, pBuf, tmp128__, 0);
         *pnConsumed += 2;
         pBuf += 2;
         nBuf -=  2 ;
-        tmp130__ = 0U;
-        tmp130__ |= ( pSrc->txBF << 0 );
-        tmp130__ |= ( pSrc->rxStaggeredSounding << 1 );
-        tmp130__ |= ( pSrc->txStaggeredSounding << 2 );
-        tmp130__ |= ( pSrc->rxZLF << 3 );
-        tmp130__ |= ( pSrc->txZLF << 4 );
-        tmp130__ |= ( pSrc->implicitTxBF << 5 );
-        tmp130__ |= ( pSrc->calibration << 6 );
-        tmp130__ |= ( pSrc->explicitCSITxBF << 8 );
-        tmp130__ |= ( pSrc->explicitUncompressedSteeringMatrix << 9 );
-        tmp130__ |= ( pSrc->explicitBFCSIFeedback << 10 );
-        tmp130__ |= ( pSrc->explicitUncompressedSteeringMatrixFeedback << 13 );
-        tmp130__ |= ( pSrc->explicitCompressedSteeringMatrixFeedback << 16 );
-        tmp130__ |= ( pSrc->csiNumBFAntennae << 19 );
-        tmp130__ |= ( pSrc->uncompressedSteeringMatrixBFAntennae << 21 );
-        tmp130__ |= ( pSrc->compressedSteeringMatrixBFAntennae << 23 );
-        tmp130__ |= ( pSrc->reserved4 << 25 );
-        frameshtonl(pCtx, pBuf, tmp130__, 0);
+        tmp129__ = 0U;
+        tmp129__ |= ( pSrc->txBF << 0 );
+        tmp129__ |= ( pSrc->rxStaggeredSounding << 1 );
+        tmp129__ |= ( pSrc->txStaggeredSounding << 2 );
+        tmp129__ |= ( pSrc->rxZLF << 3 );
+        tmp129__ |= ( pSrc->txZLF << 4 );
+        tmp129__ |= ( pSrc->implicitTxBF << 5 );
+        tmp129__ |= ( pSrc->calibration << 6 );
+        tmp129__ |= ( pSrc->explicitCSITxBF << 8 );
+        tmp129__ |= ( pSrc->explicitUncompressedSteeringMatrix << 9 );
+        tmp129__ |= ( pSrc->explicitBFCSIFeedback << 10 );
+        tmp129__ |= ( pSrc->explicitUncompressedSteeringMatrixFeedback << 13 );
+        tmp129__ |= ( pSrc->explicitCompressedSteeringMatrixFeedback << 16 );
+        tmp129__ |= ( pSrc->csiNumBFAntennae << 19 );
+        tmp129__ |= ( pSrc->uncompressedSteeringMatrixBFAntennae << 21 );
+        tmp129__ |= ( pSrc->compressedSteeringMatrixBFAntennae << 23 );
+        tmp129__ |= ( pSrc->reserved4 << 25 );
+        frameshtonl(pCtx, pBuf, tmp129__, 0);
         *pnConsumed += 4;
         pBuf += 4;
         nBuf -=  4 ;
-        tmp131__ = 0U;
-        tmp131__ |= ( pSrc->antennaSelection << 0 );
-        tmp131__ |= ( pSrc->explicitCSIFeedbackTx << 1 );
-        tmp131__ |= ( pSrc->antennaIndicesFeedbackTx << 2 );
-        tmp131__ |= ( pSrc->explicitCSIFeedback << 3 );
-        tmp131__ |= ( pSrc->antennaIndicesFeedback << 4 );
-        tmp131__ |= ( pSrc->rxAS << 5 );
-        tmp131__ |= ( pSrc->txSoundingPPDUs << 6 );
-        tmp131__ |= ( pSrc->reserved5 << 7 );
-        *pBuf = tmp131__;
+        tmp130__ = 0U;
+        tmp130__ |= ( pSrc->antennaSelection << 0 );
+        tmp130__ |= ( pSrc->explicitCSIFeedbackTx << 1 );
+        tmp130__ |= ( pSrc->antennaIndicesFeedbackTx << 2 );
+        tmp130__ |= ( pSrc->explicitCSIFeedback << 3 );
+        tmp130__ |= ( pSrc->antennaIndicesFeedback << 4 );
+        tmp130__ |= ( pSrc->rxAS << 5 );
+        tmp130__ |= ( pSrc->txSoundingPPDUs << 6 );
+        tmp130__ |= ( pSrc->reserved5 << 7 );
+        *pBuf = tmp130__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
@@ -27451,9 +27425,9 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U8 tmp132__;
+    tANI_U8 tmp131__;
+    tANI_U16 tmp132__;
     tANI_U16 tmp133__;
-    tANI_U16 tmp134__;
     nNeeded  +=  (pSrc->num_rsvd + 22);
     while ( pSrc->present )
     {
@@ -27465,35 +27439,35 @@
         *pBuf = pSrc->primaryChannel;
         *pnConsumed += 1;
         pBuf += 1;
-        tmp132__ = 0U;
-        tmp132__ |= ( pSrc->secondaryChannelOffset << 0 );
-        tmp132__ |= ( pSrc->recommendedTxWidthSet << 2 );
-        tmp132__ |= ( pSrc->rifsMode << 3 );
-        tmp132__ |= ( pSrc->controlledAccessOnly << 4 );
-        tmp132__ |= ( pSrc->serviceIntervalGranularity << 5 );
-        *pBuf = tmp132__;
+        tmp131__ = 0U;
+        tmp131__ |= ( pSrc->secondaryChannelOffset << 0 );
+        tmp131__ |= ( pSrc->recommendedTxWidthSet << 2 );
+        tmp131__ |= ( pSrc->rifsMode << 3 );
+        tmp131__ |= ( pSrc->controlledAccessOnly << 4 );
+        tmp131__ |= ( pSrc->serviceIntervalGranularity << 5 );
+        *pBuf = tmp131__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
-        tmp133__ = 0U;
-        tmp133__ |= ( pSrc->opMode << 0 );
-        tmp133__ |= ( pSrc->nonGFDevicesPresent << 2 );
-        tmp133__ |= ( pSrc->transmitBurstLimit << 3 );
-        tmp133__ |= ( pSrc->obssNonHTStaPresent << 4 );
-        tmp133__ |= ( pSrc->reserved << 5 );
-        frameshtons(pCtx, pBuf, tmp133__, 0);
+        tmp132__ = 0U;
+        tmp132__ |= ( pSrc->opMode << 0 );
+        tmp132__ |= ( pSrc->nonGFDevicesPresent << 2 );
+        tmp132__ |= ( pSrc->transmitBurstLimit << 3 );
+        tmp132__ |= ( pSrc->obssNonHTStaPresent << 4 );
+        tmp132__ |= ( pSrc->reserved << 5 );
+        frameshtons(pCtx, pBuf, tmp132__, 0);
         *pnConsumed += 2;
         pBuf += 2;
         nBuf -=  2 ;
-        tmp134__ = 0U;
-        tmp134__ |= ( pSrc->basicSTBCMCS << 0 );
-        tmp134__ |= ( pSrc->dualCTSProtection << 7 );
-        tmp134__ |= ( pSrc->secondaryBeacon << 8 );
-        tmp134__ |= ( pSrc->lsigTXOPProtectionFullSupport << 9 );
-        tmp134__ |= ( pSrc->pcoActive << 10 );
-        tmp134__ |= ( pSrc->pcoPhase << 11 );
-        tmp134__ |= ( pSrc->reserved2 << 12 );
-        frameshtons(pCtx, pBuf, tmp134__, 0);
+        tmp133__ = 0U;
+        tmp133__ |= ( pSrc->basicSTBCMCS << 0 );
+        tmp133__ |= ( pSrc->dualCTSProtection << 7 );
+        tmp133__ |= ( pSrc->secondaryBeacon << 8 );
+        tmp133__ |= ( pSrc->lsigTXOPProtectionFullSupport << 9 );
+        tmp133__ |= ( pSrc->pcoActive << 10 );
+        tmp133__ |= ( pSrc->pcoPhase << 11 );
+        tmp133__ |= ( pSrc->reserved2 << 12 );
+        frameshtons(pCtx, pBuf, tmp133__, 0);
         *pnConsumed += 2;
         pBuf += 2;
         nBuf -=  2 ;
@@ -27588,9 +27562,9 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
+    tANI_U8 tmp134__;
     tANI_U8 tmp135__;
     tANI_U8 tmp136__;
-    tANI_U8 tmp137__;
     tANI_U32 status = DOT11F_PARSE_SUCCESS;
     status = dot11fGetPackedIEMeasurementReport(pCtx, pSrc, &nNeeded);
     if ( ! DOT11F_SUCCEEDED( status ) ) return status;
@@ -27604,12 +27578,12 @@
         *pBuf = pSrc->token;
         *pnConsumed += 1;
         pBuf += 1;
-        tmp135__ = 0U;
-        tmp135__ |= ( pSrc->late << 0 );
-        tmp135__ |= ( pSrc->incapable << 1 );
-        tmp135__ |= ( pSrc->refused << 2 );
-        tmp135__ |= ( pSrc->unused << 3 );
-        *pBuf = tmp135__;
+        tmp134__ = 0U;
+        tmp134__ |= ( pSrc->late << 0 );
+        tmp134__ |= ( pSrc->incapable << 1 );
+        tmp134__ |= ( pSrc->refused << 2 );
+        tmp134__ |= ( pSrc->unused << 3 );
+        *pBuf = tmp134__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
@@ -27629,14 +27603,14 @@
                     frameshtons(pCtx, pBuf, pSrc->report.Basic.meas_duration, 0);
                     *pnConsumed += 2;
                     pBuf += 2;
-                    tmp136__ = 0U;
-                    tmp136__ |= ( pSrc->report.Basic.bss << 0 );
-                    tmp136__ |= ( pSrc->report.Basic.ofdm_preamble << 1 );
-                    tmp136__ |= ( pSrc->report.Basic.unid_signal << 2 );
-                    tmp136__ |= ( pSrc->report.Basic.rader << 3 );
-                    tmp136__ |= ( pSrc->report.Basic.unmeasured << 4 );
-                    tmp136__ |= ( pSrc->report.Basic.unused << 5 );
-                    *pBuf = tmp136__;
+                    tmp135__ = 0U;
+                    tmp135__ |= ( pSrc->report.Basic.bss << 0 );
+                    tmp135__ |= ( pSrc->report.Basic.ofdm_preamble << 1 );
+                    tmp135__ |= ( pSrc->report.Basic.unid_signal << 2 );
+                    tmp135__ |= ( pSrc->report.Basic.rader << 3 );
+                    tmp135__ |= ( pSrc->report.Basic.unmeasured << 4 );
+                    tmp135__ |= ( pSrc->report.Basic.unused << 5 );
+                    *pBuf = tmp135__;
                     *pnConsumed += 1;
                     // fieldsEndFlag  = 1 
                     nBuf -=  1 ;
@@ -27703,10 +27677,10 @@
                     frameshtons(pCtx, pBuf, pSrc->report.Beacon.meas_duration, 0);
                     *pnConsumed += 2;
                     pBuf += 2;
-                    tmp137__ = 0U;
-                    tmp137__ |= ( pSrc->report.Beacon.condensed_PHY << 0 );
-                    tmp137__ |= ( pSrc->report.Beacon.reported_frame_type << 7 );
-                    *pBuf = tmp137__;
+                    tmp136__ = 0U;
+                    tmp136__ |= ( pSrc->report.Beacon.condensed_PHY << 0 );
+                    tmp136__ |= ( pSrc->report.Beacon.reported_frame_type << 7 );
+                    *pBuf = tmp136__;
                     *pnConsumed += 1;
                     pBuf += 1;
                     nBuf -=  1 ;
@@ -27755,7 +27729,7 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U8 tmp138__;
+    tANI_U8 tmp137__;
     tANI_U32 status = DOT11F_PARSE_SUCCESS;
     status = dot11fGetPackedIEMeasurementRequest(pCtx, pSrc, &nNeeded);
     if ( ! DOT11F_SUCCEEDED( status ) ) return status;
@@ -27769,14 +27743,14 @@
         *pBuf = pSrc->measurement_token;
         *pnConsumed += 1;
         pBuf += 1;
-        tmp138__ = 0U;
-        tmp138__ |= ( pSrc->parallel << 0 );
-        tmp138__ |= ( pSrc->enable << 1 );
-        tmp138__ |= ( pSrc->request << 2 );
-        tmp138__ |= ( pSrc->report << 3 );
-        tmp138__ |= ( pSrc->durationMandatory << 4 );
-        tmp138__ |= ( pSrc->unused << 5 );
-        *pBuf = tmp138__;
+        tmp137__ = 0U;
+        tmp137__ |= ( pSrc->parallel << 0 );
+        tmp137__ |= ( pSrc->enable << 1 );
+        tmp137__ |= ( pSrc->request << 2 );
+        tmp137__ |= ( pSrc->report << 3 );
+        tmp137__ |= ( pSrc->durationMandatory << 4 );
+        tmp137__ |= ( pSrc->unused << 5 );
+        *pBuf = tmp137__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
@@ -27865,7 +27839,7 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U8 tmp139__;
+    tANI_U8 tmp138__;
     nNeeded  += 3;
     while ( pSrc->present )
     {
@@ -27877,11 +27851,11 @@
         frameshtons(pCtx, pBuf, pSrc->MDID, 0);
         *pnConsumed += 2;
         pBuf += 2;
-        tmp139__ = 0U;
-        tmp139__ |= ( pSrc->overDSCap << 0 );
-        tmp139__ |= ( pSrc->resourceReqCap << 1 );
-        tmp139__ |= ( pSrc->reserved << 2 );
-        *pBuf = tmp139__;
+        tmp138__ = 0U;
+        tmp138__ |= ( pSrc->overDSCap << 0 );
+        tmp138__ |= ( pSrc->resourceReqCap << 1 );
+        tmp138__ |= ( pSrc->reserved << 2 );
+        *pBuf = tmp138__;
         *pnConsumed += 1;
         // fieldsEndFlag  = 1 
         nBuf -=  1 ;
@@ -27904,8 +27878,8 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
+    tANI_U8 tmp139__;
     tANI_U8 tmp140__;
-    tANI_U8 tmp141__;
     tANI_U32 status = DOT11F_PARSE_SUCCESS;
     status = dot11fGetPackedIENeighborReport(pCtx, pSrc, &nNeeded);
     if ( ! DOT11F_SUCCEEDED( status ) ) return status;
@@ -27919,24 +27893,24 @@
         DOT11F_MEMCPY(pCtx, pBuf, pSrc->bssid, 6);
         *pnConsumed += 6;
         pBuf += 6;
-        tmp140__ = 0U;
-        tmp140__ |= ( pSrc->APReachability << 0 );
-        tmp140__ |= ( pSrc->Security << 2 );
-        tmp140__ |= ( pSrc->KeyScope << 3 );
-        tmp140__ |= ( pSrc->SpecMgmtCap << 4 );
-        tmp140__ |= ( pSrc->QosCap << 5 );
-        tmp140__ |= ( pSrc->apsd << 6 );
-        tmp140__ |= ( pSrc->rrm << 7 );
-        *pBuf = tmp140__;
+        tmp139__ = 0U;
+        tmp139__ |= ( pSrc->APReachability << 0 );
+        tmp139__ |= ( pSrc->Security << 2 );
+        tmp139__ |= ( pSrc->KeyScope << 3 );
+        tmp139__ |= ( pSrc->SpecMgmtCap << 4 );
+        tmp139__ |= ( pSrc->QosCap << 5 );
+        tmp139__ |= ( pSrc->apsd << 6 );
+        tmp139__ |= ( pSrc->rrm << 7 );
+        *pBuf = tmp139__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
-        tmp141__ = 0U;
-        tmp141__ |= ( pSrc->DelayedBA << 0 );
-        tmp141__ |= ( pSrc->ImmBA << 1 );
-        tmp141__ |= ( pSrc->MobilityDomain << 2 );
-        tmp141__ |= ( pSrc->reserved << 3 );
-        *pBuf = tmp141__;
+        tmp140__ = 0U;
+        tmp140__ |= ( pSrc->DelayedBA << 0 );
+        tmp140__ |= ( pSrc->ImmBA << 1 );
+        tmp140__ |= ( pSrc->MobilityDomain << 2 );
+        tmp140__ |= ( pSrc->reserved << 3 );
+        *pBuf = tmp140__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
@@ -27978,7 +27952,7 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U8 tmp142__;
+    tANI_U8 tmp141__;
     nNeeded  += 1;
     while ( pSrc->present )
     {
@@ -27987,12 +27961,12 @@
         ++pBuf; ++(*pnConsumed);
         pIeLen = pBuf;
         ++pBuf; ++(*pnConsumed);
-        tmp142__ = 0U;
-        tmp142__ |= ( pSrc->chanWidth << 0 );
-        tmp142__ |= ( pSrc->reserved << 2 );
-        tmp142__ |= ( pSrc->rxNSS << 4 );
-        tmp142__ |= ( pSrc->rxNSSType << 7 );
-        *pBuf = tmp142__;
+        tmp141__ = 0U;
+        tmp141__ |= ( pSrc->chanWidth << 0 );
+        tmp141__ |= ( pSrc->reserved << 2 );
+        tmp141__ |= ( pSrc->rxNSS << 4 );
+        tmp141__ |= ( pSrc->rxNSSType << 7 );
+        *pBuf = tmp141__;
         *pnConsumed += 1;
         // fieldsEndFlag  = 1 
         nBuf -=  1 ;
@@ -28946,7 +28920,7 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U8 tmp143__;
+    tANI_U8 tmp142__;
     nNeeded  += 1;
     while ( pSrc->present )
     {
@@ -28955,13 +28929,13 @@
         ++pBuf; ++(*pnConsumed);
         pIeLen = pBuf;
         ++pBuf; ++(*pnConsumed);
-        tmp143__ = 0U;
-        tmp143__ |= ( pSrc->ac_bk_traffic_aval << 0 );
-        tmp143__ |= ( pSrc->ac_be_traffic_aval << 1 );
-        tmp143__ |= ( pSrc->ac_vi_traffic_aval << 2 );
-        tmp143__ |= ( pSrc->ac_vo_traffic_aval << 3 );
-        tmp143__ |= ( pSrc->reserved << 4 );
-        *pBuf = tmp143__;
+        tmp142__ = 0U;
+        tmp142__ |= ( pSrc->ac_bk_traffic_aval << 0 );
+        tmp142__ |= ( pSrc->ac_be_traffic_aval << 1 );
+        tmp142__ |= ( pSrc->ac_vi_traffic_aval << 2 );
+        tmp142__ |= ( pSrc->ac_vo_traffic_aval << 3 );
+        tmp142__ |= ( pSrc->reserved << 4 );
+        *pBuf = tmp142__;
         *pnConsumed += 1;
         // fieldsEndFlag  = 1 
         nBuf -=  1 ;
@@ -29083,7 +29057,7 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U8 tmp144__;
+    tANI_U8 tmp143__;
     nNeeded  += 1;
     while ( pSrc->present )
     {
@@ -29092,13 +29066,13 @@
         ++pBuf; ++(*pnConsumed);
         pIeLen = pBuf;
         ++pBuf; ++(*pnConsumed);
-        tmp144__ = 0U;
-        tmp144__ |= ( pSrc->reserved << 0 );
-        tmp144__ |= ( pSrc->txopreq << 1 );
-        tmp144__ |= ( pSrc->qreq << 2 );
-        tmp144__ |= ( pSrc->qack << 3 );
-        tmp144__ |= ( pSrc->count << 4 );
-        *pBuf = tmp144__;
+        tmp143__ = 0U;
+        tmp143__ |= ( pSrc->reserved << 0 );
+        tmp143__ |= ( pSrc->txopreq << 1 );
+        tmp143__ |= ( pSrc->qreq << 2 );
+        tmp143__ |= ( pSrc->qack << 3 );
+        tmp143__ |= ( pSrc->count << 4 );
+        *pBuf = tmp143__;
         *pnConsumed += 1;
         // fieldsEndFlag  = 1 
         nBuf -=  1 ;
@@ -29121,7 +29095,7 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U8 tmp145__;
+    tANI_U8 tmp144__;
     nNeeded  += 1;
     while ( pSrc->present )
     {
@@ -29130,15 +29104,15 @@
         ++pBuf; ++(*pnConsumed);
         pIeLen = pBuf;
         ++pBuf; ++(*pnConsumed);
-        tmp145__ = 0U;
-        tmp145__ |= ( pSrc->more_data_ack << 0 );
-        tmp145__ |= ( pSrc->max_sp_length << 1 );
-        tmp145__ |= ( pSrc->qack << 3 );
-        tmp145__ |= ( pSrc->acbe_uapsd << 4 );
-        tmp145__ |= ( pSrc->acbk_uapsd << 5 );
-        tmp145__ |= ( pSrc->acvi_uapsd << 6 );
-        tmp145__ |= ( pSrc->acvo_uapsd << 7 );
-        *pBuf = tmp145__;
+        tmp144__ = 0U;
+        tmp144__ |= ( pSrc->more_data_ack << 0 );
+        tmp144__ |= ( pSrc->max_sp_length << 1 );
+        tmp144__ |= ( pSrc->qack << 3 );
+        tmp144__ |= ( pSrc->acbe_uapsd << 4 );
+        tmp144__ |= ( pSrc->acbk_uapsd << 5 );
+        tmp144__ |= ( pSrc->acvi_uapsd << 6 );
+        tmp144__ |= ( pSrc->acvo_uapsd << 7 );
+        *pBuf = tmp144__;
         *pnConsumed += 1;
         // fieldsEndFlag  = 1 
         nBuf -=  1 ;
@@ -29256,7 +29230,6 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U16 tmp146__;
     tANI_U32 status = DOT11F_PARSE_SUCCESS;
     status = dot11fGetPackedIERSN(pCtx, pSrc, &nNeeded);
     if ( ! DOT11F_SUCCEEDED( status ) ) return status;
@@ -29291,16 +29264,12 @@
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->akm_suites ), ( pSrc->akm_suite_count * 4 ));
         *pnConsumed += ( pSrc->akm_suite_count * 4 );
         pBuf += ( pSrc->akm_suite_count * 4 );
-        tmp146__ = 0U;
-        tmp146__ |= ( pSrc->preauth << 0 );
-        tmp146__ |= ( pSrc->no_pwise << 1 );
-        tmp146__ |= ( pSrc->PTKSA_replay_counter << 2 );
-        tmp146__ |= ( pSrc->GTKSA_replay_counter << 4 );
-        tmp146__ |= ( pSrc->reserved << 6 );
-        frameshtons(pCtx, pBuf, tmp146__, 0);
-        *pnConsumed += 2;
-        pBuf += 2;
-        nBuf -=  2 ;
+        if ( pSrc->RSN_Cap )        {
+            DOT11F_MEMCPY(pCtx, pBuf, pSrc->RSN_Cap, 2);
+            *pnConsumed += 2;
+            pBuf += 2;
+        }
+        else break;
         if ( pSrc->pmkid_count )        {
             frameshtons(pCtx, pBuf, pSrc->pmkid_count, 0);
             *pnConsumed += 2;
@@ -29548,9 +29517,9 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U32 tmp147__;
-    tANI_U16 tmp148__;
-    tANI_U16 tmp149__;
+    tANI_U32 tmp145__;
+    tANI_U16 tmp146__;
+    tANI_U16 tmp147__;
     nNeeded  += 12;
     while ( pSrc->present )
     {
@@ -29559,48 +29528,48 @@
         ++pBuf; ++(*pnConsumed);
         pIeLen = pBuf;
         ++pBuf; ++(*pnConsumed);
-        tmp147__ = 0U;
-        tmp147__ |= ( pSrc->maxMPDULen << 0 );
-        tmp147__ |= ( pSrc->supportedChannelWidthSet << 2 );
-        tmp147__ |= ( pSrc->ldpcCodingCap << 4 );
-        tmp147__ |= ( pSrc->shortGI80MHz << 5 );
-        tmp147__ |= ( pSrc->shortGI160and80plus80MHz << 6 );
-        tmp147__ |= ( pSrc->txSTBC << 7 );
-        tmp147__ |= ( pSrc->rxSTBC << 8 );
-        tmp147__ |= ( pSrc->suBeamFormerCap << 11 );
-        tmp147__ |= ( pSrc->suBeamformeeCap << 12 );
-        tmp147__ |= ( pSrc->csnofBeamformerAntSup << 13 );
-        tmp147__ |= ( pSrc->numSoundingDim << 16 );
-        tmp147__ |= ( pSrc->muBeamformerCap << 19 );
-        tmp147__ |= ( pSrc->muBeamformeeCap << 20 );
-        tmp147__ |= ( pSrc->vhtTXOPPS << 21 );
-        tmp147__ |= ( pSrc->htcVHTCap << 22 );
-        tmp147__ |= ( pSrc->maxAMPDULenExp << 23 );
-        tmp147__ |= ( pSrc->vhtLinkAdaptCap << 26 );
-        tmp147__ |= ( pSrc->rxAntPattern << 28 );
-        tmp147__ |= ( pSrc->txAntPattern << 29 );
-        tmp147__ |= ( pSrc->reserved1 << 30 );
-        frameshtonl(pCtx, pBuf, tmp147__, 0);
+        tmp145__ = 0U;
+        tmp145__ |= ( pSrc->maxMPDULen << 0 );
+        tmp145__ |= ( pSrc->supportedChannelWidthSet << 2 );
+        tmp145__ |= ( pSrc->ldpcCodingCap << 4 );
+        tmp145__ |= ( pSrc->shortGI80MHz << 5 );
+        tmp145__ |= ( pSrc->shortGI160and80plus80MHz << 6 );
+        tmp145__ |= ( pSrc->txSTBC << 7 );
+        tmp145__ |= ( pSrc->rxSTBC << 8 );
+        tmp145__ |= ( pSrc->suBeamFormerCap << 11 );
+        tmp145__ |= ( pSrc->suBeamformeeCap << 12 );
+        tmp145__ |= ( pSrc->csnofBeamformerAntSup << 13 );
+        tmp145__ |= ( pSrc->numSoundingDim << 16 );
+        tmp145__ |= ( pSrc->muBeamformerCap << 19 );
+        tmp145__ |= ( pSrc->muBeamformeeCap << 20 );
+        tmp145__ |= ( pSrc->vhtTXOPPS << 21 );
+        tmp145__ |= ( pSrc->htcVHTCap << 22 );
+        tmp145__ |= ( pSrc->maxAMPDULenExp << 23 );
+        tmp145__ |= ( pSrc->vhtLinkAdaptCap << 26 );
+        tmp145__ |= ( pSrc->rxAntPattern << 28 );
+        tmp145__ |= ( pSrc->txAntPattern << 29 );
+        tmp145__ |= ( pSrc->reserved1 << 30 );
+        frameshtonl(pCtx, pBuf, tmp145__, 0);
         *pnConsumed += 4;
         pBuf += 4;
         nBuf -=  4 ;
         frameshtons(pCtx, pBuf, pSrc->rxMCSMap, 0);
         *pnConsumed += 2;
         pBuf += 2;
-        tmp148__ = 0U;
-        tmp148__ |= ( pSrc->rxHighSupDataRate << 0 );
-        tmp148__ |= ( pSrc->reserved2 << 13 );
-        frameshtons(pCtx, pBuf, tmp148__, 0);
+        tmp146__ = 0U;
+        tmp146__ |= ( pSrc->rxHighSupDataRate << 0 );
+        tmp146__ |= ( pSrc->reserved2 << 13 );
+        frameshtons(pCtx, pBuf, tmp146__, 0);
         *pnConsumed += 2;
         pBuf += 2;
         nBuf -=  2 ;
         frameshtons(pCtx, pBuf, pSrc->txMCSMap, 0);
         *pnConsumed += 2;
         pBuf += 2;
-        tmp149__ = 0U;
-        tmp149__ |= ( pSrc->txSupDataRate << 0 );
-        tmp149__ |= ( pSrc->reserved3 << 13 );
-        frameshtons(pCtx, pBuf, tmp149__, 0);
+        tmp147__ = 0U;
+        tmp147__ |= ( pSrc->txSupDataRate << 0 );
+        tmp147__ |= ( pSrc->reserved3 << 13 );
+        frameshtons(pCtx, pBuf, tmp147__, 0);
         *pnConsumed += 2;
         // fieldsEndFlag  = 1 
         nBuf -=  2 ;
@@ -29704,7 +29673,7 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U16 tmp150__;
+    tANI_U16 tmp148__;
     tANI_U32 status = DOT11F_PARSE_SUCCESS;
     status = dot11fGetPackedIEWAPI(pCtx, pSrc, &nNeeded);
     if ( ! DOT11F_SUCCEEDED( status ) ) return status;
@@ -29733,10 +29702,10 @@
         DOT11F_MEMCPY(pCtx, pBuf, pSrc->multicast_cipher_suite, 4);
         *pnConsumed += 4;
         pBuf += 4;
-        tmp150__ = 0U;
-        tmp150__ |= ( pSrc->preauth << 0 );
-        tmp150__ |= ( pSrc->reserved << 1 );
-        frameshtons(pCtx, pBuf, tmp150__, 0);
+        tmp148__ = 0U;
+        tmp148__ |= ( pSrc->preauth << 0 );
+        tmp148__ |= ( pSrc->reserved << 1 );
+        frameshtons(pCtx, pBuf, tmp148__, 0);
         *pnConsumed += 2;
         pBuf += 2;
         nBuf -=  2 ;
@@ -29879,7 +29848,7 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U8 tmp151__;
+    tANI_U8 tmp149__;
     nNeeded  += 2;
     while ( pSrc->present )
     {
@@ -29901,13 +29870,13 @@
         *pBuf = pSrc->version;
         *pnConsumed += 1;
         pBuf += 1;
-        tmp151__ = 0U;
-        tmp151__ |= ( pSrc->reserved << 0 );
-        tmp151__ |= ( pSrc->qack << 4 );
-        tmp151__ |= ( pSrc->queue_request << 5 );
-        tmp151__ |= ( pSrc->txop_request << 6 );
-        tmp151__ |= ( pSrc->more_ack << 7 );
-        *pBuf = tmp151__;
+        tmp149__ = 0U;
+        tmp149__ |= ( pSrc->reserved << 0 );
+        tmp149__ |= ( pSrc->qack << 4 );
+        tmp149__ |= ( pSrc->queue_request << 5 );
+        tmp149__ |= ( pSrc->txop_request << 6 );
+        tmp149__ |= ( pSrc->more_ack << 7 );
+        *pBuf = tmp149__;
         *pnConsumed += 1;
         // fieldsEndFlag  = 1 
         nBuf -=  1 ;
@@ -29930,7 +29899,7 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U8 tmp152__;
+    tANI_U8 tmp150__;
     nNeeded  += 2;
     while ( pSrc->present )
     {
@@ -29952,11 +29921,11 @@
         *pBuf = pSrc->version;
         *pnConsumed += 1;
         pBuf += 1;
-        tmp152__ = 0U;
-        tmp152__ |= ( pSrc->param_set_count << 0 );
-        tmp152__ |= ( pSrc->reserved << 4 );
-        tmp152__ |= ( pSrc->uapsd << 7 );
-        *pBuf = tmp152__;
+        tmp150__ = 0U;
+        tmp150__ |= ( pSrc->param_set_count << 0 );
+        tmp150__ |= ( pSrc->reserved << 4 );
+        tmp150__ |= ( pSrc->uapsd << 7 );
+        *pBuf = tmp150__;
         *pnConsumed += 1;
         // fieldsEndFlag  = 1 
         nBuf -=  1 ;
@@ -29979,7 +29948,7 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
-    tANI_U8 tmp153__;
+    tANI_U8 tmp151__;
     nNeeded  += 2;
     while ( pSrc->present )
     {
@@ -30001,15 +29970,15 @@
         *pBuf = pSrc->version;
         *pnConsumed += 1;
         pBuf += 1;
-        tmp153__ = 0U;
-        tmp153__ |= ( pSrc->acvo_uapsd << 0 );
-        tmp153__ |= ( pSrc->acvi_uapsd << 1 );
-        tmp153__ |= ( pSrc->acbk_uapsd << 2 );
-        tmp153__ |= ( pSrc->acbe_uapsd << 3 );
-        tmp153__ |= ( pSrc->reserved1 << 4 );
-        tmp153__ |= ( pSrc->max_sp_length << 5 );
-        tmp153__ |= ( pSrc->reserved2 << 7 );
-        *pBuf = tmp153__;
+        tmp151__ = 0U;
+        tmp151__ |= ( pSrc->acvo_uapsd << 0 );
+        tmp151__ |= ( pSrc->acvi_uapsd << 1 );
+        tmp151__ |= ( pSrc->acbk_uapsd << 2 );
+        tmp151__ |= ( pSrc->acbe_uapsd << 3 );
+        tmp151__ |= ( pSrc->reserved1 << 4 );
+        tmp151__ |= ( pSrc->max_sp_length << 5 );
+        tmp151__ |= ( pSrc->reserved2 << 7 );
+        *pBuf = tmp151__;
         *pnConsumed += 1;
         // fieldsEndFlag  = 1 
         nBuf -=  1 ;
@@ -30032,14 +30001,14 @@
     tANI_U8* pIeLen = 0;
     tANI_U32 nConsumedOnEntry = *pnConsumed;
     tANI_U32 nNeeded = 0U;
+    tANI_U8 tmp152__;
+    tANI_U8 tmp153__;
     tANI_U8 tmp154__;
     tANI_U8 tmp155__;
     tANI_U8 tmp156__;
     tANI_U8 tmp157__;
     tANI_U8 tmp158__;
     tANI_U8 tmp159__;
-    tANI_U8 tmp160__;
-    tANI_U8 tmp161__;
     nNeeded  += 19;
     while ( pSrc->present )
     {
@@ -30067,76 +30036,76 @@
         *pBuf = pSrc->reserved2;
         *pnConsumed += 1;
         pBuf += 1;
-        tmp154__ = 0U;
-        tmp154__ |= ( pSrc->acbe_aifsn << 0 );
-        tmp154__ |= ( pSrc->acbe_acm << 4 );
-        tmp154__ |= ( pSrc->acbe_aci << 5 );
-        tmp154__ |= ( pSrc->unused1 << 7 );
-        *pBuf = tmp154__;
+        tmp152__ = 0U;
+        tmp152__ |= ( pSrc->acbe_aifsn << 0 );
+        tmp152__ |= ( pSrc->acbe_acm << 4 );
+        tmp152__ |= ( pSrc->acbe_aci << 5 );
+        tmp152__ |= ( pSrc->unused1 << 7 );
+        *pBuf = tmp152__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
-        tmp155__ = 0U;
-        tmp155__ |= ( pSrc->acbe_acwmin << 0 );
-        tmp155__ |= ( pSrc->acbe_acwmax << 4 );
-        *pBuf = tmp155__;
+        tmp153__ = 0U;
+        tmp153__ |= ( pSrc->acbe_acwmin << 0 );
+        tmp153__ |= ( pSrc->acbe_acwmax << 4 );
+        *pBuf = tmp153__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
         frameshtons(pCtx, pBuf, pSrc->acbe_txoplimit, 0);
         *pnConsumed += 2;
         pBuf += 2;
-        tmp156__ = 0U;
-        tmp156__ |= ( pSrc->acbk_aifsn << 0 );
-        tmp156__ |= ( pSrc->acbk_acm << 4 );
-        tmp156__ |= ( pSrc->acbk_aci << 5 );
-        tmp156__ |= ( pSrc->unused2 << 7 );
-        *pBuf = tmp156__;
+        tmp154__ = 0U;
+        tmp154__ |= ( pSrc->acbk_aifsn << 0 );
+        tmp154__ |= ( pSrc->acbk_acm << 4 );
+        tmp154__ |= ( pSrc->acbk_aci << 5 );
+        tmp154__ |= ( pSrc->unused2 << 7 );
+        *pBuf = tmp154__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
-        tmp157__ = 0U;
-        tmp157__ |= ( pSrc->acbk_acwmin << 0 );
-        tmp157__ |= ( pSrc->acbk_acwmax << 4 );
-        *pBuf = tmp157__;
+        tmp155__ = 0U;
+        tmp155__ |= ( pSrc->acbk_acwmin << 0 );
+        tmp155__ |= ( pSrc->acbk_acwmax << 4 );
+        *pBuf = tmp155__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
         frameshtons(pCtx, pBuf, pSrc->acbk_txoplimit, 0);
         *pnConsumed += 2;
         pBuf += 2;
-        tmp158__ = 0U;
-        tmp158__ |= ( pSrc->acvi_aifsn << 0 );
-        tmp158__ |= ( pSrc->acvi_acm << 4 );
-        tmp158__ |= ( pSrc->acvi_aci << 5 );
-        tmp158__ |= ( pSrc->unused3 << 7 );
-        *pBuf = tmp158__;
+        tmp156__ = 0U;
+        tmp156__ |= ( pSrc->acvi_aifsn << 0 );
+        tmp156__ |= ( pSrc->acvi_acm << 4 );
+        tmp156__ |= ( pSrc->acvi_aci << 5 );
+        tmp156__ |= ( pSrc->unused3 << 7 );
+        *pBuf = tmp156__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
-        tmp159__ = 0U;
-        tmp159__ |= ( pSrc->acvi_acwmin << 0 );
-        tmp159__ |= ( pSrc->acvi_acwmax << 4 );
-        *pBuf = tmp159__;
+        tmp157__ = 0U;
+        tmp157__ |= ( pSrc->acvi_acwmin << 0 );
+        tmp157__ |= ( pSrc->acvi_acwmax << 4 );
+        *pBuf = tmp157__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
         frameshtons(pCtx, pBuf, pSrc->acvi_txoplimit, 0);
         *pnConsumed += 2;
         pBuf += 2;
-        tmp160__ = 0U;
-        tmp160__ |= ( pSrc->acvo_aifsn << 0 );
-        tmp160__ |= ( pSrc->acvo_acm << 4 );
-        tmp160__ |= ( pSrc->acvo_aci << 5 );
-        tmp160__ |= ( pSrc->unused4 << 7 );
-        *pBuf = tmp160__;
+        tmp158__ = 0U;
+        tmp158__ |= ( pSrc->acvo_aifsn << 0 );
+        tmp158__ |= ( pSrc->acvo_acm << 4 );
+        tmp158__ |= ( pSrc->acvo_aci << 5 );
+        tmp158__ |= ( pSrc->unused4 << 7 );
+        *pBuf = tmp158__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
-        tmp161__ = 0U;
-        tmp161__ |= ( pSrc->acvo_acwmin << 0 );
-        tmp161__ |= ( pSrc->acvo_acwmax << 4 );
-        *pBuf = tmp161__;
+        tmp159__ = 0U;
+        tmp159__ |= ( pSrc->acvo_acwmin << 0 );
+        tmp159__ |= ( pSrc->acvo_acwmax << 4 );
+        *pBuf = tmp159__;
         *pnConsumed += 1;
         pBuf += 1;
         nBuf -=  1 ;
@@ -33593,11 +33562,7 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* ) pFrm->RSN.pwise_cipher_suites, 4 * pFrm->RSN.pwise_cipher_suite_count);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* )&pFrm->RSN.akm_suite_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* ) pFrm->RSN.akm_suites, 4 * pFrm->RSN.akm_suite_count);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("preauth (1): %d\n"), pFrm->RSN.preauth);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("no_pwise (1): %d\n"), pFrm->RSN.no_pwise);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("PTKSA_replay_counter (2): %d\n"), pFrm->RSN.PTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("GTKSA_replay_counter (2): %d\n"), pFrm->RSN.GTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("reserved (10): %d\n"), pFrm->RSN.reserved);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* )&pFrm->RSN.RSN_Cap, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* )&pFrm->RSN.pmkid_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* ) pFrm->RSN.pmkid, 16 * pFrm->RSN.pmkid_count);
         }
@@ -34644,11 +34609,7 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* ) pFrm->RSN.pwise_cipher_suites, 4 * pFrm->RSN.pwise_cipher_suite_count);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* )&pFrm->RSN.akm_suite_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* ) pFrm->RSN.akm_suites, 4 * pFrm->RSN.akm_suite_count);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("preauth (1): %d\n"), pFrm->RSN.preauth);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("no_pwise (1): %d\n"), pFrm->RSN.no_pwise);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("PTKSA_replay_counter (2): %d\n"), pFrm->RSN.PTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("GTKSA_replay_counter (2): %d\n"), pFrm->RSN.GTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("reserved (10): %d\n"), pFrm->RSN.reserved);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* )&pFrm->RSN.RSN_Cap, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* )&pFrm->RSN.pmkid_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* ) pFrm->RSN.pmkid, 16 * pFrm->RSN.pmkid_count);
         }
@@ -35691,11 +35652,7 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* ) pFrm->RSN.pwise_cipher_suites, 4 * pFrm->RSN.pwise_cipher_suite_count);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* )&pFrm->RSN.akm_suite_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* ) pFrm->RSN.akm_suites, 4 * pFrm->RSN.akm_suite_count);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("preauth (1): %d\n"), pFrm->RSN.preauth);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("no_pwise (1): %d\n"), pFrm->RSN.no_pwise);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("PTKSA_replay_counter (2): %d\n"), pFrm->RSN.PTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("GTKSA_replay_counter (2): %d\n"), pFrm->RSN.GTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("reserved (10): %d\n"), pFrm->RSN.reserved);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* )&pFrm->RSN.RSN_Cap, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* )&pFrm->RSN.pmkid_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* ) pFrm->RSN.pmkid, 16 * pFrm->RSN.pmkid_count);
         }
@@ -38850,11 +38807,7 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* ) pFrm->RSN.pwise_cipher_suites, 4 * pFrm->RSN.pwise_cipher_suite_count);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* )&pFrm->RSN.akm_suite_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* ) pFrm->RSN.akm_suites, 4 * pFrm->RSN.akm_suite_count);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("preauth (1): %d\n"), pFrm->RSN.preauth);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("no_pwise (1): %d\n"), pFrm->RSN.no_pwise);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("PTKSA_replay_counter (2): %d\n"), pFrm->RSN.PTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("GTKSA_replay_counter (2): %d\n"), pFrm->RSN.GTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("reserved (10): %d\n"), pFrm->RSN.reserved);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* )&pFrm->RSN.RSN_Cap, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* )&pFrm->RSN.pmkid_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* ) pFrm->RSN.pmkid, 16 * pFrm->RSN.pmkid_count);
         }
@@ -42358,11 +42311,7 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), ( tANI_U8* ) pFrm->RSN.pwise_cipher_suites, 4 * pFrm->RSN.pwise_cipher_suite_count);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), ( tANI_U8* )&pFrm->RSN.akm_suite_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), ( tANI_U8* ) pFrm->RSN.akm_suites, 4 * pFrm->RSN.akm_suite_count);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), FRFL("preauth (1): %d\n"), pFrm->RSN.preauth);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), FRFL("no_pwise (1): %d\n"), pFrm->RSN.no_pwise);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), FRFL("PTKSA_replay_counter (2): %d\n"), pFrm->RSN.PTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), FRFL("GTKSA_replay_counter (2): %d\n"), pFrm->RSN.GTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), FRFL("reserved (10): %d\n"), pFrm->RSN.reserved);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), ( tANI_U8* )&pFrm->RSN.RSN_Cap, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), ( tANI_U8* )&pFrm->RSN.pmkid_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), ( tANI_U8* ) pFrm->RSN.pmkid, 16 * pFrm->RSN.pmkid_count);
         }
@@ -42698,11 +42647,7 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), ( tANI_U8* ) pFrm->RSN.pwise_cipher_suites, 4 * pFrm->RSN.pwise_cipher_suite_count);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), ( tANI_U8* )&pFrm->RSN.akm_suite_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), ( tANI_U8* ) pFrm->RSN.akm_suites, 4 * pFrm->RSN.akm_suite_count);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), FRFL("preauth (1): %d\n"), pFrm->RSN.preauth);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), FRFL("no_pwise (1): %d\n"), pFrm->RSN.no_pwise);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), FRFL("PTKSA_replay_counter (2): %d\n"), pFrm->RSN.PTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), FRFL("GTKSA_replay_counter (2): %d\n"), pFrm->RSN.GTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), FRFL("reserved (10): %d\n"), pFrm->RSN.reserved);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), ( tANI_U8* )&pFrm->RSN.RSN_Cap, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), ( tANI_U8* )&pFrm->RSN.pmkid_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), ( tANI_U8* ) pFrm->RSN.pmkid, 16 * pFrm->RSN.pmkid_count);
         }
@@ -42953,11 +42898,7 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), ( tANI_U8* ) pFrm->RSN.pwise_cipher_suites, 4 * pFrm->RSN.pwise_cipher_suite_count);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), ( tANI_U8* )&pFrm->RSN.akm_suite_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), ( tANI_U8* ) pFrm->RSN.akm_suites, 4 * pFrm->RSN.akm_suite_count);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), FRFL("preauth (1): %d\n"), pFrm->RSN.preauth);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), FRFL("no_pwise (1): %d\n"), pFrm->RSN.no_pwise);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), FRFL("PTKSA_replay_counter (2): %d\n"), pFrm->RSN.PTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), FRFL("GTKSA_replay_counter (2): %d\n"), pFrm->RSN.GTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), FRFL("reserved (10): %d\n"), pFrm->RSN.reserved);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), ( tANI_U8* )&pFrm->RSN.RSN_Cap, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), ( tANI_U8* )&pFrm->RSN.pmkid_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), ( tANI_U8* ) pFrm->RSN.pmkid, 16 * pFrm->RSN.pmkid_count);
         }
@@ -43285,11 +43226,7 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), ( tANI_U8* ) pFrm->RSN.pwise_cipher_suites, 4 * pFrm->RSN.pwise_cipher_suite_count);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), ( tANI_U8* )&pFrm->RSN.akm_suite_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), ( tANI_U8* ) pFrm->RSN.akm_suites, 4 * pFrm->RSN.akm_suite_count);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), FRFL("preauth (1): %d\n"), pFrm->RSN.preauth);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), FRFL("no_pwise (1): %d\n"), pFrm->RSN.no_pwise);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), FRFL("PTKSA_replay_counter (2): %d\n"), pFrm->RSN.PTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), FRFL("GTKSA_replay_counter (2): %d\n"), pFrm->RSN.GTKSA_replay_counter);
-            FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), FRFL("reserved (10): %d\n"), pFrm->RSN.reserved);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), ( tANI_U8* )&pFrm->RSN.RSN_Cap, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), ( tANI_U8* )&pFrm->RSN.pmkid_count, 2);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), ( tANI_U8* ) pFrm->RSN.pmkid, 16 * pFrm->RSN.pmkid_count);
         }
