wlan: Complete PMF (802.11w) support for Soft AP

These changes complete Protected Management Frames (802.11w)
support for the device in Soft AP mode.

The changes allow support for this feature without any changes
needed in hostapd or the cfg80211/nl80211 interface.  Support
is completely done within the driver.

Change-Id: I3bb0ab9ae4eed0ff02f5d0d1d570b0886278d1e0
CRs-Fixed: 505740
diff --git a/CORE/HDD/inc/wlan_hdd_hostapd.h b/CORE/HDD/inc/wlan_hdd_hostapd.h
index 4af9006..0a433d5 100644
--- a/CORE/HDD/inc/wlan_hdd_hostapd.h
+++ b/CORE/HDD/inc/wlan_hdd_hostapd.h
@@ -81,10 +81,12 @@
 void hdd_softap_sta_disassoc(hdd_adapter_t*,v_U8_t*);
 void hdd_softap_tkip_mic_fail_counter_measure(hdd_adapter_t*,v_BOOL_t);
 int hdd_softap_unpackIE( tHalHandle halHandle,
-                eCsrEncryptionType *pEncryptType, 
-                eCsrEncryptionType *mcEncryptType, 
-                eCsrAuthType *pAuthType, 
-                u_int16_t gen_ie_len, 
+                eCsrEncryptionType *pEncryptType,
+                eCsrEncryptionType *mcEncryptType,
+                eCsrAuthType *pAuthType,
+                v_BOOL_t *pMFPCapable,
+                v_BOOL_t *pMFPRequired,
+                u_int16_t gen_ie_len,
                 u_int8_t *gen_ie );
 
 VOS_STATUS hdd_hostapd_SAPEventCB( tpSap_Event pSapEvent, v_PVOID_t usrDataForCallback);
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index 6578dce..76a115b 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -959,13 +959,6 @@
     sme_RegisterMgmtFrame(hHal, pAdapter->sessionId, type,
                          (v_U8_t*)WNM_BSS_ACTION_FRAME,
                                   WNM_BSS_ACTION_FRAME_SIZE );
-
-#ifdef WLAN_FEATURE_11W
-    /* SA Query Response Action Frame */
-    sme_RegisterMgmtFrame(hHal, pAdapter->sessionId, type,
-                         (v_U8_t*)SA_QUERY_FRAME_RSP,
-                                  SA_QUERY_FRAME_RSP_SIZE );
-#endif /* WLAN_FEATURE_11W */
 }
 
 void wlan_hdd_cfg80211_pre_voss_stop(hdd_adapter_t* pAdapter)
@@ -1868,6 +1861,8 @@
     struct qc_mac_acl_entry *acl_entry = NULL;
     v_SINT_t i;
     hdd_context_t *pHddCtx = WLAN_HDD_GET_CTX(pHostapdAdapter);
+    v_BOOL_t MFPCapable;
+    v_BOOL_t MFPRequired;
 
     ENTER();
 
@@ -2004,6 +1999,8 @@
                         &RSNEncryptType,
                         &mcRSNEncryptType,
                         &RSNAuthType,
+                        &MFPCapable,
+                        &MFPRequired,
                         pConfig->pRSNWPAReqIE[1]+2,
                         pConfig->pRSNWPAReqIE );
 
@@ -2043,6 +2040,8 @@
                           &RSNEncryptType,
                           &mcRSNEncryptType,
                           &RSNAuthType,
+                          &MFPCapable,
+                          &MFPRequired,
                           pConfig->pRSNWPAReqIE[1]+2,
                           pConfig->pRSNWPAReqIE );
 
@@ -2197,6 +2196,13 @@
     pConfig->obssProtEnabled =
            (WLAN_HDD_GET_CTX(pHostapdAdapter))->cfg_ini->apOBSSProtEnabled;
 
+#ifdef WLAN_FEATURE_11W
+    pConfig->mfpCapable = MFPCapable;
+    pConfig->mfpRequired = MFPRequired;
+    hddLog(LOGW, FL("Soft AP MFP capable %d, MFP required %d\n"),
+           pConfig->mfpCapable, pConfig->mfpRequired);
+#endif
+
     hddLog(LOGW, FL("SOftAP macaddress : "MAC_ADDRESS_STR),
                  MAC_ADDR_ARRAY(pHostapdAdapter->macAddressCurrent.bytes));
     hddLog(LOGW,FL("ssid =%s, beaconint=%d, channel=%d"),
diff --git a/CORE/HDD/src/wlan_hdd_hostapd.c b/CORE/HDD/src/wlan_hdd_hostapd.c
index ca00d1c..0218433 100644
--- a/CORE/HDD/src/wlan_hdd_hostapd.c
+++ b/CORE/HDD/src/wlan_hdd_hostapd.c
@@ -981,12 +981,15 @@
     }
     return VOS_STATUS_SUCCESS;
 }
-int hdd_softap_unpackIE( 
+
+int hdd_softap_unpackIE(
                 tHalHandle halHandle,
-                eCsrEncryptionType *pEncryptType, 
-                eCsrEncryptionType *mcEncryptType, 
-                eCsrAuthType *pAuthType, 
-                u_int16_t gen_ie_len, 
+                eCsrEncryptionType *pEncryptType,
+                eCsrEncryptionType *mcEncryptType,
+                eCsrAuthType *pAuthType,
+                v_BOOL_t *pMFPCapable,
+                v_BOOL_t *pMFPRequired,
+                u_int16_t gen_ie_len,
                 u_int8_t *gen_ie )
 {
     tDot11fIERSN dot11RSNIE; 
@@ -1038,6 +1041,8 @@
         //dot11RSNIE.gp_cipher_suite_count 
         *mcEncryptType = hdd_TranslateRSNToCsrEncryptionType(dot11RSNIE.gp_cipher_suite);                     
         // Set the PMKSA ID Cache for this interface
+        *pMFPCapable = 0 != (dot11RSNIE.RSN_Cap[0] & 0x80);
+        *pMFPRequired = 0 != (dot11RSNIE.RSN_Cap[0] & 0x40);
           
         // Calling csrRoamSetPMKIDCache to configure the PMKIDs into the cache
     } else 
@@ -1070,6 +1075,8 @@
         *pEncryptType = hdd_TranslateWPAToCsrEncryptionType(dot11WPAIE.unicast_ciphers[0]);                       
         //dot11WPAIE.unicast_cipher_count 
         *mcEncryptType = hdd_TranslateWPAToCsrEncryptionType(dot11WPAIE.multicast_cipher);                       
+        *pMFPCapable = VOS_FALSE;
+        *pMFPRequired = VOS_FALSE;
     } 
     else 
     { 
@@ -1907,6 +1914,8 @@
     eCsrAuthType RSNAuthType;
     eCsrEncryptionType RSNEncryptType;
     eCsrEncryptionType mcRSNEncryptType;
+    v_BOOL_t MFPCapable;
+    v_BOOL_t MFPRequired;
 
     pHostapdState = WLAN_HDD_GET_HOSTAP_STATE_PTR(pHostapdAdapter);
     pCommitConfig = (s_CommitConfig_t *)extra;
@@ -1973,6 +1982,8 @@
                                   &RSNEncryptType,
                                   &mcRSNEncryptType,
                                   &RSNAuthType,
+                                  &MFPCapable,
+                                  &MFPRequired,
                                   pConfig->pRSNWPAReqIE[1]+2,
                                   pConfig->pRSNWPAReqIE );
              
diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h
index 3d72e2d..9d41bf9 100644
--- a/CORE/MAC/inc/sirApi.h
+++ b/CORE/MAC/inc/sirApi.h
@@ -657,6 +657,11 @@
     tSirMacRateSet          operationalRateSet;// Has 11a or 11b rates
     tSirMacRateSet          extendedRateSet;    // Has 11g rates
 
+#ifdef WLAN_FEATURE_11W
+    tANI_BOOLEAN            pmfCapable;
+    tANI_BOOLEAN            pmfRequired;
+#endif
+
 } tSirSmeStartBssReq, *tpSirSmeStartBssReq;
 
 #define GET_IE_LEN_IN_BSS(lenInBss) ( lenInBss + sizeof(lenInBss) - \
diff --git a/CORE/MAC/inc/sirMacProtDef.h b/CORE/MAC/inc/sirMacProtDef.h
index ef3f2b0..e67039c 100644
--- a/CORE/MAC/inc/sirMacProtDef.h
+++ b/CORE/MAC/inc/sirMacProtDef.h
@@ -678,7 +678,9 @@
     eSIR_MAC_SHORT_SLOT_NOT_SUPORTED_STATUS       = 25, //Association denied due to requesting station not supporting the Short Slot Time
                                                         //option
     eSIR_MAC_DSSS_OFDM_NOT_SUPPORTED_STATUS       = 26, //Association denied due to requesting station not supporting the DSSS-OFDM option
-    // reserved                                     27-31
+    // reserved                                     27-29
+    eSIR_MAC_TRY_AGAIN_LATER                      = 30, //Association request rejected temporarily, try again later
+    // reserved                                     31
     eSIR_MAC_QOS_UNSPECIFIED_FAILURE_STATUS       = 32, //Unspecified, QoS-related failure
     eSIR_MAC_QAP_NO_BANDWIDTH_STATUS              = 33, //Association denied because QoS AP has insufficient bandwidth to handle another
                                                         //QoS STA
@@ -2845,4 +2847,32 @@
 } __ani_attr_packed tSirPhy11aHdr, *tpSirPhy11aHdr;
 
 #define SIR_MAC_MIN_IE_LEN 2 // Minimum IE length for IE validation
+
+#if defined WLAN_FEATURE_RELIABLE_MCAST
+
+// Reliable Multicast action codes
+#define SIR_MAC_RMC_ENABLE_REQ                  0
+#define SIR_MAC_RMC_DISABLE_REQ                 1
+#define SIR_MAC_RMC_LEADER_INFORM_SELECTED      2
+#define SIR_MAC_RMC_LEADER_INFORM_CANCELLED     3
+
+// Reliable multicast protocol version
+#define SIR_MAC_RMC_VER 0x01
+
+// Organization Identifier
+#define SIR_MAC_RMC_OUI             "\x00\x16\x32"
+#define SIR_MAC_RMC_OUI_SIZE        3
+
+// Magic code for Oxygen network
+#define SIR_MAC_OXYGEN_MAGIC_CODE       "OXYGEN"
+#define SIR_MAC_OXYGEN_MAGIC_CODE_SIZE  6
+
+#define SIR_MAC_RMC_MCAST_ADDRESS  "\x01\x00\x5E\x00\x02\x0A"
+
+#endif /* WLAN_FEATURE_RELIABLE_MCAST */
+
+#define SIR_MAC_TI_TYPE_REASSOC_DEADLINE        1
+#define SIR_MAC_TI_TYPE_KEY_LIFETIME            2
+#define SIR_MAC_TI_TYPE_ASSOC_COMEBACK          3
+
 #endif /* __MAC_PROT_DEFS_H */
diff --git a/CORE/MAC/inc/wniCfgAp.h b/CORE/MAC/inc/wniCfgAp.h
index df1b590..5fa79ef 100644
--- a/CORE/MAC/inc/wniCfgAp.h
+++ b/CORE/MAC/inc/wniCfgAp.h
@@ -26,7 +26,7 @@
  */
 
 /*
- * DO NOT EDIT - This file is generated automatically
+ * DO NOT EDIT - This file is generated automaticlly
  */
 
 /*
@@ -370,6 +370,8 @@
 #define WNI_CFG_OBSS_HT40_WIDTH_CHANNEL_TRANSITION_DELAY_FACTOR    323
 #define WNI_CFG_OBSS_HT40_SCAN_ACTIVITY_THRESHOLD    324
 #define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED    325
+#define WNI_CFG_PMF_SA_QUERY_MAX_RETRIES    326
+#define WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL    327
 
 /*
  * String parameter lengths 
@@ -1505,11 +1507,11 @@
 #define WNI_CFG_EXT_HT_CAP_INFO_RESERVED2    12
 
 #define WNI_CFG_TX_BF_CAP_STAMIN    0
-#define WNI_CFG_TX_BF_CAP_STAMAX    4294967295
+#define WNI_CFG_TX_BF_CAP_STAMAX    2147483647
 #define WNI_CFG_TX_BF_CAP_STADEF    0
 
 #define WNI_CFG_TX_BF_CAP_APMIN    0
-#define WNI_CFG_TX_BF_CAP_APMAX    4294967295
+#define WNI_CFG_TX_BF_CAP_APMAX    2147483647
 #define WNI_CFG_TX_BF_CAP_APDEF    0
 
 #define WNI_CFG_AS_CAP_STAMIN    0
@@ -2138,11 +2140,11 @@
 #define WNI_CFG_WPS_REQUEST_TYPE_APDEF    3
 
 #define WNI_CFG_WPS_CFG_METHOD_STAMIN    0
-#define WNI_CFG_WPS_CFG_METHOD_STAMAX    4294967295
+#define WNI_CFG_WPS_CFG_METHOD_STAMAX    2147483647
 #define WNI_CFG_WPS_CFG_METHOD_STADEF    8
 
 #define WNI_CFG_WPS_CFG_METHOD_APMIN    0
-#define WNI_CFG_WPS_CFG_METHOD_APMAX    4294967295
+#define WNI_CFG_WPS_CFG_METHOD_APMAX    2147483647
 #define WNI_CFG_WPS_CFG_METHOD_APDEF    25952654
 
 #define WNI_CFG_WPS_PRIMARY_DEVICE_CATEGORY_STAMIN    0
@@ -2154,11 +2156,11 @@
 #define WNI_CFG_WPS_PRIMARY_DEVICE_CATEGORY_APDEF    6
 
 #define WNI_CFG_WPS_PIMARY_DEVICE_OUI_STAMIN    0
-#define WNI_CFG_WPS_PIMARY_DEVICE_OUI_STAMAX    4294967295
+#define WNI_CFG_WPS_PIMARY_DEVICE_OUI_STAMAX    2147483647
 #define WNI_CFG_WPS_PIMARY_DEVICE_OUI_STADEF    5304836
 
 #define WNI_CFG_WPS_PIMARY_DEVICE_OUI_APMIN    0
-#define WNI_CFG_WPS_PIMARY_DEVICE_OUI_APMAX    4294967295
+#define WNI_CFG_WPS_PIMARY_DEVICE_OUI_APMAX    2147483647
 #define WNI_CFG_WPS_PIMARY_DEVICE_OUI_APDEF    5304836
 
 #define WNI_CFG_WPS_DEVICE_SUB_CATEGORY_STAMIN    0
@@ -2186,11 +2188,11 @@
 #define WNI_CFG_WPS_CONFIGURATION_ERROR_APDEF    0
 
 #define WNI_CFG_WPS_DEVICE_PASSWORD_ID_STAMIN    0
-#define WNI_CFG_WPS_DEVICE_PASSWORD_ID_STAMAX    4294967295
+#define WNI_CFG_WPS_DEVICE_PASSWORD_ID_STAMAX    2147483647
 #define WNI_CFG_WPS_DEVICE_PASSWORD_ID_STADEF    0
 
 #define WNI_CFG_WPS_DEVICE_PASSWORD_ID_APMIN    0
-#define WNI_CFG_WPS_DEVICE_PASSWORD_ID_APMAX    4294967295
+#define WNI_CFG_WPS_DEVICE_PASSWORD_ID_APMAX    2147483647
 #define WNI_CFG_WPS_DEVICE_PASSWORD_ID_APDEF    0
 
 #define WNI_CFG_WPS_ASSOC_METHOD_STAMIN    0
@@ -2610,11 +2612,11 @@
 #define WNI_CFG_BTC_SAP_ACTIVE_BT_LEN_APDEF    90000
 
 #define WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_STAMIN    0
-#define WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_STAMAX    4294967295
+#define WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_STAMAX    2147483647
 #define WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_STADEF    300
 
 #define WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_APMIN    0
-#define WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_APMAX    4294967295
+#define WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_APMAX    2147483647
 #define WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_APDEF    300
 
 #define WNI_CFG_ASD_PROBE_INTERVAL_STAMIN    10
@@ -2729,10 +2731,26 @@
 #define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED_APMAX    1
 #define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED_APDEF    0
 
-#define CFG_PARAM_MAX_NUM         326
-#define CFG_AP_IBUF_MAX_SIZE      265
+#define WNI_CFG_PMF_SA_QUERY_MAX_RETRIES_STAMIN    0
+#define WNI_CFG_PMF_SA_QUERY_MAX_RETRIES_STAMAX    20
+#define WNI_CFG_PMF_SA_QUERY_MAX_RETRIES_STADEF    5
+
+#define WNI_CFG_PMF_SA_QUERY_MAX_RETRIES_APMIN    0
+#define WNI_CFG_PMF_SA_QUERY_MAX_RETRIES_APMAX    20
+#define WNI_CFG_PMF_SA_QUERY_MAX_RETRIES_APDEF    5
+
+#define WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL_STAMIN    0
+#define WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL_STAMAX    2000
+#define WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL_STADEF    200
+
+#define WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL_APMIN    0
+#define WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL_APMAX    2000
+#define WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL_APDEF    200
+
+#define CFG_PARAM_MAX_NUM         328
+#define CFG_AP_IBUF_MAX_SIZE      267
 #define CFG_AP_SBUF_MAX_SIZE      3422
-#define CFG_STA_IBUF_MAX_SIZE     260
+#define CFG_STA_IBUF_MAX_SIZE     262
 #define CFG_STA_SBUF_MAX_SIZE     3388
 #define CFG_SEM_MAX_NUM           19
 
diff --git a/CORE/MAC/inc/wniCfgSta.h b/CORE/MAC/inc/wniCfgSta.h
index 98985c8..75e50b1 100644
--- a/CORE/MAC/inc/wniCfgSta.h
+++ b/CORE/MAC/inc/wniCfgSta.h
@@ -26,7 +26,7 @@
  */
 
 /*
- * DO NOT EDIT - This file is generated automatically
+ * DO NOT EDIT - This file is generated automaticlly
  */
 
 /*
@@ -364,6 +364,8 @@
 #define WNI_CFG_OBSS_HT40_WIDTH_CHANNEL_TRANSITION_DELAY_FACTOR    323
 #define WNI_CFG_OBSS_HT40_SCAN_ACTIVITY_THRESHOLD    324
 #define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED    325
+#define WNI_CFG_PMF_SA_QUERY_MAX_RETRIES    326
+#define WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL    327
 
 /*
  * String parameter lengths 
@@ -1082,7 +1084,7 @@
 #define WNI_CFG_EXT_HT_CAP_INFO_RESERVED2    12
 
 #define WNI_CFG_TX_BF_CAP_STAMIN    0
-#define WNI_CFG_TX_BF_CAP_STAMAX    4294967295
+#define WNI_CFG_TX_BF_CAP_STAMAX    2147483647
 #define WNI_CFG_TX_BF_CAP_STADEF    0
 
 #define WNI_CFG_AS_CAP_STAMIN    0
@@ -1451,7 +1453,7 @@
 #define WNI_CFG_WPS_REQUEST_TYPE_STADEF    0
 
 #define WNI_CFG_WPS_CFG_METHOD_STAMIN    0
-#define WNI_CFG_WPS_CFG_METHOD_STAMAX    4294967295
+#define WNI_CFG_WPS_CFG_METHOD_STAMAX    2147483647
 #define WNI_CFG_WPS_CFG_METHOD_STADEF    8
 
 #define WNI_CFG_WPS_PRIMARY_DEVICE_CATEGORY_STAMIN    0
@@ -1459,7 +1461,7 @@
 #define WNI_CFG_WPS_PRIMARY_DEVICE_CATEGORY_STADEF    1
 
 #define WNI_CFG_WPS_PIMARY_DEVICE_OUI_STAMIN    0
-#define WNI_CFG_WPS_PIMARY_DEVICE_OUI_STAMAX    4294967295
+#define WNI_CFG_WPS_PIMARY_DEVICE_OUI_STAMAX    2147483647
 #define WNI_CFG_WPS_PIMARY_DEVICE_OUI_STADEF    5304836
 
 #define WNI_CFG_WPS_DEVICE_SUB_CATEGORY_STAMIN    0
@@ -1475,7 +1477,7 @@
 #define WNI_CFG_WPS_CONFIGURATION_ERROR_STADEF    0
 
 #define WNI_CFG_WPS_DEVICE_PASSWORD_ID_STAMIN    0
-#define WNI_CFG_WPS_DEVICE_PASSWORD_ID_STAMAX    4294967295
+#define WNI_CFG_WPS_DEVICE_PASSWORD_ID_STAMAX    2147483647
 #define WNI_CFG_WPS_DEVICE_PASSWORD_ID_STADEF    0
 
 #define WNI_CFG_WPS_ASSOC_METHOD_STAMIN    0
@@ -1691,7 +1693,7 @@
 #define WNI_CFG_BTC_SAP_ACTIVE_BT_LEN_STADEF    90000
 
 #define WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_STAMIN    0
-#define WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_STAMAX    4294967295
+#define WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_STAMAX    2147483647
 #define WNI_CFG_RMC_ACTION_PERIOD_FREQUENCY_STADEF    300
 
 #define WNI_CFG_ASD_PROBE_INTERVAL_STAMIN    10
@@ -1750,8 +1752,16 @@
 #define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED_STAMAX    1
 #define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED_STADEF    0
 
-#define CFG_PARAM_MAX_NUM        326
-#define CFG_STA_IBUF_MAX_SIZE    260
+#define WNI_CFG_PMF_SA_QUERY_MAX_RETRIES_STAMIN    0
+#define WNI_CFG_PMF_SA_QUERY_MAX_RETRIES_STAMAX    20
+#define WNI_CFG_PMF_SA_QUERY_MAX_RETRIES_STADEF    5
+
+#define WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL_STAMIN    0
+#define WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL_STAMAX    2000
+#define WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL_STADEF    200
+
+#define CFG_PARAM_MAX_NUM        328
+#define CFG_STA_IBUF_MAX_SIZE    262
 #define CFG_STA_SBUF_MAX_SIZE    3388
 #define CFG_SEM_MAX_NUM          19
 
diff --git a/CORE/MAC/src/cfg/cfgParamName.c b/CORE/MAC/src/cfg/cfgParamName.c
index bc2254e..415d3c4 100644
--- a/CORE/MAC/src/cfg/cfgParamName.c
+++ b/CORE/MAC/src/cfg/cfgParamName.c
@@ -26,7 +26,7 @@
  */
 
 /*
- * DO NOT EDIT - This file is generated automatically
+ * DO NOT EDIT - This file is generated automaticlly
  */
 
 /*
@@ -35,332 +35,334 @@
 #include "cfgPriv.h"
 
 unsigned char *gCfgParamName[] = {
-    (unsigned char *)"STA_ID",
-    (unsigned char *)"CF_POLLABLE",
-    (unsigned char *)"CFP_PERIOD",
-    (unsigned char *)"CFP_MAX_DURATION",
-    (unsigned char *)"SSID",
-    (unsigned char *)"BEACON_INTERVAL",
-    (unsigned char *)"DTIM_PERIOD",
-    (unsigned char *)"WEP_KEY_LENGTH",
-    (unsigned char *)"WEP_DEFAULT_KEY_1",
-    (unsigned char *)"WEP_DEFAULT_KEY_2",
-    (unsigned char *)"WEP_DEFAULT_KEY_3",
-    (unsigned char *)"WEP_DEFAULT_KEY_4",
-    (unsigned char *)"WEP_DEFAULT_KEYID",
-    (unsigned char *)"EXCLUDE_UNENCRYPTED",
-    (unsigned char *)"RTS_THRESHOLD",
-    (unsigned char *)"SHORT_RETRY_LIMIT",
-    (unsigned char *)"LONG_RETRY_LIMIT",
-    (unsigned char *)"FRAGMENTATION_THRESHOLD",
-    (unsigned char *)"ACTIVE_MINIMUM_CHANNEL_TIME",
-    (unsigned char *)"ACTIVE_MAXIMUM_CHANNEL_TIME",
-    (unsigned char *)"PASSIVE_MINIMUM_CHANNEL_TIME",
-    (unsigned char *)"PASSIVE_MAXIMUM_CHANNEL_TIME",
-    (unsigned char *)"JOIN_FAILURE_TIMEOUT",
-    (unsigned char *)"AUTHENTICATE_FAILURE_TIMEOUT",
-    (unsigned char *)"AUTHENTICATE_RSP_TIMEOUT",
-    (unsigned char *)"ASSOCIATION_FAILURE_TIMEOUT",
-    (unsigned char *)"REASSOCIATION_FAILURE_TIMEOUT",
-    (unsigned char *)"RA_PERIODICITY_TIMEOUT_IN_PS",
-    (unsigned char *)"PS_ENABLE_BCN_FILTER",
-    (unsigned char *)"PS_ENABLE_HEART_BEAT",
-    (unsigned char *)"PS_ENABLE_RSSI_MONITOR",
-    (unsigned char *)"PS_DATA_INACTIVITY_TIMEOUT",
-    (unsigned char *)"RF_SETTLING_TIME_CLK",
-    (unsigned char *)"SUPPORTED_RATES_11B",
-    (unsigned char *)"SUPPORTED_RATES_11A",
-    (unsigned char *)"PHY_MODE",
-    (unsigned char *)"DOT11_MODE",
-    (unsigned char *)"OPERATIONAL_RATE_SET",
-    (unsigned char *)"EXTENDED_OPERATIONAL_RATE_SET",
-    (unsigned char *)"PROPRIETARY_OPERATIONAL_RATE_SET",
-    (unsigned char *)"BSSID",
-    (unsigned char *)"LISTEN_INTERVAL",
-    (unsigned char *)"VALID_CHANNEL_LIST",
-    (unsigned char *)"CURRENT_CHANNEL",
-    (unsigned char *)"DEFAULT_RATE_INDEX_5GHZ",
-    (unsigned char *)"DEFAULT_RATE_INDEX_24GHZ",
-    (unsigned char *)"RATE_ADAPTATION_TYPE",
-    (unsigned char *)"FIXED_RATE",
-    (unsigned char *)"FIXED_RATE_MULTICAST_24GHZ",
-    (unsigned char *)"FIXED_RATE_MULTICAST_5GHZ",
-    (unsigned char *)"RETRYRATE_POLICY",
-    (unsigned char *)"RETRYRATE_SECONDARY",
-    (unsigned char *)"RETRYRATE_TERTIARY",
-    (unsigned char *)"APSD_ENABLED",
-    (unsigned char *)"SHARED_KEY_AUTH_ENABLE",
-    (unsigned char *)"OPEN_SYSTEM_AUTH_ENABLE",
-    (unsigned char *)"AUTHENTICATION_TYPE",
-    (unsigned char *)"CF_POLL_REQUEST",
-    (unsigned char *)"PRIVACY_ENABLED",
-    (unsigned char *)"SHORT_PREAMBLE",
-    (unsigned char *)"SHORT_SLOT_TIME",
-    (unsigned char *)"ACCEPT_SHORT_SLOT_ASSOC_ONLY",
-    (unsigned char *)"QOS_ENABLED",
-    (unsigned char *)"HCF_ENABLED",
-    (unsigned char *)"RSN_ENABLED",
-    (unsigned char *)"BACKGROUND_SCAN_PERIOD",
-    (unsigned char *)"MAX_NUM_PRE_AUTH",
-    (unsigned char *)"PREAUTH_CLNUP_TIMEOUT",
-    (unsigned char *)"RELEASE_AID_TIMEOUT",
-    (unsigned char *)"HEART_BEAT_THRESHOLD",
-    (unsigned char *)"PROBE_AFTER_HB_FAIL_TIMEOUT",
-    (unsigned char *)"MANUFACTURER_OUI",
-    (unsigned char *)"MANUFACTURER_NAME",
-    (unsigned char *)"MODEL_NUMBER",
-    (unsigned char *)"MODEL_NAME",
-    (unsigned char *)"MANUFACTURER_PRODUCT_NAME",
-    (unsigned char *)"MANUFACTURER_PRODUCT_VERSION",
-    (unsigned char *)"11D_ENABLED",
-    (unsigned char *)"MAX_TX_POWER_2_4",
-    (unsigned char *)"MAX_TX_POWER_5",
-    (unsigned char *)"NETWORK_DENSITY",
-    (unsigned char *)"ADAPTIVE_THRESHOLD_ALGORITHM",
-    (unsigned char *)"CURRENT_TX_ANTENNA",
-    (unsigned char *)"CURRENT_RX_ANTENNA",
-    (unsigned char *)"CURRENT_TX_POWER_LEVEL",
-    (unsigned char *)"POWER_STATE_PER_CHAIN",
-    (unsigned char *)"NEW_BSS_FOUND_IND",
-    (unsigned char *)"PROPRIETARY_ANI_FEATURES_ENABLED",
-    (unsigned char *)"PROPRIETARY_RATES_ENABLED",
-    (unsigned char *)"AP_NODE_NAME",
-    (unsigned char *)"COUNTRY_CODE",
-    (unsigned char *)"11H_ENABLED",
-    (unsigned char *)"WT_CNF_TIMEOUT",
-    (unsigned char *)"KEEPALIVE_TIMEOUT",
-    (unsigned char *)"PROXIMITY",
-    (unsigned char *)"LOG_LEVEL",
-    (unsigned char *)"OLBC_DETECT_TIMEOUT",
-    (unsigned char *)"PROTECTION_ENABLED",
-    (unsigned char *)"11G_PROTECTION_ALWAYS",
-    (unsigned char *)"FORCE_POLICY_PROTECTION",
-    (unsigned char *)"11G_SHORT_PREAMBLE_ENABLED",
-    (unsigned char *)"11G_SHORT_SLOT_TIME_ENABLED",
-    (unsigned char *)"CAL_PERIOD",
-    (unsigned char *)"STATS_PERIOD",
-    (unsigned char *)"CAL_CONTROL",
-    (unsigned char *)"11G_ONLY_POLICY",
-    (unsigned char *)"PACKET_CLASSIFICATION",
-    (unsigned char *)"WME_ENABLED",
-    (unsigned char *)"ADDTS_RSP_TIMEOUT",
-    (unsigned char *)"MAX_SP_LENGTH",
-    (unsigned char *)"KEEP_ALIVE_STA_LIMIT_THRESHOLD",
-    (unsigned char *)"SEND_SINGLE_SSID_ALWAYS",
-    (unsigned char *)"WSM_ENABLED",
-    (unsigned char *)"PROP_CAPABILITY",
-    (unsigned char *)"EDCA_PROFILE",
-    (unsigned char *)"EDCA_ANI_ACBK_LOCAL",
-    (unsigned char *)"EDCA_ANI_ACBE_LOCAL",
-    (unsigned char *)"EDCA_ANI_ACVI_LOCAL",
-    (unsigned char *)"EDCA_ANI_ACVO_LOCAL",
-    (unsigned char *)"EDCA_ANI_ACBK",
-    (unsigned char *)"EDCA_ANI_ACBE",
-    (unsigned char *)"EDCA_ANI_ACVI",
-    (unsigned char *)"EDCA_ANI_ACVO",
-    (unsigned char *)"EDCA_WME_ACBK_LOCAL",
-    (unsigned char *)"EDCA_WME_ACBE_LOCAL",
-    (unsigned char *)"EDCA_WME_ACVI_LOCAL",
-    (unsigned char *)"EDCA_WME_ACVO_LOCAL",
-    (unsigned char *)"EDCA_WME_ACBK",
-    (unsigned char *)"EDCA_WME_ACBE",
-    (unsigned char *)"EDCA_WME_ACVI",
-    (unsigned char *)"EDCA_WME_ACVO",
-    (unsigned char *)"EDCA_TIT_DEMO_ACBK_LOCAL",
-    (unsigned char *)"EDCA_TIT_DEMO_ACBE_LOCAL",
-    (unsigned char *)"EDCA_TIT_DEMO_ACVI_LOCAL",
-    (unsigned char *)"EDCA_TIT_DEMO_ACVO_LOCAL",
-    (unsigned char *)"EDCA_TIT_DEMO_ACBK",
-    (unsigned char *)"EDCA_TIT_DEMO_ACBE",
-    (unsigned char *)"EDCA_TIT_DEMO_ACVI",
-    (unsigned char *)"EDCA_TIT_DEMO_ACVO",
-    (unsigned char *)"RDET_FLAG",
-    (unsigned char *)"RADAR_CHANNEL_LIST",
-    (unsigned char *)"LOCAL_POWER_CONSTRAINT",
-    (unsigned char *)"ADMIT_POLICY",
-    (unsigned char *)"ADMIT_BWFACTOR",
-    (unsigned char *)"MAX_CONSECUTIVE_BACKGROUND_SCAN_FAILURE",
-    (unsigned char *)"CHANNEL_BONDING_MODE",
-    (unsigned char *)"CB_SECONDARY_CHANNEL_STATE",
-    (unsigned char *)"DYNAMIC_THRESHOLD_ZERO",
-    (unsigned char *)"DYNAMIC_THRESHOLD_ONE",
-    (unsigned char *)"DYNAMIC_THRESHOLD_TWO",
-    (unsigned char *)"TRIG_STA_BK_SCAN",
-    (unsigned char *)"DYNAMIC_PROFILE_SWITCHING",
-    (unsigned char *)"SCAN_CONTROL_LIST",
-    (unsigned char *)"MIMO_ENABLED",
-    (unsigned char *)"BLOCK_ACK_ENABLED",
-    (unsigned char *)"BA_ACTIVITY_CHECK_TIMEOUT",
-    (unsigned char *)"HT_RX_STBC",
-    (unsigned char *)"HT_CAP_INFO",
-    (unsigned char *)"HT_AMPDU_PARAMS",
-    (unsigned char *)"SUPPORTED_MCS_SET",
-    (unsigned char *)"EXT_HT_CAP_INFO",
-    (unsigned char *)"TX_BF_CAP",
-    (unsigned char *)"AS_CAP",
-    (unsigned char *)"HT_INFO_FIELD1",
-    (unsigned char *)"HT_INFO_FIELD2",
-    (unsigned char *)"HT_INFO_FIELD3",
-    (unsigned char *)"BASIC_MCS_SET",
-    (unsigned char *)"CURRENT_MCS_SET",
-    (unsigned char *)"GREENFIELD_CAPABILITY",
-    (unsigned char *)"VHT_MAX_MPDU_LENGTH",
-    (unsigned char *)"VHT_SUPPORTED_CHAN_WIDTH_SET",
-    (unsigned char *)"VHT_LDPC_CODING_CAP",
-    (unsigned char *)"VHT_SHORT_GI_80MHZ",
-    (unsigned char *)"VHT_SHORT_GI_160_AND_80_PLUS_80MHZ",
-    (unsigned char *)"VHT_TXSTBC",
-    (unsigned char *)"VHT_RXSTBC",
-    (unsigned char *)"VHT_SU_BEAMFORMER_CAP",
-    (unsigned char *)"VHT_SU_BEAMFORMEE_CAP",
-    (unsigned char *)"VHT_CSN_BEAMFORMEE_ANT_SUPPORTED",
-    (unsigned char *)"VHT_NUM_SOUNDING_DIMENSIONS",
-    (unsigned char *)"VHT_MU_BEAMFORMER_CAP",
-    (unsigned char *)"VHT_MU_BEAMFORMEE_CAP",
-    (unsigned char *)"VHT_TXOP_PS",
-    (unsigned char *)"VHT_HTC_VHTC_CAP",
-    (unsigned char *)"VHT_AMPDU_LEN_EXPONENT",
-    (unsigned char *)"VHT_LINK_ADAPTATION_CAP",
-    (unsigned char *)"VHT_RX_ANT_PATTERN",
-    (unsigned char *)"VHT_TX_ANT_PATTERN",
-    (unsigned char *)"VHT_RX_MCS_MAP",
-    (unsigned char *)"VHT_TX_MCS_MAP",
-    (unsigned char *)"VHT_RX_HIGHEST_SUPPORTED_DATA_RATE",
-    (unsigned char *)"VHT_TX_HIGHEST_SUPPORTED_DATA_RATE",
-    (unsigned char *)"VHT_CHANNEL_WIDTH",
-    (unsigned char *)"VHT_CHANNEL_CENTER_FREQ_SEGMENT1",
-    (unsigned char *)"VHT_CHANNEL_CENTER_FREQ_SEGMENT2",
-    (unsigned char *)"VHT_BASIC_MCS_SET",
-    (unsigned char *)"VHT_MU_MIMO_CAP_STA_COUNT",
-    (unsigned char *)"VHT_SS_UNDER_UTIL",
-    (unsigned char *)"VHT_40MHZ_UTILIZATION",
-    (unsigned char *)"VHT_80MHZ_UTILIZATION",
-    (unsigned char *)"VHT_160MHZ_UTILIZATION",
-    (unsigned char *)"MAX_AMSDU_LENGTH",
-    (unsigned char *)"MPDU_DENSITY",
-    (unsigned char *)"NUM_BUFF_ADVERT",
-    (unsigned char *)"MAX_RX_AMPDU_FACTOR",
-    (unsigned char *)"SHORT_GI_20MHZ",
-    (unsigned char *)"SHORT_GI_40MHZ",
-    (unsigned char *)"RIFS_ENABLED",
-    (unsigned char *)"MAX_PS_POLL",
-    (unsigned char *)"NUM_BEACON_PER_RSSI_AVERAGE",
-    (unsigned char *)"RSSI_FILTER_PERIOD",
-    (unsigned char *)"MIN_RSSI_THRESHOLD",
-    (unsigned char *)"NTH_BEACON_FILTER",
-    (unsigned char *)"BROADCAST_FRAME_FILTER_ENABLE",
-    (unsigned char *)"SCAN_IN_POWERSAVE",
-    (unsigned char *)"IGNORE_DTIM",
-    (unsigned char *)"WOWLAN_UCAST_PATTERN_FILTER_ENABLE",
-    (unsigned char *)"WOWLAN_CHANNEL_SWITCH_ENABLE",
-    (unsigned char *)"WOWLAN_DEAUTH_ENABLE",
-    (unsigned char *)"WOWLAN_DISASSOC_ENABLE",
-    (unsigned char *)"WOWLAN_MAX_MISSED_BEACON",
-    (unsigned char *)"WOWLAN_MAX_SLEEP_PERIOD",
-    (unsigned char *)"BA_TIMEOUT",
-    (unsigned char *)"BA_THRESHOLD_HIGH",
-    (unsigned char *)"MAX_BA_BUFFERS",
-    (unsigned char *)"MAX_BA_SESSIONS",
-    (unsigned char *)"BA_AUTO_SETUP",
-    (unsigned char *)"ADDBA_REQ_DECLINE",
-    (unsigned char *)"DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC",
-    (unsigned char *)"BG_SCAN_CHANNEL_LIST",
-    (unsigned char *)"MAX_MEDIUM_TIME",
-    (unsigned char *)"MAX_MPDUS_IN_AMPDU",
-    (unsigned char *)"IBSS_AUTO_BSSID",
-    (unsigned char *)"PROBE_REQ_ADDNIE_FLAG",
-    (unsigned char *)"PROBE_REQ_ADDNIE_DATA",
-    (unsigned char *)"PROBE_RSP_ADDNIE_FLAG",
-    (unsigned char *)"PROBE_RSP_ADDNIE_DATA1",
-    (unsigned char *)"PROBE_RSP_ADDNIE_DATA2",
-    (unsigned char *)"PROBE_RSP_ADDNIE_DATA3",
-    (unsigned char *)"ASSOC_RSP_ADDNIE_FLAG",
-    (unsigned char *)"ASSOC_RSP_ADDNIE_DATA",
-    (unsigned char *)"PROBE_REQ_ADDNP2PIE_FLAG",
-    (unsigned char *)"PROBE_REQ_ADDNP2PIE_DATA",
-    (unsigned char *)"PROBE_RSP_BCN_ADDNIE_FLAG",
-    (unsigned char *)"PROBE_RSP_BCN_ADDNIE_DATA",
-    (unsigned char *)"WPS_ENABLE",
-    (unsigned char *)"WPS_STATE",
-    (unsigned char *)"WPS_PROBE_REQ_FLAG",
-    (unsigned char *)"WPS_VERSION",
-    (unsigned char *)"WPS_REQUEST_TYPE",
-    (unsigned char *)"WPS_CFG_METHOD",
-    (unsigned char *)"WPS_UUID",
-    (unsigned char *)"WPS_PRIMARY_DEVICE_CATEGORY",
-    (unsigned char *)"WPS_PIMARY_DEVICE_OUI",
-    (unsigned char *)"WPS_DEVICE_SUB_CATEGORY",
-    (unsigned char *)"WPS_ASSOCIATION_STATE",
-    (unsigned char *)"WPS_CONFIGURATION_ERROR",
-    (unsigned char *)"WPS_DEVICE_PASSWORD_ID",
-    (unsigned char *)"WPS_ASSOC_METHOD",
-    (unsigned char *)"LOW_GAIN_OVERRIDE",
-    (unsigned char *)"ENABLE_PHY_AGC_LISTEN_MODE",
-    (unsigned char *)"RPE_POLLING_THRESHOLD",
-    (unsigned char *)"RPE_AGING_THRESHOLD_FOR_AC0_REG",
-    (unsigned char *)"RPE_AGING_THRESHOLD_FOR_AC1_REG",
-    (unsigned char *)"RPE_AGING_THRESHOLD_FOR_AC2_REG",
-    (unsigned char *)"RPE_AGING_THRESHOLD_FOR_AC3_REG",
-    (unsigned char *)"NO_OF_ONCHIP_REORDER_SESSIONS",
-    (unsigned char *)"SINGLE_TID_RC",
-    (unsigned char *)"RRM_ENABLED",
-    (unsigned char *)"RRM_OPERATING_CHAN_MAX",
-    (unsigned char *)"RRM_NON_OPERATING_CHAN_MAX",
-    (unsigned char *)"TX_PWR_CTRL_ENABLE",
-    (unsigned char *)"MCAST_BCAST_FILTER_SETTING",
-    (unsigned char *)"BTC_DHCP_BT_SLOTS_TO_BLOCK",
-    (unsigned char *)"DYNAMIC_PS_POLL_VALUE",
-    (unsigned char *)"PS_NULLDATA_AP_RESP_TIMEOUT",
-    (unsigned char *)"TELE_BCN_WAKEUP_EN",
-    (unsigned char *)"TELE_BCN_TRANS_LI",
-    (unsigned char *)"TELE_BCN_TRANS_LI_IDLE_BCNS",
-    (unsigned char *)"TELE_BCN_MAX_LI",
-    (unsigned char *)"TELE_BCN_MAX_LI_IDLE_BCNS",
-    (unsigned char *)"BTC_A2DP_DHCP_BT_SUB_INTERVALS",
-    (unsigned char *)"INFRA_STA_KEEP_ALIVE_PERIOD",
-    (unsigned char *)"ASSOC_STA_LIMIT",
-    (unsigned char *)"SAP_CHANNEL_SELECT_START_CHANNEL",
-    (unsigned char *)"SAP_CHANNEL_SELECT_END_CHANNEL",
-    (unsigned char *)"SAP_CHANNEL_SELECT_OPERATING_BAND",
-    (unsigned char *)"AP_DATA_AVAIL_POLL_PERIOD",
-    (unsigned char *)"ENABLE_CLOSE_LOOP",
-    (unsigned char *)"ENABLE_LTE_COEX",
-    (unsigned char *)"AP_KEEP_ALIVE_TIMEOUT",
-    (unsigned char *)"GO_KEEP_ALIVE_TIMEOUT",
-    (unsigned char *)"ENABLE_MC_ADDR_LIST",
-    (unsigned char *)"ENABLE_UC_FILTER",
-    (unsigned char *)"ENABLE_LPWR_IMG_TRANSITION",
-    (unsigned char *)"ENABLE_MCC_ADAPTIVE_SCHED",
-    (unsigned char *)"DISABLE_LDPC_WITH_TXBF_AP",
-    (unsigned char *)"AP_LINK_MONITOR_TIMEOUT",
-    (unsigned char *)"TDLS_QOS_WMM_UAPSD_MASK",
-    (unsigned char *)"TDLS_BUF_STA_ENABLED",
-    (unsigned char *)"TDLS_PUAPSD_INACT_TIME",
-    (unsigned char *)"TDLS_RX_FRAME_THRESHOLD",
-    (unsigned char *)"ENABLE_ADAPT_RX_DRAIN",
-    (unsigned char *)"FLEX_CONNECT_POWER_FACTOR",
-    (unsigned char *)"ANTENNA_DIVESITY",
-    (unsigned char *)"GO_LINK_MONITOR_TIMEOUT",
-    (unsigned char *)"ATH_DISABLE",
-    (unsigned char *)"BTC_ACTIVE_WLAN_LEN",
-    (unsigned char *)"BTC_ACTIVE_BT_LEN",
-    (unsigned char *)"BTC_SAP_ACTIVE_WLAN_LEN",
-    (unsigned char *)"BTC_SAP_ACTIVE_BT_LEN",
-    (unsigned char *)"RMC_ACTION_PERIOD_FREQUENCY",
-    (unsigned char *)"ASD_PROBE_INTERVAL",
-    (unsigned char *)"ASD_TRIGGER_THRESHOLD",
-    (unsigned char *)"ASD_RTT_RSSI_HYST_THRESHOLD",
-    (unsigned char *)"DEBUG_P2P_REMAIN_ON_CHANNEL",
-    (unsigned char *)"BTC_CTS2S_DURING_SCO",
-    (unsigned char *)"CHANNEL_BONDING_24G",
-    (unsigned char *)"OBSS_HT40_SCAN_PASSIVE_DWELL_TIME",
-    (unsigned char *)"OBSS_HT40_SCAN_ACTIVE_DWELL_TIME",
-    (unsigned char *)"OBSS_HT40_SCAN_WIDTH_TRIGGER_INTERVAL",
-    (unsigned char *)"OBSS_HT40_SCAN_PASSIVE_TOTAL_PER_CHANNEL",
-    (unsigned char *)"OBSS_HT40_SCAN_ACTIVE_TOTAL_PER_CHANNEL",
-    (unsigned char *)"OBSS_HT40_WIDTH_CHANNEL_TRANSITION_DELAY_FACTOR",
-    (unsigned char *)"OBSS_HT40_SCAN_ACTIVITY_THRESHOLD",
-    (unsigned char *)"TDLS_OFF_CHANNEL_ENABLED",
+	(unsigned char *)"STA_ID",
+	(unsigned char *)"CF_POLLABLE",
+	(unsigned char *)"CFP_PERIOD",
+	(unsigned char *)"CFP_MAX_DURATION",
+	(unsigned char *)"SSID",
+	(unsigned char *)"BEACON_INTERVAL",
+	(unsigned char *)"DTIM_PERIOD",
+	(unsigned char *)"WEP_KEY_LENGTH",
+	(unsigned char *)"WEP_DEFAULT_KEY_1",
+	(unsigned char *)"WEP_DEFAULT_KEY_2",
+	(unsigned char *)"WEP_DEFAULT_KEY_3",
+	(unsigned char *)"WEP_DEFAULT_KEY_4",
+	(unsigned char *)"WEP_DEFAULT_KEYID",
+	(unsigned char *)"EXCLUDE_UNENCRYPTED",
+	(unsigned char *)"RTS_THRESHOLD",
+	(unsigned char *)"SHORT_RETRY_LIMIT",
+	(unsigned char *)"LONG_RETRY_LIMIT",
+	(unsigned char *)"FRAGMENTATION_THRESHOLD",
+	(unsigned char *)"ACTIVE_MINIMUM_CHANNEL_TIME",
+	(unsigned char *)"ACTIVE_MAXIMUM_CHANNEL_TIME",
+	(unsigned char *)"PASSIVE_MINIMUM_CHANNEL_TIME",
+	(unsigned char *)"PASSIVE_MAXIMUM_CHANNEL_TIME",
+	(unsigned char *)"JOIN_FAILURE_TIMEOUT",
+	(unsigned char *)"AUTHENTICATE_FAILURE_TIMEOUT",
+	(unsigned char *)"AUTHENTICATE_RSP_TIMEOUT",
+	(unsigned char *)"ASSOCIATION_FAILURE_TIMEOUT",
+	(unsigned char *)"REASSOCIATION_FAILURE_TIMEOUT",
+	(unsigned char *)"RA_PERIODICITY_TIMEOUT_IN_PS",
+	(unsigned char *)"PS_ENABLE_BCN_FILTER",
+	(unsigned char *)"PS_ENABLE_HEART_BEAT",
+	(unsigned char *)"PS_ENABLE_RSSI_MONITOR",
+	(unsigned char *)"PS_DATA_INACTIVITY_TIMEOUT",
+	(unsigned char *)"RF_SETTLING_TIME_CLK",
+	(unsigned char *)"SUPPORTED_RATES_11B",
+	(unsigned char *)"SUPPORTED_RATES_11A",
+	(unsigned char *)"PHY_MODE",
+	(unsigned char *)"DOT11_MODE",
+	(unsigned char *)"OPERATIONAL_RATE_SET",
+	(unsigned char *)"EXTENDED_OPERATIONAL_RATE_SET",
+	(unsigned char *)"PROPRIETARY_OPERATIONAL_RATE_SET",
+	(unsigned char *)"BSSID",
+	(unsigned char *)"LISTEN_INTERVAL",
+	(unsigned char *)"VALID_CHANNEL_LIST",
+	(unsigned char *)"CURRENT_CHANNEL",
+	(unsigned char *)"DEFAULT_RATE_INDEX_5GHZ",
+	(unsigned char *)"DEFAULT_RATE_INDEX_24GHZ",
+	(unsigned char *)"RATE_ADAPTATION_TYPE",
+	(unsigned char *)"FIXED_RATE",
+	(unsigned char *)"FIXED_RATE_MULTICAST_24GHZ",
+	(unsigned char *)"FIXED_RATE_MULTICAST_5GHZ",
+	(unsigned char *)"RETRYRATE_POLICY",
+	(unsigned char *)"RETRYRATE_SECONDARY",
+	(unsigned char *)"RETRYRATE_TERTIARY",
+	(unsigned char *)"APSD_ENABLED",
+	(unsigned char *)"SHARED_KEY_AUTH_ENABLE",
+	(unsigned char *)"OPEN_SYSTEM_AUTH_ENABLE",
+	(unsigned char *)"AUTHENTICATION_TYPE",
+	(unsigned char *)"CF_POLL_REQUEST",
+	(unsigned char *)"PRIVACY_ENABLED",
+	(unsigned char *)"SHORT_PREAMBLE",
+	(unsigned char *)"SHORT_SLOT_TIME",
+	(unsigned char *)"ACCEPT_SHORT_SLOT_ASSOC_ONLY",
+	(unsigned char *)"QOS_ENABLED",
+	(unsigned char *)"HCF_ENABLED",
+	(unsigned char *)"RSN_ENABLED",
+	(unsigned char *)"BACKGROUND_SCAN_PERIOD",
+	(unsigned char *)"MAX_NUM_PRE_AUTH",
+	(unsigned char *)"PREAUTH_CLNUP_TIMEOUT",
+	(unsigned char *)"RELEASE_AID_TIMEOUT",
+	(unsigned char *)"HEART_BEAT_THRESHOLD",
+	(unsigned char *)"PROBE_AFTER_HB_FAIL_TIMEOUT",
+	(unsigned char *)"MANUFACTURER_OUI",
+	(unsigned char *)"MANUFACTURER_NAME",
+	(unsigned char *)"MODEL_NUMBER",
+	(unsigned char *)"MODEL_NAME",
+	(unsigned char *)"MANUFACTURER_PRODUCT_NAME",
+	(unsigned char *)"MANUFACTURER_PRODUCT_VERSION",
+	(unsigned char *)"11D_ENABLED",
+	(unsigned char *)"MAX_TX_POWER_2_4",
+	(unsigned char *)"MAX_TX_POWER_5",
+	(unsigned char *)"NETWORK_DENSITY",
+	(unsigned char *)"ADAPTIVE_THRESHOLD_ALGORITHM",
+	(unsigned char *)"CURRENT_TX_ANTENNA",
+	(unsigned char *)"CURRENT_RX_ANTENNA",
+	(unsigned char *)"CURRENT_TX_POWER_LEVEL",
+	(unsigned char *)"POWER_STATE_PER_CHAIN",
+	(unsigned char *)"NEW_BSS_FOUND_IND",
+	(unsigned char *)"PROPRIETARY_ANI_FEATURES_ENABLED",
+	(unsigned char *)"PROPRIETARY_RATES_ENABLED",
+	(unsigned char *)"AP_NODE_NAME",
+	(unsigned char *)"COUNTRY_CODE",
+	(unsigned char *)"11H_ENABLED",
+	(unsigned char *)"WT_CNF_TIMEOUT",
+	(unsigned char *)"KEEPALIVE_TIMEOUT",
+	(unsigned char *)"PROXIMITY",
+	(unsigned char *)"LOG_LEVEL",
+	(unsigned char *)"OLBC_DETECT_TIMEOUT",
+	(unsigned char *)"PROTECTION_ENABLED",
+	(unsigned char *)"11G_PROTECTION_ALWAYS",
+	(unsigned char *)"FORCE_POLICY_PROTECTION",
+	(unsigned char *)"11G_SHORT_PREAMBLE_ENABLED",
+	(unsigned char *)"11G_SHORT_SLOT_TIME_ENABLED",
+	(unsigned char *)"CAL_PERIOD",
+	(unsigned char *)"STATS_PERIOD",
+	(unsigned char *)"CAL_CONTROL",
+	(unsigned char *)"11G_ONLY_POLICY",
+	(unsigned char *)"PACKET_CLASSIFICATION",
+	(unsigned char *)"WME_ENABLED",
+	(unsigned char *)"ADDTS_RSP_TIMEOUT",
+	(unsigned char *)"MAX_SP_LENGTH",
+	(unsigned char *)"KEEP_ALIVE_STA_LIMIT_THRESHOLD",
+	(unsigned char *)"SEND_SINGLE_SSID_ALWAYS",
+	(unsigned char *)"WSM_ENABLED",
+	(unsigned char *)"PROP_CAPABILITY",
+	(unsigned char *)"EDCA_PROFILE",
+	(unsigned char *)"EDCA_ANI_ACBK_LOCAL",
+	(unsigned char *)"EDCA_ANI_ACBE_LOCAL",
+	(unsigned char *)"EDCA_ANI_ACVI_LOCAL",
+	(unsigned char *)"EDCA_ANI_ACVO_LOCAL",
+	(unsigned char *)"EDCA_ANI_ACBK",
+	(unsigned char *)"EDCA_ANI_ACBE",
+	(unsigned char *)"EDCA_ANI_ACVI",
+	(unsigned char *)"EDCA_ANI_ACVO",
+	(unsigned char *)"EDCA_WME_ACBK_LOCAL",
+	(unsigned char *)"EDCA_WME_ACBE_LOCAL",
+	(unsigned char *)"EDCA_WME_ACVI_LOCAL",
+	(unsigned char *)"EDCA_WME_ACVO_LOCAL",
+	(unsigned char *)"EDCA_WME_ACBK",
+	(unsigned char *)"EDCA_WME_ACBE",
+	(unsigned char *)"EDCA_WME_ACVI",
+	(unsigned char *)"EDCA_WME_ACVO",
+	(unsigned char *)"EDCA_TIT_DEMO_ACBK_LOCAL",
+	(unsigned char *)"EDCA_TIT_DEMO_ACBE_LOCAL",
+	(unsigned char *)"EDCA_TIT_DEMO_ACVI_LOCAL",
+	(unsigned char *)"EDCA_TIT_DEMO_ACVO_LOCAL",
+	(unsigned char *)"EDCA_TIT_DEMO_ACBK",
+	(unsigned char *)"EDCA_TIT_DEMO_ACBE",
+	(unsigned char *)"EDCA_TIT_DEMO_ACVI",
+	(unsigned char *)"EDCA_TIT_DEMO_ACVO",
+	(unsigned char *)"RDET_FLAG",
+	(unsigned char *)"RADAR_CHANNEL_LIST",
+	(unsigned char *)"LOCAL_POWER_CONSTRAINT",
+	(unsigned char *)"ADMIT_POLICY",
+	(unsigned char *)"ADMIT_BWFACTOR",
+	(unsigned char *)"MAX_CONSECUTIVE_BACKGROUND_SCAN_FAILURE",
+	(unsigned char *)"CHANNEL_BONDING_MODE",
+	(unsigned char *)"CB_SECONDARY_CHANNEL_STATE",
+	(unsigned char *)"DYNAMIC_THRESHOLD_ZERO",
+	(unsigned char *)"DYNAMIC_THRESHOLD_ONE",
+	(unsigned char *)"DYNAMIC_THRESHOLD_TWO",
+	(unsigned char *)"TRIG_STA_BK_SCAN",
+	(unsigned char *)"DYNAMIC_PROFILE_SWITCHING",
+	(unsigned char *)"SCAN_CONTROL_LIST",
+	(unsigned char *)"MIMO_ENABLED",
+	(unsigned char *)"BLOCK_ACK_ENABLED",
+	(unsigned char *)"BA_ACTIVITY_CHECK_TIMEOUT",
+	(unsigned char *)"HT_RX_STBC",
+	(unsigned char *)"HT_CAP_INFO",
+	(unsigned char *)"HT_AMPDU_PARAMS",
+	(unsigned char *)"SUPPORTED_MCS_SET",
+	(unsigned char *)"EXT_HT_CAP_INFO",
+	(unsigned char *)"TX_BF_CAP",
+	(unsigned char *)"AS_CAP",
+	(unsigned char *)"HT_INFO_FIELD1",
+	(unsigned char *)"HT_INFO_FIELD2",
+	(unsigned char *)"HT_INFO_FIELD3",
+	(unsigned char *)"BASIC_MCS_SET",
+	(unsigned char *)"CURRENT_MCS_SET",
+	(unsigned char *)"GREENFIELD_CAPABILITY",
+	(unsigned char *)"VHT_MAX_MPDU_LENGTH",
+	(unsigned char *)"VHT_SUPPORTED_CHAN_WIDTH_SET",
+	(unsigned char *)"VHT_LDPC_CODING_CAP",
+	(unsigned char *)"VHT_SHORT_GI_80MHZ",
+	(unsigned char *)"VHT_SHORT_GI_160_AND_80_PLUS_80MHZ",
+	(unsigned char *)"VHT_TXSTBC",
+	(unsigned char *)"VHT_RXSTBC",
+	(unsigned char *)"VHT_SU_BEAMFORMER_CAP",
+	(unsigned char *)"VHT_SU_BEAMFORMEE_CAP",
+	(unsigned char *)"VHT_CSN_BEAMFORMEE_ANT_SUPPORTED",
+	(unsigned char *)"VHT_NUM_SOUNDING_DIMENSIONS",
+	(unsigned char *)"VHT_MU_BEAMFORMER_CAP",
+	(unsigned char *)"VHT_MU_BEAMFORMEE_CAP",
+	(unsigned char *)"VHT_TXOP_PS",
+	(unsigned char *)"VHT_HTC_VHTC_CAP",
+	(unsigned char *)"VHT_AMPDU_LEN_EXPONENT",
+	(unsigned char *)"VHT_LINK_ADAPTATION_CAP",
+	(unsigned char *)"VHT_RX_ANT_PATTERN",
+	(unsigned char *)"VHT_TX_ANT_PATTERN",
+	(unsigned char *)"VHT_RX_MCS_MAP",
+	(unsigned char *)"VHT_TX_MCS_MAP",
+	(unsigned char *)"VHT_RX_HIGHEST_SUPPORTED_DATA_RATE",
+	(unsigned char *)"VHT_TX_HIGHEST_SUPPORTED_DATA_RATE",
+	(unsigned char *)"VHT_CHANNEL_WIDTH",
+	(unsigned char *)"VHT_CHANNEL_CENTER_FREQ_SEGMENT1",
+	(unsigned char *)"VHT_CHANNEL_CENTER_FREQ_SEGMENT2",
+	(unsigned char *)"VHT_BASIC_MCS_SET",
+	(unsigned char *)"VHT_MU_MIMO_CAP_STA_COUNT",
+	(unsigned char *)"VHT_SS_UNDER_UTIL",
+	(unsigned char *)"VHT_40MHZ_UTILIZATION",
+	(unsigned char *)"VHT_80MHZ_UTILIZATION",
+	(unsigned char *)"VHT_160MHZ_UTILIZATION",
+	(unsigned char *)"MAX_AMSDU_LENGTH",
+	(unsigned char *)"MPDU_DENSITY",
+	(unsigned char *)"NUM_BUFF_ADVERT",
+	(unsigned char *)"MAX_RX_AMPDU_FACTOR",
+	(unsigned char *)"SHORT_GI_20MHZ",
+	(unsigned char *)"SHORT_GI_40MHZ",
+	(unsigned char *)"RIFS_ENABLED",
+	(unsigned char *)"MAX_PS_POLL",
+	(unsigned char *)"NUM_BEACON_PER_RSSI_AVERAGE",
+	(unsigned char *)"RSSI_FILTER_PERIOD",
+	(unsigned char *)"MIN_RSSI_THRESHOLD",
+	(unsigned char *)"NTH_BEACON_FILTER",
+	(unsigned char *)"BROADCAST_FRAME_FILTER_ENABLE",
+	(unsigned char *)"SCAN_IN_POWERSAVE",
+	(unsigned char *)"IGNORE_DTIM",
+	(unsigned char *)"WOWLAN_UCAST_PATTERN_FILTER_ENABLE",
+	(unsigned char *)"WOWLAN_CHANNEL_SWITCH_ENABLE",
+	(unsigned char *)"WOWLAN_DEAUTH_ENABLE",
+	(unsigned char *)"WOWLAN_DISASSOC_ENABLE",
+	(unsigned char *)"WOWLAN_MAX_MISSED_BEACON",
+	(unsigned char *)"WOWLAN_MAX_SLEEP_PERIOD",
+	(unsigned char *)"BA_TIMEOUT",
+	(unsigned char *)"BA_THRESHOLD_HIGH",
+	(unsigned char *)"MAX_BA_BUFFERS",
+	(unsigned char *)"MAX_BA_SESSIONS",
+	(unsigned char *)"BA_AUTO_SETUP",
+	(unsigned char *)"ADDBA_REQ_DECLINE",
+	(unsigned char *)"DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC",
+	(unsigned char *)"BG_SCAN_CHANNEL_LIST",
+	(unsigned char *)"MAX_MEDIUM_TIME",
+	(unsigned char *)"MAX_MPDUS_IN_AMPDU",
+	(unsigned char *)"IBSS_AUTO_BSSID",
+	(unsigned char *)"PROBE_REQ_ADDNIE_FLAG",
+	(unsigned char *)"PROBE_REQ_ADDNIE_DATA",
+	(unsigned char *)"PROBE_RSP_ADDNIE_FLAG",
+	(unsigned char *)"PROBE_RSP_ADDNIE_DATA1",
+	(unsigned char *)"PROBE_RSP_ADDNIE_DATA2",
+	(unsigned char *)"PROBE_RSP_ADDNIE_DATA3",
+	(unsigned char *)"ASSOC_RSP_ADDNIE_FLAG",
+	(unsigned char *)"ASSOC_RSP_ADDNIE_DATA",
+	(unsigned char *)"PROBE_REQ_ADDNP2PIE_FLAG",
+	(unsigned char *)"PROBE_REQ_ADDNP2PIE_DATA",
+	(unsigned char *)"PROBE_RSP_BCN_ADDNIE_FLAG",
+	(unsigned char *)"PROBE_RSP_BCN_ADDNIE_DATA",
+	(unsigned char *)"WPS_ENABLE",
+	(unsigned char *)"WPS_STATE",
+	(unsigned char *)"WPS_PROBE_REQ_FLAG",
+	(unsigned char *)"WPS_VERSION",
+	(unsigned char *)"WPS_REQUEST_TYPE",
+	(unsigned char *)"WPS_CFG_METHOD",
+	(unsigned char *)"WPS_UUID",
+	(unsigned char *)"WPS_PRIMARY_DEVICE_CATEGORY",
+	(unsigned char *)"WPS_PIMARY_DEVICE_OUI",
+	(unsigned char *)"WPS_DEVICE_SUB_CATEGORY",
+	(unsigned char *)"WPS_ASSOCIATION_STATE",
+	(unsigned char *)"WPS_CONFIGURATION_ERROR",
+	(unsigned char *)"WPS_DEVICE_PASSWORD_ID",
+	(unsigned char *)"WPS_ASSOC_METHOD",
+	(unsigned char *)"LOW_GAIN_OVERRIDE",
+	(unsigned char *)"ENABLE_PHY_AGC_LISTEN_MODE",
+	(unsigned char *)"RPE_POLLING_THRESHOLD",
+	(unsigned char *)"RPE_AGING_THRESHOLD_FOR_AC0_REG",
+	(unsigned char *)"RPE_AGING_THRESHOLD_FOR_AC1_REG",
+	(unsigned char *)"RPE_AGING_THRESHOLD_FOR_AC2_REG",
+	(unsigned char *)"RPE_AGING_THRESHOLD_FOR_AC3_REG",
+	(unsigned char *)"NO_OF_ONCHIP_REORDER_SESSIONS",
+	(unsigned char *)"SINGLE_TID_RC",
+	(unsigned char *)"RRM_ENABLED",
+	(unsigned char *)"RRM_OPERATING_CHAN_MAX",
+	(unsigned char *)"RRM_NON_OPERATING_CHAN_MAX",
+	(unsigned char *)"TX_PWR_CTRL_ENABLE",
+	(unsigned char *)"MCAST_BCAST_FILTER_SETTING",
+	(unsigned char *)"BTC_DHCP_BT_SLOTS_TO_BLOCK",
+	(unsigned char *)"DYNAMIC_PS_POLL_VALUE",
+	(unsigned char *)"PS_NULLDATA_AP_RESP_TIMEOUT",
+	(unsigned char *)"TELE_BCN_WAKEUP_EN",
+	(unsigned char *)"TELE_BCN_TRANS_LI",
+	(unsigned char *)"TELE_BCN_TRANS_LI_IDLE_BCNS",
+	(unsigned char *)"TELE_BCN_MAX_LI",
+	(unsigned char *)"TELE_BCN_MAX_LI_IDLE_BCNS",
+	(unsigned char *)"BTC_A2DP_DHCP_BT_SUB_INTERVALS",
+	(unsigned char *)"INFRA_STA_KEEP_ALIVE_PERIOD",
+	(unsigned char *)"ASSOC_STA_LIMIT",
+	(unsigned char *)"SAP_CHANNEL_SELECT_START_CHANNEL",
+	(unsigned char *)"SAP_CHANNEL_SELECT_END_CHANNEL",
+	(unsigned char *)"SAP_CHANNEL_SELECT_OPERATING_BAND",
+	(unsigned char *)"AP_DATA_AVAIL_POLL_PERIOD",
+	(unsigned char *)"ENABLE_CLOSE_LOOP",
+	(unsigned char *)"ENABLE_LTE_COEX",
+	(unsigned char *)"AP_KEEP_ALIVE_TIMEOUT",
+	(unsigned char *)"GO_KEEP_ALIVE_TIMEOUT",
+	(unsigned char *)"ENABLE_MC_ADDR_LIST",
+	(unsigned char *)"ENABLE_UC_FILTER",
+	(unsigned char *)"ENABLE_LPWR_IMG_TRANSITION",
+	(unsigned char *)"ENABLE_MCC_ADAPTIVE_SCHED",
+	(unsigned char *)"DISABLE_LDPC_WITH_TXBF_AP",
+	(unsigned char *)"AP_LINK_MONITOR_TIMEOUT",
+	(unsigned char *)"TDLS_QOS_WMM_UAPSD_MASK",
+	(unsigned char *)"TDLS_BUF_STA_ENABLED",
+	(unsigned char *)"TDLS_PUAPSD_INACT_TIME",
+	(unsigned char *)"TDLS_RX_FRAME_THRESHOLD",
+	(unsigned char *)"ENABLE_ADAPT_RX_DRAIN",
+	(unsigned char *)"FLEX_CONNECT_POWER_FACTOR",
+	(unsigned char *)"ANTENNA_DIVESITY",
+	(unsigned char *)"GO_LINK_MONITOR_TIMEOUT",
+	(unsigned char *)"ATH_DISABLE",
+	(unsigned char *)"BTC_ACTIVE_WLAN_LEN",
+	(unsigned char *)"BTC_ACTIVE_BT_LEN",
+	(unsigned char *)"BTC_SAP_ACTIVE_WLAN_LEN",
+	(unsigned char *)"BTC_SAP_ACTIVE_BT_LEN",
+	(unsigned char *)"RMC_ACTION_PERIOD_FREQUENCY",
+	(unsigned char *)"ASD_PROBE_INTERVAL",
+	(unsigned char *)"ASD_TRIGGER_THRESHOLD",
+	(unsigned char *)"ASD_RTT_RSSI_HYST_THRESHOLD",
+	(unsigned char *)"DEBUG_P2P_REMAIN_ON_CHANNEL",
+	(unsigned char *)"BTC_CTS2S_DURING_SCO",
+	(unsigned char *)"CHANNEL_BONDING_24G",
+	(unsigned char *)"OBSS_HT40_SCAN_PASSIVE_DWELL_TIME",
+	(unsigned char *)"OBSS_HT40_SCAN_ACTIVE_DWELL_TIME",
+	(unsigned char *)"OBSS_HT40_SCAN_WIDTH_TRIGGER_INTERVAL",
+	(unsigned char *)"OBSS_HT40_SCAN_PASSIVE_TOTAL_PER_CHANNEL",
+	(unsigned char *)"OBSS_HT40_SCAN_ACTIVE_TOTAL_PER_CHANNEL",
+	(unsigned char *)"OBSS_HT40_WIDTH_CHANNEL_TRANSITION_DELAY_FACTOR",
+	(unsigned char *)"OBSS_HT40_SCAN_ACTIVITY_THRESHOLD",
+	(unsigned char *)"TDLS_OFF_CHANNEL_ENABLED",
+	(unsigned char *)"PMF_SA_QUERY_MAX_RETRIES",
+	(unsigned char *)"PMF_SA_QUERY_RETRY_INTERVAL",
 };
 
 
diff --git a/CORE/MAC/src/cfg/cfgUtil/cfg.txt b/CORE/MAC/src/cfg/cfgUtil/cfg.txt
index fe0ceb3..d3cbf50 100644
--- a/CORE/MAC/src/cfg/cfgUtil/cfg.txt
+++ b/CORE/MAC/src/cfg/cfgUtil/cfg.txt
@@ -1,4 +1,4 @@
-/*
+ *
  * Copyright (c) 2012-2013 The Linux Foundation. All rights reserved.
  *
  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
@@ -17,13 +17,13 @@
  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  * PERFORMANCE OF THIS SOFTWARE.
- */
+ *
 
-/*
+ *
  * This file was originally distributed by Qualcomm Atheros, Inc.
  * under proprietary terms before Copyright ownership was assigned
  * to the Linux Foundation.
- */
+ *
 
 *
 
@@ -4834,3 +4834,29 @@
 V    RW    NP
 LIM
 0    1     0
+
+*
+* PMF SA Query Maximum Retries
+*
+
+WNI_CFG_PMF_SA_QUERY_MAX_RETRIES    I    4    1
+V    RO   NP RESTART
+NONE
+0    20   5
+V    RO   NP RESTART
+NONE
+0    20   5
+
+*
+* PMF SA Query Retry Interval (in TUs)
+*
+
+WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL    I    4    1
+V    RO   NP RESTART
+NONE
+0    2000 200
+V    RO   NP RESTART
+NONE
+0    2000 200
+
+
diff --git a/CORE/MAC/src/include/dot11f.h b/CORE/MAC/src/include/dot11f.h
index f35a2a0..b549e11 100644
--- a/CORE/MAC/src/include/dot11f.h
+++ b/CORE/MAC/src/include/dot11f.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012 - 2014 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2014 The Linux Foundation. All rights reserved.
  *
  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
  *
@@ -38,11 +38,10 @@
   * for working with 802.11 Frames
   *
   *
-
   *
   *
   * This file was automatically generated by 'framesc'
-  * Fri Feb  7 16:55:44 2014 from the following file(s):
+  * Thu Feb 13 15:40:58 2014 from the following file(s):
   *
   * dot11f.frms
   *
@@ -308,6 +307,16 @@
 
 void dot11fPackFfDialogToken(tpAniSirGlobal, tDot11fFfDialogToken*, tANI_U8*);
 
+typedef struct sDot11fFfLeader {
+    tANI_U8 mac[6];
+} tDot11fFfLeader;
+
+#define DOT11F_FF_LEADER_LEN ( 6 )
+
+void dot11fUnpackFfLeader(tpAniSirGlobal, tANI_U8*, tDot11fFfLeader*);
+
+void dot11fPackFfLeader(tpAniSirGlobal, tDot11fFfLeader*, tANI_U8*);
+
 typedef struct sDot11fFfLinkMargin {
     tANI_U8 linkMargin;
 } tDot11fFfLinkMargin;
@@ -328,6 +337,16 @@
 
 void dot11fPackFfListenInterval(tpAniSirGlobal, tDot11fFfListenInterval*, tANI_U8*);
 
+typedef struct sDot11fFfMagicCode {
+    tANI_U8 magic[6];
+} tDot11fFfMagicCode;
+
+#define DOT11F_FF_MAGICCODE_LEN ( 6 )
+
+void dot11fUnpackFfMagicCode(tpAniSirGlobal, tANI_U8*, tDot11fFfMagicCode*);
+
+void dot11fPackFfMagicCode(tpAniSirGlobal, tDot11fFfMagicCode*, tANI_U8*);
+
 typedef struct sDot11fFfMaxTxPower {
     tANI_U8 maxTxPower;
 } tDot11fFfMaxTxPower;
@@ -400,6 +419,36 @@
 
 void dot11fPackFfRCPI(tpAniSirGlobal, tDot11fFfRCPI*, tANI_U8*);
 
+typedef struct sDot11fFfRMCDialogToken {
+    tANI_U32 token;
+} tDot11fFfRMCDialogToken;
+
+#define DOT11F_FF_RMCDIALOGTOKEN_LEN ( 4 )
+
+void dot11fUnpackFfRMCDialogToken(tpAniSirGlobal, tANI_U8*, tDot11fFfRMCDialogToken*);
+
+void dot11fPackFfRMCDialogToken(tpAniSirGlobal, tDot11fFfRMCDialogToken*, tANI_U8*);
+
+typedef struct sDot11fFfRMCOUI {
+    tANI_U8 oui[3];
+} tDot11fFfRMCOUI;
+
+#define DOT11F_FF_RMCOUI_LEN ( 3 )
+
+void dot11fUnpackFfRMCOUI(tpAniSirGlobal, tANI_U8*, tDot11fFfRMCOUI*);
+
+void dot11fPackFfRMCOUI(tpAniSirGlobal, tDot11fFfRMCOUI*, tANI_U8*);
+
+typedef struct sDot11fFfRMCVersion {
+    tANI_U8 version;
+} tDot11fFfRMCVersion;
+
+#define DOT11F_FF_RMCVERSION_LEN ( 1 )
+
+void dot11fUnpackFfRMCVersion(tpAniSirGlobal, tANI_U8*, tDot11fFfRMCVersion*);
+
+void dot11fPackFfRMCVersion(tpAniSirGlobal, tDot11fFfRMCVersion*, tANI_U8*);
+
 typedef struct sDot11fFfRSNI {
     tANI_U8 rsni;
 } tDot11fFfRSNI;
@@ -3762,32 +3811,6 @@
 #ifdef __cplusplus
 }; /* End extern "C". */
 #endif /* C++ */
-// EID 56 (0x38)
-typedef struct sDot11fIEFTTimeoutInterval {
-    tANI_U8      present;
-    tANI_U8      timeoutType;
-    tANI_U32     timeoutValue;
-} tDot11fIEFTTimeoutInterval;
-
-#define DOT11F_EID_FTTIMEOUTINTERVAL ( 56 )
-
-// N.B. These #defines do *not* include the EID & length
-#define DOT11F_IE_FTTIMEOUTINTERVAL_MIN_LEN ( 5 )
-
-#define DOT11F_IE_FTTIMEOUTINTERVAL_MAX_LEN ( 5 )
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* C++ */
-tANI_U32 dot11fUnpackIeFTTimeoutInterval(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEFTTimeoutInterval*);
-
-tANI_U32 dot11fPackIeFTTimeoutInterval(tpAniSirGlobal, tDot11fIEFTTimeoutInterval*, tANI_U8*, tANI_U32, tANI_U32*);
-
-tANI_U32 dot11fGetPackedIEFTTimeoutInterval(tpAniSirGlobal, tDot11fIEFTTimeoutInterval*, tANI_U32*);
-
-#ifdef __cplusplus
-}; /* End extern "C". */
-#endif /* C++ */
 // EID 45 (0x2d)
 typedef struct sDot11fIEHTCaps {
     tANI_U8      present;
@@ -5357,6 +5380,32 @@
 #ifdef __cplusplus
 }; /* End extern "C". */
 #endif /* C++ */
+// EID 56 (0x38)
+typedef struct sDot11fIETimeoutInterval {
+    tANI_U8      present;
+    tANI_U8      timeoutType;
+    tANI_U32     timeoutValue;
+} tDot11fIETimeoutInterval;
+
+#define DOT11F_EID_TIMEOUTINTERVAL ( 56 )
+
+// N.B. These #defines do *not* include the EID & length
+#define DOT11F_IE_TIMEOUTINTERVAL_MIN_LEN ( 5 )
+
+#define DOT11F_IE_TIMEOUTINTERVAL_MAX_LEN ( 5 )
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* C++ */
+tANI_U32 dot11fUnpackIeTimeoutInterval(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIETimeoutInterval*);
+
+tANI_U32 dot11fPackIeTimeoutInterval(tpAniSirGlobal, tDot11fIETimeoutInterval*, tANI_U8*, tANI_U32, tANI_U32*);
+
+tANI_U32 dot11fGetPackedIETimeoutInterval(tpAniSirGlobal, tDot11fIETimeoutInterval*, tANI_U32*);
+
+#ifdef __cplusplus
+}; /* End extern "C". */
+#endif /* C++ */
 // EID 191 (0xbf)
 typedef struct sDot11fIEVHTCaps {
     tANI_U8      present;
@@ -6283,6 +6332,7 @@
     tANI_U16                    num_RICDataDesc;
     tDot11fIERICDataDesc        RICDataDesc[2];
     tDot11fIEWPA                WPA;
+    tDot11fIETimeoutInterval    TimeoutInterval;
     tDot11fIEHTCaps             HTCaps;
     tDot11fIEHTInfo             HTInfo;
     tDot11fIEWMMParams          WMMParams;
@@ -6316,16 +6366,16 @@
 #endif /* C++ */
 
 typedef struct sDot11fAuthentication{
-    tDot11fFfAuthAlgo          AuthAlgo;
-    tDot11fFfAuthSeqNo         AuthSeqNo;
-    tDot11fFfStatus            Status;
-    tDot11fIEChallengeText     ChallengeText;
-    tDot11fIERSNOpaque         RSNOpaque;
-    tDot11fIEMobilityDomain    MobilityDomain;
-    tDot11fIEFTInfo            FTInfo;
-    tDot11fIEFTTimeoutInterval FTTimeoutInterval;
-    tANI_U16                   num_RICDataDesc;
-    tDot11fIERICDataDesc       RICDataDesc[2];
+    tDot11fFfAuthAlgo        AuthAlgo;
+    tDot11fFfAuthSeqNo       AuthSeqNo;
+    tDot11fFfStatus          Status;
+    tDot11fIEChallengeText   ChallengeText;
+    tDot11fIERSNOpaque       RSNOpaque;
+    tDot11fIEMobilityDomain  MobilityDomain;
+    tDot11fIEFTInfo          FTInfo;
+    tDot11fIETimeoutInterval TimeoutInterval;
+    tANI_U16                 num_RICDataDesc;
+    tDot11fIERICDataDesc     RICDataDesc[2];
 } tDot11fAuthentication;
 
 #define DOT11F_AUTHENTICATION ( 7 )
@@ -7182,6 +7232,30 @@
 } /* End extern "C". */
 #endif /* C++ */
 
+typedef struct sDot11fRMC{
+    tDot11fFfCategory       Category;
+    tDot11fFfRMCOUI         RMCOUI;
+    tDot11fFfMagicCode      MagicCode;
+    tDot11fFfRMCVersion     RMCVersion;
+    tDot11fFfAction         Action;
+    tDot11fFfRMCDialogToken RMCDialogToken;
+    tDot11fFfLeader         Leader;
+} tDot11fRMC;
+
+#define DOT11F_RMC ( 39 )
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* C++ */
+
+tANI_U32 dot11fUnpackRMC(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fRMC *pFrm);
+tANI_U32 dot11fPackRMC(tpAniSirGlobal pCtx, tDot11fRMC *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
+tANI_U32 dot11fGetPackedRMCSize(tpAniSirGlobal pCtx, tDot11fRMC *pFrm, tANI_U32 *pnNeeded);
+
+#ifdef __cplusplus
+} /* End extern "C". */
+#endif /* C++ */
+
 typedef struct sDot11fRadioMeasurementReport{
     tDot11fFfCategory          Category;
     tDot11fFfAction            Action;
@@ -7190,7 +7264,7 @@
     tDot11fIEMeasurementReport MeasurementReport[4];
 } tDot11fRadioMeasurementReport;
 
-#define DOT11F_RADIOMEASUREMENTREPORT ( 39 )
+#define DOT11F_RADIOMEASUREMENTREPORT ( 40 )
 
 #ifdef __cplusplus
 extern "C" {
@@ -7213,7 +7287,7 @@
     tDot11fIEMeasurementRequest MeasurementRequest[2];
 } tDot11fRadioMeasurementRequest;
 
-#define DOT11F_RADIOMEASUREMENTREQUEST ( 40 )
+#define DOT11F_RADIOMEASUREMENTREQUEST ( 41 )
 
 #ifdef __cplusplus
 extern "C" {
@@ -7263,7 +7337,7 @@
     tDot11fIEOperatingMode      OperatingMode;
 } tDot11fReAssocRequest;
 
-#define DOT11F_REASSOCREQUEST ( 41 )
+#define DOT11F_REASSOCREQUEST ( 42 )
 
 #ifdef __cplusplus
 extern "C" {
@@ -7293,6 +7367,7 @@
     tANI_U16                    num_RICDataDesc;
     tDot11fIERICDataDesc        RICDataDesc[2];
     tDot11fIEWPA                WPA;
+    tDot11fIETimeoutInterval    TimeoutInterval;
     tDot11fIEHTCaps             HTCaps;
     tDot11fIEHTInfo             HTInfo;
     tDot11fIEWMMParams          WMMParams;
@@ -7311,7 +7386,7 @@
     tDot11fIEOBSSScanParameters OBSSScanParameters;
 } tDot11fReAssocResponse;
 
-#define DOT11F_REASSOCRESPONSE ( 42 )
+#define DOT11F_REASSOCRESPONSE ( 43 )
 
 #ifdef __cplusplus
 extern "C" {
@@ -7331,7 +7406,7 @@
     tDot11fFfSMPowerModeSet SMPowerModeSet;
 } tDot11fSMPowerSave;
 
-#define DOT11F_SMPOWERSAVE ( 43 )
+#define DOT11F_SMPOWERSAVE ( 44 )
 
 #ifdef __cplusplus
 extern "C" {
@@ -7345,13 +7420,33 @@
 } /* End extern "C". */
 #endif /* C++ */
 
+typedef struct sDot11fSaQueryReq{
+    tDot11fFfCategory      Category;
+    tDot11fFfAction        Action;
+    tDot11fFfTransactionId TransactionId;
+} tDot11fSaQueryReq;
+
+#define DOT11F_SAQUERYREQ ( 45 )
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* C++ */
+
+tANI_U32 dot11fUnpackSaQueryReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fSaQueryReq *pFrm);
+tANI_U32 dot11fPackSaQueryReq(tpAniSirGlobal pCtx, tDot11fSaQueryReq *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed);
+tANI_U32 dot11fGetPackedSaQueryReqSize(tpAniSirGlobal pCtx, tDot11fSaQueryReq *pFrm, tANI_U32 *pnNeeded);
+
+#ifdef __cplusplus
+} /* End extern "C". */
+#endif /* C++ */
+
 typedef struct sDot11fSaQueryRsp{
     tDot11fFfCategory      Category;
     tDot11fFfAction        Action;
     tDot11fFfTransactionId TransactionId;
 } tDot11fSaQueryRsp;
 
-#define DOT11F_SAQUERYRSP ( 44 )
+#define DOT11F_SAQUERYRSP ( 46 )
 
 #ifdef __cplusplus
 extern "C" {
@@ -7372,7 +7467,7 @@
     tDot11fIELinkIdentifier LinkIdentifier;
 } tDot11fTDLSDisReq;
 
-#define DOT11F_TDLSDISREQ ( 45 )
+#define DOT11F_TDLSDISREQ ( 47 )
 
 #ifdef __cplusplus
 extern "C" {
@@ -7398,14 +7493,14 @@
     tDot11fIERSN                  RSN;
     tDot11fIEExtCap               ExtCap;
     tDot11fIEFTInfo               FTInfo;
-    tDot11fIEFTTimeoutInterval    FTTimeoutInterval;
+    tDot11fIETimeoutInterval      TimeoutInterval;
     tDot11fIERICData              RICData;
     tDot11fIEHTCaps               HTCaps;
     tDot11fIELinkIdentifier       LinkIdentifier;
     tDot11fIEVHTCaps              VHTCaps;
 } tDot11fTDLSDisRsp;
 
-#define DOT11F_TDLSDISRSP ( 46 )
+#define DOT11F_TDLSDISRSP ( 48 )
 
 #ifdef __cplusplus
 extern "C" {
@@ -7428,7 +7523,7 @@
     tDot11fIEPUBufferStatus PUBufferStatus;
 } tDot11fTDLSPeerTrafficInd;
 
-#define DOT11F_TDLSPEERTRAFFICIND ( 47 )
+#define DOT11F_TDLSPEERTRAFFICIND ( 49 )
 
 #ifdef __cplusplus
 extern "C" {
@@ -7449,7 +7544,7 @@
     tDot11fIELinkIdentifier LinkIdentifier;
 } tDot11fTDLSPeerTrafficRsp;
 
-#define DOT11F_TDLSPEERTRAFFICRSP ( 48 )
+#define DOT11F_TDLSPEERTRAFFICRSP ( 50 )
 
 #ifdef __cplusplus
 extern "C" {
@@ -7464,22 +7559,22 @@
 #endif /* C++ */
 
 typedef struct sDot11fTDLSSetupCnf{
-    tDot11fFfCategory          Category;
-    tDot11fFfAction            Action;
-    tDot11fFfStatus            Status;
-    tDot11fFfDialogToken       DialogToken;
-    tDot11fIERSN               RSN;
-    tDot11fIEEDCAParamSet      EDCAParamSet;
-    tDot11fIEFTInfo            FTInfo;
-    tDot11fIEFTTimeoutInterval FTTimeoutInterval;
-    tDot11fIEHTInfo            HTInfo;
-    tDot11fIELinkIdentifier    LinkIdentifier;
-    tDot11fIEWMMInfoStation    WMMInfoStation;
-    tDot11fIEVHTOperation      VHTOperation;
-    tDot11fIEOperatingMode     OperatingMode;
+    tDot11fFfCategory        Category;
+    tDot11fFfAction          Action;
+    tDot11fFfStatus          Status;
+    tDot11fFfDialogToken     DialogToken;
+    tDot11fIERSN             RSN;
+    tDot11fIEEDCAParamSet    EDCAParamSet;
+    tDot11fIEFTInfo          FTInfo;
+    tDot11fIETimeoutInterval TimeoutInterval;
+    tDot11fIEHTInfo          HTInfo;
+    tDot11fIELinkIdentifier  LinkIdentifier;
+    tDot11fIEWMMInfoStation  WMMInfoStation;
+    tDot11fIEVHTOperation    VHTOperation;
+    tDot11fIEOperatingMode   OperatingMode;
 } tDot11fTDLSSetupCnf;
 
-#define DOT11F_TDLSSETUPCNF ( 49 )
+#define DOT11F_TDLSSETUPCNF ( 51 )
 
 #ifdef __cplusplus
 extern "C" {
@@ -7507,7 +7602,7 @@
     tDot11fIESuppOperatingClasses SuppOperatingClasses;
     tDot11fIEQOSCapsStation       QOSCapsStation;
     tDot11fIEFTInfo               FTInfo;
-    tDot11fIEFTTimeoutInterval    FTTimeoutInterval;
+    tDot11fIETimeoutInterval      TimeoutInterval;
     tDot11fIERICData              RICData;
     tDot11fIEHTCaps               HTCaps;
     tDot11fIELinkIdentifier       LinkIdentifier;
@@ -7516,7 +7611,7 @@
     tDot11fIEVHTCaps              VHTCaps;
 } tDot11fTDLSSetupReq;
 
-#define DOT11F_TDLSSETUPREQ ( 50 )
+#define DOT11F_TDLSSETUPREQ ( 52 )
 
 #ifdef __cplusplus
 extern "C" {
@@ -7545,7 +7640,7 @@
     tDot11fIESuppOperatingClasses SuppOperatingClasses;
     tDot11fIEQOSCapsStation       QOSCapsStation;
     tDot11fIEFTInfo               FTInfo;
-    tDot11fIEFTTimeoutInterval    FTTimeoutInterval;
+    tDot11fIETimeoutInterval      TimeoutInterval;
     tDot11fIERICData              RICData;
     tDot11fIEHTCaps               HTCaps;
     tDot11fIELinkIdentifier       LinkIdentifier;
@@ -7555,7 +7650,7 @@
     tDot11fIEOperatingMode        OperatingMode;
 } tDot11fTDLSSetupRsp;
 
-#define DOT11F_TDLSSETUPRSP ( 51 )
+#define DOT11F_TDLSSETUPRSP ( 53 )
 
 #ifdef __cplusplus
 extern "C" {
@@ -7577,7 +7672,7 @@
     tDot11fIELinkIdentifier LinkIdentifier;
 } tDot11fTDLSTeardown;
 
-#define DOT11F_TDLSTEARDOWN ( 52 )
+#define DOT11F_TDLSTEARDOWN ( 54 )
 
 #ifdef __cplusplus
 extern "C" {
@@ -7598,7 +7693,7 @@
     tDot11fIETPCReport   TPCReport;
 } tDot11fTPCReport;
 
-#define DOT11F_TPCREPORT ( 53 )
+#define DOT11F_TPCREPORT ( 55 )
 
 #ifdef __cplusplus
 extern "C" {
@@ -7619,7 +7714,7 @@
     tDot11fIETPCRequest  TPCRequest;
 } tDot11fTPCRequest;
 
-#define DOT11F_TPCREQUEST ( 54 )
+#define DOT11F_TPCREQUEST ( 56 )
 
 #ifdef __cplusplus
 extern "C" {
@@ -7640,7 +7735,7 @@
     tDot11fFfVhtUserPositionArray     VhtUserPositionArray;
 } tDot11fVHTGidManagementActionFrame;
 
-#define DOT11F_VHTGIDMANAGEMENTACTIONFRAME ( 55 )
+#define DOT11F_VHTGIDMANAGEMENTACTIONFRAME ( 57 )
 
 #ifdef __cplusplus
 extern "C" {
@@ -7663,7 +7758,7 @@
     tDot11fIECCXTrafStrmRateSet CCXTrafStrmRateSet;
 } tDot11fWMMAddTSRequest;
 
-#define DOT11F_WMMADDTSREQUEST ( 56 )
+#define DOT11F_WMMADDTSREQUEST ( 58 )
 
 #ifdef __cplusplus
 extern "C" {
@@ -7686,7 +7781,7 @@
     tDot11fIECCXTrafStrmMet CCXTrafStrmMet;
 } tDot11fWMMAddTSResponse;
 
-#define DOT11F_WMMADDTSRESPONSE ( 57 )
+#define DOT11F_WMMADDTSRESPONSE ( 59 )
 
 #ifdef __cplusplus
 extern "C" {
@@ -7708,7 +7803,7 @@
     tDot11fIEWMMTSPEC    WMMTSPEC;
 } tDot11fWMMDelTS;
 
-#define DOT11F_WMMDELTS ( 58 )
+#define DOT11F_WMMDELTS ( 60 )
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/CORE/MAC/src/include/dphGlobal.h b/CORE/MAC/src/include/dphGlobal.h
index 2803928..95ee405 100644
--- a/CORE/MAC/src/include/dphGlobal.h
+++ b/CORE/MAC/src/include/dphGlobal.h
@@ -177,6 +177,17 @@
 #define DPH_STA_HASH_INDEX_PEER   1
 
 
+#ifdef WLAN_FEATURE_11W
+//DPH PMF SA Query state for station
+
+#define DPH_SA_QUERY_NOT_IN_PROGRESS      1
+
+#define DPH_SA_QUERY_IN_PROGRESS          2
+
+#define DPH_SA_QUERY_TIMED_OUT            3
+#endif
+
+
 typedef struct sDphRateBasedCtr
 
 {
@@ -602,6 +613,14 @@
     tANI_U8  vhtBeamFormerCapable;
 #endif
 
+#ifdef WLAN_FEATURE_11W
+    tANI_U8  pmfSaQueryState;
+    tANI_U8  pmfSaQueryRetryCount;
+    tANI_U16 pmfSaQueryCurrentTransId;
+    tANI_U16 pmfSaQueryStartTransId;
+    TX_TIMER pmfSaQueryTimer;
+#endif
+
     tANI_U8 htLdpcCapable;
     tANI_U8 vhtLdpcCapable;
 
diff --git a/CORE/MAC/src/include/parserApi.h b/CORE/MAC/src/include/parserApi.h
index e72b81f..d3db617 100644
--- a/CORE/MAC/src/include/parserApi.h
+++ b/CORE/MAC/src/include/parserApi.h
@@ -882,3 +882,8 @@
                                    tDot11fIEWiderBWChanSwitchAnn *pDot11f,
                                    tpPESession psessionEntry);
 #endif
+
+void PopulateDot11fTimeoutInterval( tpAniSirGlobal pMac,
+                                    tDot11fIETimeoutInterval *pDot11f,
+                                    tANI_U8 type, tANI_U32 value );
+
diff --git a/CORE/MAC/src/pe/lim/limAssocUtils.c b/CORE/MAC/src/pe/lim/limAssocUtils.c
index 0e44163..3e6ad28 100644
--- a/CORE/MAC/src/pe/lim/limAssocUtils.c
+++ b/CORE/MAC/src/pe/lim/limAssocUtils.c
@@ -447,10 +447,10 @@
     tDot11fIERSN    *pRSNIe;
     tANI_U8         i, j, match, onlyNonHtCipher = 1;
 #ifdef WLAN_FEATURE_11W
-    tANI_BOOLEAN weRequirePMF;
     tANI_BOOLEAN weArePMFCapable;
-    tANI_BOOLEAN theyRequirePMF;
+    tANI_BOOLEAN weRequirePMF;
     tANI_BOOLEAN theyArePMFCapable;
+    tANI_BOOLEAN theyRequirePMF;
 #endif
 
 
@@ -516,11 +516,12 @@
     }
 
     *pmfConnection = eANI_BOOLEAN_FALSE;
+
 #ifdef WLAN_FEATURE_11W
-    weRequirePMF = (pRSNIe->RSN_Cap[0] >> 6) & 0x1;
-    weArePMFCapable = (pRSNIe->RSN_Cap[0] >> 7) & 0x1;
-    theyRequirePMF = (rxRSNIe.RSN_Cap[0] >> 6) & 0x1;
+    weArePMFCapable = pSessionEntry->pLimStartBssReq->pmfCapable;
+    weRequirePMF = pSessionEntry->pLimStartBssReq->pmfRequired;
     theyArePMFCapable = (rxRSNIe.RSN_Cap[0] >> 7) & 0x1;
+    theyRequirePMF = (rxRSNIe.RSN_Cap[0] >> 6) & 0x1;
 
     if ((theyRequirePMF && theyArePMFCapable && !weArePMFCapable) ||
         (weRequirePMF && !theyArePMFCapable))
@@ -535,6 +536,10 @@
 
     if(theyArePMFCapable && weArePMFCapable)
         *pmfConnection = eANI_BOOLEAN_TRUE;
+
+    limLog(pMac, LOG1, FL("weAreCapable %d, weRequire %d, theyAreCapable %d, "
+                          "theyRequire %d, PMFconnection %d"),
+           weArePMFCapable, weRequirePMF, theyArePMFCapable, theyRequirePMF, *pmfConnection);
 #endif
 
     return eSIR_SUCCESS;
@@ -3181,6 +3186,10 @@
                 schSetFixedBeaconFields(pMac,psessionEntry);    
                 limSendBeaconParams(pMac, &beaconParams, psessionEntry );
             }
+
+#ifdef WLAN_FEATURE_11W
+            tx_timer_delete(&pStaDs->pmfSaQueryTimer);
+#endif
         }
         if (dphDeleteHashEntry(pMac, staAddr, staId, &psessionEntry->dph.dphHashTable) != eSIR_SUCCESS)
            limLog(pMac, LOGP, FL("error deleting hash entry"));
diff --git a/CORE/MAC/src/pe/lim/limProcessActionFrame.c b/CORE/MAC/src/pe/lim/limProcessActionFrame.c
index f710317..6419a02 100644
--- a/CORE/MAC/src/pe/lim/limProcessActionFrame.c
+++ b/CORE/MAC/src/pe/lim/limProcessActionFrame.c
@@ -1869,18 +1869,56 @@
 {
     tpSirMacMgmtHdr     pHdr;
     tANI_U32            frameLen;
+    tANI_U8             *pBody;
+    tpDphHashNode       pSta;
+    tANI_U16            aid;
+    tANI_U16            transId;
+    tANI_U8             retryNum;
 
     pHdr = WDA_GET_RX_MAC_HEADER(pRxPacketInfo);
     frameLen = WDA_GET_RX_PAYLOAD_LEN(pRxPacketInfo);
+    pBody = WDA_GET_RX_MPDU_DATA(pRxPacketInfo);
     VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_INFO,
                          ("SA Query Response received...")) ;
-    /* Forward to the SME to HDD to wpa_supplicant */
-    // type is ACTION
-    limSendSmeMgmtFrameInd(pMac, pHdr->fc.subType,
-       (tANI_U8*)pHdr, frameLen + sizeof(tSirMacMgmtHdr), 0,
-       WDA_GET_RX_CH( pRxPacketInfo ), psessionEntry, 0);
-}
 
+    /* If this is an unprotected SA Query Response, then ignore it. */
+    if (pHdr->fc.wep == 0)
+        return;
+
+    pSta = dphLookupHashEntry(pMac, pHdr->sa, &aid, &psessionEntry->dph.dphHashTable);
+    if (NULL == pSta)
+        return;
+
+    limLog(pMac, LOG1,
+           FL("SA Query Response source addr - %0x:%0x:%0x:%0x:%0x:%0x"),
+           pHdr->sa[0], pHdr->sa[1], pHdr->sa[2], pHdr->sa[3],
+           pHdr->sa[4], pHdr->sa[5]);
+    limLog(pMac, LOG1,
+           FL("SA Query state for station - %d"), pSta->pmfSaQueryState);
+
+    if (DPH_SA_QUERY_IN_PROGRESS != pSta->pmfSaQueryState)
+        return;
+
+    /* Extract 11w trsansId from SA query reponse action frame
+       In SA query response action frame:
+          Category       : 1 byte
+          Action         : 1 byte
+          Transaction ID : 2 bytes */
+    vos_mem_copy(&transId, &pBody[2], 2);
+
+    /* If SA Query is in progress with the station and the station
+       responds then the association request that triggered the SA
+       query is from a rogue station, just go back to initial state. */
+    for (retryNum = 0; retryNum <= pSta->pmfSaQueryRetryCount; retryNum++)
+        if (transId == pSta->pmfSaQueryStartTransId + retryNum)
+        {
+            limLog(pMac, LOG1,
+                   FL("Found matching SA Query Request - transaction ID %d"), transId);
+            tx_timer_deactivate(&pSta->pmfSaQueryTimer);
+            pSta->pmfSaQueryState = DPH_SA_QUERY_NOT_IN_PROGRESS;
+            break;
+        }
+}
 #endif
 
 /**
@@ -2202,7 +2240,7 @@
                 break;
             case  SIR_MAC_SA_QUERY_RSP:
                 /**11w SA query response action frame received**/
-                /* Forward to the SME to HDD to wpa_supplicant */
+                /* Handle based on the current SA Query state */
                 __limProcessSAQueryResponseActionFrame(pMac,(tANI_U8*) pRxPacketInfo, psessionEntry );
                 break;
             default:
diff --git a/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c b/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c
index 7f8eb25..b7d4e53 100644
--- a/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c
+++ b/CORE/MAC/src/pe/lim/limProcessAssocReqFrame.c
@@ -54,6 +54,9 @@
 #include "limAdmitControl.h"
 #include "palApi.h"
 #include "limSessionUtils.h"
+#ifdef WLAN_FEATURE_11W
+#include "wniCfgAp.h"
+#endif
 
 
 #include "vos_types.h"
@@ -191,6 +194,10 @@
     tSirMacRateSet  basicRates;
     tANI_U8 i = 0, j = 0;
     tANI_BOOLEAN pmfConnection = eANI_BOOLEAN_FALSE;
+#ifdef WLAN_FEATURE_11W
+    tPmfSaQueryTimerId timerId;
+    tANI_U32 retryInterval;
+#endif
 
     limGetPhyMode(pMac, &phyMode, psessionEntry);
 
@@ -844,9 +851,57 @@
             goto error;
         } // if (pStaDs->mlmStaContext.mlmState != eLIM_MLM_LINK_ESTABLISHED_STATE)
 
-           /* STA sent association Request frame while already in
-            * 'associated' state and no change in the capability
-            *  so drop the frame */
+        /* STA sent association Request frame while already in
+         * 'associated' state */
+
+#ifdef WLAN_FEATURE_11W
+        limLog(pMac, LOG1, FL("Re/Assoc request from station that is already associated"));
+        limLog(pMac, LOG1, FL("PMF enabled %d, SA Query state %d"), pStaDs->rmfEnabled,
+               pStaDs->pmfSaQueryState);
+        if (pStaDs->rmfEnabled)
+        {
+            switch (pStaDs->pmfSaQueryState)
+            {
+
+            // start SA Query procedure, respond to Association Request
+            // with try again later
+            case DPH_SA_QUERY_NOT_IN_PROGRESS:
+                limSendAssocRspMgmtFrame(pMac, eSIR_MAC_TRY_AGAIN_LATER, 1,
+                                         pHdr->sa, subType, pStaDs, psessionEntry);
+                limSendSaQueryRequestFrame(
+                    pMac, (tANI_U8 *)&(pStaDs->pmfSaQueryCurrentTransId),
+                    pHdr->sa, psessionEntry);
+                pStaDs->pmfSaQueryStartTransId = pStaDs->pmfSaQueryCurrentTransId;
+                pStaDs->pmfSaQueryCurrentTransId++;
+                pStaDs->pmfSaQueryRetryCount = 0;
+
+                // start timer for SA Query retry
+                if (tx_timer_activate(&pStaDs->pmfSaQueryTimer) != TX_SUCCESS)
+                {
+                    limLog(pMac, LOGE, FL("PMF SA Query timer activation failed!"));
+                    goto error;
+                }
+
+                pStaDs->pmfSaQueryState = DPH_SA_QUERY_IN_PROGRESS;
+                goto error;
+
+            // SA Query procedure still going, respond to Association
+            // Request with try again later
+            case DPH_SA_QUERY_IN_PROGRESS:
+                limSendAssocRspMgmtFrame(pMac, eSIR_MAC_TRY_AGAIN_LATER, 1,
+                                         pHdr->sa, subType, 0, psessionEntry);
+                goto error;
+
+            // SA Query procedure timed out, accept Association Request
+            // normally
+             case DPH_SA_QUERY_TIMED_OUT:
+                pStaDs->pmfSaQueryState = DPH_SA_QUERY_NOT_IN_PROGRESS;
+                break;
+            }
+        }
+#endif
+
+        /* no change in the capability so drop the frame */
         if ((VOS_TRUE == vos_mem_compare(&pStaDs->mlmStaContext.capabilityInfo,
                                           &pAssocReq->capabilityInfo,
                                           sizeof(tSirMacCapabilityInfo)))&&
@@ -1203,6 +1258,31 @@
 
 #ifdef WLAN_FEATURE_11W
     pStaDs->rmfEnabled = (pmfConnection) ? 1 : 0;
+    pStaDs->pmfSaQueryState = DPH_SA_QUERY_NOT_IN_PROGRESS;
+    timerId.fields.sessionId = psessionEntry->peSessionId;
+    timerId.fields.peerIdx = peerIdx;
+    if (wlan_cfgGetInt(pMac, WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL,
+                       &retryInterval) != eSIR_SUCCESS)
+    {
+        limLog(pMac, LOGE, FL("Could not retrieve PMF SA Query retry interval value"));
+        limRejectAssociation(pMac, pHdr->sa,
+                             subType, true, authType,
+                             peerIdx, false,
+                             (tSirResultCodes) eSIR_MAC_UNSPEC_FAILURE_STATUS, psessionEntry);
+        goto error;
+    }
+    if (tx_timer_create(&pStaDs->pmfSaQueryTimer, "PMF SA Query timer",
+                        limPmfSaQueryTimerHandler, timerId.value,
+                        SYS_MS_TO_TICKS((retryInterval * 1024) / 1000),
+                        0, TX_NO_ACTIVATE) != TX_SUCCESS)
+    {
+        limLog(pMac, LOGE, FL("could not create PMF SA Query timer"));
+        limRejectAssociation(pMac, pHdr->sa,
+                             subType, true, authType,
+                             peerIdx, false,
+                             (tSirResultCodes) eSIR_MAC_UNSPEC_FAILURE_STATUS, psessionEntry);
+        goto error;
+    }
 #endif
 
     // BTAMP: Storing the parsed assoc request in the psessionEntry array
diff --git a/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c b/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
index 4e4f814..f56b597 100644
--- a/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessMlmReqMessages.c
@@ -1674,6 +1674,10 @@
     pAddBssParams->currentOperChannel   = pMlmStartReq->channelNumber;
     pAddBssParams->currentExtChannel    = pMlmStartReq->cbMode;
 
+#ifdef WLAN_FEATURE_11W
+    pAddBssParams->rmfEnabled           = psessionEntry->limRmfEnabled;
+#endif
+
     /* Update PE sessionId*/
     pAddBssParams->sessionId            = pMlmStartReq->sessionId; 
 
@@ -1709,11 +1713,6 @@
     pAddBssParams->extSetStaKeyParamValid = 0;
 #endif
 
-#ifdef WLAN_FEATURE_11W
-    pAddBssParams->rmfEnabled = (psessionEntry->gStartBssRSNIe.RSN_Cap[0] >> 7) & 0x1;
-    limLog( pMac, LOG1, FL("PMF capable value for BSS is %d"), pAddBssParams->rmfEnabled);
-#endif
-
     //
     // FIXME_GEN4
     // A global counter (dialog token) is required to keep track of
diff --git a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
index de89877..f271455 100644
--- a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
@@ -633,6 +633,11 @@
         psessionEntry->txLdpcIniFeatureEnabled = 
                                     pSmeStartBssReq->txLdpcIniFeatureEnabled;
 
+#ifdef WLAN_FEATURE_11W
+        psessionEntry->limRmfEnabled = pSmeStartBssReq->pmfCapable ? 1 : 0;
+        limLog(pMac, LOG1, FL("Session RMF enabled: %d"), psessionEntry->limRmfEnabled);
+#endif
+
         vos_mem_copy((void*)&psessionEntry->rateSet,
             (void*)&pSmeStartBssReq->operationalRateSet,
             sizeof(tSirMacRateSet));
diff --git a/CORE/MAC/src/pe/lim/limSendManagementFrames.c b/CORE/MAC/src/pe/lim/limSendManagementFrames.c
index 5cf0caa..1396daf 100644
--- a/CORE/MAC/src/pe/lim/limSendManagementFrames.c
+++ b/CORE/MAC/src/pe/lim/limSendManagementFrames.c
@@ -51,15 +51,15 @@
 #include "limSendMessages.h"
 #include "limAssocUtils.h"
 #include "limFT.h"
+#ifdef WLAN_FEATURE_11W
+#include "wniCfgAp.h"
+#endif
 
 #if defined WLAN_FEATURE_VOWIFI
 #include "rrmApi.h"
 #endif
 
 #include "wlan_qct_wda.h"
-#ifdef WLAN_FEATURE_11W
-#include "dot11fdefs.h"
-#endif
 
 
 ////////////////////////////////////////////////////////////////////////
@@ -1222,6 +1222,10 @@
     tANI_U32             addnIELen=0;
     tANI_U8              addIE[WNI_CFG_ASSOC_RSP_ADDNIE_DATA_LEN];
     tpSirAssocReq        pAssocReq = NULL; 
+#ifdef WLAN_FEATURE_11W
+    tANI_U32 retryInterval;
+    tANI_U32 maxRetries;
+#endif
 
     if(NULL == psessionEntry)
     {
@@ -1336,8 +1340,24 @@
 
     } // End if on non-NULL 'pSta'.
 
+#ifdef WLAN_FEATURE_11W
+    if( eSIR_MAC_TRY_AGAIN_LATER == statusCode )
+    {
+        if ( wlan_cfgGetInt(pMac, WNI_CFG_PMF_SA_QUERY_MAX_RETRIES,
+                           &maxRetries ) != eSIR_SUCCESS )
+            limLog( pMac, LOGE, FL("Could not retrieve PMF SA Query maximum retries value") );
+        else
+            if ( wlan_cfgGetInt(pMac, WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL,
+                               &retryInterval ) != eSIR_SUCCESS)
+                limLog( pMac, LOGE, FL("Could not retrieve PMF SA Query timer interval value") );
+            else
+                PopulateDot11fTimeoutInterval(
+                   pMac, &frm.TimeoutInterval, SIR_MAC_TI_TYPE_ASSOC_COMEBACK,
+                   (maxRetries - pSta->pmfSaQueryRetryCount) * retryInterval );
+    }
+#endif
 
-   vos_mem_set(( tANI_U8* )&beaconParams, sizeof( tUpdateBeaconParams), 0);
+    vos_mem_set(( tANI_U8* )&beaconParams, sizeof( tUpdateBeaconParams), 0);
 
     if( psessionEntry->limSystemRole == eLIM_AP_ROLE ){
         if(psessionEntry->gLimProtectionControl != WNI_CFG_FORCE_POLICY_PROTECTION_DISABLE)
@@ -6145,6 +6165,157 @@
 
 #ifdef WLAN_FEATURE_11W
 /**
+ * \brief Send SA query request action frame to peer
+ *
+ * \sa limSendSaQueryRequestFrame
+ *
+ *
+ * \param pMac    The global tpAniSirGlobal object
+ *
+ * \param transId Transaction identifier
+ *
+ * \param peer    The Mac address of the station to which this action frame is addressed
+ *
+ * \param psessionEntry The PE session entry
+ *
+ * \return eSIR_SUCCESS if setup completes successfully
+ *         eSIR_FAILURE is some problem is encountered
+ */
+
+tSirRetStatus limSendSaQueryRequestFrame( tpAniSirGlobal pMac, tANI_U8 *transId,
+                                          tSirMacAddr peer, tpPESession psessionEntry )
+{
+
+   tDot11fSaQueryReq  frm; // SA query request action frame
+   tANI_U8            *pFrame;
+   tSirRetStatus      nSirStatus;
+   tpSirMacMgmtHdr    pMacHdr;
+   tANI_U32           nBytes, nPayload, nStatus;
+   void               *pPacket;
+   eHalStatus         halstatus;
+   tANI_U8            txFlag = 0;
+
+   vos_mem_set( ( tANI_U8* )&frm, sizeof( frm ), 0 );
+   frm.Category.category  = SIR_MAC_ACTION_SA_QUERY;
+   /* 11w action  field is :
+    action: 0 --> SA Query Request action frame
+    action: 1 --> SA Query Response action frame */
+   frm.Action.action    = SIR_MAC_SA_QUERY_REQ;
+   /* 11w SA Query Request transId */
+   vos_mem_copy( &frm.TransactionId.transId[0], &transId[0], 2 );
+
+   nStatus = dot11fGetPackedSaQueryReqSize(pMac, &frm, &nPayload);
+   if ( DOT11F_FAILED( nStatus ) )
+   {
+      limLog( pMac, LOGP, FL("Failed to calculate the packed size "
+               "for an SA Query Request (0x%08x)."),
+            nStatus );
+      // We'll fall back on the worst case scenario:
+      nPayload = sizeof( tDot11fSaQueryReq );
+   }
+   else if ( DOT11F_WARNED( nStatus ) )
+   {
+      limLog( pMac, LOGW, FL("There were warnings while calculating "
+               "the packed size for an SA Query Request"
+               " (0x%08x)."), nStatus );
+   }
+
+   nBytes = nPayload + sizeof( tSirMacMgmtHdr );
+   halstatus = palPktAlloc( pMac->hHdd, HAL_TXRX_FRM_802_11_MGMT,  nBytes, ( void** ) &pFrame, ( void** ) &pPacket );
+   if ( ! HAL_STATUS_SUCCESS ( halstatus ) )
+   {
+      limLog( pMac, LOGP, FL("Failed to allocate %d bytes for a SA Query Request "
+                               "action frame"), nBytes );
+      return eSIR_FAILURE;
+   }
+
+   // Paranoia:
+   vos_mem_set( pFrame, nBytes, 0 );
+
+   // Copy necessary info to BD
+   nSirStatus = limPopulateMacHeader( pMac,
+                                      pFrame,
+                                      SIR_MAC_MGMT_FRAME,
+                                      SIR_MAC_MGMT_ACTION,
+                                      peer, psessionEntry->selfMacAddr );
+   if ( eSIR_SUCCESS != nSirStatus )
+      goto returnAfterError;
+
+   // Update A3 with the BSSID
+   pMacHdr = ( tpSirMacMgmtHdr ) pFrame;
+
+   sirCopyMacAddr( pMacHdr->bssId, psessionEntry->bssId );
+
+   // Since this is a SA Query Request, set the "protect" (aka WEP) bit
+   // in the FC
+   limSetProtectedBit(pMac, psessionEntry, peer, pMacHdr);
+
+   // Pack 11w SA Query Request frame
+   nStatus = dot11fPackSaQueryReq( pMac,
+         &frm,
+         pFrame + sizeof( tSirMacMgmtHdr ),
+         nPayload,
+         &nPayload );
+
+   if ( DOT11F_FAILED( nStatus ))
+   {
+      limLog( pMac, LOGE,
+            FL( "Failed to pack an SA Query Request (0x%08x)." ),
+            nStatus );
+      // FIXME - Need to convert to tSirRetStatus
+      nSirStatus = eSIR_FAILURE;
+      goto returnAfterError;
+   }
+   else if ( DOT11F_WARNED( nStatus ))
+   {
+      limLog( pMac, LOGW,
+            FL( "There were warnings while packing SA Query Request (0x%08x)." ),
+            nStatus);
+   }
+
+   limLog( pMac, LOG1,
+         FL( "Sending an SA Query Request to " ));
+   limPrintMacAddr( pMac, peer, LOG1 );
+   limPrintMacAddr( pMac, peer, LOGE );
+   limLog( pMac, LOGE,
+         FL( "Sending an SA Query Request from " ));
+   limPrintMacAddr( pMac, psessionEntry->selfMacAddr, LOGE );
+
+   if ( ( SIR_BAND_5_GHZ == limGetRFBand( psessionEntry->currentOperChannel ) )
+#ifdef WLAN_FEATURE_P2P
+        || ( psessionEntry->pePersona == VOS_P2P_CLIENT_MODE ) ||
+        ( psessionEntry->pePersona == VOS_P2P_GO_MODE )
+#endif
+      )
+   {
+      txFlag |= HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME;
+   }
+
+   halstatus = halTxFrame( pMac,
+                           pPacket,
+                           (tANI_U16) nBytes,
+                           HAL_TXRX_FRM_802_11_MGMT,
+                           ANI_TXDIR_TODS,
+                           7,//SMAC_SWBD_TX_TID_MGMT_HIGH,
+                           limTxComplete,
+                           pFrame, txFlag );
+   if ( eHAL_STATUS_SUCCESS != halstatus )
+   {
+      PELOGE(limLog( pMac, LOGE, FL( "halTxFrame FAILED! Status [%d]" ), halstatus );)
+      nSirStatus = eSIR_FAILURE;
+      //Pkt will be freed up by the callback
+      return nSirStatus;
+   }
+   else {
+      return eSIR_SUCCESS;
+   }
+
+returnAfterError:
+   palPktFree( pMac->hHdd, HAL_TXRX_FRM_802_11_MGMT, ( void* ) pFrame, ( void* ) pPacket );
+   return nSirStatus;
+} // End limSendSaQueryRequestFrame
+
+/**
  * \brief Send SA query response action frame to peer 
  *
  * \sa limSendSaQueryResponseFrame
@@ -6229,10 +6400,7 @@
 
    // Since this is a SA Query Response, set the "protect" (aka WEP) bit
    // in the FC
-   if ( psessionEntry->limRmfEnabled )
-   {
-       pMacHdr->fc.wep = 1;
-   }
+   limSetProtectedBit(pMac, psessionEntry, peer, pMacHdr);
 
    // Pack 11w SA query response frame
    nStatus = dot11fPackSaQueryRsp( pMac,
diff --git a/CORE/MAC/src/pe/lim/limSerDesUtils.c b/CORE/MAC/src/pe/lim/limSerDesUtils.c
index 5b7abf0..7e3eef1 100644
--- a/CORE/MAC/src/pe/lim/limSerDesUtils.c
+++ b/CORE/MAC/src/pe/lim/limSerDesUtils.c
@@ -665,6 +665,18 @@
     if (limCheckRemainingLength(pMac, len) == eSIR_FAILURE)
         return eSIR_FAILURE;
 
+#ifdef WLAN_FEATURE_11W
+    // Extract MFP capable/required
+    pStartBssReq->pmfCapable = *pBuf++;
+    len--;
+    if (limCheckRemainingLength(pMac, len) == eSIR_FAILURE)
+       return eSIR_FAILURE;
+    pStartBssReq->pmfRequired = *pBuf++;
+    len--;
+    if (limCheckRemainingLength(pMac, len) == eSIR_FAILURE)
+       return eSIR_FAILURE;
+#endif
+
     // Extract rsnIe
     pStartBssReq->rsnIE.length = limGetU16(pBuf);
     pBuf += sizeof(tANI_U16);
diff --git a/CORE/MAC/src/pe/lim/limTypes.h b/CORE/MAC/src/pe/lim/limTypes.h
index 0af376f..570d656 100644
--- a/CORE/MAC/src/pe/lim/limTypes.h
+++ b/CORE/MAC/src/pe/lim/limTypes.h
@@ -858,7 +858,11 @@
 void limProcessMlmRemoveKeyRsp( tpAniSirGlobal pMac, tpSirMsgQ limMsgQ );
 
 void limProcessLearnIntervalTimeout(tpAniSirGlobal pMac);
+
 #ifdef WLAN_FEATURE_11W
+//11w send SA query request action frame
+tSirRetStatus limSendSaQueryRequestFrame( tpAniSirGlobal pMac, tANI_U8 *transId,
+                                          tSirMacAddr peer, tpPESession psessionEntry );
 //11w SA query request action frame handler
 tSirRetStatus limSendSaQueryResponseFrame( tpAniSirGlobal pMac, 
                    tANI_U8 *transId, tSirMacAddr peer,tpPESession psessionEntry);
diff --git a/CORE/MAC/src/pe/lim/limUtils.c b/CORE/MAC/src/pe/lim/limUtils.c
index 38bb17f..056c3ed 100644
--- a/CORE/MAC/src/pe/lim/limUtils.c
+++ b/CORE/MAC/src/pe/lim/limUtils.c
@@ -54,6 +54,9 @@
 #include "limSessionUtils.h"
 #include "limSession.h"
 #include "vos_nvitem.h"
+#ifdef WLAN_FEATURE_11W
+#include "wniCfgAp.h"
+#endif
 
 /* Static global used to mark situations where pMac->lim.gLimTriggerBackgroundScanDuringQuietBss is SET
  * and limTriggerBackgroundScanDuringQuietBss() returned failure.  In this case, we will stop data
@@ -7871,3 +7874,68 @@
               pOBSSScanParameters->obssScanActivityThreshold;
     }
 }
+
+#ifdef WLAN_FEATURE_11W
+void limPmfSaQueryTimerHandler(void *pMacGlobal, tANI_U32 param)
+{
+    tpAniSirGlobal pMac = (tpAniSirGlobal)pMacGlobal;
+    tPmfSaQueryTimerId timerId;
+    tpPESession psessionEntry;
+    tpDphHashNode pSta;
+    tANI_U32 maxRetries;
+
+    limLog(pMac, LOG1, FL("SA Query timer fires"));
+    timerId.value = param;
+
+    // Check that SA Query is in progress
+    if ((psessionEntry = peFindSessionBySessionId(
+        pMac, timerId.fields.sessionId)) == NULL)
+    {
+        limLog(pMac, LOGE, FL("Session does not exist for given session ID %d"),
+               timerId.fields.sessionId);
+        pSta->pmfSaQueryState = DPH_SA_QUERY_NOT_IN_PROGRESS;
+        return;
+    }
+    if ((pSta = dphGetHashEntry(pMac, timerId.fields.peerIdx,
+                                &psessionEntry->dph.dphHashTable)) == NULL)
+    {
+        limLog(pMac, LOGE, FL("Entry does not exist for given peer index %d"),
+               timerId.fields.peerIdx);
+        pSta->pmfSaQueryState = DPH_SA_QUERY_NOT_IN_PROGRESS;
+        return;
+    }
+    if (DPH_SA_QUERY_IN_PROGRESS != pSta->pmfSaQueryState)
+        return;
+
+    // Increment the retry count, check if reached maximum
+    if (wlan_cfgGetInt(pMac, WNI_CFG_PMF_SA_QUERY_MAX_RETRIES,
+                       &maxRetries) != eSIR_SUCCESS)
+    {
+        limLog(pMac, LOGE, FL("Could not retrieve PMF SA Query maximum retries value"));
+        pSta->pmfSaQueryState = DPH_SA_QUERY_NOT_IN_PROGRESS;
+        return;
+    }
+    pSta->pmfSaQueryRetryCount++;
+    if (pSta->pmfSaQueryRetryCount >= maxRetries)
+    {
+        limLog(pMac, LOG1, FL("SA Query timed out"));
+        /* remove before submission */
+        limLog(pMac, LOGE, FL("SA Query timed out"));
+        pSta->pmfSaQueryState = DPH_SA_QUERY_TIMED_OUT;
+        return;
+    }
+
+    // Retry SA Query
+    limSendSaQueryRequestFrame(pMac, (tANI_U8 *)&(pSta->pmfSaQueryCurrentTransId),
+                               pSta->staAddr, psessionEntry);
+    pSta->pmfSaQueryCurrentTransId++;
+    /* remove before submission */
+    limLog(pMac, LOGE, FL("Starting SA Query retry %d"), pSta->pmfSaQueryRetryCount);
+    if (tx_timer_activate(&pSta->pmfSaQueryTimer) != TX_SUCCESS)
+    {
+        limLog(pMac, LOGE, FL("PMF SA Query timer activation failed!"));
+        pSta->pmfSaQueryState = DPH_SA_QUERY_NOT_IN_PROGRESS;
+    }
+}
+#endif
+
diff --git a/CORE/MAC/src/pe/lim/limUtils.h b/CORE/MAC/src/pe/lim/limUtils.h
index 1b2474c..04672ef 100644
--- a/CORE/MAC/src/pe/lim/limUtils.h
+++ b/CORE/MAC/src/pe/lim/limUtils.h
@@ -85,6 +85,18 @@
     tAddBaInfo baInfo[STACFG_MAX_TC];
 }tAddBaCandidate, *tpAddBaCandidate;
 
+#ifdef WLAN_FEATURE_11W
+typedef union uPmfSaQueryTimerId
+{
+    struct
+    {
+        tANI_U8 sessionId;
+        tANI_U16 peerIdx;
+    } fields;
+    tANI_U32 value;
+} tPmfSaQueryTimerId, *tpPmfSaQueryTimerId;
+#endif
+
 // LIM utility functions
 void limGetBssidFromPkt(tpAniSirGlobal, tANI_U8 *, tANI_U8 *, tANI_U32 *);
 char * limMlmStateStr(tLimMlmStates state);
@@ -492,4 +504,9 @@
 tANI_BOOLEAN limCheckDisassocDeauthAckPending(tpAniSirGlobal pMac, tANI_U8 *staMac);
 void limUpdateOBSSScanParams(tpPESession psessionEntry ,
              tDot11fIEOBSSScanParameters *pOBSSScanParameters);
+
+#ifdef WLAN_FEATURE_11W
+void limPmfSaQueryTimerHandler(void *pMacGlobal, tANI_U32 param);
+#endif
+
 #endif /* __LIM_UTILS_H */
diff --git a/CORE/SAP/inc/sapApi.h b/CORE/SAP/inc/sapApi.h
index d8aa4fe..9cbfc8f 100644
--- a/CORE/SAP/inc/sapApi.h
+++ b/CORE/SAP/inc/sapApi.h
@@ -442,6 +442,11 @@
     v_U32_t         ht_op_mode_fixed;
     tVOS_CON_MODE   persona; /*Tells us which persona it is GO or AP for now*/
 
+#ifdef WLAN_FEATURE_11W
+    v_BOOL_t        mfpRequired;
+    v_BOOL_t        mfpCapable;
+#endif
+
 } tsap_Config_t;
 
 typedef enum {
diff --git a/CORE/SAP/src/sapFsm.c b/CORE/SAP/src/sapFsm.c
index 04f6075..f8340ea 100644
--- a/CORE/SAP/src/sapFsm.c
+++ b/CORE/SAP/src/sapFsm.c
@@ -1066,6 +1066,12 @@
     //wps config info
     profile->wps_state = pconfig_params->wps_state;
 
+#ifdef WLAN_FEATURE_11W
+    // MFP capable/required
+    profile->MFPCapable = pconfig_params->mfpCapable ? 1 : 0;
+    profile->MFPRequired = pconfig_params->mfpRequired ? 1 : 0;
+#endif
+
     return eSAP_STATUS_SUCCESS; /* Success.  */
 }
 
diff --git a/CORE/SME/inc/csrInternal.h b/CORE/SME/inc/csrInternal.h
index c8f5a6b..0072aeb 100644
--- a/CORE/SME/inc/csrInternal.h
+++ b/CORE/SME/inc/csrInternal.h
@@ -380,6 +380,10 @@
     tANI_U8             *pRSNIE;     //If not null, it has the IE byte stream for RSN
     tANI_BOOLEAN        updatebeaconInterval; //Flag used to indicate update
                                              // beaconInterval
+#ifdef WLAN_FEATURE_11W
+    tANI_BOOLEAN        mfpCapable;
+    tANI_BOOLEAN        mfpRequired;
+#endif
 }tCsrRoamStartBssParams;
 
 
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c
index 39583bd..bfa12b2 100644
--- a/CORE/SME/src/csr/csrApiRoam.c
+++ b/CORE/SME/src/csr/csrApiRoam.c
@@ -11683,6 +11683,12 @@
     pParam->uCfgDot11Mode = csrRoamGetPhyModeBandForBss(pMac, pProfile, pParam->operationChn /* pProfile->operationChannel*/, 
                                         &eBand);
     pParam->bssPersona = pProfile->csrPersona;
+
+#ifdef WLAN_FEATURE_11W
+    pParam->mfpCapable = (0 != pProfile->MFPCapable);
+    pParam->mfpRequired = (0 != pProfile->MFPRequired);
+#endif
+
     // When starting an IBSS, start on the channel from the Profile.
     status = csrSendMBStartBssReqMsg( pMac, sessionId, pProfile->BSSType, pParam, pBssDesc );
     return (status);
@@ -13822,6 +13828,14 @@
         *pBuf = (tANI_U8)(tANI_U8)pMac->roam.configParam.txLdpcEnable;
         pBuf++;
 
+#ifdef WLAN_FEATURE_11W
+        // Set MFP capable/required
+        *pBuf = (tANI_U8)pParam->mfpCapable;
+        pBuf++;
+        *pBuf = (tANI_U8)pParam->mfpRequired;
+        pBuf++;
+#endif
+
         // set RSN IE
         if( pParam->nRSNIELength > sizeof(pMsg->rsnIE.rsnIEdata) )
         {
diff --git a/CORE/SYS/legacy/src/utils/src/dot11f.c b/CORE/SYS/legacy/src/utils/src/dot11f.c
index ffb4548..e39ac88 100644
--- a/CORE/SYS/legacy/src/utils/src/dot11f.c
+++ b/CORE/SYS/legacy/src/utils/src/dot11f.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012 - 2014 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2014 The Linux Foundation. All rights reserved.
  *
  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
  *
@@ -36,11 +36,10 @@
   * working with 802.11 Frames
   *
   *
-
   *
   *
   * This file was automatically generated by 'framesc'
-  * Fri Feb  7 16:55:44 2014 from the following file(s):
+  * Thu Feb 13 15:40:58 2014 from the following file(s):
   *
   * dot11f.frms
   *
@@ -763,6 +762,16 @@
 
 #define SigFfDialogToken ( 0x000d )
 
+void dot11fUnpackFfLeader(tpAniSirGlobal pCtx,
+                          tANI_U8 *pBuf,
+                          tDot11fFfLeader *pDst)
+{
+    DOT11F_MEMCPY(pCtx, pDst->mac, pBuf, 6);
+    (void)pCtx;
+} /* End dot11fUnpackFfLeader. */
+
+#define SigFfLeader ( 0x000e )
+
 void dot11fUnpackFfLinkMargin(tpAniSirGlobal pCtx,
                               tANI_U8 *pBuf,
                               tDot11fFfLinkMargin *pDst)
@@ -771,9 +780,19 @@
     (void)pCtx;
 } /* End dot11fUnpackFfLinkMargin. */
 
-#define SigFfLinkMargin ( 0x000e )
+#define SigFfLinkMargin ( 0x000f )
 
-#define SigFfListenInterval ( 0x000f )
+#define SigFfListenInterval ( 0x0010 )
+
+void dot11fUnpackFfMagicCode(tpAniSirGlobal pCtx,
+                             tANI_U8 *pBuf,
+                             tDot11fFfMagicCode *pDst)
+{
+    DOT11F_MEMCPY(pCtx, pDst->magic, pBuf, 6);
+    (void)pCtx;
+} /* End dot11fUnpackFfMagicCode. */
+
+#define SigFfMagicCode ( 0x0011 )
 
 void dot11fUnpackFfMaxTxPower(tpAniSirGlobal pCtx,
                               tANI_U8 *pBuf,
@@ -783,7 +802,7 @@
     (void)pCtx;
 } /* End dot11fUnpackFfMaxTxPower. */
 
-#define SigFfMaxTxPower ( 0x0010 )
+#define SigFfMaxTxPower ( 0x0012 )
 
 void dot11fUnpackFfNumOfRepetitions(tpAniSirGlobal pCtx,
                                     tANI_U8 *pBuf,
@@ -793,7 +812,7 @@
     (void)pCtx;
 } /* End dot11fUnpackFfNumOfRepetitions. */
 
-#define SigFfNumOfRepetitions ( 0x0011 )
+#define SigFfNumOfRepetitions ( 0x0013 )
 
 void dot11fUnpackFfOperatingMode(tpAniSirGlobal pCtx,
                                  tANI_U8 *pBuf,
@@ -808,7 +827,7 @@
     (void)pCtx;
 } /* End dot11fUnpackFfOperatingMode. */
 
-#define SigFfOperatingMode ( 0x0012 )
+#define SigFfOperatingMode ( 0x0014 )
 
 void dot11fUnpackFfP2POUI(tpAniSirGlobal pCtx,
                           tANI_U8 *pBuf,
@@ -818,7 +837,7 @@
     (void)pCtx;
 } /* End dot11fUnpackFfP2POUI. */
 
-#define SigFfP2POUI ( 0x0013 )
+#define SigFfP2POUI ( 0x0015 )
 
 void dot11fUnpackFfP2POUISubType(tpAniSirGlobal pCtx,
                                  tANI_U8 *pBuf,
@@ -828,7 +847,7 @@
     (void)pCtx;
 } /* End dot11fUnpackFfP2POUISubType. */
 
-#define SigFfP2POUISubType ( 0x0014 )
+#define SigFfP2POUISubType ( 0x0016 )
 
 void dot11fUnpackFfRCPI(tpAniSirGlobal pCtx,
                         tANI_U8 *pBuf,
@@ -838,7 +857,37 @@
     (void)pCtx;
 } /* End dot11fUnpackFfRCPI. */
 
-#define SigFfRCPI ( 0x0015 )
+#define SigFfRCPI ( 0x0017 )
+
+void dot11fUnpackFfRMCDialogToken(tpAniSirGlobal pCtx,
+                                  tANI_U8 *pBuf,
+                                  tDot11fFfRMCDialogToken *pDst)
+{
+    framesntohl(pCtx, &pDst->token, pBuf, 0);
+    (void)pCtx;
+} /* End dot11fUnpackFfRMCDialogToken. */
+
+#define SigFfRMCDialogToken ( 0x0018 )
+
+void dot11fUnpackFfRMCOUI(tpAniSirGlobal pCtx,
+                          tANI_U8 *pBuf,
+                          tDot11fFfRMCOUI *pDst)
+{
+    DOT11F_MEMCPY(pCtx, pDst->oui, pBuf, 3);
+    (void)pCtx;
+} /* End dot11fUnpackFfRMCOUI. */
+
+#define SigFfRMCOUI ( 0x0019 )
+
+void dot11fUnpackFfRMCVersion(tpAniSirGlobal pCtx,
+                              tANI_U8 *pBuf,
+                              tDot11fFfRMCVersion *pDst)
+{
+    pDst->version = *pBuf;
+    (void)pCtx;
+} /* End dot11fUnpackFfRMCVersion. */
+
+#define SigFfRMCVersion ( 0x001a )
 
 void dot11fUnpackFfRSNI(tpAniSirGlobal pCtx,
                         tANI_U8 *pBuf,
@@ -848,9 +897,9 @@
     (void)pCtx;
 } /* End dot11fUnpackFfRSNI. */
 
-#define SigFfRSNI ( 0x0016 )
+#define SigFfRSNI ( 0x001b )
 
-#define SigFfReason ( 0x0017 )
+#define SigFfReason ( 0x001c )
 
 void dot11fUnpackFfRxAntennaId(tpAniSirGlobal pCtx,
                                tANI_U8 *pBuf,
@@ -860,7 +909,7 @@
     (void)pCtx;
 } /* End dot11fUnpackFfRxAntennaId. */
 
-#define SigFfRxAntennaId ( 0x0018 )
+#define SigFfRxAntennaId ( 0x001d )
 
 void dot11fUnpackFfSMPowerModeSet(tpAniSirGlobal pCtx,
                                   tANI_U8 *pBuf,
@@ -874,9 +923,9 @@
     (void)pCtx;
 } /* End dot11fUnpackFfSMPowerModeSet. */
 
-#define SigFfSMPowerModeSet ( 0x0019 )
+#define SigFfSMPowerModeSet ( 0x001e )
 
-#define SigFfStatus ( 0x001a )
+#define SigFfStatus ( 0x001f )
 
 void dot11fUnpackFfStatusCode(tpAniSirGlobal pCtx,
                               tANI_U8 *pBuf,
@@ -886,7 +935,7 @@
     (void)pCtx;
 } /* End dot11fUnpackFfStatusCode. */
 
-#define SigFfStatusCode ( 0x001b )
+#define SigFfStatusCode ( 0x0020 )
 
 void dot11fUnpackFfTPCEleID(tpAniSirGlobal pCtx,
                             tANI_U8 *pBuf,
@@ -896,7 +945,7 @@
     (void)pCtx;
 } /* End dot11fUnpackFfTPCEleID. */
 
-#define SigFfTPCEleID ( 0x001c )
+#define SigFfTPCEleID ( 0x0021 )
 
 void dot11fUnpackFfTPCEleLen(tpAniSirGlobal pCtx,
                              tANI_U8 *pBuf,
@@ -906,7 +955,7 @@
     (void)pCtx;
 } /* End dot11fUnpackFfTPCEleLen. */
 
-#define SigFfTPCEleLen ( 0x001d )
+#define SigFfTPCEleLen ( 0x0022 )
 
 void dot11fUnpackFfTSInfo(tpAniSirGlobal pCtx,
                           tANI_U8 *pBuf,
@@ -927,7 +976,7 @@
     (void)pCtx;
 } /* End dot11fUnpackFfTSInfo. */
 
-#define SigFfTSInfo ( 0x001e )
+#define SigFfTSInfo ( 0x0023 )
 
 void dot11fUnpackFfTimeStamp(tpAniSirGlobal pCtx,
                              tANI_U8 *pBuf,
@@ -937,7 +986,7 @@
     (void)pCtx;
 } /* End dot11fUnpackFfTimeStamp. */
 
-#define SigFfTimeStamp ( 0x001f )
+#define SigFfTimeStamp ( 0x0024 )
 
 void dot11fUnpackFfTransactionId(tpAniSirGlobal pCtx,
                                  tANI_U8 *pBuf,
@@ -947,7 +996,7 @@
     (void)pCtx;
 } /* End dot11fUnpackFfTransactionId. */
 
-#define SigFfTransactionId ( 0x0020 )
+#define SigFfTransactionId ( 0x0025 )
 
 void dot11fUnpackFfTxAntennaId(tpAniSirGlobal pCtx,
                                tANI_U8 *pBuf,
@@ -957,7 +1006,7 @@
     (void)pCtx;
 } /* End dot11fUnpackFfTxAntennaId. */
 
-#define SigFfTxAntennaId ( 0x0021 )
+#define SigFfTxAntennaId ( 0x0026 )
 
 void dot11fUnpackFfTxPower(tpAniSirGlobal pCtx,
                            tANI_U8 *pBuf,
@@ -967,7 +1016,7 @@
     (void)pCtx;
 } /* End dot11fUnpackFfTxPower. */
 
-#define SigFfTxPower ( 0x0022 )
+#define SigFfTxPower ( 0x0027 )
 
 void dot11fUnpackFfVhtMembershipStatusArray(tpAniSirGlobal pCtx,
                                             tANI_U8 *pBuf,
@@ -977,7 +1026,7 @@
     (void)pCtx;
 } /* End dot11fUnpackFfVhtMembershipStatusArray. */
 
-#define SigFfVhtMembershipStatusArray ( 0x0023 )
+#define SigFfVhtMembershipStatusArray ( 0x0028 )
 
 void dot11fUnpackFfVhtUserPositionArray(tpAniSirGlobal pCtx,
                                         tANI_U8 *pBuf,
@@ -987,7 +1036,7 @@
     (void)pCtx;
 } /* End dot11fUnpackFfVhtUserPositionArray. */
 
-#define SigFfVhtUserPositionArray ( 0x0024 )
+#define SigFfVhtUserPositionArray ( 0x0029 )
 
 tANI_U32 dot11fUnpackTlvAuthorizedMACs(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U16 tlvlen, tDot11fTLVAuthorizedMACs *pDst)
 {
@@ -3352,23 +3401,6 @@
 #define SigIeFTInfo ( 0x0042 )
 
 
-tANI_U32 dot11fUnpackIeFTTimeoutInterval(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEFTTimeoutInterval *pDst)
-{
-    tANI_U32 status = DOT11F_PARSE_SUCCESS;
-    (void) pBuf; (void)ielen; /* Shutup the compiler */
-    if (pDst->present) status = DOT11F_DUPLICATE_IE;
-    pDst->present = 1;
-    pDst->timeoutType = *pBuf;
-    pBuf += 1;
-    ielen -= (tANI_U8)1;
-    framesntohl(pCtx, &pDst->timeoutValue, pBuf, 0);
-    (void)pCtx;
-    return status;
-} /* End dot11fUnpackIeFTTimeoutInterval. */
-
-#define SigIeFTTimeoutInterval ( 0x0043 )
-
-
 tANI_U32 dot11fUnpackIeHTCaps(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEHTCaps *pDst)
 {
     tANI_U32 status = DOT11F_PARSE_SUCCESS;
@@ -3455,7 +3487,7 @@
     return status;
 } /* End dot11fUnpackIeHTCaps. */
 
-#define SigIeHTCaps ( 0x0044 )
+#define SigIeHTCaps ( 0x0043 )
 
 
 tANI_U32 dot11fUnpackIeHTInfo(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEHTInfo *pDst)
@@ -3510,7 +3542,7 @@
     return status;
 } /* End dot11fUnpackIeHTInfo. */
 
-#define SigIeHTInfo ( 0x0045 )
+#define SigIeHTInfo ( 0x0044 )
 
 
 tANI_U32 dot11fUnpackIeIBSSParams(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEIBSSParams *pDst)
@@ -3524,7 +3556,7 @@
     return status;
 } /* End dot11fUnpackIeIBSSParams. */
 
-#define SigIeIBSSParams ( 0x0046 )
+#define SigIeIBSSParams ( 0x0045 )
 
 
 tANI_U32 dot11fUnpackIeLinkIdentifier(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIELinkIdentifier *pDst)
@@ -3544,7 +3576,7 @@
     return status;
 } /* End dot11fUnpackIeLinkIdentifier. */
 
-#define SigIeLinkIdentifier ( 0x0047 )
+#define SigIeLinkIdentifier ( 0x0046 )
 
 
 static const tFFDefn FFS_reportBeacon[ ] = {
@@ -3702,7 +3734,7 @@
     return status;
 } /* End dot11fUnpackIeMeasurementReport. */
 
-#define SigIeMeasurementReport ( 0x0048 )
+#define SigIeMeasurementReport ( 0x0047 )
 
 
 static const tFFDefn FFS_measurement_requestBeacon[ ] = {
@@ -3807,7 +3839,7 @@
     return status;
 } /* End dot11fUnpackIeMeasurementRequest. */
 
-#define SigIeMeasurementRequest ( 0x0049 )
+#define SigIeMeasurementRequest ( 0x0048 )
 
 
 tANI_U32 dot11fUnpackIeMobilityDomain(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEMobilityDomain *pDst)
@@ -3828,7 +3860,7 @@
     return status;
 } /* End dot11fUnpackIeMobilityDomain. */
 
-#define SigIeMobilityDomain ( 0x004a )
+#define SigIeMobilityDomain ( 0x0049 )
 
 
     static const tFFDefn FFS_NeighborReport[ ] = {
@@ -3895,7 +3927,7 @@
     return status;
 } /* End dot11fUnpackIeNeighborReport. */
 
-#define SigIeNeighborReport ( 0x004b )
+#define SigIeNeighborReport ( 0x004a )
 
 
 tANI_U32 dot11fUnpackIeOBSSScanParameters(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEOBSSScanParameters *pDst)
@@ -3927,7 +3959,7 @@
     return status;
 } /* End dot11fUnpackIeOBSSScanParameters. */
 
-#define SigIeOBSSScanParameters ( 0x004c )
+#define SigIeOBSSScanParameters ( 0x004b )
 
 
 tANI_U32 dot11fUnpackIeOperatingMode(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEOperatingMode *pDst)
@@ -3946,7 +3978,7 @@
     return status;
 } /* End dot11fUnpackIeOperatingMode. */
 
-#define SigIeOperatingMode ( 0x004d )
+#define SigIeOperatingMode ( 0x004c )
 
 
     static const tTLVDefn TLVS_P2PAssocReq[ ] = {
@@ -3965,7 +3997,7 @@
     return status;
 } /* End dot11fUnpackIeP2PAssocReq. */
 
-#define SigIeP2PAssocReq ( 0x004e )
+#define SigIeP2PAssocReq ( 0x004d )
 
 
     static const tTLVDefn TLVS_P2PAssocRes[ ] = {
@@ -3983,7 +4015,7 @@
     return status;
 } /* End dot11fUnpackIeP2PAssocRes. */
 
-#define SigIeP2PAssocRes ( 0x004f )
+#define SigIeP2PAssocRes ( 0x004e )
 
 
     static const tTLVDefn TLVS_P2PBeacon[ ] = {
@@ -4002,7 +4034,7 @@
     return status;
 } /* End dot11fUnpackIeP2PBeacon. */
 
-#define SigIeP2PBeacon ( 0x0050 )
+#define SigIeP2PBeacon ( 0x004f )
 
 
     static const tTLVDefn TLVS_P2PBeaconProbeRes[ ] = {
@@ -4024,7 +4056,7 @@
     return status;
 } /* End dot11fUnpackIeP2PBeaconProbeRes. */
 
-#define SigIeP2PBeaconProbeRes ( 0x0051 )
+#define SigIeP2PBeaconProbeRes ( 0x0050 )
 
 
     static const tTLVDefn TLVS_P2PDeAuth[ ] = {
@@ -4041,7 +4073,7 @@
     return status;
 } /* End dot11fUnpackIeP2PDeAuth. */
 
-#define SigIeP2PDeAuth ( 0x0052 )
+#define SigIeP2PDeAuth ( 0x0051 )
 
 
     static const tTLVDefn TLVS_P2PDeviceDiscoverabilityReq[ ] = {
@@ -4059,7 +4091,7 @@
     return status;
 } /* End dot11fUnpackIeP2PDeviceDiscoverabilityReq. */
 
-#define SigIeP2PDeviceDiscoverabilityReq ( 0x0053 )
+#define SigIeP2PDeviceDiscoverabilityReq ( 0x0052 )
 
 
     static const tTLVDefn TLVS_P2PDeviceDiscoverabilityRes[ ] = {
@@ -4076,7 +4108,7 @@
     return status;
 } /* End dot11fUnpackIeP2PDeviceDiscoverabilityRes. */
 
-#define SigIeP2PDeviceDiscoverabilityRes ( 0x0054 )
+#define SigIeP2PDeviceDiscoverabilityRes ( 0x0053 )
 
 
     static const tTLVDefn TLVS_P2PDisAssoc[ ] = {
@@ -4093,7 +4125,7 @@
     return status;
 } /* End dot11fUnpackIeP2PDisAssoc. */
 
-#define SigIeP2PDisAssoc ( 0x0055 )
+#define SigIeP2PDisAssoc ( 0x0054 )
 
 
     static const tTLVDefn TLVS_P2PGONegCnf[ ] = {
@@ -4114,7 +4146,7 @@
     return status;
 } /* End dot11fUnpackIeP2PGONegCnf. */
 
-#define SigIeP2PGONegCnf ( 0x0056 )
+#define SigIeP2PGONegCnf ( 0x0055 )
 
 
     static const tTLVDefn TLVS_P2PGONegReq[ ] = {
@@ -4139,7 +4171,7 @@
     return status;
 } /* End dot11fUnpackIeP2PGONegReq. */
 
-#define SigIeP2PGONegReq ( 0x0057 )
+#define SigIeP2PGONegReq ( 0x0056 )
 
 
     static const tTLVDefn TLVS_P2PGONegRes[ ] = {
@@ -4164,7 +4196,7 @@
     return status;
 } /* End dot11fUnpackIeP2PGONegRes. */
 
-#define SigIeP2PGONegRes ( 0x0058 )
+#define SigIeP2PGONegRes ( 0x0057 )
 
 
     static const tTLVDefn TLVS_P2PGONegWPS[ ] = {
@@ -4182,7 +4214,7 @@
     return status;
 } /* End dot11fUnpackIeP2PGONegWPS. */
 
-#define SigIeP2PGONegWPS ( 0x0059 )
+#define SigIeP2PGONegWPS ( 0x0058 )
 
 
 tANI_U32 dot11fUnpackIeP2PIEOpaque(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEP2PIEOpaque *pDst)
@@ -4202,7 +4234,7 @@
     return status;
 } /* End dot11fUnpackIeP2PIEOpaque. */
 
-#define SigIeP2PIEOpaque ( 0x005a )
+#define SigIeP2PIEOpaque ( 0x0059 )
 
 
     static const tTLVDefn TLVS_P2PInvitationReq[ ] = {
@@ -4225,7 +4257,7 @@
     return status;
 } /* End dot11fUnpackIeP2PInvitationReq. */
 
-#define SigIeP2PInvitationReq ( 0x005b )
+#define SigIeP2PInvitationReq ( 0x005a )
 
 
     static const tTLVDefn TLVS_P2PInvitationRes[ ] = {
@@ -4246,7 +4278,7 @@
     return status;
 } /* End dot11fUnpackIeP2PInvitationRes. */
 
-#define SigIeP2PInvitationRes ( 0x005c )
+#define SigIeP2PInvitationRes ( 0x005b )
 
 
     static const tTLVDefn TLVS_P2PNoticeOfAbsence[ ] = {
@@ -4263,7 +4295,7 @@
     return status;
 } /* End dot11fUnpackIeP2PNoticeOfAbsence. */
 
-#define SigIeP2PNoticeOfAbsence ( 0x005d )
+#define SigIeP2PNoticeOfAbsence ( 0x005c )
 
 
     static const tTLVDefn TLVS_P2PPresenceResponse[ ] = {
@@ -4281,7 +4313,7 @@
     return status;
 } /* End dot11fUnpackIeP2PPresenceResponse. */
 
-#define SigIeP2PPresenceResponse ( 0x005e )
+#define SigIeP2PPresenceResponse ( 0x005d )
 
 
     static const tTLVDefn TLVS_P2PProbeReq[ ] = {
@@ -4302,7 +4334,7 @@
     return status;
 } /* End dot11fUnpackIeP2PProbeReq. */
 
-#define SigIeP2PProbeReq ( 0x005f )
+#define SigIeP2PProbeReq ( 0x005e )
 
 
     static const tTLVDefn TLVS_P2PProbeRes[ ] = {
@@ -4323,7 +4355,7 @@
     return status;
 } /* End dot11fUnpackIeP2PProbeRes. */
 
-#define SigIeP2PProbeRes ( 0x0060 )
+#define SigIeP2PProbeRes ( 0x005f )
 
 
     static const tTLVDefn TLVS_P2PProvisionDiscoveryReq[ ] = {
@@ -4342,7 +4374,7 @@
     return status;
 } /* End dot11fUnpackIeP2PProvisionDiscoveryReq. */
 
-#define SigIeP2PProvisionDiscoveryReq ( 0x0061 )
+#define SigIeP2PProvisionDiscoveryReq ( 0x0060 )
 
 
     static const tTLVDefn TLVS_P2PWSCProvisionDiscoveryRes[ ] = {
@@ -4359,7 +4391,7 @@
     return status;
 } /* End dot11fUnpackIeP2PWSCProvisionDiscoveryRes. */
 
-#define SigIeP2PWSCProvisionDiscoveryRes ( 0x0062 )
+#define SigIeP2PWSCProvisionDiscoveryRes ( 0x0061 )
 
 
 tANI_U32 dot11fUnpackIePTIControl(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEPTIControl *pDst)
@@ -4376,7 +4408,7 @@
     return status;
 } /* End dot11fUnpackIePTIControl. */
 
-#define SigIePTIControl ( 0x0063 )
+#define SigIePTIControl ( 0x0062 )
 
 
 tANI_U32 dot11fUnpackIePUBufferStatus(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEPUBufferStatus *pDst)
@@ -4396,7 +4428,7 @@
     return status;
 } /* End dot11fUnpackIePUBufferStatus. */
 
-#define SigIePUBufferStatus ( 0x0064 )
+#define SigIePUBufferStatus ( 0x0063 )
 
 
 tANI_U32 dot11fUnpackIePowerCaps(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEPowerCaps *pDst)
@@ -4413,7 +4445,7 @@
     return status;
 } /* End dot11fUnpackIePowerCaps. */
 
-#define SigIePowerCaps ( 0x0065 )
+#define SigIePowerCaps ( 0x0064 )
 
 
 tANI_U32 dot11fUnpackIePowerConstraints(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEPowerConstraints *pDst)
@@ -4427,7 +4459,7 @@
     return status;
 } /* End dot11fUnpackIePowerConstraints. */
 
-#define SigIePowerConstraints ( 0x0066 )
+#define SigIePowerConstraints ( 0x0065 )
 
 
 tANI_U32 dot11fUnpackIeQBSSLoad(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEQBSSLoad *pDst)
@@ -4447,7 +4479,7 @@
     return status;
 } /* End dot11fUnpackIeQBSSLoad. */
 
-#define SigIeQBSSLoad ( 0x0067 )
+#define SigIeQBSSLoad ( 0x0066 )
 
 
 tANI_U32 dot11fUnpackIeQOSCapsAp(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEQOSCapsAp *pDst)
@@ -4467,7 +4499,7 @@
     return status;
 } /* End dot11fUnpackIeQOSCapsAp. */
 
-#define SigIeQOSCapsAp ( 0x0068 )
+#define SigIeQOSCapsAp ( 0x0067 )
 
 
 tANI_U32 dot11fUnpackIeQOSCapsStation(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEQOSCapsStation *pDst)
@@ -4489,7 +4521,7 @@
     return status;
 } /* End dot11fUnpackIeQOSCapsStation. */
 
-#define SigIeQOSCapsStation ( 0x0069 )
+#define SigIeQOSCapsStation ( 0x0068 )
 
 
 tANI_U32 dot11fUnpackIeQuiet(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEQuiet *pDst)
@@ -4512,7 +4544,7 @@
     return status;
 } /* End dot11fUnpackIeQuiet. */
 
-#define SigIeQuiet ( 0x006a )
+#define SigIeQuiet ( 0x0069 )
 
 
 tANI_U32 dot11fUnpackIeRCPIIE(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIERCPIIE *pDst)
@@ -4526,7 +4558,7 @@
     return status;
 } /* End dot11fUnpackIeRCPIIE. */
 
-#define SigIeRCPIIE ( 0x006b )
+#define SigIeRCPIIE ( 0x006a )
 
 
     static const tFFDefn FFS_RICDataDesc[ ] = {
@@ -4566,7 +4598,7 @@
     return status;
 } /* End dot11fUnpackIeRICDataDesc. */
 
-#define SigIeRICDataDesc ( 0x006c )
+#define SigIeRICDataDesc ( 0x006b )
 
 
 tANI_U32 dot11fUnpackIeRSN(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIERSN *pDst)
@@ -4669,7 +4701,7 @@
     return status;
 } /* End dot11fUnpackIeRSN. */
 
-#define SigIeRSN ( 0x006d )
+#define SigIeRSN ( 0x006c )
 
 
 tANI_U32 dot11fUnpackIeRSNIIE(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIERSNIIE *pDst)
@@ -4683,7 +4715,7 @@
     return status;
 } /* End dot11fUnpackIeRSNIIE. */
 
-#define SigIeRSNIIE ( 0x006e )
+#define SigIeRSNIIE ( 0x006d )
 
 
 tANI_U32 dot11fUnpackIeRSNOpaque(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIERSNOpaque *pDst)
@@ -4703,7 +4735,7 @@
     return status;
 } /* End dot11fUnpackIeRSNOpaque. */
 
-#define SigIeRSNOpaque ( 0x006f )
+#define SigIeRSNOpaque ( 0x006e )
 
 
 tANI_U32 dot11fUnpackIeSuppChannels(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIESuppChannels *pDst)
@@ -4723,7 +4755,7 @@
     return status;
 } /* End dot11fUnpackIeSuppChannels. */
 
-#define SigIeSuppChannels ( 0x0070 )
+#define SigIeSuppChannels ( 0x006f )
 
 
 tANI_U32 dot11fUnpackIeSuppOperatingClasses(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIESuppOperatingClasses *pDst)
@@ -4743,7 +4775,7 @@
     return status;
 } /* End dot11fUnpackIeSuppOperatingClasses. */
 
-#define SigIeSuppOperatingClasses ( 0x0071 )
+#define SigIeSuppOperatingClasses ( 0x0070 )
 
 
 tANI_U32 dot11fUnpackIeSuppRates(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIESuppRates *pDst)
@@ -4771,7 +4803,7 @@
     return status;
 } /* End dot11fUnpackIeSuppRates. */
 
-#define SigIeSuppRates ( 0x0072 )
+#define SigIeSuppRates ( 0x0071 )
 
 
 tANI_U32 dot11fUnpackIeTIM(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIETIM *pDst)
@@ -4800,7 +4832,7 @@
     return status;
 } /* End dot11fUnpackIeTIM. */
 
-#define SigIeTIM ( 0x0073 )
+#define SigIeTIM ( 0x0072 )
 
 
 tANI_U32 dot11fUnpackIeTPCReport(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIETPCReport *pDst)
@@ -4817,7 +4849,7 @@
     return status;
 } /* End dot11fUnpackIeTPCReport. */
 
-#define SigIeTPCReport ( 0x0074 )
+#define SigIeTPCReport ( 0x0073 )
 
 
 tANI_U32 dot11fUnpackIeTPCRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIETPCRequest *pDst)
@@ -4830,7 +4862,24 @@
     return status;
 } /* End dot11fUnpackIeTPCRequest. */
 
-#define SigIeTPCRequest ( 0x0075 )
+#define SigIeTPCRequest ( 0x0074 )
+
+
+tANI_U32 dot11fUnpackIeTimeoutInterval(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIETimeoutInterval *pDst)
+{
+    tANI_U32 status = DOT11F_PARSE_SUCCESS;
+    (void) pBuf; (void)ielen; /* Shutup the compiler */
+    if (pDst->present) status = DOT11F_DUPLICATE_IE;
+    pDst->present = 1;
+    pDst->timeoutType = *pBuf;
+    pBuf += 1;
+    ielen -= (tANI_U8)1;
+    framesntohl(pCtx, &pDst->timeoutValue, pBuf, 0);
+    (void)pCtx;
+    return status;
+} /* End dot11fUnpackIeTimeoutInterval. */
+
+#define SigIeTimeoutInterval ( 0x0075 )
 
 
 tANI_U32 dot11fUnpackIeVHTCaps(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEVHTCaps *pDst)
@@ -6898,6 +6947,7 @@
         {offsetof(tDot11fAssocResponse, FTInfo), offsetof(tDot11fIEFTInfo, present), 0, "FTInfo" , 0, 84, 222, SigIeFTInfo, {0, 0, 0, 0, 0}, 0, DOT11F_EID_FTINFO, 0, },
         {offsetof(tDot11fAssocResponse, RICDataDesc), offsetof(tDot11fIERICDataDesc, present), offsetof(tDot11fAssocResponse, num_RICDataDesc), "RICDataDesc" , 2, 2, 550, SigIeRICDataDesc, {0, 0, 0, 0, 0}, 0, DOT11F_EID_RICDATADESC, 0, },
         {offsetof(tDot11fAssocResponse, WPA), offsetof(tDot11fIEWPA, present), 0, "WPA" , 0, 8, 50, SigIeWPA, {0, 80, 242, 1, 0}, 4, DOT11F_EID_WPA, 0, },
+        {offsetof(tDot11fAssocResponse, TimeoutInterval), offsetof(tDot11fIETimeoutInterval, present), 0, "TimeoutInterval" , 0, 7, 7, SigIeTimeoutInterval, {0, 0, 0, 0, 0}, 0, DOT11F_EID_TIMEOUTINTERVAL, 0, },
         {offsetof(tDot11fAssocResponse, HTCaps), offsetof(tDot11fIEHTCaps, present), 0, "HTCaps" , 0, 28, 60, SigIeHTCaps, {0, 0, 0, 0, 0}, 0, DOT11F_EID_HTCAPS, 0, },
         {offsetof(tDot11fAssocResponse, HTInfo), offsetof(tDot11fIEHTInfo, present), 0, "HTInfo" , 0, 24, 56, SigIeHTInfo, {0, 0, 0, 0, 0}, 0, DOT11F_EID_HTINFO, 0, },
         {offsetof(tDot11fAssocResponse, WMMParams), offsetof(tDot11fIEWMMParams, present), 0, "WMMParams" , 0, 26, 26, SigIeWMMParams, {0, 80, 242, 2, 1}, 5, DOT11F_EID_WMMPARAMS, 0, },
@@ -7415,6 +7465,16 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_ASSOCRESPONSE), ( tANI_U8* ) pFrm->WPA.auth_suites, 4 * pFrm->WPA.auth_suite_count);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_ASSOCRESPONSE), ( tANI_U8* )&pFrm->WPA.caps, 2);
         }
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_ASSOCRESPONSE), FRFL("TimeoutInterval:\n"));
+        if (!pFrm->TimeoutInterval.present)
+        {
+            FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_ASSOCRESPONSE), FRFL("Not present.\n"));
+        }
+        else
+        {
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_ASSOCRESPONSE), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutType, 1);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_ASSOCRESPONSE), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutValue, 4);
+        }
         FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_ASSOCRESPONSE), FRFL("HTCaps:\n"));
         if (!pFrm->HTCaps.present)
         {
@@ -8064,7 +8124,7 @@
         {offsetof(tDot11fAuthentication, RSNOpaque), offsetof(tDot11fIERSNOpaque, present), 0, "RSNOpaque" , 0, 8, 255, SigIeRSNOpaque, {0, 0, 0, 0, 0}, 0, DOT11F_EID_RSNOPAQUE, 0, },
         {offsetof(tDot11fAuthentication, MobilityDomain), offsetof(tDot11fIEMobilityDomain, present), 0, "MobilityDomain" , 0, 5, 5, SigIeMobilityDomain, {0, 0, 0, 0, 0}, 0, DOT11F_EID_MOBILITYDOMAIN, 0, },
         {offsetof(tDot11fAuthentication, FTInfo), offsetof(tDot11fIEFTInfo, present), 0, "FTInfo" , 0, 84, 222, SigIeFTInfo, {0, 0, 0, 0, 0}, 0, DOT11F_EID_FTINFO, 0, },
-        {offsetof(tDot11fAuthentication, FTTimeoutInterval), offsetof(tDot11fIEFTTimeoutInterval, present), 0, "FTTimeoutInterval" , 0, 7, 7, SigIeFTTimeoutInterval, {0, 0, 0, 0, 0}, 0, DOT11F_EID_FTTIMEOUTINTERVAL, 0, },
+        {offsetof(tDot11fAuthentication, TimeoutInterval), offsetof(tDot11fIETimeoutInterval, present), 0, "TimeoutInterval" , 0, 7, 7, SigIeTimeoutInterval, {0, 0, 0, 0, 0}, 0, DOT11F_EID_TIMEOUTINTERVAL, 0, },
         {offsetof(tDot11fAuthentication, RICDataDesc), offsetof(tDot11fIERICDataDesc, present), offsetof(tDot11fAuthentication, num_RICDataDesc), "RICDataDesc" , 2, 2, 550, SigIeRICDataDesc, {0, 0, 0, 0, 0}, 0, DOT11F_EID_RICDATADESC, 0, },
     {0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },    };
 
@@ -8177,15 +8237,15 @@
                 FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_AUTHENTICATION), ( tANI_U8* )&pFrm->FTInfo.IGTK.key, 24);
             }
         }
-        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_AUTHENTICATION), FRFL("FTTimeoutInterval:\n"));
-        if (!pFrm->FTTimeoutInterval.present)
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_AUTHENTICATION), FRFL("TimeoutInterval:\n"));
+        if (!pFrm->TimeoutInterval.present)
         {
             FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_AUTHENTICATION), FRFL("Not present.\n"));
         }
         else
         {
-            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_AUTHENTICATION), ( tANI_U8* )&pFrm->FTTimeoutInterval.timeoutType, 1);
-            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_AUTHENTICATION), ( tANI_U8* )&pFrm->FTTimeoutInterval.timeoutValue, 4);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_AUTHENTICATION), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutType, 1);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_AUTHENTICATION), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutValue, 4);
         }
         for (i = 0; i < pFrm->num_RICDataDesc; ++i)
         {
@@ -15526,6 +15586,53 @@
 
 } /* End dot11fUnpackProvisionDiscoveryRes. */
 
+    static const tFFDefn FFS_RMC[] = {
+        { "Category", offsetof(tDot11fRMC, Category), SigFfCategory , DOT11F_FF_CATEGORY_LEN, },
+        { "RMCOUI", offsetof(tDot11fRMC, RMCOUI), SigFfRMCOUI , DOT11F_FF_RMCOUI_LEN, },
+        { "MagicCode", offsetof(tDot11fRMC, MagicCode), SigFfMagicCode , DOT11F_FF_MAGICCODE_LEN, },
+        { "RMCVersion", offsetof(tDot11fRMC, RMCVersion), SigFfRMCVersion , DOT11F_FF_RMCVERSION_LEN, },
+        { "Action", offsetof(tDot11fRMC, Action), SigFfAction , DOT11F_FF_ACTION_LEN, },
+        { "RMCDialogToken", offsetof(tDot11fRMC, RMCDialogToken), SigFfRMCDialogToken , DOT11F_FF_RMCDIALOGTOKEN_LEN, },
+        { "Leader", offsetof(tDot11fRMC, Leader), SigFfLeader , DOT11F_FF_LEADER_LEN, },
+    { NULL, 0, 0, 0,},
+    };
+
+    static const tIEDefn IES_RMC[] = {
+    {0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },    };
+
+tANI_U32 dot11fUnpackRMC(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fRMC *pFrm)
+{
+    tANI_U32 i = 0;
+    tANI_U32 status = 0;
+    status = UnpackCore(pCtx, pBuf, nBuf, FFS_RMC, IES_RMC, ( tANI_U8* )pFrm, sizeof(*pFrm));
+
+    (void)i;
+#   ifdef DOT11F_DUMP_FRAMES
+    if (!DOT11F_FAILED(status))
+    {
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), FRFL("Unpacked the RMC:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), pBuf, nBuf);
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), FRFL("to:\n"));
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), FRFL("Category:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), ( tANI_U8* )&pFrm->Category.category, 1);
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), FRFL("RMCOUI:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), ( tANI_U8* )&pFrm->RMCOUI.oui, 3);
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), FRFL("MagicCode:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), ( tANI_U8* )&pFrm->MagicCode.magic, 6);
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), FRFL("RMCVersion:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), ( tANI_U8* )&pFrm->RMCVersion.version, 1);
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), FRFL("Action:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), ( tANI_U8* )&pFrm->Action.action, 1);
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), FRFL("RMCDialogToken:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), ( tANI_U8* )&pFrm->RMCDialogToken.token, 4);
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), FRFL("Leader:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), ( tANI_U8* )&pFrm->Leader.mac, 6);
+    }
+#   endif // DOT11F_DUMP_FRAMES
+    return status;
+
+} /* End dot11fUnpackRMC. */
+
     static const tFFDefn FFS_RadioMeasurementReport[] = {
         { "Category", offsetof(tDot11fRadioMeasurementReport, Category), SigFfCategory , DOT11F_FF_CATEGORY_LEN, },
         { "Action", offsetof(tDot11fRadioMeasurementReport, Action), SigFfAction , DOT11F_FF_ACTION_LEN, },
@@ -16788,6 +16895,7 @@
         {offsetof(tDot11fReAssocResponse, FTInfo), offsetof(tDot11fIEFTInfo, present), 0, "FTInfo" , 0, 84, 222, SigIeFTInfo, {0, 0, 0, 0, 0}, 0, DOT11F_EID_FTINFO, 0, },
         {offsetof(tDot11fReAssocResponse, RICDataDesc), offsetof(tDot11fIERICDataDesc, present), offsetof(tDot11fReAssocResponse, num_RICDataDesc), "RICDataDesc" , 2, 2, 550, SigIeRICDataDesc, {0, 0, 0, 0, 0}, 0, DOT11F_EID_RICDATADESC, 0, },
         {offsetof(tDot11fReAssocResponse, WPA), offsetof(tDot11fIEWPA, present), 0, "WPA" , 0, 8, 50, SigIeWPA, {0, 80, 242, 1, 0}, 4, DOT11F_EID_WPA, 0, },
+        {offsetof(tDot11fReAssocResponse, TimeoutInterval), offsetof(tDot11fIETimeoutInterval, present), 0, "TimeoutInterval" , 0, 7, 7, SigIeTimeoutInterval, {0, 0, 0, 0, 0}, 0, DOT11F_EID_TIMEOUTINTERVAL, 0, },
         {offsetof(tDot11fReAssocResponse, HTCaps), offsetof(tDot11fIEHTCaps, present), 0, "HTCaps" , 0, 28, 60, SigIeHTCaps, {0, 0, 0, 0, 0}, 0, DOT11F_EID_HTCAPS, 0, },
         {offsetof(tDot11fReAssocResponse, HTInfo), offsetof(tDot11fIEHTInfo, present), 0, "HTInfo" , 0, 24, 56, SigIeHTInfo, {0, 0, 0, 0, 0}, 0, DOT11F_EID_HTINFO, 0, },
         {offsetof(tDot11fReAssocResponse, WMMParams), offsetof(tDot11fIEWMMParams, present), 0, "WMMParams" , 0, 26, 26, SigIeWMMParams, {0, 80, 242, 2, 1}, 5, DOT11F_EID_WMMPARAMS, 0, },
@@ -17315,6 +17423,16 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_REASSOCRESPONSE), ( tANI_U8* ) pFrm->WPA.auth_suites, 4 * pFrm->WPA.auth_suite_count);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_REASSOCRESPONSE), ( tANI_U8* )&pFrm->WPA.caps, 2);
         }
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_REASSOCRESPONSE), FRFL("TimeoutInterval:\n"));
+        if (!pFrm->TimeoutInterval.present)
+        {
+            FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_REASSOCRESPONSE), FRFL("Not present.\n"));
+        }
+        else
+        {
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_REASSOCRESPONSE), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutType, 1);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_REASSOCRESPONSE), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutValue, 4);
+        }
         FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_REASSOCRESPONSE), FRFL("HTCaps:\n"));
         if (!pFrm->HTCaps.present)
         {
@@ -17986,6 +18104,41 @@
 
 } /* End dot11fUnpackSMPowerSave. */
 
+    static const tFFDefn FFS_SaQueryReq[] = {
+        { "Category", offsetof(tDot11fSaQueryReq, Category), SigFfCategory , DOT11F_FF_CATEGORY_LEN, },
+        { "Action", offsetof(tDot11fSaQueryReq, Action), SigFfAction , DOT11F_FF_ACTION_LEN, },
+        { "TransactionId", offsetof(tDot11fSaQueryReq, TransactionId), SigFfTransactionId , DOT11F_FF_TRANSACTIONID_LEN, },
+    { NULL, 0, 0, 0,},
+    };
+
+    static const tIEDefn IES_SaQueryReq[] = {
+    {0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },    };
+
+tANI_U32 dot11fUnpackSaQueryReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fSaQueryReq *pFrm)
+{
+    tANI_U32 i = 0;
+    tANI_U32 status = 0;
+    status = UnpackCore(pCtx, pBuf, nBuf, FFS_SaQueryReq, IES_SaQueryReq, ( tANI_U8* )pFrm, sizeof(*pFrm));
+
+    (void)i;
+#   ifdef DOT11F_DUMP_FRAMES
+    if (!DOT11F_FAILED(status))
+    {
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_SAQUERYREQ), FRFL("Unpacked the SaQueryReq:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_SAQUERYREQ), pBuf, nBuf);
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_SAQUERYREQ), FRFL("to:\n"));
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_SAQUERYREQ), FRFL("Category:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_SAQUERYREQ), ( tANI_U8* )&pFrm->Category.category, 1);
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_SAQUERYREQ), FRFL("Action:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_SAQUERYREQ), ( tANI_U8* )&pFrm->Action.action, 1);
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_SAQUERYREQ), FRFL("TransactionId:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_SAQUERYREQ), ( tANI_U8* )&pFrm->TransactionId.transId, 2);
+    }
+#   endif // DOT11F_DUMP_FRAMES
+    return status;
+
+} /* End dot11fUnpackSaQueryReq. */
+
     static const tFFDefn FFS_SaQueryRsp[] = {
         { "Category", offsetof(tDot11fSaQueryRsp, Category), SigFfCategory , DOT11F_FF_CATEGORY_LEN, },
         { "Action", offsetof(tDot11fSaQueryRsp, Action), SigFfAction , DOT11F_FF_ACTION_LEN, },
@@ -18084,7 +18237,7 @@
         {offsetof(tDot11fTDLSDisRsp, RSN), offsetof(tDot11fIERSN, present), 0, "RSN" , 0, 8, 116, SigIeRSN, {0, 0, 0, 0, 0}, 0, DOT11F_EID_RSN, 0, },
         {offsetof(tDot11fTDLSDisRsp, ExtCap), offsetof(tDot11fIEExtCap, present), 0, "ExtCap" , 0, 10, 10, SigIeExtCap, {0, 0, 0, 0, 0}, 0, DOT11F_EID_EXTCAP, 0, },
         {offsetof(tDot11fTDLSDisRsp, FTInfo), offsetof(tDot11fIEFTInfo, present), 0, "FTInfo" , 0, 84, 222, SigIeFTInfo, {0, 0, 0, 0, 0}, 0, DOT11F_EID_FTINFO, 0, },
-        {offsetof(tDot11fTDLSDisRsp, FTTimeoutInterval), offsetof(tDot11fIEFTTimeoutInterval, present), 0, "FTTimeoutInterval" , 0, 7, 7, SigIeFTTimeoutInterval, {0, 0, 0, 0, 0}, 0, DOT11F_EID_FTTIMEOUTINTERVAL, 0, },
+        {offsetof(tDot11fTDLSDisRsp, TimeoutInterval), offsetof(tDot11fIETimeoutInterval, present), 0, "TimeoutInterval" , 0, 7, 7, SigIeTimeoutInterval, {0, 0, 0, 0, 0}, 0, DOT11F_EID_TIMEOUTINTERVAL, 0, },
         {offsetof(tDot11fTDLSDisRsp, RICData), offsetof(tDot11fIERICData, present), 0, "RICData" , 0, 6, 6, SigIeRICData, {0, 0, 0, 0, 0}, 0, DOT11F_EID_RICDATA, 0, },
         {offsetof(tDot11fTDLSDisRsp, HTCaps), offsetof(tDot11fIEHTCaps, present), 0, "HTCaps" , 0, 28, 60, SigIeHTCaps, {0, 0, 0, 0, 0}, 0, DOT11F_EID_HTCAPS, 0, },
         {offsetof(tDot11fTDLSDisRsp, LinkIdentifier), offsetof(tDot11fIELinkIdentifier, present), 0, "LinkIdentifier" , 0, 20, 20, SigIeLinkIdentifier, {0, 0, 0, 0, 0}, 0, DOT11F_EID_LINKIDENTIFIER, 1, },
@@ -18302,15 +18455,15 @@
                 FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), ( tANI_U8* )&pFrm->FTInfo.IGTK.key, 24);
             }
         }
-        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), FRFL("FTTimeoutInterval:\n"));
-        if (!pFrm->FTTimeoutInterval.present)
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), FRFL("TimeoutInterval:\n"));
+        if (!pFrm->TimeoutInterval.present)
         {
             FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), FRFL("Not present.\n"));
         }
         else
         {
-            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), ( tANI_U8* )&pFrm->FTTimeoutInterval.timeoutType, 1);
-            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), ( tANI_U8* )&pFrm->FTTimeoutInterval.timeoutValue, 4);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutType, 1);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutValue, 4);
         }
         FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), FRFL("RICData:\n"));
         if (!pFrm->RICData.present)
@@ -18562,7 +18715,7 @@
         {offsetof(tDot11fTDLSSetupCnf, RSN), offsetof(tDot11fIERSN, present), 0, "RSN" , 0, 8, 116, SigIeRSN, {0, 0, 0, 0, 0}, 0, DOT11F_EID_RSN, 0, },
         {offsetof(tDot11fTDLSSetupCnf, EDCAParamSet), offsetof(tDot11fIEEDCAParamSet, present), 0, "EDCAParamSet" , 0, 20, 20, SigIeEDCAParamSet, {0, 0, 0, 0, 0}, 0, DOT11F_EID_EDCAPARAMSET, 0, },
         {offsetof(tDot11fTDLSSetupCnf, FTInfo), offsetof(tDot11fIEFTInfo, present), 0, "FTInfo" , 0, 84, 222, SigIeFTInfo, {0, 0, 0, 0, 0}, 0, DOT11F_EID_FTINFO, 0, },
-        {offsetof(tDot11fTDLSSetupCnf, FTTimeoutInterval), offsetof(tDot11fIEFTTimeoutInterval, present), 0, "FTTimeoutInterval" , 0, 7, 7, SigIeFTTimeoutInterval, {0, 0, 0, 0, 0}, 0, DOT11F_EID_FTTIMEOUTINTERVAL, 0, },
+        {offsetof(tDot11fTDLSSetupCnf, TimeoutInterval), offsetof(tDot11fIETimeoutInterval, present), 0, "TimeoutInterval" , 0, 7, 7, SigIeTimeoutInterval, {0, 0, 0, 0, 0}, 0, DOT11F_EID_TIMEOUTINTERVAL, 0, },
         {offsetof(tDot11fTDLSSetupCnf, HTInfo), offsetof(tDot11fIEHTInfo, present), 0, "HTInfo" , 0, 24, 56, SigIeHTInfo, {0, 0, 0, 0, 0}, 0, DOT11F_EID_HTINFO, 0, },
         {offsetof(tDot11fTDLSSetupCnf, LinkIdentifier), offsetof(tDot11fIELinkIdentifier, present), 0, "LinkIdentifier" , 0, 20, 20, SigIeLinkIdentifier, {0, 0, 0, 0, 0}, 0, DOT11F_EID_LINKIDENTIFIER, 0, },
         {offsetof(tDot11fTDLSSetupCnf, WMMInfoStation), offsetof(tDot11fIEWMMInfoStation, present), 0, "WMMInfoStation" , 0, 9, 9, SigIeWMMInfoStation, {0, 80, 242, 2, 0}, 5, DOT11F_EID_WMMINFOSTATION, 0, },
@@ -18705,15 +18858,15 @@
                 FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), ( tANI_U8* )&pFrm->FTInfo.IGTK.key, 24);
             }
         }
-        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), FRFL("FTTimeoutInterval:\n"));
-        if (!pFrm->FTTimeoutInterval.present)
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), FRFL("TimeoutInterval:\n"));
+        if (!pFrm->TimeoutInterval.present)
         {
             FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), FRFL("Not present.\n"));
         }
         else
         {
-            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), ( tANI_U8* )&pFrm->FTTimeoutInterval.timeoutType, 1);
-            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), ( tANI_U8* )&pFrm->FTTimeoutInterval.timeoutValue, 4);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutType, 1);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutValue, 4);
         }
         FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), FRFL("HTInfo:\n"));
         if (!pFrm->HTInfo.present)
@@ -18819,7 +18972,7 @@
         {offsetof(tDot11fTDLSSetupReq, SuppOperatingClasses), offsetof(tDot11fIESuppOperatingClasses, present), 0, "SuppOperatingClasses" , 0, 3, 34, SigIeSuppOperatingClasses, {0, 0, 0, 0, 0}, 0, DOT11F_EID_SUPPOPERATINGCLASSES, 0, },
         {offsetof(tDot11fTDLSSetupReq, QOSCapsStation), offsetof(tDot11fIEQOSCapsStation, present), 0, "QOSCapsStation" , 0, 3, 3, SigIeQOSCapsStation, {0, 0, 0, 0, 0}, 0, DOT11F_EID_QOSCAPSSTATION, 0, },
         {offsetof(tDot11fTDLSSetupReq, FTInfo), offsetof(tDot11fIEFTInfo, present), 0, "FTInfo" , 0, 84, 222, SigIeFTInfo, {0, 0, 0, 0, 0}, 0, DOT11F_EID_FTINFO, 0, },
-        {offsetof(tDot11fTDLSSetupReq, FTTimeoutInterval), offsetof(tDot11fIEFTTimeoutInterval, present), 0, "FTTimeoutInterval" , 0, 7, 7, SigIeFTTimeoutInterval, {0, 0, 0, 0, 0}, 0, DOT11F_EID_FTTIMEOUTINTERVAL, 0, },
+        {offsetof(tDot11fTDLSSetupReq, TimeoutInterval), offsetof(tDot11fIETimeoutInterval, present), 0, "TimeoutInterval" , 0, 7, 7, SigIeTimeoutInterval, {0, 0, 0, 0, 0}, 0, DOT11F_EID_TIMEOUTINTERVAL, 0, },
         {offsetof(tDot11fTDLSSetupReq, RICData), offsetof(tDot11fIERICData, present), 0, "RICData" , 0, 6, 6, SigIeRICData, {0, 0, 0, 0, 0}, 0, DOT11F_EID_RICDATA, 0, },
         {offsetof(tDot11fTDLSSetupReq, HTCaps), offsetof(tDot11fIEHTCaps, present), 0, "HTCaps" , 0, 28, 60, SigIeHTCaps, {0, 0, 0, 0, 0}, 0, DOT11F_EID_HTCAPS, 0, },
         {offsetof(tDot11fTDLSSetupReq, LinkIdentifier), offsetof(tDot11fIELinkIdentifier, present), 0, "LinkIdentifier" , 0, 20, 20, SigIeLinkIdentifier, {0, 0, 0, 0, 0}, 0, DOT11F_EID_LINKIDENTIFIER, 1, },
@@ -19065,15 +19218,15 @@
                 FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), ( tANI_U8* )&pFrm->FTInfo.IGTK.key, 24);
             }
         }
-        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), FRFL("FTTimeoutInterval:\n"));
-        if (!pFrm->FTTimeoutInterval.present)
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), FRFL("TimeoutInterval:\n"));
+        if (!pFrm->TimeoutInterval.present)
         {
             FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), FRFL("Not present.\n"));
         }
         else
         {
-            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), ( tANI_U8* )&pFrm->FTTimeoutInterval.timeoutType, 1);
-            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), ( tANI_U8* )&pFrm->FTTimeoutInterval.timeoutValue, 4);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutType, 1);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutValue, 4);
         }
         FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), FRFL("RICData:\n"));
         if (!pFrm->RICData.present)
@@ -19238,7 +19391,7 @@
         {offsetof(tDot11fTDLSSetupRsp, SuppOperatingClasses), offsetof(tDot11fIESuppOperatingClasses, present), 0, "SuppOperatingClasses" , 0, 3, 34, SigIeSuppOperatingClasses, {0, 0, 0, 0, 0}, 0, DOT11F_EID_SUPPOPERATINGCLASSES, 0, },
         {offsetof(tDot11fTDLSSetupRsp, QOSCapsStation), offsetof(tDot11fIEQOSCapsStation, present), 0, "QOSCapsStation" , 0, 3, 3, SigIeQOSCapsStation, {0, 0, 0, 0, 0}, 0, DOT11F_EID_QOSCAPSSTATION, 0, },
         {offsetof(tDot11fTDLSSetupRsp, FTInfo), offsetof(tDot11fIEFTInfo, present), 0, "FTInfo" , 0, 84, 222, SigIeFTInfo, {0, 0, 0, 0, 0}, 0, DOT11F_EID_FTINFO, 0, },
-        {offsetof(tDot11fTDLSSetupRsp, FTTimeoutInterval), offsetof(tDot11fIEFTTimeoutInterval, present), 0, "FTTimeoutInterval" , 0, 7, 7, SigIeFTTimeoutInterval, {0, 0, 0, 0, 0}, 0, DOT11F_EID_FTTIMEOUTINTERVAL, 0, },
+        {offsetof(tDot11fTDLSSetupRsp, TimeoutInterval), offsetof(tDot11fIETimeoutInterval, present), 0, "TimeoutInterval" , 0, 7, 7, SigIeTimeoutInterval, {0, 0, 0, 0, 0}, 0, DOT11F_EID_TIMEOUTINTERVAL, 0, },
         {offsetof(tDot11fTDLSSetupRsp, RICData), offsetof(tDot11fIERICData, present), 0, "RICData" , 0, 6, 6, SigIeRICData, {0, 0, 0, 0, 0}, 0, DOT11F_EID_RICDATA, 0, },
         {offsetof(tDot11fTDLSSetupRsp, HTCaps), offsetof(tDot11fIEHTCaps, present), 0, "HTCaps" , 0, 28, 60, SigIeHTCaps, {0, 0, 0, 0, 0}, 0, DOT11F_EID_HTCAPS, 0, },
         {offsetof(tDot11fTDLSSetupRsp, LinkIdentifier), offsetof(tDot11fIELinkIdentifier, present), 0, "LinkIdentifier" , 0, 20, 20, SigIeLinkIdentifier, {0, 0, 0, 0, 0}, 0, DOT11F_EID_LINKIDENTIFIER, 0, },
@@ -19487,15 +19640,15 @@
                 FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), ( tANI_U8* )&pFrm->FTInfo.IGTK.key, 24);
             }
         }
-        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), FRFL("FTTimeoutInterval:\n"));
-        if (!pFrm->FTTimeoutInterval.present)
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), FRFL("TimeoutInterval:\n"));
+        if (!pFrm->TimeoutInterval.present)
         {
             FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), FRFL("Not present.\n"));
         }
         else
         {
-            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), ( tANI_U8* )&pFrm->FTTimeoutInterval.timeoutType, 1);
-            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), ( tANI_U8* )&pFrm->FTTimeoutInterval.timeoutValue, 4);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutType, 1);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutValue, 4);
         }
         FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), FRFL("RICData:\n"));
         if (!pFrm->RICData.present)
@@ -20225,12 +20378,18 @@
         case SigFfDialogToken:
             dot11fUnpackFfDialogToken(pCtx, pBufRemaining, ( tDot11fFfDialogToken* )(pFrm + pFf->offset ));
             break;
+        case SigFfLeader:
+            dot11fUnpackFfLeader(pCtx, pBufRemaining, ( tDot11fFfLeader* )(pFrm + pFf->offset ));
+            break;
         case SigFfLinkMargin:
             dot11fUnpackFfLinkMargin(pCtx, pBufRemaining, ( tDot11fFfLinkMargin* )(pFrm + pFf->offset ));
             break;
         case SigFfListenInterval:
             dot11fUnpackFfCommonFunc(pCtx, pBufRemaining, (tANI_U16*)&((( tDot11fFfListenInterval* )(pFrm + pFf->offset ))->interval));
             break;
+        case SigFfMagicCode:
+            dot11fUnpackFfMagicCode(pCtx, pBufRemaining, ( tDot11fFfMagicCode* )(pFrm + pFf->offset ));
+            break;
         case SigFfMaxTxPower:
             dot11fUnpackFfMaxTxPower(pCtx, pBufRemaining, ( tDot11fFfMaxTxPower* )(pFrm + pFf->offset ));
             break;
@@ -20249,6 +20408,15 @@
         case SigFfRCPI:
             dot11fUnpackFfRCPI(pCtx, pBufRemaining, ( tDot11fFfRCPI* )(pFrm + pFf->offset ));
             break;
+        case SigFfRMCDialogToken:
+            dot11fUnpackFfRMCDialogToken(pCtx, pBufRemaining, ( tDot11fFfRMCDialogToken* )(pFrm + pFf->offset ));
+            break;
+        case SigFfRMCOUI:
+            dot11fUnpackFfRMCOUI(pCtx, pBufRemaining, ( tDot11fFfRMCOUI* )(pFrm + pFf->offset ));
+            break;
+        case SigFfRMCVersion:
+            dot11fUnpackFfRMCVersion(pCtx, pBufRemaining, ( tDot11fFfRMCVersion* )(pFrm + pFf->offset ));
+            break;
         case SigFfRSNI:
             dot11fUnpackFfRSNI(pCtx, pBufRemaining, ( tDot11fFfRSNI* )(pFrm + pFf->offset ));
             break;
@@ -20591,9 +20759,6 @@
                 case SigIeFTInfo:
                         status |= dot11fUnpackIeFTInfo(pCtx, pBufRemaining, len, ( tDot11fIEFTInfo* )(pFrm + pIe->offset + sizeof(tDot11fIEFTInfo)*countOffset) );
                             break;
-                case SigIeFTTimeoutInterval:
-                        status |= dot11fUnpackIeFTTimeoutInterval(pCtx, pBufRemaining, len, ( tDot11fIEFTTimeoutInterval* )(pFrm + pIe->offset + sizeof(tDot11fIEFTTimeoutInterval)*countOffset) );
-                            break;
                 case SigIeHTCaps:
                         status |= dot11fUnpackIeHTCaps(pCtx, pBufRemaining, len, ( tDot11fIEHTCaps* )(pFrm + pIe->offset + sizeof(tDot11fIEHTCaps)*countOffset) );
                             break;
@@ -20754,6 +20919,9 @@
                 case SigIeTPCRequest:
                         status |= dot11fUnpackIeTPCRequest(pCtx, pBufRemaining, len, ( tDot11fIETPCRequest* )(pFrm + pIe->offset + sizeof(tDot11fIETPCRequest)*countOffset) );
                             break;
+                case SigIeTimeoutInterval:
+                        status |= dot11fUnpackIeTimeoutInterval(pCtx, pBufRemaining, len, ( tDot11fIETimeoutInterval* )(pFrm + pIe->offset + sizeof(tDot11fIETimeoutInterval)*countOffset) );
+                            break;
                 case SigIeVHTCaps:
                         status |= dot11fUnpackIeVHTCaps(pCtx, pBufRemaining, len, ( tDot11fIEVHTCaps* )(pFrm + pIe->offset + sizeof(tDot11fIEVHTCaps)*countOffset) );
                             break;
@@ -22252,6 +22420,14 @@
     return status;
 } /* End dot11fGetPackedProvisionDiscoveryResSize. */
 
+tANI_U32 dot11fGetPackedRMCSize(tpAniSirGlobal pCtx, tDot11fRMC *pFrm, tANI_U32 *pnNeeded)
+{
+    tANI_U32 status = 0;
+    *pnNeeded = 22;
+    status = GetPackedSizeCore(pCtx, ( tANI_U8* )pFrm, pnNeeded, IES_RMC);
+    return status;
+} /* End dot11fGetPackedRMCSize. */
+
 tANI_U32 dot11fGetPackedRadioMeasurementReportSize(tpAniSirGlobal pCtx, tDot11fRadioMeasurementReport *pFrm, tANI_U32 *pnNeeded)
 {
     tANI_U32 status = 0;
@@ -22292,6 +22468,14 @@
     return status;
 } /* End dot11fGetPackedSMPowerSaveSize. */
 
+tANI_U32 dot11fGetPackedSaQueryReqSize(tpAniSirGlobal pCtx, tDot11fSaQueryReq *pFrm, tANI_U32 *pnNeeded)
+{
+    tANI_U32 status = 0;
+    *pnNeeded = 4;
+    status = GetPackedSizeCore(pCtx, ( tANI_U8* )pFrm, pnNeeded, IES_SaQueryReq);
+    return status;
+} /* End dot11fGetPackedSaQueryReqSize. */
+
 tANI_U32 dot11fGetPackedSaQueryRspSize(tpAniSirGlobal pCtx, tDot11fSaQueryRsp *pFrm, tANI_U32 *pnNeeded)
 {
     tANI_U32 status = 0;
@@ -22769,11 +22953,6 @@
                             offset = sizeof(tDot11fIEFTInfo);
                             status |= dot11fGetPackedIEFTInfo(pCtx, ( tDot11fIEFTInfo* )(pFrm + pIe->offset + offset * i ), pnNeeded);
                             break;
-                case SigIeFTTimeoutInterval:
-                            offset = sizeof(tDot11fIEFTTimeoutInterval);
-                            byteCount = 5;
-                            pIePresent = ( (tDot11fIEFTTimeoutInterval* )(pFrm + pIe->offset + offset * i  ))->present;
-                            break;
                 case SigIeHTCaps:
                             offset = sizeof(tDot11fIEHTCaps);
                             byteCount = ((tDot11fIEHTCaps* )(pFrm + pIe->offset + sizeof(tDot11fIEHTCaps) * i ))->num_rsvd + 26;
@@ -23000,6 +23179,11 @@
                             byteCount = 0;
                             pIePresent = ( (tDot11fIETPCRequest* )(pFrm + pIe->offset + offset * i  ))->present;
                             break;
+                case SigIeTimeoutInterval:
+                            offset = sizeof(tDot11fIETimeoutInterval);
+                            byteCount = 5;
+                            pIePresent = ( (tDot11fIETimeoutInterval* )(pFrm + pIe->offset + offset * i  ))->present;
+                            break;
                 case SigIeVHTCaps:
                             offset = sizeof(tDot11fIEVHTCaps);
                             byteCount = 12;
@@ -23474,6 +23658,14 @@
     (void)pCtx;
 } /* End dot11fPackFfDialogToken. */
 
+void dot11fPackFfLeader(tpAniSirGlobal pCtx,
+                        tDot11fFfLeader *pSrc,
+                        tANI_U8 *pBuf)
+{
+    DOT11F_MEMCPY(pCtx, pBuf, pSrc->mac, 6);
+    (void)pCtx;
+} /* End dot11fPackFfLeader. */
+
 void dot11fPackFfLinkMargin(tpAniSirGlobal pCtx,
                             tDot11fFfLinkMargin *pSrc,
                             tANI_U8 *pBuf)
@@ -23490,6 +23682,14 @@
     (void)pCtx;
 } /* End dot11fPackFfListenInterval. */
 
+void dot11fPackFfMagicCode(tpAniSirGlobal pCtx,
+                           tDot11fFfMagicCode *pSrc,
+                           tANI_U8 *pBuf)
+{
+    DOT11F_MEMCPY(pCtx, pBuf, pSrc->magic, 6);
+    (void)pCtx;
+} /* End dot11fPackFfMagicCode. */
+
 void dot11fPackFfMaxTxPower(tpAniSirGlobal pCtx,
                             tDot11fFfMaxTxPower *pSrc,
                             tANI_U8 *pBuf)
@@ -23544,6 +23744,30 @@
     (void)pCtx;
 } /* End dot11fPackFfRCPI. */
 
+void dot11fPackFfRMCDialogToken(tpAniSirGlobal pCtx,
+                                tDot11fFfRMCDialogToken *pSrc,
+                                tANI_U8 *pBuf)
+{
+    frameshtonl(pCtx, pBuf, pSrc->token, 0);
+    (void)pCtx;
+} /* End dot11fPackFfRMCDialogToken. */
+
+void dot11fPackFfRMCOUI(tpAniSirGlobal pCtx,
+                        tDot11fFfRMCOUI *pSrc,
+                        tANI_U8 *pBuf)
+{
+    DOT11F_MEMCPY(pCtx, pBuf, pSrc->oui, 3);
+    (void)pCtx;
+} /* End dot11fPackFfRMCOUI. */
+
+void dot11fPackFfRMCVersion(tpAniSirGlobal pCtx,
+                            tDot11fFfRMCVersion *pSrc,
+                            tANI_U8 *pBuf)
+{
+    *pBuf = pSrc->version;
+    (void)pCtx;
+} /* End dot11fPackFfRMCVersion. */
+
 void dot11fPackFfRSNI(tpAniSirGlobal pCtx,
                       tDot11fFfRSNI *pSrc,
                       tANI_U8 *pBuf)
@@ -28011,39 +28235,6 @@
     return status;
 } /* End dot11fPackIeFTInfo. */
 
-tANI_U32 dot11fPackIeFTTimeoutInterval(tpAniSirGlobal pCtx,
-                                       tDot11fIEFTTimeoutInterval *pSrc,
-                                       tANI_U8 *pBuf,
-                                       tANI_U32 nBuf,
-                                       tANI_U32 *pnConsumed)
-{
-    tANI_U8* pIeLen = 0;
-    tANI_U32 nConsumedOnEntry = *pnConsumed;
-    tANI_U32 nNeeded = 0U;
-    nNeeded  += 5;
-    while ( pSrc->present )
-    {
-        if ( nNeeded > nBuf ) return DOT11F_BUFFER_OVERFLOW;
-        *pBuf = 56;
-        ++pBuf; ++(*pnConsumed);
-        pIeLen = pBuf;
-        ++pBuf; ++(*pnConsumed);
-        *pBuf = pSrc->timeoutType;
-        *pnConsumed += 1;
-        pBuf += 1;
-        frameshtonl(pCtx, pBuf, pSrc->timeoutValue, 0);
-        *pnConsumed += 4;
-        // fieldsEndFlag = 1
-        break;
-    }
-    (void)pCtx;
-    if (pIeLen)
-    {
-        *pIeLen = *pnConsumed - nConsumedOnEntry - 2;
-    }
-    return DOT11F_PARSE_SUCCESS;
-} /* End dot11fPackIeFTTimeoutInterval. */
-
 tANI_U32 dot11fPackIeHTCaps(tpAniSirGlobal pCtx,
                             tDot11fIEHTCaps *pSrc,
                             tANI_U8 *pBuf,
@@ -30329,6 +30520,39 @@
     return DOT11F_PARSE_SUCCESS;
 } /* End dot11fPackIeTPCRequest. */
 
+tANI_U32 dot11fPackIeTimeoutInterval(tpAniSirGlobal pCtx,
+                                     tDot11fIETimeoutInterval *pSrc,
+                                     tANI_U8 *pBuf,
+                                     tANI_U32 nBuf,
+                                     tANI_U32 *pnConsumed)
+{
+    tANI_U8* pIeLen = 0;
+    tANI_U32 nConsumedOnEntry = *pnConsumed;
+    tANI_U32 nNeeded = 0U;
+    nNeeded  += 5;
+    while ( pSrc->present )
+    {
+        if ( nNeeded > nBuf ) return DOT11F_BUFFER_OVERFLOW;
+        *pBuf = 56;
+        ++pBuf; ++(*pnConsumed);
+        pIeLen = pBuf;
+        ++pBuf; ++(*pnConsumed);
+        *pBuf = pSrc->timeoutType;
+        *pnConsumed += 1;
+        pBuf += 1;
+        frameshtonl(pCtx, pBuf, pSrc->timeoutValue, 0);
+        *pnConsumed += 4;
+        // fieldsEndFlag = 1
+        break;
+    }
+    (void)pCtx;
+    if (pIeLen)
+    {
+        *pIeLen = *pnConsumed - nConsumedOnEntry - 2;
+    }
+    return DOT11F_PARSE_SUCCESS;
+} /* End dot11fPackIeTimeoutInterval. */
+
 tANI_U32 dot11fPackIeVHTCaps(tpAniSirGlobal pCtx,
                              tDot11fIEVHTCaps *pSrc,
                              tANI_U8 *pBuf,
@@ -33169,6 +33393,16 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_ASSOCRESPONSE), ( tANI_U8* ) pFrm->WPA.auth_suites, 4 * pFrm->WPA.auth_suite_count);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_ASSOCRESPONSE), ( tANI_U8* )&pFrm->WPA.caps, 2);
         }
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_ASSOCRESPONSE), FRFL("TimeoutInterval:\n"));
+        if (!pFrm->TimeoutInterval.present)
+        {
+            FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_ASSOCRESPONSE), FRFL("Not present.\n"));
+        }
+        else
+        {
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_ASSOCRESPONSE), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutType, 1);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_ASSOCRESPONSE), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutValue, 4);
+        }
         FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_ASSOCRESPONSE), FRFL("HTCaps:\n"));
         if (!pFrm->HTCaps.present)
         {
@@ -33916,15 +34150,15 @@
                 FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_AUTHENTICATION), ( tANI_U8* )&pFrm->FTInfo.IGTK.key, 24);
             }
         }
-        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_AUTHENTICATION), FRFL("FTTimeoutInterval:\n"));
-        if (!pFrm->FTTimeoutInterval.present)
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_AUTHENTICATION), FRFL("TimeoutInterval:\n"));
+        if (!pFrm->TimeoutInterval.present)
         {
             FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_AUTHENTICATION), FRFL("Not present.\n"));
         }
         else
         {
-            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_AUTHENTICATION), ( tANI_U8* )&pFrm->FTTimeoutInterval.timeoutType, 1);
-            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_AUTHENTICATION), ( tANI_U8* )&pFrm->FTTimeoutInterval.timeoutValue, 4);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_AUTHENTICATION), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutType, 1);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_AUTHENTICATION), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutValue, 4);
         }
         for (i = 0; i < pFrm->num_RICDataDesc; ++i)
         {
@@ -40770,6 +41004,40 @@
 
 } /* End dot11fUnpackProvisionDiscoveryRes. */
 
+tANI_U32 dot11fPackRMC(tpAniSirGlobal pCtx, tDot11fRMC *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed)
+{
+    tANI_U32 i = 0;
+    tANI_U32 status = 0;
+    (void)i;
+    *pnConsumed = 0U;
+    status = PackCore(pCtx, (tANI_U8*)pFrm, pBuf, nBuf, pnConsumed, FFS_RMC, IES_RMC);
+
+#   ifdef DOT11F_DUMP_FRAMES
+    if (!DOT11F_FAILED(status))
+    {
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), FRFL("Packed the RMC:\n"));
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), FRFL("Category:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), ( tANI_U8* )&pFrm->Category.category, 1);
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), FRFL("RMCOUI:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), ( tANI_U8* )&pFrm->RMCOUI.oui, 3);
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), FRFL("MagicCode:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), ( tANI_U8* )&pFrm->MagicCode.magic, 6);
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), FRFL("RMCVersion:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), ( tANI_U8* )&pFrm->RMCVersion.version, 1);
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), FRFL("Action:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), ( tANI_U8* )&pFrm->Action.action, 1);
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), FRFL("RMCDialogToken:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), ( tANI_U8* )&pFrm->RMCDialogToken.token, 4);
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), FRFL("Leader:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), ( tANI_U8* )&pFrm->Leader.mac, 6);
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), FRFL("to:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_RMC), pBuf, nBuf);
+    }
+#   endif // DOT11F_DUMP_FRAMES
+    return status;
+
+} /* End dot11fUnpackRMC. */
+
 tANI_U32 dot11fPackRadioMeasurementReport(tpAniSirGlobal pCtx, tDot11fRadioMeasurementReport *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed)
 {
     tANI_U32 i = 0;
@@ -42464,6 +42732,16 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_REASSOCRESPONSE), ( tANI_U8* ) pFrm->WPA.auth_suites, 4 * pFrm->WPA.auth_suite_count);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_REASSOCRESPONSE), ( tANI_U8* )&pFrm->WPA.caps, 2);
         }
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_REASSOCRESPONSE), FRFL("TimeoutInterval:\n"));
+        if (!pFrm->TimeoutInterval.present)
+        {
+            FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_REASSOCRESPONSE), FRFL("Not present.\n"));
+        }
+        else
+        {
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_REASSOCRESPONSE), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutType, 1);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_REASSOCRESPONSE), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutValue, 4);
+        }
         FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_REASSOCRESPONSE), FRFL("HTCaps:\n"));
         if (!pFrm->HTCaps.present)
         {
@@ -43128,6 +43406,32 @@
 
 } /* End dot11fUnpackSMPowerSave. */
 
+tANI_U32 dot11fPackSaQueryReq(tpAniSirGlobal pCtx, tDot11fSaQueryReq *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed)
+{
+    tANI_U32 i = 0;
+    tANI_U32 status = 0;
+    (void)i;
+    *pnConsumed = 0U;
+    status = PackCore(pCtx, (tANI_U8*)pFrm, pBuf, nBuf, pnConsumed, FFS_SaQueryReq, IES_SaQueryReq);
+
+#   ifdef DOT11F_DUMP_FRAMES
+    if (!DOT11F_FAILED(status))
+    {
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_SAQUERYREQ), FRFL("Packed the SaQueryReq:\n"));
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_SAQUERYREQ), FRFL("Category:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_SAQUERYREQ), ( tANI_U8* )&pFrm->Category.category, 1);
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_SAQUERYREQ), FRFL("Action:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_SAQUERYREQ), ( tANI_U8* )&pFrm->Action.action, 1);
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_SAQUERYREQ), FRFL("TransactionId:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_SAQUERYREQ), ( tANI_U8* )&pFrm->TransactionId.transId, 2);
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_SAQUERYREQ), FRFL("to:\n"));
+        FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_SAQUERYREQ), pBuf, nBuf);
+    }
+#   endif // DOT11F_DUMP_FRAMES
+    return status;
+
+} /* End dot11fUnpackSaQueryReq. */
+
 tANI_U32 dot11fPackSaQueryRsp(tpAniSirGlobal pCtx, tDot11fSaQueryRsp *pFrm, tANI_U8 *pBuf, tANI_U32 nBuf, tANI_U32 *pnConsumed)
 {
     tANI_U32 i = 0;
@@ -43401,15 +43705,15 @@
                 FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), ( tANI_U8* )&pFrm->FTInfo.IGTK.key, 24);
             }
         }
-        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), FRFL("FTTimeoutInterval:\n"));
-        if (!pFrm->FTTimeoutInterval.present)
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), FRFL("TimeoutInterval:\n"));
+        if (!pFrm->TimeoutInterval.present)
         {
             FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), FRFL("Not present.\n"));
         }
         else
         {
-            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), ( tANI_U8* )&pFrm->FTTimeoutInterval.timeoutType, 1);
-            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), ( tANI_U8* )&pFrm->FTTimeoutInterval.timeoutValue, 4);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutType, 1);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutValue, 4);
         }
         FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSDISRSP), FRFL("RICData:\n"));
         if (!pFrm->RICData.present)
@@ -43763,15 +44067,15 @@
                 FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), ( tANI_U8* )&pFrm->FTInfo.IGTK.key, 24);
             }
         }
-        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), FRFL("FTTimeoutInterval:\n"));
-        if (!pFrm->FTTimeoutInterval.present)
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), FRFL("TimeoutInterval:\n"));
+        if (!pFrm->TimeoutInterval.present)
         {
             FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), FRFL("Not present.\n"));
         }
         else
         {
-            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), ( tANI_U8* )&pFrm->FTTimeoutInterval.timeoutType, 1);
-            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), ( tANI_U8* )&pFrm->FTTimeoutInterval.timeoutValue, 4);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutType, 1);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutValue, 4);
         }
         FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPCNF), FRFL("HTInfo:\n"));
         if (!pFrm->HTInfo.present)
@@ -44097,15 +44401,15 @@
                 FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), ( tANI_U8* )&pFrm->FTInfo.IGTK.key, 24);
             }
         }
-        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), FRFL("FTTimeoutInterval:\n"));
-        if (!pFrm->FTTimeoutInterval.present)
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), FRFL("TimeoutInterval:\n"));
+        if (!pFrm->TimeoutInterval.present)
         {
             FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), FRFL("Not present.\n"));
         }
         else
         {
-            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), ( tANI_U8* )&pFrm->FTTimeoutInterval.timeoutType, 1);
-            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), ( tANI_U8* )&pFrm->FTTimeoutInterval.timeoutValue, 4);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutType, 1);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutValue, 4);
         }
         FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPREQ), FRFL("RICData:\n"));
         if (!pFrm->RICData.present)
@@ -44491,15 +44795,15 @@
                 FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), ( tANI_U8* )&pFrm->FTInfo.IGTK.key, 24);
             }
         }
-        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), FRFL("FTTimeoutInterval:\n"));
-        if (!pFrm->FTTimeoutInterval.present)
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), FRFL("TimeoutInterval:\n"));
+        if (!pFrm->TimeoutInterval.present)
         {
             FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), FRFL("Not present.\n"));
         }
         else
         {
-            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), ( tANI_U8* )&pFrm->FTTimeoutInterval.timeoutType, 1);
-            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), ( tANI_U8* )&pFrm->FTTimeoutInterval.timeoutValue, 4);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutType, 1);
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), ( tANI_U8* )&pFrm->TimeoutInterval.timeoutValue, 4);
         }
         FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_TDLSSETUPRSP), FRFL("RICData:\n"));
         if (!pFrm->RICData.present)
@@ -45140,12 +45444,18 @@
             case SigFfDialogToken:
                 dot11fPackFfDialogToken(pCtx, (tDot11fFfDialogToken* )(pSrc + pFf->offset), pBufRemaining);
                 break;
+            case SigFfLeader:
+                dot11fPackFfLeader(pCtx, (tDot11fFfLeader* )(pSrc + pFf->offset), pBufRemaining);
+                break;
             case SigFfLinkMargin:
                 dot11fPackFfLinkMargin(pCtx, (tDot11fFfLinkMargin* )(pSrc + pFf->offset), pBufRemaining);
                 break;
             case SigFfListenInterval:
                 dot11fPackFfListenInterval(pCtx, (tDot11fFfListenInterval* )(pSrc + pFf->offset), pBufRemaining);
                 break;
+            case SigFfMagicCode:
+                dot11fPackFfMagicCode(pCtx, (tDot11fFfMagicCode* )(pSrc + pFf->offset), pBufRemaining);
+                break;
             case SigFfMaxTxPower:
                 dot11fPackFfMaxTxPower(pCtx, (tDot11fFfMaxTxPower* )(pSrc + pFf->offset), pBufRemaining);
                 break;
@@ -45164,6 +45474,15 @@
             case SigFfRCPI:
                 dot11fPackFfRCPI(pCtx, (tDot11fFfRCPI* )(pSrc + pFf->offset), pBufRemaining);
                 break;
+            case SigFfRMCDialogToken:
+                dot11fPackFfRMCDialogToken(pCtx, (tDot11fFfRMCDialogToken* )(pSrc + pFf->offset), pBufRemaining);
+                break;
+            case SigFfRMCOUI:
+                dot11fPackFfRMCOUI(pCtx, (tDot11fFfRMCOUI* )(pSrc + pFf->offset), pBufRemaining);
+                break;
+            case SigFfRMCVersion:
+                dot11fPackFfRMCVersion(pCtx, (tDot11fFfRMCVersion* )(pSrc + pFf->offset), pBufRemaining);
+                break;
             case SigFfRSNI:
                 dot11fPackFfRSNI(pCtx, (tDot11fFfRSNI* )(pSrc + pFf->offset), pBufRemaining);
                 break;
@@ -45441,9 +45760,6 @@
                     case SigIeFTInfo:
                         status |= dot11fPackIeFTInfo(pCtx, ( tDot11fIEFTInfo* )(pSrc + pIe->offset + sizeof(tDot11fIEFTInfo) * i ),  pBufRemaining, nBufRemaining, &len);
                         break;
-                    case SigIeFTTimeoutInterval:
-                        status |= dot11fPackIeFTTimeoutInterval(pCtx, ( tDot11fIEFTTimeoutInterval* )(pSrc + pIe->offset + sizeof(tDot11fIEFTTimeoutInterval) * i ),  pBufRemaining, nBufRemaining, &len);
-                        break;
                     case SigIeHTCaps:
                         status |= dot11fPackIeHTCaps(pCtx, ( tDot11fIEHTCaps* )(pSrc + pIe->offset + sizeof(tDot11fIEHTCaps) * i ),  pBufRemaining, nBufRemaining, &len);
                         break;
@@ -45594,6 +45910,9 @@
                     case SigIeTPCRequest:
                         status |= dot11fPackIeTPCRequest(pCtx, ( tDot11fIETPCRequest* )(pSrc + pIe->offset + sizeof(tDot11fIETPCRequest) * i ),  pBufRemaining, nBufRemaining, &len);
                         break;
+                    case SigIeTimeoutInterval:
+                        status |= dot11fPackIeTimeoutInterval(pCtx, ( tDot11fIETimeoutInterval* )(pSrc + pIe->offset + sizeof(tDot11fIETimeoutInterval) * i ),  pBufRemaining, nBufRemaining, &len);
+                        break;
                     case SigIeVHTCaps:
                         status |= dot11fPackIeVHTCaps(pCtx, ( tDot11fIEVHTCaps* )(pSrc + pIe->offset + sizeof(tDot11fIEVHTCaps) * i ),  pBufRemaining, nBufRemaining, &len);
                         break;
diff --git a/CORE/SYS/legacy/src/utils/src/parserApi.c b/CORE/SYS/legacy/src/utils/src/parserApi.c
index 27d1d5f..abc6f8a 100644
--- a/CORE/SYS/legacy/src/utils/src/parserApi.c
+++ b/CORE/SYS/legacy/src/utils/src/parserApi.c
@@ -5097,5 +5097,14 @@
      pExt->num_rates = num_ext;
      pExt->present = 1;
   }
-} 
+}
+
+void PopulateDot11fTimeoutInterval( tpAniSirGlobal pMac,
+                                    tDot11fIETimeoutInterval *pDot11f,
+                                    tANI_U8 type, tANI_U32 value )
+{
+   pDot11f->present = 1;
+   pDot11f->timeoutType = type;
+   pDot11f->timeoutValue = value;
+}
 // parserApi.c ends here.
diff --git a/firmware_bin/WCNSS_cfg.dat b/firmware_bin/WCNSS_cfg.dat
index 5fa1ca1..312b66b 100644
--- a/firmware_bin/WCNSS_cfg.dat
+++ b/firmware_bin/WCNSS_cfg.dat
Binary files differ