Advertising proprietary IE (IBSS only)

Populating the prop IE (Oxygen network) in Beacon and
probe response frames sent by IBSS network only. An option is
provided in ini file to enable/disable populating the IE.

CRs-fixed: 509388
Change-Id: Ia24dbdc6d9bd5e652f83e1516f174f0ebf2ede46
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index 7117313..6dfd713 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -282,6 +282,11 @@
 #define CFG_ENABLE_ADAPT_RX_DRAIN_MAX       WNI_CFG_ENABLE_ADAPT_RX_DRAIN_STAMAX
 #define CFG_ENABLE_ADAPT_RX_DRAIN_DEFAULT   WNI_CFG_ENABLE_ADAPT_RX_DRAIN_STADEF
 
+//Enable Prop IE
+#define CFG_ENABLE_OXYNWK_NAME                   "gEnableOxygenNwk"
+#define CFG_ENABLE_OXYNWK_MIN                    ( 0 )
+#define CFG_ENABLE_OXYNWK_MAX                    ( 1 )
+#define CFG_ENABLE_OXYNWK_DEFAULT                ( 0 )
 
 typedef enum
 {
@@ -2167,6 +2172,7 @@
    v_BOOL_t                    bFastRoamInConIniFeatureEnabled;
 #endif
    v_BOOL_t                    fEnableAdaptRxDrain;
+   v_BOOL_t                    enableOxygenNwk;
 } hdd_config_t;
 /*--------------------------------------------------------------------------- 
   Function declarations and documenation
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index d21d609..abc8651 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -2343,6 +2343,12 @@
                  CFG_ENABLE_ADAPT_RX_DRAIN_MIN,
                  CFG_ENABLE_ADAPT_RX_DRAIN_MAX),
 
+   REG_VARIABLE( CFG_ENABLE_OXYNWK_NAME, WLAN_PARAM_Integer,
+                 hdd_config_t, enableOxygenNwk,
+                 VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+                 CFG_ENABLE_OXYNWK_DEFAULT,
+                 CFG_ENABLE_OXYNWK_MIN,
+                 CFG_ENABLE_OXYNWK_MAX ),
 };
 
 /*
@@ -4085,6 +4091,9 @@
 
    smeConfig.csrConfig.enableTxLdpc = pConfig->enableTxLdpc;
 
+   // Prop IE enabling/disabling option
+   smeConfig.csrConfig.enableOxygenNwk = pConfig->enableOxygenNwk;
+
    /* update SSR config */
    sme_UpdateEnableSSR((tHalHandle)(pHddCtx->hHal), pHddCtx->cfg_ini->enableSSR);
    /* Update the Directed scan offload setting */
diff --git a/CORE/MAC/inc/sirApi.h b/CORE/MAC/inc/sirApi.h
index 20f5903..efbed87 100644
--- a/CORE/MAC/inc/sirApi.h
+++ b/CORE/MAC/inc/sirApi.h
@@ -643,6 +643,8 @@
 
     tANI_U8                 txLdpcIniFeatureEnabled;
 
+    tANI_U8                 oxygenNwkIniFeatureEnabled;
+
     tSirRSNie               rsnIE;             // RSN IE to be sent in
                                                // Beacon and Probe
                                                // Response frames
diff --git a/CORE/MAC/inc/wniCfgAp.h b/CORE/MAC/inc/wniCfgAp.h
index c2f8b73..a801532 100644
--- a/CORE/MAC/inc/wniCfgAp.h
+++ b/CORE/MAC/inc/wniCfgAp.h
@@ -360,6 +360,7 @@
 #define WNI_CFG_TDLS_PUAPSD_INACT_TIME    300
 #define WNI_CFG_TDLS_RX_FRAME_THRESHOLD    301
 #define WNI_CFG_ENABLE_ADAPT_RX_DRAIN    302
+#define WNI_CFG_OXYGEN_NETWORK_DATA    303
 
 /*
  * String parameter lengths 
@@ -2522,10 +2523,18 @@
 #define WNI_CFG_ENABLE_ADAPT_RX_DRAIN_STAMAX    1
 #define WNI_CFG_ENABLE_ADAPT_RX_DRAIN_STADEF    1
 
-#define CFG_PARAM_MAX_NUM         303
-#define CFG_AP_IBUF_MAX_SIZE      242
+#define WNI_CFG_OXYGEN_NETWORK_DATA_STAMIN    0
+#define WNI_CFG_OXYGEN_NETWORK_DATA_STAMAX    8192
+#define WNI_CFG_OXYGEN_NETWORK_DATA_STADEF    8192
+
+#define WNI_CFG_OXYGEN_NETWORK_DATA_APMIN    0
+#define WNI_CFG_OXYGEN_NETWORK_DATA_APMAX    8192
+#define WNI_CFG_OXYGEN_NETWORK_DATA_APDEF    8192
+
+#define CFG_PARAM_MAX_NUM         304
+#define CFG_AP_IBUF_MAX_SIZE      243
 #define CFG_AP_SBUF_MAX_SIZE      3422
-#define CFG_STA_IBUF_MAX_SIZE     237
+#define CFG_STA_IBUF_MAX_SIZE     238
 #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 930c94c..b769b39 100644
--- a/CORE/MAC/inc/wniCfgSta.h
+++ b/CORE/MAC/inc/wniCfgSta.h
@@ -354,6 +354,7 @@
 #define WNI_CFG_TDLS_PUAPSD_INACT_TIME    300
 #define WNI_CFG_TDLS_RX_FRAME_THRESHOLD    301
 #define WNI_CFG_ENABLE_ADAPT_RX_DRAIN    302
+#define WNI_CFG_OXYGEN_NETWORK_DATA    303
 
 /*
  * String parameter lengths 
@@ -1635,8 +1636,12 @@
 #define WNI_CFG_ENABLE_ADAPT_RX_DRAIN_STAMAX    1
 #define WNI_CFG_ENABLE_ADAPT_RX_DRAIN_STADEF    1
 
-#define CFG_PARAM_MAX_NUM        303
-#define CFG_STA_IBUF_MAX_SIZE    237
+#define WNI_CFG_OXYGEN_NETWORK_DATA_STAMIN    0
+#define WNI_CFG_OXYGEN_NETWORK_DATA_STAMAX    8192
+#define WNI_CFG_OXYGEN_NETWORK_DATA_STADEF    8192
+
+#define CFG_PARAM_MAX_NUM        304
+#define CFG_STA_IBUF_MAX_SIZE    238
 #define CFG_STA_SBUF_MAX_SIZE    3388
 #define CFG_SEM_MAX_NUM          19
 
diff --git a/CORE/MAC/src/cfg/cfgUtil/cfg.txt b/CORE/MAC/src/cfg/cfgUtil/cfg.txt
index 6fce429..504fe58 100644
--- a/CORE/MAC/src/cfg/cfgUtil/cfg.txt
+++ b/CORE/MAC/src/cfg/cfgUtil/cfg.txt
@@ -4557,3 +4557,13 @@
 NV    RW    NP
 HAL
 0    1    1
+*
+* Oxygen network data (prop IE for IBSS)
+*
+WNI_CFG_OXYGEN_NETWORK_DATA   I    2    0
+V    RW    NP
+SCH
+0    0x2000   0x2000
+V    RW    NP
+SCH
+0    0x2000   0x2000
diff --git a/CORE/MAC/src/include/dot11f.h b/CORE/MAC/src/include/dot11f.h
index 3a82e65..023a482 100644
--- a/CORE/MAC/src/include/dot11f.h
+++ b/CORE/MAC/src/include/dot11f.h
@@ -52,7 +52,7 @@
   *
   *
   * This file was automatically generated by 'framesc'
-  * Tue Jul  2 15:39:44 2013 from the following file(s):
+  * Thu Jul 11 19:02:48 2013 from the following file(s):
   *
   * dot11f.frms
   * 
@@ -4198,6 +4198,31 @@
 #ifdef __cplusplus
 }; /* End extern "C". */
 #endif /* C++ */
+// EID 221 (0xdd) {OUI 0x00, 0x16, 0x32}
+typedef struct sDot11fIEOxygenNetwork {
+    tANI_U8      present;
+    tANI_U16     data;
+} tDot11fIEOxygenNetwork;
+
+#define DOT11F_EID_OXYGENNETWORK ( 221 )
+
+// N.B. These #defines do *not* include the EID & length
+#define DOT11F_IE_OXYGENNETWORK_MIN_LEN ( 5 )
+
+#define DOT11F_IE_OXYGENNETWORK_MAX_LEN ( 5 )
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* C++ */
+tANI_U32 dot11fUnpackIeOxygenNetwork(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEOxygenNetwork*);
+
+tANI_U32 dot11fPackIeOxygenNetwork(tpAniSirGlobal, tDot11fIEOxygenNetwork*, tANI_U8*, tANI_U32, tANI_U32*);
+
+tANI_U32 dot11fGetPackedIEOxygenNetwork(tpAniSirGlobal, tDot11fIEOxygenNetwork*, tANI_U32*);
+
+#ifdef __cplusplus
+}; /* End extern "C". */
+#endif /* C++ */
 // EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE)
 typedef struct sDot11fIEP2PAssocReq {
     tANI_U8      present;
@@ -6321,6 +6346,7 @@
     tDot11fIEExtCap               ExtCap;
     tDot11fIEOperatingMode        OperatingMode;
     tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn;
+    tDot11fIEOxygenNetwork        OxygenNetwork;
 } tDot11fBeacon;
 
 #define DOT11F_BEACON ( 8 )
@@ -6394,6 +6420,7 @@
     tDot11fIEExtCap               ExtCap;
     tDot11fIEOperatingMode        OperatingMode;
     tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn;
+    tDot11fIEOxygenNetwork        OxygenNetwork;
 } tDot11fBeacon2;
 
 #define DOT11F_BEACON2 ( 10 )
@@ -6455,6 +6482,7 @@
     tDot11fIEExtCap               ExtCap;
     tDot11fIEOperatingMode        OperatingMode;
     tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn;
+    tDot11fIEOxygenNetwork        OxygenNetwork;
 } tDot11fBeaconIEs;
 
 #define DOT11F_BEACONIES ( 11 )
@@ -7049,6 +7077,7 @@
     tDot11fIEVHTOperation     VHTOperation;
     tDot11fIEVHTExtBssLoad    VHTExtBssLoad;
     tDot11fIEExtCap           ExtCap;
+    tDot11fIEOxygenNetwork    OxygenNetwork;
 } tDot11fProbeResponse;
 
 #define DOT11F_PROBERESPONSE ( 36 )
diff --git a/CORE/MAC/src/pe/include/limSession.h b/CORE/MAC/src/pe/include/limSession.h
index f28227d..214e816 100644
--- a/CORE/MAC/src/pe/include/limSession.h
+++ b/CORE/MAC/src/pe/include/limSession.h
@@ -353,6 +353,8 @@
 #endif
     tANI_BOOLEAN fWaitForProbeRsp;
     tANI_BOOLEAN fIgnoreCapsChange;
+    tANI_U8    oxygenNwkIniFeatureEnabled;
+
 }tPESession, *tpPESession;
 
 #define LIM_MAX_ACTIVE_SESSIONS 4
diff --git a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
index f6f2b6e..612710f 100644
--- a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
@@ -648,6 +648,9 @@
         psessionEntry->txLdpcIniFeatureEnabled = 
                                     pSmeStartBssReq->txLdpcIniFeatureEnabled;
 
+        psessionEntry->oxygenNwkIniFeatureEnabled =
+                                    pSmeStartBssReq->oxygenNwkIniFeatureEnabled;
+
         palCopyMemory(pMac->hHdd, (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 dfee03d..9138561 100644
--- a/CORE/MAC/src/pe/lim/limSendManagementFrames.c
+++ b/CORE/MAC/src/pe/lim/limSendManagementFrames.c
@@ -646,6 +646,18 @@
     }
 #endif
 
+    if (psessionEntry->oxygenNwkIniFeatureEnabled &&
+       (eLIM_STA_IN_IBSS_ROLE == psessionEntry->limSystemRole)) {
+        if (wlan_cfgGetInt(pMac, WNI_CFG_OXYGEN_NETWORK_DATA,
+                                     &tmp) != eSIR_SUCCESS){
+            limLog(pMac, LOGW, FL("Unable to get WNI_CFG_OXYGEN_NETWORK_DATA"));
+        }
+        else {
+            pFrm->OxygenNetwork.present = 1;
+            pFrm->OxygenNetwork.data = (tmp & 0xffff);
+        }
+    }
+
     if ( psessionEntry->pLimStartBssReq ) 
     {
       PopulateDot11fWPA( pMac, &( psessionEntry->pLimStartBssReq->rsnIE ),
diff --git a/CORE/MAC/src/pe/lim/limSerDesUtils.c b/CORE/MAC/src/pe/lim/limSerDesUtils.c
index 7990a69..5a85403 100644
--- a/CORE/MAC/src/pe/lim/limSerDesUtils.c
+++ b/CORE/MAC/src/pe/lim/limSerDesUtils.c
@@ -674,6 +674,11 @@
     if (limCheckRemainingLength(pMac, len) == eSIR_FAILURE)
         return eSIR_FAILURE;
 
+    // Extract oxygenNwkIniFeatureEnabled
+    pStartBssReq->oxygenNwkIniFeatureEnabled = *pBuf++;
+    len--;
+    if (limCheckRemainingLength(pMac, len) == eSIR_FAILURE)
+       return eSIR_FAILURE;
 
     // Extract rsnIe
     pStartBssReq->rsnIE.length = limGetU16(pBuf);
@@ -1163,7 +1168,6 @@
     if (limCheckRemainingLength(pMac, len) == eSIR_FAILURE)
         return eSIR_FAILURE;
 
-
     // Extract Titan CB Neighbor BSS info
     pJoinReq->cbNeighbors.cbBssFoundPri = *pBuf;
     pBuf++;
diff --git a/CORE/MAC/src/pe/sch/schBeaconGen.c b/CORE/MAC/src/pe/sch/schBeaconGen.c
index 55940de..55c3292 100644
--- a/CORE/MAC/src/pe/sch/schBeaconGen.c
+++ b/CORE/MAC/src/pe/sch/schBeaconGen.c
@@ -362,6 +362,19 @@
     }
 #endif
 
+    if (psessionEntry->oxygenNwkIniFeatureEnabled &&
+       (eLIM_STA_IN_IBSS_ROLE == psessionEntry->limSystemRole)) {
+        if ((status = wlan_cfgGetInt(pMac, WNI_CFG_OXYGEN_NETWORK_DATA,
+                                     &tmp)) != eSIR_SUCCESS)
+        {
+            limLog(pMac, LOGW, FL("Unable to get WNI_CFG_OXYGEN_NETWORK_DATA"));
+        }
+        else {
+            pBcn2->OxygenNetwork.present = 1;
+            pBcn2->OxygenNetwork.data = (tmp & 0xffff);
+        }
+    }
+
     PopulateDot11fExtSuppRates( pMac, POPULATE_DOT11F_RATES_OPERATIONAL,
                                 &pBcn2->ExtSuppRates, psessionEntry );
  
diff --git a/CORE/SME/inc/csrApi.h b/CORE/SME/inc/csrApi.h
index aa88d71..1cb06c9 100644
--- a/CORE/SME/inc/csrApi.h
+++ b/CORE/SME/inc/csrApi.h
@@ -1111,6 +1111,8 @@
     tANI_U8 scanCfgAgingTime;
 
     tANI_U8   enableTxLdpc;
+
+    tANI_BOOLEAN  enableOxygenNwk;
 }tCsrConfigParam;
 
 //Tush
diff --git a/CORE/SME/inc/csrInternal.h b/CORE/SME/inc/csrInternal.h
index 01efb81..4962386 100644
--- a/CORE/SME/inc/csrInternal.h
+++ b/CORE/SME/inc/csrInternal.h
@@ -653,6 +653,7 @@
     tANI_BOOLEAN enableVhtFor24GHz;
 #endif
     tANI_U8   txLdpcEnable;
+    tANI_BOOLEAN  enableOxygenNwk;
 
 }tCsrConfig;
 
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c
index aba9f11..e757a2f 100644
--- a/CORE/SME/src/csr/csrApiRoam.c
+++ b/CORE/SME/src/csr/csrApiRoam.c
@@ -1652,6 +1652,7 @@
         pMac->roam.configParam.enableVhtFor24GHz = pParam->enableVhtFor24GHz;
 #endif
         pMac->roam.configParam.txLdpcEnable = pParam->enableTxLdpc;
+        pMac->roam.configParam.enableOxygenNwk = pParam->enableOxygenNwk;
     }
     
     return status;
@@ -1773,6 +1774,8 @@
 #endif
 
         pParam->enableTxLdpc = pMac->roam.configParam.txLdpcEnable;
+        pParam->enableOxygenNwk = pMac->roam.configParam.enableOxygenNwk;
+
         csrSetChannels(pMac, pParam);
 
         status = eHAL_STATUS_SUCCESS;
@@ -13110,9 +13113,12 @@
         //txLdpcIniFeatureEnabled
         *pBuf = (tANI_U8)(tANI_U8)pMac->roam.configParam.txLdpcEnable;
         pBuf++;
-        
-        
-        // set RSN IE 
+
+        // prop IE enabled in .ini file
+        *pBuf = (tANI_U8)pMac->roam.configParam.enableOxygenNwk;
+        pBuf++;
+
+        // set RSN IE
         if( pParam->nRSNIELength > sizeof(pMsg->rsnIE.rsnIEdata) )
         {
             status = eHAL_STATUS_INVALID_PARAMETER;
diff --git a/CORE/SYS/legacy/src/utils/src/dot11f.c b/CORE/SYS/legacy/src/utils/src/dot11f.c
index 411f593..8183945 100644
--- a/CORE/SYS/legacy/src/utils/src/dot11f.c
+++ b/CORE/SYS/legacy/src/utils/src/dot11f.c
@@ -29,7 +29,7 @@
   *
   *
   * This file was automatically generated by 'framesc'
-  * Tue Jul  2 15:39:44 2013 from the following file(s):
+  * Thu Jul 11 19:02:48 2013 from the following file(s):
   *
   * dot11f.frms
   * 
@@ -3886,6 +3886,20 @@
 #define SigIeOperatingMode ( 0x004c )
 
 
+tANI_U32 dot11fUnpackIeOxygenNetwork(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEOxygenNetwork *pDst)
+{
+    tANI_U32 status = DOT11F_PARSE_SUCCESS;
+    (void) pBuf; (void)ielen; /* Shutup the compiler */
+    if (pDst->present) status = DOT11F_DUPLICATE_IE;
+    pDst->present = 1;
+    framesntohs(pCtx, &pDst->data, pBuf, 0);
+    (void)pCtx;
+    return status;
+} /* End dot11fUnpackIeOxygenNetwork. */
+
+#define SigIeOxygenNetwork ( 0x004d )
+
+
     static const tTLVDefn TLVS_P2PAssocReq[ ] = {
         {offsetof(tDot11fIEP2PAssocReq, P2PCapability), offsetof(tDot11fTLVP2PCapability, present), "P2PCapability", SigTlvP2PCapability, DOT11F_TLV_P2PCAPABILITY, 0, 5, 5, 1, 1, 2, 0, },
         {offsetof(tDot11fIEP2PAssocReq, ExtendedListenTiming), offsetof(tDot11fTLVExtendedListenTiming, present), "ExtendedListenTiming", SigTlvExtendedListenTiming, DOT11F_TLV_EXTENDEDLISTENTIMING, 0, 7, 7, 0, 1, 2, 0, },
@@ -3902,7 +3916,7 @@
     return status;
 } /* End dot11fUnpackIeP2PAssocReq. */
 
-#define SigIeP2PAssocReq ( 0x004d )
+#define SigIeP2PAssocReq ( 0x004e )
 
 
     static const tTLVDefn TLVS_P2PAssocRes[ ] = {
@@ -3920,7 +3934,7 @@
     return status;
 } /* End dot11fUnpackIeP2PAssocRes. */
 
-#define SigIeP2PAssocRes ( 0x004e )
+#define SigIeP2PAssocRes ( 0x004f )
 
 
     static const tTLVDefn TLVS_P2PBeacon[ ] = {
@@ -3939,7 +3953,7 @@
     return status;
 } /* End dot11fUnpackIeP2PBeacon. */
 
-#define SigIeP2PBeacon ( 0x004f )
+#define SigIeP2PBeacon ( 0x0050 )
 
 
     static const tTLVDefn TLVS_P2PBeaconProbeRes[ ] = {
@@ -3961,7 +3975,7 @@
     return status;
 } /* End dot11fUnpackIeP2PBeaconProbeRes. */
 
-#define SigIeP2PBeaconProbeRes ( 0x0050 )
+#define SigIeP2PBeaconProbeRes ( 0x0051 )
 
 
     static const tTLVDefn TLVS_P2PDeAuth[ ] = {
@@ -3978,7 +3992,7 @@
     return status;
 } /* End dot11fUnpackIeP2PDeAuth. */
 
-#define SigIeP2PDeAuth ( 0x0051 )
+#define SigIeP2PDeAuth ( 0x0052 )
 
 
     static const tTLVDefn TLVS_P2PDeviceDiscoverabilityReq[ ] = {
@@ -3996,7 +4010,7 @@
     return status;
 } /* End dot11fUnpackIeP2PDeviceDiscoverabilityReq. */
 
-#define SigIeP2PDeviceDiscoverabilityReq ( 0x0052 )
+#define SigIeP2PDeviceDiscoverabilityReq ( 0x0053 )
 
 
     static const tTLVDefn TLVS_P2PDeviceDiscoverabilityRes[ ] = {
@@ -4013,7 +4027,7 @@
     return status;
 } /* End dot11fUnpackIeP2PDeviceDiscoverabilityRes. */
 
-#define SigIeP2PDeviceDiscoverabilityRes ( 0x0053 )
+#define SigIeP2PDeviceDiscoverabilityRes ( 0x0054 )
 
 
     static const tTLVDefn TLVS_P2PDisAssoc[ ] = {
@@ -4030,7 +4044,7 @@
     return status;
 } /* End dot11fUnpackIeP2PDisAssoc. */
 
-#define SigIeP2PDisAssoc ( 0x0054 )
+#define SigIeP2PDisAssoc ( 0x0055 )
 
 
     static const tTLVDefn TLVS_P2PGONegCnf[ ] = {
@@ -4051,7 +4065,7 @@
     return status;
 } /* End dot11fUnpackIeP2PGONegCnf. */
 
-#define SigIeP2PGONegCnf ( 0x0055 )
+#define SigIeP2PGONegCnf ( 0x0056 )
 
 
     static const tTLVDefn TLVS_P2PGONegReq[ ] = {
@@ -4076,7 +4090,7 @@
     return status;
 } /* End dot11fUnpackIeP2PGONegReq. */
 
-#define SigIeP2PGONegReq ( 0x0056 )
+#define SigIeP2PGONegReq ( 0x0057 )
 
 
     static const tTLVDefn TLVS_P2PGONegRes[ ] = {
@@ -4101,7 +4115,7 @@
     return status;
 } /* End dot11fUnpackIeP2PGONegRes. */
 
-#define SigIeP2PGONegRes ( 0x0057 )
+#define SigIeP2PGONegRes ( 0x0058 )
 
 
     static const tTLVDefn TLVS_P2PGONegWPS[ ] = {
@@ -4119,7 +4133,7 @@
     return status;
 } /* End dot11fUnpackIeP2PGONegWPS. */
 
-#define SigIeP2PGONegWPS ( 0x0058 )
+#define SigIeP2PGONegWPS ( 0x0059 )
 
 
 tANI_U32 dot11fUnpackIeP2PIEOpaque(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEP2PIEOpaque *pDst)
@@ -4139,7 +4153,7 @@
     return status;
 } /* End dot11fUnpackIeP2PIEOpaque. */
 
-#define SigIeP2PIEOpaque ( 0x0059 )
+#define SigIeP2PIEOpaque ( 0x005a )
 
 
     static const tTLVDefn TLVS_P2PInvitationReq[ ] = {
@@ -4162,7 +4176,7 @@
     return status;
 } /* End dot11fUnpackIeP2PInvitationReq. */
 
-#define SigIeP2PInvitationReq ( 0x005a )
+#define SigIeP2PInvitationReq ( 0x005b )
 
 
     static const tTLVDefn TLVS_P2PInvitationRes[ ] = {
@@ -4183,7 +4197,7 @@
     return status;
 } /* End dot11fUnpackIeP2PInvitationRes. */
 
-#define SigIeP2PInvitationRes ( 0x005b )
+#define SigIeP2PInvitationRes ( 0x005c )
 
 
     static const tTLVDefn TLVS_P2PNoticeOfAbsence[ ] = {
@@ -4200,7 +4214,7 @@
     return status;
 } /* End dot11fUnpackIeP2PNoticeOfAbsence. */
 
-#define SigIeP2PNoticeOfAbsence ( 0x005c )
+#define SigIeP2PNoticeOfAbsence ( 0x005d )
 
 
     static const tTLVDefn TLVS_P2PPresenceResponse[ ] = {
@@ -4218,7 +4232,7 @@
     return status;
 } /* End dot11fUnpackIeP2PPresenceResponse. */
 
-#define SigIeP2PPresenceResponse ( 0x005d )
+#define SigIeP2PPresenceResponse ( 0x005e )
 
 
     static const tTLVDefn TLVS_P2PProbeReq[ ] = {
@@ -4239,7 +4253,7 @@
     return status;
 } /* End dot11fUnpackIeP2PProbeReq. */
 
-#define SigIeP2PProbeReq ( 0x005e )
+#define SigIeP2PProbeReq ( 0x005f )
 
 
     static const tTLVDefn TLVS_P2PProbeRes[ ] = {
@@ -4260,7 +4274,7 @@
     return status;
 } /* End dot11fUnpackIeP2PProbeRes. */
 
-#define SigIeP2PProbeRes ( 0x005f )
+#define SigIeP2PProbeRes ( 0x0060 )
 
 
     static const tTLVDefn TLVS_P2PProvisionDiscoveryReq[ ] = {
@@ -4279,7 +4293,7 @@
     return status;
 } /* End dot11fUnpackIeP2PProvisionDiscoveryReq. */
 
-#define SigIeP2PProvisionDiscoveryReq ( 0x0060 )
+#define SigIeP2PProvisionDiscoveryReq ( 0x0061 )
 
 
     static const tTLVDefn TLVS_P2PWSCProvisionDiscoveryRes[ ] = {
@@ -4296,7 +4310,7 @@
     return status;
 } /* End dot11fUnpackIeP2PWSCProvisionDiscoveryRes. */
 
-#define SigIeP2PWSCProvisionDiscoveryRes ( 0x0061 )
+#define SigIeP2PWSCProvisionDiscoveryRes ( 0x0062 )
 
 
 tANI_U32 dot11fUnpackIePTIControl(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEPTIControl *pDst)
@@ -4313,7 +4327,7 @@
     return status;
 } /* End dot11fUnpackIePTIControl. */
 
-#define SigIePTIControl ( 0x0062 )
+#define SigIePTIControl ( 0x0063 )
 
 
 tANI_U32 dot11fUnpackIePUBufferStatus(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEPUBufferStatus *pDst)
@@ -4333,7 +4347,7 @@
     return status;
 } /* End dot11fUnpackIePUBufferStatus. */
 
-#define SigIePUBufferStatus ( 0x0063 )
+#define SigIePUBufferStatus ( 0x0064 )
 
 
 tANI_U32 dot11fUnpackIePowerCaps(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEPowerCaps *pDst)
@@ -4350,7 +4364,7 @@
     return status;
 } /* End dot11fUnpackIePowerCaps. */
 
-#define SigIePowerCaps ( 0x0064 )
+#define SigIePowerCaps ( 0x0065 )
 
 
 tANI_U32 dot11fUnpackIePowerConstraints(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEPowerConstraints *pDst)
@@ -4364,7 +4378,7 @@
     return status;
 } /* End dot11fUnpackIePowerConstraints. */
 
-#define SigIePowerConstraints ( 0x0065 )
+#define SigIePowerConstraints ( 0x0066 )
 
 
 tANI_U32 dot11fUnpackIeQBSSLoad(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEQBSSLoad *pDst)
@@ -4384,7 +4398,7 @@
     return status;
 } /* End dot11fUnpackIeQBSSLoad. */
 
-#define SigIeQBSSLoad ( 0x0066 )
+#define SigIeQBSSLoad ( 0x0067 )
 
 
 tANI_U32 dot11fUnpackIeQOSCapsAp(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEQOSCapsAp *pDst)
@@ -4404,7 +4418,7 @@
     return status;
 } /* End dot11fUnpackIeQOSCapsAp. */
 
-#define SigIeQOSCapsAp ( 0x0067 )
+#define SigIeQOSCapsAp ( 0x0068 )
 
 
 tANI_U32 dot11fUnpackIeQOSCapsStation(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEQOSCapsStation *pDst)
@@ -4426,7 +4440,7 @@
     return status;
 } /* End dot11fUnpackIeQOSCapsStation. */
 
-#define SigIeQOSCapsStation ( 0x0068 )
+#define SigIeQOSCapsStation ( 0x0069 )
 
 
 tANI_U32 dot11fUnpackIeQuiet(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEQuiet *pDst)
@@ -4449,7 +4463,7 @@
     return status;
 } /* End dot11fUnpackIeQuiet. */
 
-#define SigIeQuiet ( 0x0069 )
+#define SigIeQuiet ( 0x006a )
 
 
 tANI_U32 dot11fUnpackIeRCPIIE(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIERCPIIE *pDst)
@@ -4463,7 +4477,7 @@
     return status;
 } /* End dot11fUnpackIeRCPIIE. */
 
-#define SigIeRCPIIE ( 0x006a )
+#define SigIeRCPIIE ( 0x006b )
 
 
     static const tFFDefn FFS_RICDataDesc[ ] = {
@@ -4503,7 +4517,7 @@
     return status;
 } /* End dot11fUnpackIeRICDataDesc. */
 
-#define SigIeRICDataDesc ( 0x006b )
+#define SigIeRICDataDesc ( 0x006c )
 
 
 tANI_U32 dot11fUnpackIeRSN(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIERSN *pDst)
@@ -4606,7 +4620,7 @@
     return status;
 } /* End dot11fUnpackIeRSN. */
 
-#define SigIeRSN ( 0x006c )
+#define SigIeRSN ( 0x006d )
 
 
 tANI_U32 dot11fUnpackIeRSNIIE(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIERSNIIE *pDst)
@@ -4620,7 +4634,7 @@
     return status;
 } /* End dot11fUnpackIeRSNIIE. */
 
-#define SigIeRSNIIE ( 0x006d )
+#define SigIeRSNIIE ( 0x006e )
 
 
 tANI_U32 dot11fUnpackIeRSNOpaque(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIERSNOpaque *pDst)
@@ -4640,7 +4654,7 @@
     return status;
 } /* End dot11fUnpackIeRSNOpaque. */
 
-#define SigIeRSNOpaque ( 0x006e )
+#define SigIeRSNOpaque ( 0x006f )
 
 
 tANI_U32 dot11fUnpackIeSuppChannels(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIESuppChannels *pDst)
@@ -4660,7 +4674,7 @@
     return status;
 } /* End dot11fUnpackIeSuppChannels. */
 
-#define SigIeSuppChannels ( 0x006f )
+#define SigIeSuppChannels ( 0x0070 )
 
 
 tANI_U32 dot11fUnpackIeSuppRates(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIESuppRates *pDst)
@@ -4688,7 +4702,7 @@
     return status;
 } /* End dot11fUnpackIeSuppRates. */
 
-#define SigIeSuppRates ( 0x0070 )
+#define SigIeSuppRates ( 0x0071 )
 
 
 tANI_U32 dot11fUnpackIeTIM(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIETIM *pDst)
@@ -4717,7 +4731,7 @@
     return status;
 } /* End dot11fUnpackIeTIM. */
 
-#define SigIeTIM ( 0x0071 )
+#define SigIeTIM ( 0x0072 )
 
 
 tANI_U32 dot11fUnpackIeTPCReport(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIETPCReport *pDst)
@@ -4734,7 +4748,7 @@
     return status;
 } /* End dot11fUnpackIeTPCReport. */
 
-#define SigIeTPCReport ( 0x0072 )
+#define SigIeTPCReport ( 0x0073 )
 
 
 tANI_U32 dot11fUnpackIeTPCRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIETPCRequest *pDst)
@@ -4747,7 +4761,7 @@
     return status;
 } /* End dot11fUnpackIeTPCRequest. */
 
-#define SigIeTPCRequest ( 0x0073 )
+#define SigIeTPCRequest ( 0x0074 )
 
 
 tANI_U32 dot11fUnpackIeVHTCaps(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEVHTCaps *pDst)
@@ -4800,7 +4814,7 @@
     return status;
 } /* End dot11fUnpackIeVHTCaps. */
 
-#define SigIeVHTCaps ( 0x0074 )
+#define SigIeVHTCaps ( 0x0075 )
 
 
 tANI_U32 dot11fUnpackIeVHTExtBssLoad(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEVHTExtBssLoad *pDst)
@@ -4826,7 +4840,7 @@
     return status;
 } /* End dot11fUnpackIeVHTExtBssLoad. */
 
-#define SigIeVHTExtBssLoad ( 0x0075 )
+#define SigIeVHTExtBssLoad ( 0x0076 )
 
 
 tANI_U32 dot11fUnpackIeVHTOperation(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEVHTOperation *pDst)
@@ -4849,7 +4863,7 @@
     return status;
 } /* End dot11fUnpackIeVHTOperation. */
 
-#define SigIeVHTOperation ( 0x0076 )
+#define SigIeVHTOperation ( 0x0077 )
 
 
 tANI_U32 dot11fUnpackIeWAPI(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWAPI *pDst)
@@ -4918,7 +4932,7 @@
     return status;
 } /* End dot11fUnpackIeWAPI. */
 
-#define SigIeWAPI ( 0x0077 )
+#define SigIeWAPI ( 0x0078 )
 
 
 tANI_U32 dot11fUnpackIeWAPIOpaque(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWAPIOpaque *pDst)
@@ -4938,7 +4952,7 @@
     return status;
 } /* End dot11fUnpackIeWAPIOpaque. */
 
-#define SigIeWAPIOpaque ( 0x0078 )
+#define SigIeWAPIOpaque ( 0x0079 )
 
 
 tANI_U32 dot11fUnpackIeWFATPC(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWFATPC *pDst)
@@ -4955,7 +4969,7 @@
     return status;
 } /* End dot11fUnpackIeWFATPC. */
 
-#define SigIeWFATPC ( 0x0079 )
+#define SigIeWFATPC ( 0x007a )
 
 
 tANI_U32 dot11fUnpackIeWFDIEOpaque(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWFDIEOpaque *pDst)
@@ -4975,7 +4989,7 @@
     return status;
 } /* End dot11fUnpackIeWFDIEOpaque. */
 
-#define SigIeWFDIEOpaque ( 0x007a )
+#define SigIeWFDIEOpaque ( 0x007b )
 
 
 tANI_U32 dot11fUnpackIeWMMCaps(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWMMCaps *pDst)
@@ -5003,7 +5017,7 @@
     return status;
 } /* End dot11fUnpackIeWMMCaps. */
 
-#define SigIeWMMCaps ( 0x007b )
+#define SigIeWMMCaps ( 0x007c )
 
 
 tANI_U32 dot11fUnpackIeWMMInfoAp(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWMMInfoAp *pDst)
@@ -5024,7 +5038,7 @@
     return status;
 } /* End dot11fUnpackIeWMMInfoAp. */
 
-#define SigIeWMMInfoAp ( 0x007c )
+#define SigIeWMMInfoAp ( 0x007d )
 
 
 tANI_U32 dot11fUnpackIeWMMInfoStation(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWMMInfoStation *pDst)
@@ -5049,7 +5063,7 @@
     return status;
 } /* End dot11fUnpackIeWMMInfoStation. */
 
-#define SigIeWMMInfoStation ( 0x007d )
+#define SigIeWMMInfoStation ( 0x007e )
 
 
 tANI_U32 dot11fUnpackIeWMMParams(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWMMParams *pDst)
@@ -5142,7 +5156,7 @@
     return status;
 } /* End dot11fUnpackIeWMMParams. */
 
-#define SigIeWMMParams ( 0x007e )
+#define SigIeWMMParams ( 0x007f )
 
 
 tANI_U32 dot11fUnpackIeWPA(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWPA *pDst)
@@ -5224,7 +5238,7 @@
     return status;
 } /* End dot11fUnpackIeWPA. */
 
-#define SigIeWPA ( 0x007f )
+#define SigIeWPA ( 0x0080 )
 
 
 tANI_U32 dot11fUnpackIeWPAOpaque(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWPAOpaque *pDst)
@@ -5244,7 +5258,7 @@
     return status;
 } /* End dot11fUnpackIeWPAOpaque. */
 
-#define SigIeWPAOpaque ( 0x0080 )
+#define SigIeWPAOpaque ( 0x0081 )
 
 
     static const tTLVDefn TLVS_WSC[ ] = {
@@ -5282,7 +5296,7 @@
     return status;
 } /* End dot11fUnpackIeWSC. */
 
-#define SigIeWSC ( 0x0081 )
+#define SigIeWSC ( 0x0082 )
 
 
 tANI_U32 dot11fUnpackIeWiderBWChanSwitchAnn(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWiderBWChanSwitchAnn *pDst)
@@ -5302,7 +5316,7 @@
     return status;
 } /* End dot11fUnpackIeWiderBWChanSwitchAnn. */
 
-#define SigIeWiderBWChanSwitchAnn ( 0x0082 )
+#define SigIeWiderBWChanSwitchAnn ( 0x0083 )
 
 
     static const tTLVDefn TLVS_WscAssocReq[ ] = {
@@ -5321,7 +5335,7 @@
     return status;
 } /* End dot11fUnpackIeWscAssocReq. */
 
-#define SigIeWscAssocReq ( 0x0083 )
+#define SigIeWscAssocReq ( 0x0084 )
 
 
     static const tTLVDefn TLVS_WscAssocRes[ ] = {
@@ -5340,7 +5354,7 @@
     return status;
 } /* End dot11fUnpackIeWscAssocRes. */
 
-#define SigIeWscAssocRes ( 0x0084 )
+#define SigIeWscAssocRes ( 0x0085 )
 
 
     static const tTLVDefn TLVS_WscBeacon[ ] = {
@@ -5365,7 +5379,7 @@
     return status;
 } /* End dot11fUnpackIeWscBeacon. */
 
-#define SigIeWscBeacon ( 0x0085 )
+#define SigIeWscBeacon ( 0x0086 )
 
 
     static const tTLVDefn TLVS_WscBeaconProbeRes[ ] = {
@@ -5398,7 +5412,7 @@
     return status;
 } /* End dot11fUnpackIeWscBeaconProbeRes. */
 
-#define SigIeWscBeaconProbeRes ( 0x0086 )
+#define SigIeWscBeaconProbeRes ( 0x0087 )
 
 
 tANI_U32 dot11fUnpackIeWscIEOpaque(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWscIEOpaque *pDst)
@@ -5418,7 +5432,7 @@
     return status;
 } /* End dot11fUnpackIeWscIEOpaque. */
 
-#define SigIeWscIEOpaque ( 0x0087 )
+#define SigIeWscIEOpaque ( 0x0088 )
 
 
     static const tTLVDefn TLVS_WscProbeReq[ ] = {
@@ -5449,7 +5463,7 @@
     return status;
 } /* End dot11fUnpackIeWscProbeReq. */
 
-#define SigIeWscProbeReq ( 0x0088 )
+#define SigIeWscProbeReq ( 0x0089 )
 
 
     static const tTLVDefn TLVS_WscProbeRes[ ] = {
@@ -5482,7 +5496,7 @@
     return status;
 } /* End dot11fUnpackIeWscProbeRes. */
 
-#define SigIeWscProbeRes ( 0x0089 )
+#define SigIeWscProbeRes ( 0x008a )
 
 
     static const tTLVDefn TLVS_WscReassocRes[ ] = {
@@ -5501,7 +5515,7 @@
     return status;
 } /* End dot11fUnpackIeWscReassocRes. */
 
-#define SigIeWscReassocRes ( 0x008a )
+#define SigIeWscReassocRes ( 0x008b )
 
 
     static const tFFDefn FFS_AddBAReq[] = {
@@ -8413,6 +8427,7 @@
         {offsetof(tDot11fBeacon, ExtCap), offsetof(tDot11fIEExtCap, present), 0, "ExtCap" , 0, 10, 10, SigIeExtCap, {0, 0, 0, 0, 0}, 0, DOT11F_EID_EXTCAP, 0, },
         {offsetof(tDot11fBeacon, OperatingMode), offsetof(tDot11fIEOperatingMode, present), 0, "OperatingMode" , 0, 3, 3, SigIeOperatingMode, {0, 0, 0, 0, 0}, 0, DOT11F_EID_OPERATINGMODE, 0, },
         {offsetof(tDot11fBeacon, WiderBWChanSwitchAnn), offsetof(tDot11fIEWiderBWChanSwitchAnn, present), 0, "WiderBWChanSwitchAnn" , 0, 5, 5, SigIeWiderBWChanSwitchAnn, {0, 0, 0, 0, 0}, 0, DOT11F_EID_WIDERBWCHANSWITCHANN, 0, },
+        {offsetof(tDot11fBeacon, OxygenNetwork), offsetof(tDot11fIEOxygenNetwork, present), 0, "OxygenNetwork" , 0, 7, 7, SigIeOxygenNetwork, {0, 22, 50, 0, 0}, 3, DOT11F_EID_OXYGENNETWORK, 0, },
     {0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },    };
 
 tANI_U32 dot11fUnpackBeacon(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fBeacon *pFrm)
@@ -9497,6 +9512,15 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* )&pFrm->WiderBWChanSwitchAnn.newCenterChanFreq0, 1);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* )&pFrm->WiderBWChanSwitchAnn.newCenterChanFreq1, 1);
         }
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("OxygenNetwork:\n"));
+        if (!pFrm->OxygenNetwork.present)
+        {
+            FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("Not present.\n"));
+        }
+        else
+        {
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* )&pFrm->OxygenNetwork.data, 2);
+        }
     }
 #   endif // DOT11F_DUMP_FRAMES
     return status;
@@ -9632,6 +9656,7 @@
         {offsetof(tDot11fBeacon2, ExtCap), offsetof(tDot11fIEExtCap, present), 0, "ExtCap" , 0, 10, 10, SigIeExtCap, {0, 0, 0, 0, 0}, 0, DOT11F_EID_EXTCAP, 0, },
         {offsetof(tDot11fBeacon2, OperatingMode), offsetof(tDot11fIEOperatingMode, present), 0, "OperatingMode" , 0, 3, 3, SigIeOperatingMode, {0, 0, 0, 0, 0}, 0, DOT11F_EID_OPERATINGMODE, 0, },
         {offsetof(tDot11fBeacon2, WiderBWChanSwitchAnn), offsetof(tDot11fIEWiderBWChanSwitchAnn, present), 0, "WiderBWChanSwitchAnn" , 0, 5, 5, SigIeWiderBWChanSwitchAnn, {0, 0, 0, 0, 0}, 0, DOT11F_EID_WIDERBWCHANSWITCHANN, 0, },
+        {offsetof(tDot11fBeacon2, OxygenNetwork), offsetof(tDot11fIEOxygenNetwork, present), 0, "OxygenNetwork" , 0, 7, 7, SigIeOxygenNetwork, {0, 22, 50, 0, 0}, 3, DOT11F_EID_OXYGENNETWORK, 0, },
     {0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },    };
 
 tANI_U32 dot11fUnpackBeacon2(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fBeacon2 *pFrm)
@@ -10564,6 +10589,15 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* )&pFrm->WiderBWChanSwitchAnn.newCenterChanFreq0, 1);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* )&pFrm->WiderBWChanSwitchAnn.newCenterChanFreq1, 1);
         }
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("OxygenNetwork:\n"));
+        if (!pFrm->OxygenNetwork.present)
+        {
+            FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("Not present.\n"));
+        }
+        else
+        {
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* )&pFrm->OxygenNetwork.data, 2);
+        }
     }
 #   endif // DOT11F_DUMP_FRAMES
     return status;
@@ -10619,6 +10653,7 @@
         {offsetof(tDot11fBeaconIEs, ExtCap), offsetof(tDot11fIEExtCap, present), 0, "ExtCap" , 0, 10, 10, SigIeExtCap, {0, 0, 0, 0, 0}, 0, DOT11F_EID_EXTCAP, 0, },
         {offsetof(tDot11fBeaconIEs, OperatingMode), offsetof(tDot11fIEOperatingMode, present), 0, "OperatingMode" , 0, 3, 3, SigIeOperatingMode, {0, 0, 0, 0, 0}, 0, DOT11F_EID_OPERATINGMODE, 0, },
         {offsetof(tDot11fBeaconIEs, WiderBWChanSwitchAnn), offsetof(tDot11fIEWiderBWChanSwitchAnn, present), 0, "WiderBWChanSwitchAnn" , 0, 5, 5, SigIeWiderBWChanSwitchAnn, {0, 0, 0, 0, 0}, 0, DOT11F_EID_WIDERBWCHANSWITCHANN, 0, },
+        {offsetof(tDot11fBeaconIEs, OxygenNetwork), offsetof(tDot11fIEOxygenNetwork, present), 0, "OxygenNetwork" , 0, 7, 7, SigIeOxygenNetwork, {0, 22, 50, 0, 0}, 3, DOT11F_EID_OXYGENNETWORK, 0, },
     {0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },    };
 
 tANI_U32 dot11fUnpackBeaconIEs(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fBeaconIEs *pFrm)
@@ -11811,6 +11846,15 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* )&pFrm->WiderBWChanSwitchAnn.newCenterChanFreq0, 1);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* )&pFrm->WiderBWChanSwitchAnn.newCenterChanFreq1, 1);
         }
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("OxygenNetwork:\n"));
+        if (!pFrm->OxygenNetwork.present)
+        {
+            FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("Not present.\n"));
+        }
+        else
+        {
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* )&pFrm->OxygenNetwork.data, 2);
+        }
     }
 #   endif // DOT11F_DUMP_FRAMES
     return status;
@@ -14084,6 +14128,7 @@
         {offsetof(tDot11fProbeResponse, VHTOperation), offsetof(tDot11fIEVHTOperation, present), 0, "VHTOperation" , 0, 7, 7, SigIeVHTOperation, {0, 0, 0, 0, 0}, 0, DOT11F_EID_VHTOPERATION, 0, },
         {offsetof(tDot11fProbeResponse, VHTExtBssLoad), offsetof(tDot11fIEVHTExtBssLoad, present), 0, "VHTExtBssLoad" , 0, 7, 7, SigIeVHTExtBssLoad, {0, 0, 0, 0, 0}, 0, DOT11F_EID_VHTEXTBSSLOAD, 0, },
         {offsetof(tDot11fProbeResponse, ExtCap), offsetof(tDot11fIEExtCap, present), 0, "ExtCap" , 0, 10, 10, SigIeExtCap, {0, 0, 0, 0, 0}, 0, DOT11F_EID_EXTCAP, 0, },
+        {offsetof(tDot11fProbeResponse, OxygenNetwork), offsetof(tDot11fIEOxygenNetwork, present), 0, "OxygenNetwork" , 0, 7, 7, SigIeOxygenNetwork, {0, 22, 50, 0, 0}, 3, DOT11F_EID_OXYGENNETWORK, 0, },
     {0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },    };
 
 tANI_U32 dot11fUnpackProbeResponse(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, tDot11fProbeResponse *pFrm)
@@ -15222,6 +15267,15 @@
             FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("operModeNotification (1): %d\n"), pFrm->ExtCap.operModeNotification);
             FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("reserved7 (1): %d\n"), pFrm->ExtCap.reserved7);
         }
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("OxygenNetwork:\n"));
+        if (!pFrm->OxygenNetwork.present)
+        {
+            FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("Not present.\n"));
+        }
+        else
+        {
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* )&pFrm->OxygenNetwork.data, 2);
+        }
     }
 #   endif // DOT11F_DUMP_FRAMES
     return status;
@@ -20381,6 +20435,9 @@
                 case SigIeOperatingMode:
                         status |= dot11fUnpackIeOperatingMode(pCtx, pBufRemaining, len, ( tDot11fIEOperatingMode* )(pFrm + pIe->offset + sizeof(tDot11fIEOperatingMode)*countOffset) );
                             break;
+                case SigIeOxygenNetwork:
+                        status |= dot11fUnpackIeOxygenNetwork(pCtx, pBufRemaining, len, ( tDot11fIEOxygenNetwork* )(pFrm + pIe->offset + sizeof(tDot11fIEOxygenNetwork)*countOffset) );
+                            break;
                 case SigIeP2PAssocReq:
                         status |= dot11fUnpackIeP2PAssocReq(pCtx, pBufRemaining, len, ( tDot11fIEP2PAssocReq* )(pFrm + pIe->offset + sizeof(tDot11fIEP2PAssocReq)*countOffset) );
                             break;
@@ -22551,6 +22608,11 @@
                             byteCount = 1;
                             pIePresent = ( (tDot11fIEOperatingMode* )(pFrm + pIe->offset + offset * i  ))->present;
                             break;
+                case SigIeOxygenNetwork:
+                            offset = sizeof(tDot11fIEOxygenNetwork);
+                            byteCount = 2;
+                            pIePresent = ( (tDot11fIEOxygenNetwork* )(pFrm + pIe->offset + offset * i  ))->present;
+                            break;
                 case SigIeP2PAssocReq:
                             offset = sizeof(tDot11fIEP2PAssocReq);
                             status |= dot11fGetPackedIEP2PAssocReq(pCtx, ( tDot11fIEP2PAssocReq* )(pFrm + pIe->offset + offset * i ), pnNeeded);
@@ -24815,7 +24877,7 @@
         ++pBuf; ++(*pnConsumed);
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->name ), pSrc->num_name);
         *pnConsumed += pSrc->num_name;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -24848,7 +24910,7 @@
         pBuf += 1;
         *pBuf = pSrc->type;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -24878,7 +24940,7 @@
         ++pBuf; ++(*pnConsumed);
         DOT11F_MEMCPY(pCtx, pBuf, pSrc->countryStr, 2);
         *pnConsumed += 2;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -24922,7 +24984,7 @@
         pBuf += 8;
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->key ), pSrc->num_key);
         *pnConsumed += pSrc->num_key;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -24952,7 +25014,7 @@
         ++pBuf; ++(*pnConsumed);
         *pBuf = pSrc->enabled;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25054,7 +25116,7 @@
         pBuf += 6;
         *pBuf = pSrc->channel;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25087,7 +25149,7 @@
         pBuf += 2;
         frameshtons(pCtx, pBuf, pSrc->channel_util, 1);
         *pnConsumed += 2;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25117,7 +25179,7 @@
         ++pBuf; ++(*pnConsumed);
         *pBuf = pSrc->type;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25147,7 +25209,7 @@
         ++pBuf; ++(*pnConsumed);
         frameshtons(pCtx, pBuf, pSrc->capability, 0);
         *pnConsumed += 2;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25186,7 +25248,7 @@
         pBuf += 1;
         *pBuf = pSrc->channel_switch_count;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25303,7 +25365,7 @@
         nBuf -=  1 ;
         frameshtons(pCtx, pBuf, pSrc->acvo_txoplimit, 0);
         *pnConsumed += 2;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25342,7 +25404,7 @@
         pBuf += 2;
         frameshtons(pCtx, pBuf, pSrc->quiet_offset, 0);
         *pnConsumed += 2;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25372,7 +25434,7 @@
         ++pBuf; ++(*pnConsumed);
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->rates ), pSrc->num_rates);
         *pnConsumed += pSrc->num_rates;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25402,7 +25464,7 @@
         ++pBuf; ++(*pnConsumed);
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->PMK_R0_ID ), pSrc->num_PMK_R0_ID);
         *pnConsumed += pSrc->num_PMK_R0_ID;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25432,7 +25494,7 @@
         ++pBuf; ++(*pnConsumed);
         DOT11F_MEMCPY(pCtx, pBuf, pSrc->PMK_R1_ID, 6);
         *pnConsumed += 6;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25465,7 +25527,7 @@
         pBuf += 2;
         frameshtons(pCtx, pBuf, pSrc->BeaconIntvl, 0);
         *pnConsumed += 2;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25505,7 +25567,7 @@
         tmp98__ |= ( pSrc->rsvd << 12 );
         frameshtons(pCtx, pBuf, tmp98__, 0);
         *pnConsumed += 2;
-        // fieldsEndFlag  = 1 
+        // fieldsEndFlag  = 1
         nBuf -=  2 ;
         break;
     }
@@ -25545,7 +25607,7 @@
         pBuf += 1;
         *pBuf = pSrc->rev_fcs_state;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25575,7 +25637,7 @@
         ++pBuf; ++(*pnConsumed);
         *pBuf = pSrc->enable;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25611,7 +25673,7 @@
         pBuf += 1;
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->build_version ), pSrc->num_build_version);
         *pnConsumed += pSrc->num_build_version;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25641,7 +25703,7 @@
         ++pBuf; ++(*pnConsumed);
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->wdsData ), pSrc->num_wdsData);
         *pnConsumed += pSrc->num_wdsData;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25674,7 +25736,7 @@
         pBuf += 1;
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->channelList ), pSrc->num_channelList);
         *pnConsumed += pSrc->num_channelList;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25704,7 +25766,7 @@
         ++pBuf; ++(*pnConsumed);
         *pBuf = pSrc->reportingDetail;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25734,7 +25796,7 @@
         ++pBuf; ++(*pnConsumed);
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->reportedFields ), pSrc->num_reportedFields);
         *pnConsumed += pSrc->num_reportedFields;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25767,7 +25829,7 @@
         pBuf += 1;
         *pBuf = pSrc->threshold;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25800,7 +25862,7 @@
         pBuf += 1;
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->vendorSpecific ), pSrc->num_vendorSpecific);
         *pnConsumed += pSrc->num_vendorSpecific;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25833,7 +25895,7 @@
         pBuf += 1;
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->vendorSpecific ), pSrc->num_vendorSpecific);
         *pnConsumed += pSrc->num_vendorSpecific;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25869,7 +25931,7 @@
         pBuf += 1;
         frameshtons(pCtx, pBuf, pSrc->statusCode, 0);
         *pnConsumed += 2;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25902,7 +25964,7 @@
         pBuf += 1;
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->variableData ), pSrc->num_variableData);
         *pnConsumed += pSrc->num_variableData;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -25987,7 +26049,7 @@
         tmp103__ |= ( pSrc->reserved << 2 );
         *pBuf = tmp103__;
         *pnConsumed += 1;
-        // fieldsEndFlag  = 1 
+        // fieldsEndFlag  = 1
         nBuf -=  1 ;
         break;
     }
@@ -26018,7 +26080,7 @@
         ++pBuf; ++(*pnConsumed);
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->requested_eids ), pSrc->num_requested_eids);
         *pnConsumed += pSrc->num_requested_eids;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -26048,7 +26110,7 @@
         ++pBuf; ++(*pnConsumed);
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->ssid ), pSrc->num_ssid);
         *pnConsumed += pSrc->num_ssid;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -26097,7 +26159,7 @@
         pBuf += 2;
         frameshtons(pCtx, pBuf, pSrc->spec_interval, 0);
         *pnConsumed += 2;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -26147,7 +26209,7 @@
                 pBuf += 6;
                 frameshtons(pCtx, pBuf, pSrc->info.EthParams.type, 0);
                 *pnConsumed += 2;
-                // fieldsEndFlag = 1 
+                // fieldsEndFlag = 1
             break;
             case 1:
                 *pBuf = pSrc->info.IpParams.version;
@@ -26176,7 +26238,7 @@
                         pBuf += 1;
                         *pBuf = pSrc->info.IpParams.params.IpV4Params.reserved;
                         *pnConsumed += 1;
-                        // fieldsEndFlag = 1 
+                        // fieldsEndFlag = 1
                     break;
                     case 6:
                         DOT11F_MEMCPY(pCtx, pBuf, pSrc->info.IpParams.params.IpV6Params.source, 16);
@@ -26193,14 +26255,14 @@
                         pBuf += 2;
                         DOT11F_MEMCPY(pCtx, pBuf, pSrc->info.IpParams.params.IpV6Params.flow_label, 3);
                         *pnConsumed += 3;
-                        // fieldsEndFlag = 1 
+                        // fieldsEndFlag = 1
                     break;
                 }
             break;
             case 2:
                 frameshtons(pCtx, pBuf, pSrc->info.Params8021dq.tag_type, 0);
                 *pnConsumed += 2;
-                // fieldsEndFlag = 1 
+                // fieldsEndFlag = 1
             break;
         }
         break;
@@ -26232,7 +26294,7 @@
         ++pBuf; ++(*pnConsumed);
         *pBuf = pSrc->processing;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -26262,7 +26324,7 @@
         ++pBuf; ++(*pnConsumed);
         frameshtonl(pCtx, pBuf, pSrc->delay, 0);
         *pnConsumed += 4;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -26361,7 +26423,7 @@
         pBuf += 2;
         frameshtons(pCtx, pBuf, pSrc->medium_time, 0);
         *pnConsumed += 2;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -26423,7 +26485,7 @@
         pBuf += 2;
         frameshtons(pCtx, pBuf, pSrc->spec_interval, 0);
         *pnConsumed += 2;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -26486,7 +26548,7 @@
                 pBuf += 6;
                 frameshtons(pCtx, pBuf, pSrc->info.EthParams.type, 0);
                 *pnConsumed += 2;
-                // fieldsEndFlag = 1 
+                // fieldsEndFlag = 1
             break;
             case 1:
                 *pBuf = pSrc->info.IpParams.version;
@@ -26515,7 +26577,7 @@
                         pBuf += 1;
                         *pBuf = pSrc->info.IpParams.params.IpV4Params.reserved;
                         *pnConsumed += 1;
-                        // fieldsEndFlag = 1 
+                        // fieldsEndFlag = 1
                     break;
                     case 6:
                         DOT11F_MEMCPY(pCtx, pBuf, pSrc->info.IpParams.params.IpV6Params.source, 10);
@@ -26532,14 +26594,14 @@
                         pBuf += 2;
                         DOT11F_MEMCPY(pCtx, pBuf, pSrc->info.IpParams.params.IpV6Params.flow_label, 3);
                         *pnConsumed += 3;
-                        // fieldsEndFlag = 1 
+                        // fieldsEndFlag = 1
                     break;
                 }
             break;
             case 2:
                 frameshtons(pCtx, pBuf, pSrc->info.Params8021dq.tag_type, 0);
                 *pnConsumed += 2;
-                // fieldsEndFlag = 1 
+                // fieldsEndFlag = 1
             break;
         }
         break;
@@ -26584,7 +26646,7 @@
         pBuf += 1;
         *pBuf = pSrc->processing;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -26627,7 +26689,7 @@
         pBuf += 1;
         frameshtonl(pCtx, pBuf, pSrc->delay, 0);
         *pnConsumed += 4;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -26739,7 +26801,7 @@
         pBuf += 2;
         frameshtons(pCtx, pBuf, pSrc->medium_time, 0);
         *pnConsumed += 2;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -26849,7 +26911,7 @@
         ++pBuf; ++(*pnConsumed);
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->data ), pSrc->num_data);
         *pnConsumed += pSrc->num_data;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -26894,7 +26956,7 @@
         tmp112__ |= ( pSrc->reserved << 3 );
         *pBuf = tmp112__;
         *pnConsumed += 1;
-        // fieldsEndFlag  = 1 
+        // fieldsEndFlag  = 1
         nBuf -=  1 ;
         break;
     }
@@ -26939,7 +27001,7 @@
         pBuf += 1;
         frameshtons(pCtx, pBuf, pSrc->msmt_interval, 0);
         *pnConsumed += 2;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -26980,7 +27042,7 @@
         pBuf += 1;
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->tsrates ), pSrc->num_tsrates);
         *pnConsumed += pSrc->num_tsrates;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -27021,7 +27083,7 @@
         pBuf += 1;
         *pBuf = pSrc->reserved;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -27059,7 +27121,7 @@
         ++pBuf; ++(*pnConsumed);
         *pBuf = pSrc->version;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -27098,7 +27160,7 @@
         pBuf += 2;
         frameshtons(pCtx, pBuf, pSrc->cfp_durremaining, 0);
         *pnConsumed += 2;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -27128,7 +27190,7 @@
         ++pBuf; ++(*pnConsumed);
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->text ), pSrc->num_text);
         *pnConsumed += pSrc->num_text;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -27164,7 +27226,7 @@
         pBuf += 1;
         *pBuf = pSrc->switchCount;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -27200,7 +27262,7 @@
         if ( pSrc->num_triplets )        {
             DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->triplets ), ( pSrc->num_triplets * 3 ));
             *pnConsumed += ( pSrc->num_triplets * 3 );
-            // fieldsEndFlag = 1 
+            // fieldsEndFlag = 1
         }
         else break;
         break;
@@ -27232,7 +27294,7 @@
         ++pBuf; ++(*pnConsumed);
         *pBuf = pSrc->curr_channel;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -27349,7 +27411,7 @@
         nBuf -=  1 ;
         frameshtons(pCtx, pBuf, pSrc->acvo_txoplimit, 0);
         *pnConsumed += 2;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -27385,7 +27447,7 @@
         tmp121__ |= ( pSrc->unused << 3 );
         *pBuf = tmp121__;
         *pnConsumed += 1;
-        // fieldsEndFlag  = 1 
+        // fieldsEndFlag  = 1
         nBuf -=  1 ;
         break;
     }
@@ -27481,7 +27543,7 @@
         tmp124__ |= ( pSrc->reserved7 << 15 );
         frameshtons(pCtx, pBuf, tmp124__, 0);
         *pnConsumed += 2;
-        // fieldsEndFlag  = 1 
+        // fieldsEndFlag  = 1
         nBuf -=  2 ;
         break;
     }
@@ -27512,7 +27574,7 @@
         ++pBuf; ++(*pnConsumed);
         *pBuf = pSrc->secondaryChannelOffset;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -27542,7 +27604,7 @@
         ++pBuf; ++(*pnConsumed);
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->rates ), pSrc->num_rates);
         *pnConsumed += pSrc->num_rates;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -27581,7 +27643,7 @@
         pBuf += 1;
         *pBuf = pSrc->hop_index;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -27614,7 +27676,7 @@
         pBuf += 1;
         *pBuf = pSrc->nchannels;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -27656,7 +27718,7 @@
         pBuf += 1;
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->randtable ), pSrc->num_randtable);
         *pnConsumed += pSrc->num_randtable;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -27742,7 +27804,7 @@
         pBuf += 1;
         frameshtonl(pCtx, pBuf, pSrc->timeoutValue, 0);
         *pnConsumed += 4;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -27851,7 +27913,7 @@
         nBuf -=  1 ;
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->rsvd ), pSrc->num_rsvd);
         *pnConsumed += pSrc->num_rsvd;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -27922,7 +27984,7 @@
         pBuf += 16;
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->rsvd ), pSrc->num_rsvd);
         *pnConsumed += pSrc->num_rsvd;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -27952,7 +28014,7 @@
         ++pBuf; ++(*pnConsumed);
         frameshtons(pCtx, pBuf, pSrc->atim, 0);
         *pnConsumed += 2;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -27988,7 +28050,7 @@
         pBuf += 6;
         DOT11F_MEMCPY(pCtx, pBuf, pSrc->RespStaAddr, 6);
         *pnConsumed += 6;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -28058,7 +28120,7 @@
                     tmp135__ |= ( pSrc->report.Basic.unused << 5 );
                     *pBuf = tmp135__;
                     *pnConsumed += 1;
-                    // fieldsEndFlag  = 1 
+                    // fieldsEndFlag  = 1
                     nBuf -=  1 ;
                 break;
                 case 1:
@@ -28073,7 +28135,7 @@
                     pBuf += 2;
                     *pBuf = pSrc->report.CCA.cca_busy_fraction;
                     *pnConsumed += 1;
-                    // fieldsEndFlag = 1 
+                    // fieldsEndFlag = 1
                 break;
                 case 2:
                     *pBuf = pSrc->report.RPIHistogram.channel;
@@ -28108,7 +28170,7 @@
                     pBuf += 1;
                     *pBuf = pSrc->report.RPIHistogram.rpi7_density;
                     *pnConsumed += 1;
-                    // fieldsEndFlag = 1 
+                    // fieldsEndFlag = 1
                 break;
                 case 5:
                     *pBuf = pSrc->report.Beacon.regClass;
@@ -28214,7 +28276,7 @@
                 pBuf += 8;
                 frameshtons(pCtx, pBuf, pSrc->measurement_request.Basic.meas_duration, 0);
                 *pnConsumed += 2;
-                // fieldsEndFlag = 1 
+                // fieldsEndFlag = 1
             break;
             case 1:
                 *pBuf = pSrc->measurement_request.CCA.channel_no;
@@ -28225,7 +28287,7 @@
                 pBuf += 8;
                 frameshtons(pCtx, pBuf, pSrc->measurement_request.CCA.meas_duration, 0);
                 *pnConsumed += 2;
-                // fieldsEndFlag = 1 
+                // fieldsEndFlag = 1
             break;
             case 2:
                 *pBuf = pSrc->measurement_request.RPIHistogram.channel_no;
@@ -28236,7 +28298,7 @@
                 pBuf += 8;
                 frameshtons(pCtx, pBuf, pSrc->measurement_request.RPIHistogram.meas_duration, 0);
                 *pnConsumed += 2;
-                // fieldsEndFlag = 1 
+                // fieldsEndFlag = 1
             break;
             case 5:
                 *pBuf = pSrc->measurement_request.Beacon.regClass;
@@ -28303,7 +28365,7 @@
         tmp138__ |= ( pSrc->reserved << 2 );
         *pBuf = tmp138__;
         *pnConsumed += 1;
-        // fieldsEndFlag  = 1 
+        // fieldsEndFlag  = 1
         nBuf -=  1 ;
         break;
     }
@@ -28414,7 +28476,7 @@
         tmp141__ |= ( pSrc->rxNSSType << 7 );
         *pBuf = tmp141__;
         *pnConsumed += 1;
-        // fieldsEndFlag  = 1 
+        // fieldsEndFlag  = 1
         nBuf -=  1 ;
         break;
     }
@@ -28426,6 +28488,42 @@
     return DOT11F_PARSE_SUCCESS;
 } /* End dot11fPackIeOperatingMode. */
 
+tANI_U32 dot11fPackIeOxygenNetwork(tpAniSirGlobal pCtx,
+                                   tDot11fIEOxygenNetwork *pSrc,
+                                   tANI_U8 *pBuf,
+                                   tANI_U32 nBuf,
+                                   tANI_U32 *pnConsumed)
+{
+    tANI_U8* pIeLen = 0;
+    tANI_U32 nConsumedOnEntry = *pnConsumed;
+    tANI_U32 nNeeded = 0U;
+    nNeeded  += 2;
+    while ( pSrc->present )
+    {
+        if ( nNeeded > nBuf ) return DOT11F_BUFFER_OVERFLOW;
+        *pBuf = 221;
+        ++pBuf; ++(*pnConsumed);
+        pIeLen = pBuf;
+        ++pBuf; ++(*pnConsumed);
+        *pBuf = 0x0;
+        ++pBuf; ++(*pnConsumed);
+        *pBuf = 0x16;
+        ++pBuf; ++(*pnConsumed);
+        *pBuf = 0x32;
+        ++pBuf; ++(*pnConsumed);
+        frameshtons(pCtx, pBuf, pSrc->data, 0);
+        *pnConsumed += 2;
+        // fieldsEndFlag = 1
+        break;
+    }
+    (void)pCtx;
+    if (pIeLen)
+    {
+        *pIeLen = *pnConsumed - nConsumedOnEntry - 2;
+    }
+    return DOT11F_PARSE_SUCCESS;
+} /* End dot11fPackIeOxygenNetwork. */
+
 tANI_U32 dot11fPackIeP2PAssocReq(tpAniSirGlobal pCtx,
                                  tDot11fIEP2PAssocReq *pSrc,
                                  tANI_U8 *pBuf,
@@ -28969,7 +29067,7 @@
         ++pBuf; ++(*pnConsumed);
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->data ), pSrc->num_data);
         *pnConsumed += pSrc->num_data;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -29346,7 +29444,7 @@
         pBuf += 1;
         frameshtons(pCtx, pBuf, pSrc->sequence_control, 0);
         *pnConsumed += 2;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -29383,7 +29481,7 @@
         tmp142__ |= ( pSrc->reserved << 4 );
         *pBuf = tmp142__;
         *pnConsumed += 1;
-        // fieldsEndFlag  = 1 
+        // fieldsEndFlag  = 1
         nBuf -=  1 ;
         break;
     }
@@ -29417,7 +29515,7 @@
         pBuf += 1;
         *pBuf = pSrc->maxTxPower;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -29447,7 +29545,7 @@
         ++pBuf; ++(*pnConsumed);
         *pBuf = pSrc->localPowerConstraints;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -29483,7 +29581,7 @@
         pBuf += 1;
         frameshtons(pCtx, pBuf, pSrc->avail, 0);
         *pnConsumed += 2;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -29520,7 +29618,7 @@
         tmp143__ |= ( pSrc->reserved << 7 );
         *pBuf = tmp143__;
         *pnConsumed += 1;
-        // fieldsEndFlag  = 1 
+        // fieldsEndFlag  = 1
         nBuf -=  1 ;
         break;
     }
@@ -29560,7 +29658,7 @@
         tmp144__ |= ( pSrc->more_data_ack << 7 );
         *pBuf = tmp144__;
         *pnConsumed += 1;
-        // fieldsEndFlag  = 1 
+        // fieldsEndFlag  = 1
         nBuf -=  1 ;
         break;
     }
@@ -29600,7 +29698,7 @@
         pBuf += 2;
         frameshtons(pCtx, pBuf, pSrc->offset, 0);
         *pnConsumed += 2;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -29630,7 +29728,7 @@
         ++pBuf; ++(*pnConsumed);
         *pBuf = pSrc->rcpi;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -29760,7 +29858,7 @@
         ++pBuf; ++(*pnConsumed);
         *pBuf = pSrc->rsni;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -29790,7 +29888,7 @@
         ++pBuf; ++(*pnConsumed);
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->data ), pSrc->num_data);
         *pnConsumed += pSrc->num_data;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -29820,7 +29918,7 @@
         ++pBuf; ++(*pnConsumed);
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->bands ), ( pSrc->num_bands * 2 ));
         *pnConsumed += ( pSrc->num_bands * 2 );
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -29850,7 +29948,7 @@
         ++pBuf; ++(*pnConsumed);
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->rates ), pSrc->num_rates);
         *pnConsumed += pSrc->num_rates;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -29889,7 +29987,7 @@
         pBuf += 1;
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->vbmp ), pSrc->num_vbmp);
         *pnConsumed += pSrc->num_vbmp;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -29922,7 +30020,7 @@
         pBuf += 1;
         *pBuf = pSrc->link_margin;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -30023,7 +30121,7 @@
         tmp147__ |= ( pSrc->reserved3 << 13 );
         frameshtons(pCtx, pBuf, tmp147__, 0);
         *pnConsumed += 2;
-        // fieldsEndFlag  = 1 
+        // fieldsEndFlag  = 1
         nBuf -=  2 ;
         break;
     }
@@ -30066,7 +30164,7 @@
         pBuf += 1;
         *pBuf = pSrc->OneSixtyMHzUtil;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -30105,7 +30203,7 @@
         pBuf += 1;
         frameshtons(pCtx, pBuf, pSrc->basicMCSSet, 0);
         *pnConsumed += 2;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -30169,7 +30267,7 @@
         else break;
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->bkid ), ( pSrc->bkid_count * 16 ));
         *pnConsumed += ( pSrc->bkid_count * 16 );
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -30199,7 +30297,7 @@
         ++pBuf; ++(*pnConsumed);
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->data ), pSrc->num_data);
         *pnConsumed += pSrc->num_data;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -30242,7 +30340,7 @@
         pBuf += 1;
         *pBuf = pSrc->linkMargin;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -30280,7 +30378,7 @@
         ++pBuf; ++(*pnConsumed);
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->data ), pSrc->num_data);
         *pnConsumed += pSrc->num_data;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -30330,7 +30428,7 @@
         tmp149__ |= ( pSrc->more_ack << 7 );
         *pBuf = tmp149__;
         *pnConsumed += 1;
-        // fieldsEndFlag  = 1 
+        // fieldsEndFlag  = 1
         nBuf -=  1 ;
         break;
     }
@@ -30379,7 +30477,7 @@
         tmp150__ |= ( pSrc->uapsd << 7 );
         *pBuf = tmp150__;
         *pnConsumed += 1;
-        // fieldsEndFlag  = 1 
+        // fieldsEndFlag  = 1
         nBuf -=  1 ;
         break;
     }
@@ -30432,7 +30530,7 @@
         tmp151__ |= ( pSrc->reserved2 << 7 );
         *pBuf = tmp151__;
         *pnConsumed += 1;
-        // fieldsEndFlag  = 1 
+        // fieldsEndFlag  = 1
         nBuf -=  1 ;
         break;
     }
@@ -30563,7 +30661,7 @@
         nBuf -=  1 ;
         frameshtons(pCtx, pBuf, pSrc->acvo_txoplimit, 0);
         *pnConsumed += 2;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -30631,7 +30729,7 @@
         if ( pSrc->caps )        {
             frameshtons(pCtx, pBuf, pSrc->caps, 0);
             *pnConsumed += 2;
-            // fieldsEndFlag = 1 
+            // fieldsEndFlag = 1
         }
         else break;
         break;
@@ -30671,7 +30769,7 @@
         ++pBuf; ++(*pnConsumed);
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->data ), pSrc->num_data);
         *pnConsumed += pSrc->num_data;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -30750,7 +30848,7 @@
         pBuf += 1;
         *pBuf = pSrc->newCenterChanFreq1;
         *pnConsumed += 1;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -30960,7 +31058,7 @@
         ++pBuf; ++(*pnConsumed);
         DOT11F_MEMCPY(pCtx, pBuf, &( pSrc->data ), pSrc->num_data);
         *pnConsumed += pSrc->num_data;
-        // fieldsEndFlag = 1 
+        // fieldsEndFlag = 1
         break;
     }
     (void)pCtx;
@@ -34899,6 +34997,15 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* )&pFrm->WiderBWChanSwitchAnn.newCenterChanFreq0, 1);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* )&pFrm->WiderBWChanSwitchAnn.newCenterChanFreq1, 1);
         }
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("OxygenNetwork:\n"));
+        if (!pFrm->OxygenNetwork.present)
+        {
+            FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("Not present.\n"));
+        }
+        else
+        {
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* )&pFrm->OxygenNetwork.data, 2);
+        }
         FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("to:\n"));
         FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), pBuf, nBuf);
     }
@@ -35915,6 +36022,15 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* )&pFrm->WiderBWChanSwitchAnn.newCenterChanFreq0, 1);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* )&pFrm->WiderBWChanSwitchAnn.newCenterChanFreq1, 1);
         }
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("OxygenNetwork:\n"));
+        if (!pFrm->OxygenNetwork.present)
+        {
+            FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("Not present.\n"));
+        }
+        else
+        {
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* )&pFrm->OxygenNetwork.data, 2);
+        }
         FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("to:\n"));
         FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), pBuf, nBuf);
     }
@@ -37112,6 +37228,15 @@
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* )&pFrm->WiderBWChanSwitchAnn.newCenterChanFreq0, 1);
             FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* )&pFrm->WiderBWChanSwitchAnn.newCenterChanFreq1, 1);
         }
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("OxygenNetwork:\n"));
+        if (!pFrm->OxygenNetwork.present)
+        {
+            FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("Not present.\n"));
+        }
+        else
+        {
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* )&pFrm->OxygenNetwork.data, 2);
+        }
         FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("to:\n"));
         FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), pBuf, nBuf);
     }
@@ -40206,6 +40331,15 @@
             FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("operModeNotification (1): %d\n"), pFrm->ExtCap.operModeNotification);
             FRAMES_LOG1(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("reserved7 (1): %d\n"), pFrm->ExtCap.reserved7);
         }
+        FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("OxygenNetwork:\n"));
+        if (!pFrm->OxygenNetwork.present)
+        {
+            FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("Not present.\n"));
+        }
+        else
+        {
+            FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* )&pFrm->OxygenNetwork.data, 2);
+        }
         FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("to:\n"));
         FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), pBuf, nBuf);
     }
@@ -44963,6 +45097,9 @@
                     case SigIeOperatingMode:
                         status |= dot11fPackIeOperatingMode(pCtx, ( tDot11fIEOperatingMode* )(pSrc + pIe->offset + sizeof(tDot11fIEOperatingMode) * i ),  pBufRemaining, nBufRemaining, &len);
                         break;
+                    case SigIeOxygenNetwork:
+                        status |= dot11fPackIeOxygenNetwork(pCtx, ( tDot11fIEOxygenNetwork* )(pSrc + pIe->offset + sizeof(tDot11fIEOxygenNetwork) * i ),  pBufRemaining, nBufRemaining, &len);
+                        break;
                     case SigIeP2PAssocReq:
                         status |= dot11fPackIeP2PAssocReq(pCtx, ( tDot11fIEP2PAssocReq* )(pSrc + pIe->offset + sizeof(tDot11fIEP2PAssocReq) * i ),  pBufRemaining, nBufRemaining, &len);
                         break;
diff --git a/firmware_bin/WCNSS_cfg.dat b/firmware_bin/WCNSS_cfg.dat
old mode 100644
new mode 100755
index b6af038..637a869
--- a/firmware_bin/WCNSS_cfg.dat
+++ b/firmware_bin/WCNSS_cfg.dat
Binary files differ
diff --git a/firmware_bin/WCNSS_qcom_cfg.ini b/firmware_bin/WCNSS_qcom_cfg.ini
index 60c8ba5..d44cc92 100644
--- a/firmware_bin/WCNSS_qcom_cfg.ini
+++ b/firmware_bin/WCNSS_qcom_cfg.ini
@@ -396,6 +396,9 @@
 #Scan offload
 gEnableDirectedScanOffload=0
 
+# Oxygen network (prop IE for IBSS)
+gEnableOxygenNwk=0
+
 END
 
 # Note: Configuration parser would not read anything past the END marker