summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRakesh Sunki <rsunki@qca.qualcomm.com>2014-04-21 14:55:48 -0700
committerAkash Patel <c_akashp@qca.qualcomm.com>2014-06-19 20:51:31 -0700
commit9bb1fb3f16852127803e90d1a3ec343ba6bbbaa0 (patch)
treeb12ef86859e18fb5eeea958b1f7a37f105e5642a
parenta761dc2dc0ded44f1314d957909cdd51b9d5a723 (diff)
qcacld: Add SAP Channel Change iwpriv with CSA
Adding support for iwpriv command to allow SAP channel change with CSA IE and Channel Switch wrapper IE in the beacons and probe response. Channel change is allowed only from one 5Ghz channel to another 5Ghz channel. Channel switch wrapper element is present only for channel width of 40 or wider channel switch operation. Change-Id: Ied87b98d7016a1a1a12a6a99596f66642d5f55ba CRs-Fixed: 638484
-rw-r--r--CORE/HDD/inc/qc_sap_ioctl.h3
-rw-r--r--CORE/HDD/src/wlan_hdd_hostapd.c91
-rw-r--r--CORE/MAC/src/cfg/cfgUtil/dot11f.frms9
-rw-r--r--CORE/MAC/src/include/dot11f.h177
-rw-r--r--CORE/MAC/src/include/parserApi.h6
-rw-r--r--CORE/MAC/src/pe/include/limGlobal.h3
-rw-r--r--CORE/MAC/src/pe/include/limSession.h5
-rw-r--r--CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c82
-rw-r--r--CORE/MAC/src/pe/lim/limSendSmeRspMessages.c1
-rw-r--r--CORE/MAC/src/pe/sch/schBeaconGen.c11
-rw-r--r--CORE/SAP/inc/sapApi.h27
-rw-r--r--CORE/SAP/src/sapModule.c133
-rw-r--r--CORE/SYS/legacy/src/utils/src/dot11f.c577
-rw-r--r--CORE/SYS/legacy/src/utils/src/parserApi.c36
14 files changed, 916 insertions, 245 deletions
diff --git a/CORE/HDD/inc/qc_sap_ioctl.h b/CORE/HDD/inc/qc_sap_ioctl.h
index 9f284291734a..6982800a4e85 100644
--- a/CORE/HDD/inc/qc_sap_ioctl.h
+++ b/CORE/HDD/inc/qc_sap_ioctl.h
@@ -306,7 +306,8 @@ enum {
QCASAP_SET_TM_LEVEL,
QCASAP_SET_DFS_IGNORE_CAC,
QCASAP_GET_DFS_NOL,
- QCASAP_SET_DFS_NOL
+ QCASAP_SET_DFS_NOL,
+ QCSAP_PARAM_SET_CHANNEL_CHANGE
};
int iw_softap_get_channel_list(struct net_device *dev,
diff --git a/CORE/HDD/src/wlan_hdd_hostapd.c b/CORE/HDD/src/wlan_hdd_hostapd.c
index caa16d848e04..ff5bdf6b7628 100644
--- a/CORE/HDD/src/wlan_hdd_hostapd.c
+++ b/CORE/HDD/src/wlan_hdd_hostapd.c
@@ -1457,6 +1457,80 @@ int hdd_softap_unpackIE(
return VOS_STATUS_SUCCESS;
}
+ /**---------------------------------------------------------------------------
+
+ \brief hdd_softap_set_channel_change() -
+ This function to support SAP channel change with CSA IE
+ set in the beacons.
+
+ \param - dev - Pointer to the net device.
+ - target_channel - target channel number.
+ \return - 0 for success, non zero for failure
+
+ --------------------------------------------------------------------------*/
+
+static
+int hdd_softap_set_channel_change(struct net_device *dev, int target_channel)
+{
+ VOS_STATUS status;
+ int ret = 0;
+ hdd_adapter_t *pHostapdAdapter = (netdev_priv(dev));
+ hdd_context_t *pHddCtx = NULL;
+
+#ifndef WLAN_FEATURE_MBSSID
+ v_CONTEXT_t pVosContext = (WLAN_HDD_GET_CTX(pHostapdAdapter))->pvosContext;
+#endif
+
+ pHddCtx = WLAN_HDD_GET_CTX(pHostapdAdapter);
+ ret = wlan_hdd_validate_context(pHddCtx);
+ if (ret)
+ {
+ hddLog(VOS_TRACE_LEVEL_ERROR, "%s: invalid HDD context", __func__);
+ ret = -EBUSY;
+ return ret;
+ }
+
+ /*
+ * Set the dfs_radar_found flag to mimic channel change
+ * when a radar is found. This will enable synchronizing
+ * SAP and HDD states similar to that of radar indication.
+ * Suspend the netif queues to stop queuing Tx frames
+ * from upper layers. netif queues will be resumed
+ * once the channel change is completed and SAP will
+ * post eSAP_START_BSS_EVENT success event to HDD.
+ */
+ pHddCtx->dfs_radar_found = VOS_TRUE;
+
+ /*
+ * Post the Channel Change request to SAP.
+ */
+ status = WLANSAP_SetChannelChangeWithCsa(
+#ifdef WLAN_FEATURE_MBSSID
+ WLAN_HDD_GET_SAP_CTX_PTR(pHostapdAdapter),
+#else
+ pVosContext,
+#endif
+ (v_U32_t) target_channel);
+
+ if (VOS_STATUS_SUCCESS != status)
+ {
+ hddLog(VOS_TRACE_LEVEL_ERROR,
+ "%s: SAP set channel failed for channel = %d",
+ __func__, target_channel);
+ /*
+ * If channel change command fails then clear the
+ * radar found flag and also restart the netif
+ * queues.
+ */
+
+ pHddCtx->dfs_radar_found = VOS_FALSE;
+
+ ret = -EINVAL;
+ }
+
+ return ret;
+}
+
int
static iw_softap_set_ini_cfg(struct net_device *dev,
struct iw_request_info *info,
@@ -1632,6 +1706,21 @@ static iw_softap_setparam(struct net_device *dev,
}
break;
+ case QCSAP_PARAM_SET_CHANNEL_CHANGE:
+ if ( WLAN_HDD_SOFTAP == pHostapdAdapter->device_mode )
+ {
+ hddLog(LOG1, "SET SAP Channel Change to new channel= %d",
+ set_value);
+ ret = hdd_softap_set_channel_change(dev, set_value);
+ }
+ else
+ {
+ hddLog(LOGE, FL("%s:Channel Change Failed, Device in test mode"),
+ __func__);
+ ret = -EINVAL;
+ }
+ break;
+
case QCSAP_PARAM_MAX_ASSOC:
if (WNI_CFG_ASSOC_STA_LIMIT_STAMIN > set_value)
{
@@ -4456,6 +4545,8 @@ static const struct iw_priv_args hostapd_private_args[] = {
IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "setMccQuota" },
{ QCSAP_PARAM_AUTO_CHANNEL,
IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "setAutoChannel" },
+ { QCSAP_PARAM_SET_CHANNEL_CHANGE,
+ IW_PRIV_TYPE_INT | IW_PRIV_SIZE_FIXED | 1, 0, "setChanChange" },
#ifdef QCA_WIFI_2_0
/* Sub-cmds DBGLOG specific commands */
diff --git a/CORE/MAC/src/cfg/cfgUtil/dot11f.frms b/CORE/MAC/src/cfg/cfgUtil/dot11f.frms
index 3c9558595a8f..a69e8d6d8295 100644
--- a/CORE/MAC/src/cfg/cfgUtil/dot11f.frms
+++ b/CORE/MAC/src/cfg/cfgUtil/dot11f.frms
@@ -116,6 +116,7 @@ const EID_AID = 197;
const EID_EXT_CAP = 127;
const EID_OPERATING_MODE = 199;
const EID_WIDER_BW_CHANNEL_SWITCH_ANN= 194;
+const EID_CHANNEL_SWITCH_WRAPPER = 196;
const EID_VENDOR_SPECIFIC = 221;
const SIR_MAC_PROP_EXT_RATES_TYPE = 0;
@@ -2661,6 +2662,10 @@ IE WiderBWChanSwitchAnn (EID_WIDER_BW_CHANNEL_SWITCH_ANN)
newCenterChanFreq1, 1;
}
+IE ChannelSwitchWrapper (EID_CHANNEL_SWITCH_WRAPPER)
+{
+ OPTIE IE WiderBWChanSwitchAnn;
+}
IE ExtCap (EID_EXT_CAP)
{
{
@@ -3358,6 +3363,7 @@ FRAME Beacon // C.f. Sec. 7.2.3.1
OPTIE Vendor1IE;
OPTIE Vendor2IE;
OPTIE Vendor3IE;
+ OPTIE ChannelSwitchWrapper;
} // End frame Beacon.
// Ok, here's the story on Beacon1 & Beacon2. We presumably beacon a lot
@@ -3440,6 +3446,7 @@ FRAME Beacon2
OPTIE Vendor1IE;
OPTIE Vendor2IE;
OPTIE Vendor3IE;
+ OPTIE ChannelSwitchWrapper;
}
// This frame is just Beacon with its Fixed Fields stripped out. It's handy
@@ -3500,6 +3507,7 @@ FRAME BeaconIEs
OPTIE Vendor1IE;
OPTIE Vendor2IE;
OPTIE Vendor3IE;
+ OPTIE ChannelSwitchWrapper;
} // End frame BeaconIEs.
@@ -3708,6 +3716,7 @@ FRAME ProbeResponse // 7.2.3.9
OPTIE Vendor1IE;
OPTIE Vendor2IE;
OPTIE Vendor3IE;
+ OPTIE ChannelSwitchWrapper;
} // End frame ProbeResponse.
FRAME Authentication // 7.2.3.10
diff --git a/CORE/MAC/src/include/dot11f.h b/CORE/MAC/src/include/dot11f.h
index 6b7d3e109148..b5fbf84ae732 100644
--- a/CORE/MAC/src/include/dot11f.h
+++ b/CORE/MAC/src/include/dot11f.h
@@ -38,7 +38,7 @@
*
*
* This file was automatically generated by 'framesc'
- * Wed Jun 4 16:28:17 2014 from the following file(s):
+ * Mon Jun 9 09:39:46 2014 from the following file(s):
*
* dot11f.frms
*
@@ -3076,6 +3076,33 @@ tANI_U32 dot11fGetPackedIEWMMTSPEC(tpAniSirGlobal, tDot11fIEWMMTSPEC*, tANI_U32*
#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
+// EID 194 (0xc2)
+typedef struct sDot11fIEWiderBWChanSwitchAnn {
+ tANI_U8 present;
+ tANI_U8 newChanWidth;
+ tANI_U8 newCenterChanFreq0;
+ tANI_U8 newCenterChanFreq1;
+} tDot11fIEWiderBWChanSwitchAnn;
+
+#define DOT11F_EID_WIDERBWCHANSWITCHANN ( 194 )
+
+// N.B. These #defines do *not* include the EID & length
+#define DOT11F_IE_WIDERBWCHANSWITCHANN_MIN_LEN ( 3 )
+
+#define DOT11F_IE_WIDERBWCHANSWITCHANN_MAX_LEN ( 3 )
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* C++ */
+tANI_U32 dot11fUnpackIeWiderBWChanSwitchAnn(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWiderBWChanSwitchAnn*);
+
+tANI_U32 dot11fPackIeWiderBWChanSwitchAnn(tpAniSirGlobal, tDot11fIEWiderBWChanSwitchAnn*, tANI_U8*, tANI_U32, tANI_U32*);
+
+tANI_U32 dot11fGetPackedIEWiderBWChanSwitchAnn(tpAniSirGlobal, tDot11fIEWiderBWChanSwitchAnn*, tANI_U32*);
+
+#ifdef __cplusplus
+}; /* End extern "C". */
+#endif /* C++ */
// EID 197 (0xc5)
typedef struct sDot11fIEAID {
tANI_U8 present;
@@ -3223,6 +3250,31 @@ tANI_U32 dot11fGetPackedIEChanSwitchAnn(tpAniSirGlobal, tDot11fIEChanSwitchAnn*,
#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
+// EID 196 (0xc4)
+typedef struct sDot11fIEChannelSwitchWrapper {
+ tANI_U8 present;
+ tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn;
+} tDot11fIEChannelSwitchWrapper;
+
+#define DOT11F_EID_CHANNELSWITCHWRAPPER ( 196 )
+
+// N.B. These #defines do *not* include the EID & length
+#define DOT11F_IE_CHANNELSWITCHWRAPPER_MIN_LEN ( 0 )
+
+#define DOT11F_IE_CHANNELSWITCHWRAPPER_MAX_LEN ( 5 )
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* C++ */
+tANI_U32 dot11fUnpackIeChannelSwitchWrapper(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEChannelSwitchWrapper*);
+
+tANI_U32 dot11fPackIeChannelSwitchWrapper(tpAniSirGlobal, tDot11fIEChannelSwitchWrapper*, tANI_U8*, tANI_U32, tANI_U32*);
+
+tANI_U32 dot11fGetPackedIEChannelSwitchWrapper(tpAniSirGlobal, tDot11fIEChannelSwitchWrapper*, tANI_U32*);
+
+#ifdef __cplusplus
+}; /* End extern "C". */
+#endif /* C++ */
// EID 7 (0x07)
typedef struct sDot11fIECountry {
tANI_U8 present;
@@ -5919,33 +5971,6 @@ tANI_U32 dot11fGetPackedIEWSC(tpAniSirGlobal, tDot11fIEWSC*, tANI_U32*);
#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
-// EID 194 (0xc2)
-typedef struct sDot11fIEWiderBWChanSwitchAnn {
- tANI_U8 present;
- tANI_U8 newChanWidth;
- tANI_U8 newCenterChanFreq0;
- tANI_U8 newCenterChanFreq1;
-} tDot11fIEWiderBWChanSwitchAnn;
-
-#define DOT11F_EID_WIDERBWCHANSWITCHANN ( 194 )
-
-// N.B. These #defines do *not* include the EID & length
-#define DOT11F_IE_WIDERBWCHANSWITCHANN_MIN_LEN ( 3 )
-
-#define DOT11F_IE_WIDERBWCHANSWITCHANN_MAX_LEN ( 3 )
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* C++ */
-tANI_U32 dot11fUnpackIeWiderBWChanSwitchAnn(tpAniSirGlobal, tANI_U8*,tANI_U8, tDot11fIEWiderBWChanSwitchAnn*);
-
-tANI_U32 dot11fPackIeWiderBWChanSwitchAnn(tpAniSirGlobal, tDot11fIEWiderBWChanSwitchAnn*, tANI_U8*, tANI_U32, tANI_U32*);
-
-tANI_U32 dot11fGetPackedIEWiderBWChanSwitchAnn(tpAniSirGlobal, tDot11fIEWiderBWChanSwitchAnn*, tANI_U32*);
-
-#ifdef __cplusplus
-}; /* End extern "C". */
-#endif /* C++ */
// EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE)
typedef struct sDot11fIEWscAssocReq {
tANI_U8 present;
@@ -6490,6 +6515,7 @@ typedef struct sDot11fBeacon{
tDot11fIEVendor1IE Vendor1IE;
tDot11fIEVendor2IE Vendor2IE;
tDot11fIEVendor3IE Vendor3IE;
+ tDot11fIEChannelSwitchWrapper ChannelSwitchWrapper;
} tDot11fBeacon;
#define DOT11F_BEACON ( 8 )
@@ -6566,6 +6592,7 @@ typedef struct sDot11fBeacon2{
tDot11fIEVendor1IE Vendor1IE;
tDot11fIEVendor2IE Vendor2IE;
tDot11fIEVendor3IE Vendor3IE;
+ tDot11fIEChannelSwitchWrapper ChannelSwitchWrapper;
} tDot11fBeacon2;
#define DOT11F_BEACON2 ( 10 )
@@ -6631,6 +6658,7 @@ typedef struct sDot11fBeaconIEs{
tDot11fIEVendor1IE Vendor1IE;
tDot11fIEVendor2IE Vendor2IE;
tDot11fIEVendor3IE Vendor3IE;
+ tDot11fIEChannelSwitchWrapper ChannelSwitchWrapper;
} tDot11fBeaconIEs;
#define DOT11F_BEACONIES ( 11 )
@@ -7183,52 +7211,53 @@ tANI_U32 dot11fGetPackedProbeRequestSize(tpAniSirGlobal pCtx, tDot11fProbeReques
#endif /* C++ */
typedef struct sDot11fProbeResponse{
- tDot11fFfTimeStamp TimeStamp;
- tDot11fFfBeaconInterval BeaconInterval;
- tDot11fFfCapabilities Capabilities;
- tDot11fIESSID SSID;
- tDot11fIESuppRates SuppRates;
- tDot11fIEFHParamSet FHParamSet;
- tDot11fIEDSParams DSParams;
- tDot11fIECFParams CFParams;
- tDot11fIEIBSSParams IBSSParams;
- tDot11fIECountry Country;
- tDot11fIEFHParams FHParams;
- tDot11fIEFHPattTable FHPattTable;
- tDot11fIEPowerConstraints PowerConstraints;
- tDot11fIEChanSwitchAnn ChanSwitchAnn;
- tDot11fIEQuiet Quiet;
- tDot11fIETPCReport TPCReport;
- tDot11fIEERPInfo ERPInfo;
- tDot11fIEExtSuppRates ExtSuppRates;
- tDot11fIERSNOpaque RSNOpaque;
- tDot11fIEQBSSLoad QBSSLoad;
- tDot11fIEEDCAParamSet EDCAParamSet;
- tDot11fIERRMEnabledCap RRMEnabledCap;
- tDot11fIEAPChannelReport APChannelReport;
- tDot11fIEMobilityDomain MobilityDomain;
- tDot11fIEWPA WPA;
- tDot11fIEHTCaps HTCaps;
- tDot11fIEHTInfo HTInfo;
- tDot11fIEExtChanSwitchAnn ExtChanSwitchAnn;
- tDot11fIEWMMInfoAp WMMInfoAp;
- tDot11fIEWMMParams WMMParams;
- tDot11fIEWMMCaps WMMCaps;
- tDot11fIEWAPI WAPI;
- tDot11fIEESERadMgmtCap ESERadMgmtCap;
- tDot11fIEESETrafStrmMet ESETrafStrmMet;
- tDot11fIEESETxmitPower ESETxmitPower;
- tDot11fIEAirgo Airgo;
- tDot11fIEWscProbeRes WscProbeRes;
- tDot11fIEP2PProbeRes P2PProbeRes;
- tDot11fIEVHTCaps VHTCaps;
- tDot11fIEVHTOperation VHTOperation;
- tDot11fIEVHTExtBssLoad VHTExtBssLoad;
- tDot11fIEExtCap ExtCap;
- tDot11fIEOBSSScanParameters OBSSScanParameters;
- tDot11fIEVendor1IE Vendor1IE;
- tDot11fIEVendor2IE Vendor2IE;
- tDot11fIEVendor3IE Vendor3IE;
+ tDot11fFfTimeStamp TimeStamp;
+ tDot11fFfBeaconInterval BeaconInterval;
+ tDot11fFfCapabilities Capabilities;
+ tDot11fIESSID SSID;
+ tDot11fIESuppRates SuppRates;
+ tDot11fIEFHParamSet FHParamSet;
+ tDot11fIEDSParams DSParams;
+ tDot11fIECFParams CFParams;
+ tDot11fIEIBSSParams IBSSParams;
+ tDot11fIECountry Country;
+ tDot11fIEFHParams FHParams;
+ tDot11fIEFHPattTable FHPattTable;
+ tDot11fIEPowerConstraints PowerConstraints;
+ tDot11fIEChanSwitchAnn ChanSwitchAnn;
+ tDot11fIEQuiet Quiet;
+ tDot11fIETPCReport TPCReport;
+ tDot11fIEERPInfo ERPInfo;
+ tDot11fIEExtSuppRates ExtSuppRates;
+ tDot11fIERSNOpaque RSNOpaque;
+ tDot11fIEQBSSLoad QBSSLoad;
+ tDot11fIEEDCAParamSet EDCAParamSet;
+ tDot11fIERRMEnabledCap RRMEnabledCap;
+ tDot11fIEAPChannelReport APChannelReport;
+ tDot11fIEMobilityDomain MobilityDomain;
+ tDot11fIEWPA WPA;
+ tDot11fIEHTCaps HTCaps;
+ tDot11fIEHTInfo HTInfo;
+ tDot11fIEExtChanSwitchAnn ExtChanSwitchAnn;
+ tDot11fIEWMMInfoAp WMMInfoAp;
+ tDot11fIEWMMParams WMMParams;
+ tDot11fIEWMMCaps WMMCaps;
+ tDot11fIEWAPI WAPI;
+ tDot11fIEESERadMgmtCap ESERadMgmtCap;
+ tDot11fIEESETrafStrmMet ESETrafStrmMet;
+ tDot11fIEESETxmitPower ESETxmitPower;
+ tDot11fIEAirgo Airgo;
+ tDot11fIEWscProbeRes WscProbeRes;
+ tDot11fIEP2PProbeRes P2PProbeRes;
+ tDot11fIEVHTCaps VHTCaps;
+ tDot11fIEVHTOperation VHTOperation;
+ tDot11fIEVHTExtBssLoad VHTExtBssLoad;
+ tDot11fIEExtCap ExtCap;
+ tDot11fIEOBSSScanParameters OBSSScanParameters;
+ tDot11fIEVendor1IE Vendor1IE;
+ tDot11fIEVendor2IE Vendor2IE;
+ tDot11fIEVendor3IE Vendor3IE;
+ tDot11fIEChannelSwitchWrapper ChannelSwitchWrapper;
} tDot11fProbeResponse;
#define DOT11F_PROBERESPONSE ( 36 )
diff --git a/CORE/MAC/src/include/parserApi.h b/CORE/MAC/src/include/parserApi.h
index b19916612719..c30aeb87b23b 100644
--- a/CORE/MAC/src/include/parserApi.h
+++ b/CORE/MAC/src/include/parserApi.h
@@ -504,6 +504,12 @@ PopulateDot11fExtChanSwitchAnn(tpAniSirGlobal pMac,
tDot11fIEExtChanSwitchAnn *pDot11f,
tpPESession psessionEntry);
+/// Populate a tDot11fIEChannelSwitchWrapper
+void
+PopulateDot11fChanSwitchWrapper(tpAniSirGlobal pMac,
+ tDot11fIEChannelSwitchWrapper *pDot11f,
+ tpPESession psessionEntry);
+
/// Populate a tDot11fIECountry
tSirRetStatus
PopulateDot11fCountry(tpAniSirGlobal pMac,
diff --git a/CORE/MAC/src/pe/include/limGlobal.h b/CORE/MAC/src/pe/include/limGlobal.h
index d01d6a2c4ba2..8728bde39dea 100644
--- a/CORE/MAC/src/pe/include/limGlobal.h
+++ b/CORE/MAC/src/pe/include/limGlobal.h
@@ -594,6 +594,7 @@ typedef struct sLimOperatingModeInfo
tANI_U8 rxNSS: 3;
tANI_U8 rxNSSType: 1;
}tLimOperatingModeInfo, *tpLimOperatingModeInfo;
+#endif
typedef struct sLimWiderBWChannelSwitch
{
@@ -601,7 +602,7 @@ typedef struct sLimWiderBWChannelSwitch
tANI_U8 newCenterChanFreq0;
tANI_U8 newCenterChanFreq1;
}tLimWiderBWChannelSwitchInfo, *tpLimWiderBWChannelSwitchInfo;
-#endif
+
// Enums used when stopping the Tx.
typedef enum eLimQuietTxMode
{
diff --git a/CORE/MAC/src/pe/include/limSession.h b/CORE/MAC/src/pe/include/limSession.h
index 649fcf7bb0b6..04e1598e460f 100644
--- a/CORE/MAC/src/pe/include/limSession.h
+++ b/CORE/MAC/src/pe/include/limSession.h
@@ -320,7 +320,6 @@ typedef struct sPESession // Added to Support BT-AMP
tANI_U8 vhtCapability;
tANI_U8 vhtTxChannelWidthSet;
tLimOperatingModeInfo gLimOperatingMode;
- tLimWiderBWChannelSwitchInfo gLimWiderBWChannelSwitch;
tANI_U8 vhtCapabilityPresentInBeacon;
tANI_U8 apCenterChan;
tANI_U8 apChanWidth;
@@ -329,6 +328,7 @@ typedef struct sPESession // Added to Support BT-AMP
tANI_U8 enableVhtpAid;
tANI_U8 enableVhtGid;
#endif
+ tLimWiderBWChannelSwitchInfo gLimWiderBWChannelSwitch;
tANI_U8 enableAmpduPs;
tANI_U8 enableHtSmps;
tANI_U8 htSmpsvalue;
@@ -418,6 +418,9 @@ typedef struct sPESession // Added to Support BT-AMP
/* Flag to indicate Chan Sw announcement is required */
tANI_U8 dfsIncludeChanSwIe;
+ /* Flag to indicate Chan Wrapper Element is required */
+ tANI_U8 dfsIncludeChanWrapperIe;
+
#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
tANI_U8 cc_switch_mode;
#endif
diff --git a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
index 8561b31c6d42..be161e5822ff 100644
--- a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
@@ -6362,6 +6362,7 @@ limProcessSmeDfsCsaIeRequest(tpAniSirGlobal pMac, tANI_U32 *pMsg)
tpSirDfsCsaIeRequest pDfsCsaIeRequest = (tSirDfsCsaIeRequest *)pMsg;
tpPESession psessionEntry = NULL;
int i;
+ tANI_U32 chanWidth = 0;
if ( pMsg == NULL )
{
@@ -6388,6 +6389,87 @@ limProcessSmeDfsCsaIeRequest(tpAniSirGlobal pMac, tANI_U32 *pMsg)
psessionEntry->dfsIncludeChanSwIe = VOS_TRUE;
psessionEntry->gLimChannelSwitch.switchCount = LIM_MAX_CSA_IE_UPDATES;
+ /* Validate if SAP is operating HT or VHT
+ * mode and set the Channel Switch Wrapper
+ * element with the Wide Band Switch
+ * subelement..
+ */
+#ifdef WLAN_FEATURE_11AC
+ if (VOS_TRUE == psessionEntry->vhtCapability)
+ {
+ if (WNI_CFG_VHT_CHANNEL_WIDTH_80MHZ ==
+ psessionEntry->vhtTxChannelWidthSet)
+ {
+ chanWidth = eHT_CHANNEL_WIDTH_80MHZ;
+ }
+ else if (WNI_CFG_VHT_CHANNEL_WIDTH_20_40MHZ ==
+ psessionEntry->vhtTxChannelWidthSet)
+ {
+ chanWidth = psessionEntry->htSupportedChannelWidthSet;
+ }
+
+ /*
+ * Now encode the Wider Channel BW element
+ * depending on the chanWidth.
+ */
+ switch(chanWidth)
+ {
+ case eHT_CHANNEL_WIDTH_20MHZ:
+ /*
+ * Wide channel BW sublement in channel
+ * wrapper element is not required in case
+ * of 20 Mhz operation. Currently It is set
+ * only set in case of 40/80 Mhz Operation.
+ */
+ psessionEntry->dfsIncludeChanWrapperIe = VOS_FALSE;
+ psessionEntry->gLimWiderBWChannelSwitch.newChanWidth =
+ WNI_CFG_VHT_CHANNEL_WIDTH_20_40MHZ;
+ break;
+ case eHT_CHANNEL_WIDTH_40MHZ:
+ psessionEntry->dfsIncludeChanWrapperIe = VOS_TRUE;
+ psessionEntry->gLimWiderBWChannelSwitch.newChanWidth =
+ WNI_CFG_VHT_CHANNEL_WIDTH_20_40MHZ;
+ break;
+ case eHT_CHANNEL_WIDTH_80MHZ:
+ psessionEntry->dfsIncludeChanWrapperIe = VOS_TRUE;
+ psessionEntry->gLimWiderBWChannelSwitch.newChanWidth =
+ WNI_CFG_VHT_CHANNEL_WIDTH_80MHZ;
+ break;
+ case eHT_CHANNEL_WIDTH_160MHZ:
+ psessionEntry->dfsIncludeChanWrapperIe = VOS_TRUE;
+ psessionEntry->gLimWiderBWChannelSwitch.newChanWidth =
+ WNI_CFG_VHT_CHANNEL_WIDTH_160MHZ;
+ break;
+ default:
+ psessionEntry->dfsIncludeChanWrapperIe = VOS_FALSE;
+ /* Need to handle 80+80 Mhz Scenario
+ * When 80+80 is supported set the
+ * gLimWiderBWChannelSwitch.newChanWidth
+ * to 3
+ */
+ PELOGE(limLog(pMac, LOGE, FL("Invalid Channel Width"));)
+ break;
+ }
+ /*
+ * Fetch the center channel based on the channel width
+ */
+ psessionEntry->gLimWiderBWChannelSwitch.newCenterChanFreq0 =
+ limGetCenterChannel(pMac,
+ pDfsCsaIeRequest->targetChannel,
+ psessionEntry->htSecondaryChannelOffset,
+ psessionEntry->gLimWiderBWChannelSwitch.newChanWidth);
+ /*
+ * This is not applicable for 20/40/80 Mhz.
+ * Only used when we support 80+80 Mhz
+ * operation. In case of 80+80 Mhz, this
+ * parameter indicates center channel
+ * frequency index of 80 Mhz channel
+ * of frequency segment 1.
+ */
+ psessionEntry->gLimWiderBWChannelSwitch.newCenterChanFreq1 = 0;
+ }
+#endif
+
/* Send CSA IE request from here */
if (schSetFixedBeaconFields(pMac, psessionEntry) != eSIR_SUCCESS)
{
diff --git a/CORE/MAC/src/pe/lim/limSendSmeRspMessages.c b/CORE/MAC/src/pe/lim/limSendSmeRspMessages.c
index b917d0243872..b6b61af5d76a 100644
--- a/CORE/MAC/src/pe/lim/limSendSmeRspMessages.c
+++ b/CORE/MAC/src/pe/lim/limSendSmeRspMessages.c
@@ -3343,6 +3343,7 @@ limProcessBeaconTxSuccessInd(tpAniSirGlobal pMac, tANI_U16 msgType, void *event)
/* Done with CSA IE update, send response back to SME */
psessionEntry->gLimChannelSwitch.switchCount = 0;
psessionEntry->dfsIncludeChanSwIe = VOS_FALSE;
+ psessionEntry->dfsIncludeChanWrapperIe = VOS_FALSE;
pChanSwTxResponse = (tSirSmeCSAIeTxCompleteRsp *)
diff --git a/CORE/MAC/src/pe/sch/schBeaconGen.c b/CORE/MAC/src/pe/sch/schBeaconGen.c
index 96ac53ca4a29..8769f4813dab 100644
--- a/CORE/MAC/src/pe/sch/schBeaconGen.c
+++ b/CORE/MAC/src/pe/sch/schBeaconGen.c
@@ -350,7 +350,16 @@ tSirRetStatus schSetFixedBeaconFields(tpAniSirGlobal pMac,tpPESession psessionEn
/*PopulateDot11fWiderBWChanSwitchAnn(pMac, &pBcn2->WiderBWChanSwitchAnn,
psessionEntry);*/
#endif
-
+ /*
+ * Populate the Channel Switch Wrapper Element if
+ * SAP operates in 40/80 Mhz Channel Width.
+ */
+ if (VOS_TRUE == psessionEntry->dfsIncludeChanWrapperIe)
+ {
+ PopulateDot11fChanSwitchWrapper(pMac,
+ &pBcn2->ChannelSwitchWrapper,
+ psessionEntry);
+ }
}
}
diff --git a/CORE/SAP/inc/sapApi.h b/CORE/SAP/inc/sapApi.h
index 5542e3fd5bfd..888e69968c80 100644
--- a/CORE/SAP/inc/sapApi.h
+++ b/CORE/SAP/inc/sapApi.h
@@ -1115,6 +1115,33 @@ WLANSAP_DeauthSta
);
/*==========================================================================
+ FUNCTION WLANSAP_SetChannelChangeWithCsa
+
+ DESCRIPTION
+ This api function does a channel change to the target channel specified
+ through an iwpriv. CSA IE is included in the beacons before doing a
+ channel change.
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ pvosGCtx : Pointer to vos global context structure
+ targetChannel : New target channel to change to.
+
+ RETURN VALUE
+ The VOS_STATUS code associated with performing the operation
+
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+============================================================================*/
+VOS_STATUS
+WLANSAP_SetChannelChangeWithCsa(v_PVOID_t pvosGCtx, v_U32_t targetChannel);
+
+/*==========================================================================
FUNCTION WLANSAP_SetChannelRange
DESCRIPTION
diff --git a/CORE/SAP/src/sapModule.c b/CORE/SAP/src/sapModule.c
index a48e1e92ac32..498a4a5276f1 100644
--- a/CORE/SAP/src/sapModule.c
+++ b/CORE/SAP/src/sapModule.c
@@ -1428,6 +1428,139 @@ WLANSAP_DeauthSta
}
return vosStatus;
}
+
+/*==========================================================================
+ FUNCTION WLANSAP_SetChannelChangeWithCsa
+
+ DESCRIPTION
+ This api function does a channel change to the target channel specified
+ through an iwpriv. CSA IE is included in the beacons before doing a
+ channel change.
+
+ DEPENDENCIES
+ NA.
+
+ PARAMETERS
+
+ IN
+ pvosGCtx : Pointer to vos global context structure
+ targetChannel : New target channel to change to.
+
+ RETURN VALUE
+ The VOS_STATUS code associated with performing the operation
+
+ VOS_STATUS_SUCCESS: Success
+
+ SIDE EFFECTS
+============================================================================*/
+VOS_STATUS
+WLANSAP_SetChannelChangeWithCsa(v_PVOID_t pvosGCtx, v_U32_t targetChannel)
+{
+
+ ptSapContext sapContext = NULL;
+ tWLAN_SAPEvent sapEvent;
+
+ sapContext = VOS_GET_SAP_CB( pvosGCtx );
+ if (NULL == sapContext)
+ {
+ VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_ERROR,
+ "%s: Invalid SAP pointer from pvosGCtx", __func__);
+
+ return VOS_STATUS_E_FAULT;
+ }
+ /*
+ * Validate if the new target channel is a valid
+ * 5 Ghz Channel. We prefer to move to another
+ * channel in 5 Ghz band.
+ */
+ if ( (targetChannel < rfChannels[RF_CHAN_36].channelNum)
+ ||
+ (targetChannel > rfChannels[RF_CHAN_165].channelNum) )
+ {
+ VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_ERROR,
+ "%s: Invalid Channel = %d passed,Channel not in 5GHz band",
+ __func__, targetChannel);
+
+ return VOS_STATUS_E_FAULT;
+ }
+
+ /*
+ * Now, validate if the passed channel is valid in the
+ * current regulatory domain.
+ */
+ if ( (vos_nv_getChannelEnabledState(targetChannel) == NV_CHANNEL_ENABLE)
+ ||
+ (vos_nv_getChannelEnabledState(targetChannel) == NV_CHANNEL_DFS) )
+ {
+ /*
+ * Post a CSA IE request to SAP state machine with
+ * target channel information and also CSA IE required
+ * flag set in sapContext only, if SAP is in eSAP_STARTED
+ * state.
+ */
+ if (eSAP_STARTED == sapContext->sapsMachine)
+ {
+ /*
+ * Copy the requested target channel
+ * to sap context.
+ */
+ sapContext->SapDfsInfo.target_channel = targetChannel;
+
+ /*
+ * Set the CSA IE required flag.
+ */
+ sapContext->SapDfsInfo.csaIERequired = VOS_TRUE;
+
+ /*
+ * Set the radar found status to allow the channel
+ * change to happen same as in the case of a radar
+ * detection. Since, this will allow SAP to be in
+ * correct state and also resume the netif queues
+ * that were suspended in HDD before the channel
+ * request was issued.
+ */
+ sapContext->SapDfsInfo.sap_radar_found_status = VOS_TRUE;
+
+ /*
+ * Post the eSAP_DFS_CHNL_SWITCH_ANNOUNCEMENT_START
+ * to SAP state machine to process the channel
+ * request with CSA IE set in the beacons.
+ */
+ sapEvent.event = eSAP_DFS_CHNL_SWITCH_ANNOUNCEMENT_START;
+ sapEvent.params = 0;
+ sapEvent.u1 = 0;
+ sapEvent.u2 = 0;
+
+ sapFsm(sapContext, &sapEvent);
+
+ }
+ else
+ {
+ VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_ERROR,
+ "%s: Failed to request Channel Change, since"
+ "SAP is not in eSAP_STARTED state", __func__);
+ return VOS_STATUS_E_FAULT;
+ }
+
+ }
+ else
+ {
+ VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_ERROR,
+ "%s: Channel = %d is not valid in the current"
+ "regulatory domain",
+ __func__, targetChannel);
+
+ return VOS_STATUS_E_FAULT;
+ }
+
+ VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH,
+ "%s: Posted eSAP_DFS_CHNL_SWITCH_ANNOUNCEMENT_START"
+ "successfully to sapFsm for Channel = %d",
+ __func__, targetChannel);
+
+ return VOS_STATUS_SUCCESS;
+}
+
/*==========================================================================
FUNCTION WLANSAP_SetChannelRange
diff --git a/CORE/SYS/legacy/src/utils/src/dot11f.c b/CORE/SYS/legacy/src/utils/src/dot11f.c
index 41efe80327d5..c079175d85c5 100644
--- a/CORE/SYS/legacy/src/utils/src/dot11f.c
+++ b/CORE/SYS/legacy/src/utils/src/dot11f.c
@@ -36,7 +36,7 @@
*
*
* This file was automatically generated by 'framesc'
- * Wed Jun 4 16:28:17 2014 from the following file(s):
+ * Mon Jun 9 09:39:46 2014 from the following file(s):
*
* dot11f.frms
*
@@ -2750,6 +2750,26 @@ tANI_U32 dot11fUnpackIeWMMTSPEC(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 iele
#define SigIeWMMTSPEC ( 0x002c )
+tANI_U32 dot11fUnpackIeWiderBWChanSwitchAnn(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWiderBWChanSwitchAnn *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->newChanWidth = *pBuf;
+ pBuf += 1;
+ ielen -= (tANI_U8)1;
+ pDst->newCenterChanFreq0 = *pBuf;
+ pBuf += 1;
+ ielen -= (tANI_U8)1;
+ pDst->newCenterChanFreq1 = *pBuf;
+ (void)pCtx;
+ return status;
+} /* End dot11fUnpackIeWiderBWChanSwitchAnn. */
+
+#define SigIeWiderBWChanSwitchAnn ( 0x002d )
+
+
tANI_U32 dot11fUnpackIeAID(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEAID *pDst)
{
tANI_U32 status = DOT11F_PARSE_SUCCESS;
@@ -2761,7 +2781,7 @@ tANI_U32 dot11fUnpackIeAID(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tD
return status;
} /* End dot11fUnpackIeAID. */
-#define SigIeAID ( 0x002d )
+#define SigIeAID ( 0x002e )
static const tFFDefn FFS_Airgo[ ] = {
@@ -2806,7 +2826,7 @@ tANI_U32 dot11fUnpackIeAirgo(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen,
return status;
} /* End dot11fUnpackIeAirgo. */
-#define SigIeAirgo ( 0x002e )
+#define SigIeAirgo ( 0x002f )
tANI_U32 dot11fUnpackIeCFParams(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIECFParams *pDst)
@@ -2829,7 +2849,7 @@ tANI_U32 dot11fUnpackIeCFParams(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 iele
return status;
} /* End dot11fUnpackIeCFParams. */
-#define SigIeCFParams ( 0x002f )
+#define SigIeCFParams ( 0x0030 )
tANI_U32 dot11fUnpackIeChallengeText(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEChallengeText *pDst)
@@ -2849,7 +2869,7 @@ tANI_U32 dot11fUnpackIeChallengeText(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8
return status;
} /* End dot11fUnpackIeChallengeText. */
-#define SigIeChallengeText ( 0x0030 )
+#define SigIeChallengeText ( 0x0031 )
tANI_U32 dot11fUnpackIeChanSwitchAnn(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEChanSwitchAnn *pDst)
@@ -2869,7 +2889,36 @@ tANI_U32 dot11fUnpackIeChanSwitchAnn(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8
return status;
} /* End dot11fUnpackIeChanSwitchAnn. */
-#define SigIeChanSwitchAnn ( 0x0031 )
+#define SigIeChanSwitchAnn ( 0x0032 )
+
+
+ static const tFFDefn FFS_ChannelSwitchWrapper[ ] = {
+ { NULL, 0, 0, 0,},
+ };
+
+ static const tIEDefn IES_ChannelSwitchWrapper[ ] = {
+ {offsetof(tDot11fIEChannelSwitchWrapper, WiderBWChanSwitchAnn), offsetof(tDot11fIEWiderBWChanSwitchAnn, present), 0, "WiderBWChanSwitchAnn" , 0, 5, 5, SigIeWiderBWChanSwitchAnn, {0, 0, 0, 0, 0}, 0, DOT11F_EID_WIDERBWCHANSWITCHANN, 0, },
+ {0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },
+ };
+
+tANI_U32 dot11fUnpackIeChannelSwitchWrapper(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEChannelSwitchWrapper *pDst)
+{
+ tANI_U32 status = DOT11F_PARSE_SUCCESS;
+ (void) pBuf; (void)ielen; /* Shutup the compiler */
+ if (pDst->present) status = DOT11F_DUPLICATE_IE;
+ pDst->present = 1;
+ (void)pCtx;
+ status |= UnpackCore(pCtx,
+ pBuf,
+ ielen,
+ FFS_ChannelSwitchWrapper,
+ IES_ChannelSwitchWrapper,
+ ( tANI_U8* )pDst,
+ sizeof(*pDst));
+ return status;
+} /* End dot11fUnpackIeChannelSwitchWrapper. */
+
+#define SigIeChannelSwitchWrapper ( 0x0033 )
tANI_U32 dot11fUnpackIeCountry(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIECountry *pDst)
@@ -2900,10 +2949,10 @@ tANI_U32 dot11fUnpackIeCountry(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen
return status;
} /* End dot11fUnpackIeCountry. */
-#define SigIeCountry ( 0x0032 )
+#define SigIeCountry ( 0x0034 )
-#define SigIeDSParams ( 0x0033 )
+#define SigIeDSParams ( 0x0035 )
tANI_U32 dot11fUnpackIeEDCAParamSet(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEEDCAParamSet *pDst)
@@ -2988,7 +3037,7 @@ tANI_U32 dot11fUnpackIeEDCAParamSet(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8
return status;
} /* End dot11fUnpackIeEDCAParamSet. */
-#define SigIeEDCAParamSet ( 0x0034 )
+#define SigIeEDCAParamSet ( 0x0036 )
tANI_U32 dot11fUnpackIeERPInfo(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEERPInfo *pDst)
@@ -3007,7 +3056,7 @@ tANI_U32 dot11fUnpackIeERPInfo(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen
return status;
} /* End dot11fUnpackIeERPInfo. */
-#define SigIeERPInfo ( 0x0035 )
+#define SigIeERPInfo ( 0x0037 )
tANI_U32 dot11fUnpackIeESECckmOpaque(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEESECckmOpaque *pDst)
@@ -3027,7 +3076,7 @@ tANI_U32 dot11fUnpackIeESECckmOpaque(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8
return status;
} /* End dot11fUnpackIeESECckmOpaque. */
-#define SigIeESECckmOpaque ( 0x0036 )
+#define SigIeESECckmOpaque ( 0x0038 )
tANI_U32 dot11fUnpackIeESERadMgmtCap(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEESERadMgmtCap *pDst)
@@ -3047,7 +3096,7 @@ tANI_U32 dot11fUnpackIeESERadMgmtCap(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8
return status;
} /* End dot11fUnpackIeESERadMgmtCap. */
-#define SigIeESERadMgmtCap ( 0x0037 )
+#define SigIeESERadMgmtCap ( 0x0039 )
tANI_U32 dot11fUnpackIeESETrafStrmMet(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEESETrafStrmMet *pDst)
@@ -3067,7 +3116,7 @@ tANI_U32 dot11fUnpackIeESETrafStrmMet(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U
return status;
} /* End dot11fUnpackIeESETrafStrmMet. */
-#define SigIeESETrafStrmMet ( 0x0038 )
+#define SigIeESETrafStrmMet ( 0x003a )
tANI_U32 dot11fUnpackIeESETrafStrmRateSet(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEESETrafStrmRateSet *pDst)
@@ -3090,7 +3139,7 @@ tANI_U32 dot11fUnpackIeESETrafStrmRateSet(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tA
return status;
} /* End dot11fUnpackIeESETrafStrmRateSet. */
-#define SigIeESETrafStrmRateSet ( 0x0039 )
+#define SigIeESETrafStrmRateSet ( 0x003b )
tANI_U32 dot11fUnpackIeESETxmitPower(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEESETxmitPower *pDst)
@@ -3107,7 +3156,7 @@ tANI_U32 dot11fUnpackIeESETxmitPower(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8
return status;
} /* End dot11fUnpackIeESETxmitPower. */
-#define SigIeESETxmitPower ( 0x003a )
+#define SigIeESETxmitPower ( 0x003c )
tANI_U32 dot11fUnpackIeESEVersion(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEESEVersion *pDst)
@@ -3121,7 +3170,7 @@ tANI_U32 dot11fUnpackIeESEVersion(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ie
return status;
} /* End dot11fUnpackIeESEVersion. */
-#define SigIeESEVersion ( 0x003b )
+#define SigIeESEVersion ( 0x003d )
tANI_U32 dot11fUnpackIeExtCap(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEExtCap *pDst)
@@ -3195,10 +3244,10 @@ tANI_U32 dot11fUnpackIeExtCap(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen,
return status;
} /* End dot11fUnpackIeExtCap. */
-#define SigIeExtCap ( 0x003c )
+#define SigIeExtCap ( 0x003e )
-#define SigIeExtChanSwitchAnn ( 0x003d )
+#define SigIeExtChanSwitchAnn ( 0x003f )
tANI_U32 dot11fUnpackIeExtSuppRates(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEExtSuppRates *pDst)
@@ -3226,7 +3275,7 @@ tANI_U32 dot11fUnpackIeExtSuppRates(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8
return status;
} /* End dot11fUnpackIeExtSuppRates. */
-#define SigIeExtSuppRates ( 0x003e )
+#define SigIeExtSuppRates ( 0x0040 )
tANI_U32 dot11fUnpackIeFHParamSet(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEFHParamSet *pDst)
@@ -3249,7 +3298,7 @@ tANI_U32 dot11fUnpackIeFHParamSet(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ie
return status;
} /* End dot11fUnpackIeFHParamSet. */
-#define SigIeFHParamSet ( 0x003f )
+#define SigIeFHParamSet ( 0x0041 )
tANI_U32 dot11fUnpackIeFHParams(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEFHParams *pDst)
@@ -3266,7 +3315,7 @@ tANI_U32 dot11fUnpackIeFHParams(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 iele
return status;
} /* End dot11fUnpackIeFHParams. */
-#define SigIeFHParams ( 0x0040 )
+#define SigIeFHParams ( 0x0042 )
tANI_U32 dot11fUnpackIeFHPattTable(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEFHPattTable *pDst)
@@ -3298,7 +3347,7 @@ tANI_U32 dot11fUnpackIeFHPattTable(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 i
return status;
} /* End dot11fUnpackIeFHPattTable. */
-#define SigIeFHPattTable ( 0x0041 )
+#define SigIeFHPattTable ( 0x0043 )
static const tFFDefn FFS_FTInfo[ ] = {
@@ -3345,7 +3394,7 @@ tANI_U32 dot11fUnpackIeFTInfo(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen,
return status;
} /* End dot11fUnpackIeFTInfo. */
-#define SigIeFTInfo ( 0x0042 )
+#define SigIeFTInfo ( 0x0044 )
tANI_U32 dot11fUnpackIeHTCaps(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEHTCaps *pDst)
@@ -3434,7 +3483,7 @@ tANI_U32 dot11fUnpackIeHTCaps(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen,
return status;
} /* End dot11fUnpackIeHTCaps. */
-#define SigIeHTCaps ( 0x0043 )
+#define SigIeHTCaps ( 0x0045 )
tANI_U32 dot11fUnpackIeHTInfo(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEHTInfo *pDst)
@@ -3489,7 +3538,7 @@ tANI_U32 dot11fUnpackIeHTInfo(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen,
return status;
} /* End dot11fUnpackIeHTInfo. */
-#define SigIeHTInfo ( 0x0044 )
+#define SigIeHTInfo ( 0x0046 )
tANI_U32 dot11fUnpackIeIBSSParams(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEIBSSParams *pDst)
@@ -3503,7 +3552,7 @@ tANI_U32 dot11fUnpackIeIBSSParams(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ie
return status;
} /* End dot11fUnpackIeIBSSParams. */
-#define SigIeIBSSParams ( 0x0045 )
+#define SigIeIBSSParams ( 0x0047 )
tANI_U32 dot11fUnpackIeLinkIdentifier(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIELinkIdentifier *pDst)
@@ -3523,7 +3572,7 @@ tANI_U32 dot11fUnpackIeLinkIdentifier(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U
return status;
} /* End dot11fUnpackIeLinkIdentifier. */
-#define SigIeLinkIdentifier ( 0x0046 )
+#define SigIeLinkIdentifier ( 0x0048 )
static const tFFDefn FFS_reportBeacon[ ] = {
@@ -3681,7 +3730,7 @@ tANI_U32 dot11fUnpackIeMeasurementReport(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tAN
return status;
} /* End dot11fUnpackIeMeasurementReport. */
-#define SigIeMeasurementReport ( 0x0047 )
+#define SigIeMeasurementReport ( 0x0049 )
static const tFFDefn FFS_measurement_requestBeacon[ ] = {
@@ -3786,7 +3835,7 @@ tANI_U32 dot11fUnpackIeMeasurementRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tA
return status;
} /* End dot11fUnpackIeMeasurementRequest. */
-#define SigIeMeasurementRequest ( 0x0048 )
+#define SigIeMeasurementRequest ( 0x004a )
tANI_U32 dot11fUnpackIeMobilityDomain(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEMobilityDomain *pDst)
@@ -3807,7 +3856,7 @@ tANI_U32 dot11fUnpackIeMobilityDomain(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U
return status;
} /* End dot11fUnpackIeMobilityDomain. */
-#define SigIeMobilityDomain ( 0x0049 )
+#define SigIeMobilityDomain ( 0x004b )
static const tFFDefn FFS_NeighborReport[ ] = {
@@ -3874,7 +3923,7 @@ tANI_U32 dot11fUnpackIeNeighborReport(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U
return status;
} /* End dot11fUnpackIeNeighborReport. */
-#define SigIeNeighborReport ( 0x004a )
+#define SigIeNeighborReport ( 0x004c )
tANI_U32 dot11fUnpackIeOBSSScanParameters(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEOBSSScanParameters *pDst)
@@ -3906,7 +3955,7 @@ tANI_U32 dot11fUnpackIeOBSSScanParameters(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tA
return status;
} /* End dot11fUnpackIeOBSSScanParameters. */
-#define SigIeOBSSScanParameters ( 0x004b )
+#define SigIeOBSSScanParameters ( 0x004d )
tANI_U32 dot11fUnpackIeOperatingMode(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEOperatingMode *pDst)
@@ -3925,7 +3974,7 @@ tANI_U32 dot11fUnpackIeOperatingMode(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8
return status;
} /* End dot11fUnpackIeOperatingMode. */
-#define SigIeOperatingMode ( 0x004c )
+#define SigIeOperatingMode ( 0x004e )
static const tTLVDefn TLVS_P2PAssocReq[ ] = {
@@ -3944,7 +3993,7 @@ tANI_U32 dot11fUnpackIeP2PAssocReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 i
return status;
} /* End dot11fUnpackIeP2PAssocReq. */
-#define SigIeP2PAssocReq ( 0x004d )
+#define SigIeP2PAssocReq ( 0x004f )
static const tTLVDefn TLVS_P2PAssocRes[ ] = {
@@ -3962,7 +4011,7 @@ tANI_U32 dot11fUnpackIeP2PAssocRes(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 i
return status;
} /* End dot11fUnpackIeP2PAssocRes. */
-#define SigIeP2PAssocRes ( 0x004e )
+#define SigIeP2PAssocRes ( 0x0050 )
static const tTLVDefn TLVS_P2PBeacon[ ] = {
@@ -3981,7 +4030,7 @@ tANI_U32 dot11fUnpackIeP2PBeacon(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 iel
return status;
} /* End dot11fUnpackIeP2PBeacon. */
-#define SigIeP2PBeacon ( 0x004f )
+#define SigIeP2PBeacon ( 0x0051 )
static const tTLVDefn TLVS_P2PBeaconProbeRes[ ] = {
@@ -4003,7 +4052,7 @@ tANI_U32 dot11fUnpackIeP2PBeaconProbeRes(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tAN
return status;
} /* End dot11fUnpackIeP2PBeaconProbeRes. */
-#define SigIeP2PBeaconProbeRes ( 0x0050 )
+#define SigIeP2PBeaconProbeRes ( 0x0052 )
static const tTLVDefn TLVS_P2PDeAuth[ ] = {
@@ -4020,7 +4069,7 @@ tANI_U32 dot11fUnpackIeP2PDeAuth(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 iel
return status;
} /* End dot11fUnpackIeP2PDeAuth. */
-#define SigIeP2PDeAuth ( 0x0051 )
+#define SigIeP2PDeAuth ( 0x0053 )
static const tTLVDefn TLVS_P2PDeviceDiscoverabilityReq[ ] = {
@@ -4038,7 +4087,7 @@ tANI_U32 dot11fUnpackIeP2PDeviceDiscoverabilityReq(tpAniSirGlobal pCtx, tANI_U8
return status;
} /* End dot11fUnpackIeP2PDeviceDiscoverabilityReq. */
-#define SigIeP2PDeviceDiscoverabilityReq ( 0x0052 )
+#define SigIeP2PDeviceDiscoverabilityReq ( 0x0054 )
static const tTLVDefn TLVS_P2PDeviceDiscoverabilityRes[ ] = {
@@ -4055,7 +4104,7 @@ tANI_U32 dot11fUnpackIeP2PDeviceDiscoverabilityRes(tpAniSirGlobal pCtx, tANI_U8
return status;
} /* End dot11fUnpackIeP2PDeviceDiscoverabilityRes. */
-#define SigIeP2PDeviceDiscoverabilityRes ( 0x0053 )
+#define SigIeP2PDeviceDiscoverabilityRes ( 0x0055 )
static const tTLVDefn TLVS_P2PDisAssoc[ ] = {
@@ -4072,7 +4121,7 @@ tANI_U32 dot11fUnpackIeP2PDisAssoc(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 i
return status;
} /* End dot11fUnpackIeP2PDisAssoc. */
-#define SigIeP2PDisAssoc ( 0x0054 )
+#define SigIeP2PDisAssoc ( 0x0056 )
static const tTLVDefn TLVS_P2PGONegCnf[ ] = {
@@ -4093,7 +4142,7 @@ tANI_U32 dot11fUnpackIeP2PGONegCnf(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 i
return status;
} /* End dot11fUnpackIeP2PGONegCnf. */
-#define SigIeP2PGONegCnf ( 0x0055 )
+#define SigIeP2PGONegCnf ( 0x0057 )
static const tTLVDefn TLVS_P2PGONegReq[ ] = {
@@ -4118,7 +4167,7 @@ tANI_U32 dot11fUnpackIeP2PGONegReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 i
return status;
} /* End dot11fUnpackIeP2PGONegReq. */
-#define SigIeP2PGONegReq ( 0x0056 )
+#define SigIeP2PGONegReq ( 0x0058 )
static const tTLVDefn TLVS_P2PGONegRes[ ] = {
@@ -4143,7 +4192,7 @@ tANI_U32 dot11fUnpackIeP2PGONegRes(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 i
return status;
} /* End dot11fUnpackIeP2PGONegRes. */
-#define SigIeP2PGONegRes ( 0x0057 )
+#define SigIeP2PGONegRes ( 0x0059 )
static const tTLVDefn TLVS_P2PGONegWPS[ ] = {
@@ -4161,7 +4210,7 @@ tANI_U32 dot11fUnpackIeP2PGONegWPS(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 i
return status;
} /* End dot11fUnpackIeP2PGONegWPS. */
-#define SigIeP2PGONegWPS ( 0x0058 )
+#define SigIeP2PGONegWPS ( 0x005a )
tANI_U32 dot11fUnpackIeP2PIEOpaque(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEP2PIEOpaque *pDst)
@@ -4181,7 +4230,7 @@ tANI_U32 dot11fUnpackIeP2PIEOpaque(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 i
return status;
} /* End dot11fUnpackIeP2PIEOpaque. */
-#define SigIeP2PIEOpaque ( 0x0059 )
+#define SigIeP2PIEOpaque ( 0x005b )
static const tTLVDefn TLVS_P2PInvitationReq[ ] = {
@@ -4204,7 +4253,7 @@ tANI_U32 dot11fUnpackIeP2PInvitationReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI
return status;
} /* End dot11fUnpackIeP2PInvitationReq. */
-#define SigIeP2PInvitationReq ( 0x005a )
+#define SigIeP2PInvitationReq ( 0x005c )
static const tTLVDefn TLVS_P2PInvitationRes[ ] = {
@@ -4225,7 +4274,7 @@ tANI_U32 dot11fUnpackIeP2PInvitationRes(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI
return status;
} /* End dot11fUnpackIeP2PInvitationRes. */
-#define SigIeP2PInvitationRes ( 0x005b )
+#define SigIeP2PInvitationRes ( 0x005d )
static const tTLVDefn TLVS_P2PNoticeOfAbsence[ ] = {
@@ -4242,7 +4291,7 @@ tANI_U32 dot11fUnpackIeP2PNoticeOfAbsence(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tA
return status;
} /* End dot11fUnpackIeP2PNoticeOfAbsence. */
-#define SigIeP2PNoticeOfAbsence ( 0x005c )
+#define SigIeP2PNoticeOfAbsence ( 0x005e )
static const tTLVDefn TLVS_P2PPresenceResponse[ ] = {
@@ -4260,7 +4309,7 @@ tANI_U32 dot11fUnpackIeP2PPresenceResponse(tpAniSirGlobal pCtx, tANI_U8 *pBuf, t
return status;
} /* End dot11fUnpackIeP2PPresenceResponse. */
-#define SigIeP2PPresenceResponse ( 0x005d )
+#define SigIeP2PPresenceResponse ( 0x005f )
static const tTLVDefn TLVS_P2PProbeReq[ ] = {
@@ -4281,7 +4330,7 @@ tANI_U32 dot11fUnpackIeP2PProbeReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 i
return status;
} /* End dot11fUnpackIeP2PProbeReq. */
-#define SigIeP2PProbeReq ( 0x005e )
+#define SigIeP2PProbeReq ( 0x0060 )
static const tTLVDefn TLVS_P2PProbeRes[ ] = {
@@ -4302,7 +4351,7 @@ tANI_U32 dot11fUnpackIeP2PProbeRes(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 i
return status;
} /* End dot11fUnpackIeP2PProbeRes. */
-#define SigIeP2PProbeRes ( 0x005f )
+#define SigIeP2PProbeRes ( 0x0061 )
static const tTLVDefn TLVS_P2PProvisionDiscoveryReq[ ] = {
@@ -4321,7 +4370,7 @@ tANI_U32 dot11fUnpackIeP2PProvisionDiscoveryReq(tpAniSirGlobal pCtx, tANI_U8 *pB
return status;
} /* End dot11fUnpackIeP2PProvisionDiscoveryReq. */
-#define SigIeP2PProvisionDiscoveryReq ( 0x0060 )
+#define SigIeP2PProvisionDiscoveryReq ( 0x0062 )
static const tTLVDefn TLVS_P2PWSCProvisionDiscoveryRes[ ] = {
@@ -4338,7 +4387,7 @@ tANI_U32 dot11fUnpackIeP2PWSCProvisionDiscoveryRes(tpAniSirGlobal pCtx, tANI_U8
return status;
} /* End dot11fUnpackIeP2PWSCProvisionDiscoveryRes. */
-#define SigIeP2PWSCProvisionDiscoveryRes ( 0x0061 )
+#define SigIeP2PWSCProvisionDiscoveryRes ( 0x0063 )
tANI_U32 dot11fUnpackIePTIControl(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEPTIControl *pDst)
@@ -4355,7 +4404,7 @@ tANI_U32 dot11fUnpackIePTIControl(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ie
return status;
} /* End dot11fUnpackIePTIControl. */
-#define SigIePTIControl ( 0x0062 )
+#define SigIePTIControl ( 0x0064 )
tANI_U32 dot11fUnpackIePUBufferStatus(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEPUBufferStatus *pDst)
@@ -4375,7 +4424,7 @@ tANI_U32 dot11fUnpackIePUBufferStatus(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U
return status;
} /* End dot11fUnpackIePUBufferStatus. */
-#define SigIePUBufferStatus ( 0x0063 )
+#define SigIePUBufferStatus ( 0x0065 )
tANI_U32 dot11fUnpackIePowerCaps(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEPowerCaps *pDst)
@@ -4392,7 +4441,7 @@ tANI_U32 dot11fUnpackIePowerCaps(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 iel
return status;
} /* End dot11fUnpackIePowerCaps. */
-#define SigIePowerCaps ( 0x0064 )
+#define SigIePowerCaps ( 0x0066 )
tANI_U32 dot11fUnpackIePowerConstraints(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEPowerConstraints *pDst)
@@ -4406,7 +4455,7 @@ tANI_U32 dot11fUnpackIePowerConstraints(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI
return status;
} /* End dot11fUnpackIePowerConstraints. */
-#define SigIePowerConstraints ( 0x0065 )
+#define SigIePowerConstraints ( 0x0067 )
tANI_U32 dot11fUnpackIeQBSSLoad(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEQBSSLoad *pDst)
@@ -4426,7 +4475,7 @@ tANI_U32 dot11fUnpackIeQBSSLoad(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 iele
return status;
} /* End dot11fUnpackIeQBSSLoad. */
-#define SigIeQBSSLoad ( 0x0066 )
+#define SigIeQBSSLoad ( 0x0068 )
tANI_U32 dot11fUnpackIeQOSCapsAp(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEQOSCapsAp *pDst)
@@ -4446,7 +4495,7 @@ tANI_U32 dot11fUnpackIeQOSCapsAp(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 iel
return status;
} /* End dot11fUnpackIeQOSCapsAp. */
-#define SigIeQOSCapsAp ( 0x0067 )
+#define SigIeQOSCapsAp ( 0x0069 )
tANI_U32 dot11fUnpackIeQOSCapsStation(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEQOSCapsStation *pDst)
@@ -4468,7 +4517,7 @@ tANI_U32 dot11fUnpackIeQOSCapsStation(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U
return status;
} /* End dot11fUnpackIeQOSCapsStation. */
-#define SigIeQOSCapsStation ( 0x0068 )
+#define SigIeQOSCapsStation ( 0x006a )
tANI_U32 dot11fUnpackIeQosMapSet(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEQosMapSet *pDst)
@@ -4488,7 +4537,7 @@ tANI_U32 dot11fUnpackIeQosMapSet(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 iel
return status;
} /* End dot11fUnpackIeQosMapSet. */
-#define SigIeQosMapSet ( 0x0069 )
+#define SigIeQosMapSet ( 0x006b )
tANI_U32 dot11fUnpackIeQuiet(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEQuiet *pDst)
@@ -4511,7 +4560,7 @@ tANI_U32 dot11fUnpackIeQuiet(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen,
return status;
} /* End dot11fUnpackIeQuiet. */
-#define SigIeQuiet ( 0x006a )
+#define SigIeQuiet ( 0x006c )
tANI_U32 dot11fUnpackIeRCPIIE(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIERCPIIE *pDst)
@@ -4525,7 +4574,7 @@ tANI_U32 dot11fUnpackIeRCPIIE(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen,
return status;
} /* End dot11fUnpackIeRCPIIE. */
-#define SigIeRCPIIE ( 0x006b )
+#define SigIeRCPIIE ( 0x006d )
static const tFFDefn FFS_RICDataDesc[ ] = {
@@ -4565,7 +4614,7 @@ tANI_U32 dot11fUnpackIeRICDataDesc(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 i
return status;
} /* End dot11fUnpackIeRICDataDesc. */
-#define SigIeRICDataDesc ( 0x006c )
+#define SigIeRICDataDesc ( 0x006e )
tANI_U32 dot11fUnpackIeRSN(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIERSN *pDst)
@@ -4668,7 +4717,7 @@ tANI_U32 dot11fUnpackIeRSN(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tD
return status;
} /* End dot11fUnpackIeRSN. */
-#define SigIeRSN ( 0x006d )
+#define SigIeRSN ( 0x006f )
tANI_U32 dot11fUnpackIeRSNIIE(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIERSNIIE *pDst)
@@ -4682,7 +4731,7 @@ tANI_U32 dot11fUnpackIeRSNIIE(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen,
return status;
} /* End dot11fUnpackIeRSNIIE. */
-#define SigIeRSNIIE ( 0x006e )
+#define SigIeRSNIIE ( 0x0070 )
tANI_U32 dot11fUnpackIeRSNOpaque(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIERSNOpaque *pDst)
@@ -4702,7 +4751,7 @@ tANI_U32 dot11fUnpackIeRSNOpaque(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 iel
return status;
} /* End dot11fUnpackIeRSNOpaque. */
-#define SigIeRSNOpaque ( 0x006f )
+#define SigIeRSNOpaque ( 0x0071 )
tANI_U32 dot11fUnpackIeSuppChannels(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIESuppChannels *pDst)
@@ -4722,7 +4771,7 @@ tANI_U32 dot11fUnpackIeSuppChannels(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8
return status;
} /* End dot11fUnpackIeSuppChannels. */
-#define SigIeSuppChannels ( 0x0070 )
+#define SigIeSuppChannels ( 0x0072 )
tANI_U32 dot11fUnpackIeSuppOperatingClasses(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIESuppOperatingClasses *pDst)
@@ -4742,7 +4791,7 @@ tANI_U32 dot11fUnpackIeSuppOperatingClasses(tpAniSirGlobal pCtx, tANI_U8 *pBuf,
return status;
} /* End dot11fUnpackIeSuppOperatingClasses. */
-#define SigIeSuppOperatingClasses ( 0x0071 )
+#define SigIeSuppOperatingClasses ( 0x0073 )
tANI_U32 dot11fUnpackIeSuppRates(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIESuppRates *pDst)
@@ -4770,7 +4819,7 @@ tANI_U32 dot11fUnpackIeSuppRates(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 iel
return status;
} /* End dot11fUnpackIeSuppRates. */
-#define SigIeSuppRates ( 0x0072 )
+#define SigIeSuppRates ( 0x0074 )
tANI_U32 dot11fUnpackIeTIM(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIETIM *pDst)
@@ -4799,7 +4848,7 @@ tANI_U32 dot11fUnpackIeTIM(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tD
return status;
} /* End dot11fUnpackIeTIM. */
-#define SigIeTIM ( 0x0073 )
+#define SigIeTIM ( 0x0075 )
tANI_U32 dot11fUnpackIeTPCReport(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIETPCReport *pDst)
@@ -4816,7 +4865,7 @@ tANI_U32 dot11fUnpackIeTPCReport(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 iel
return status;
} /* End dot11fUnpackIeTPCReport. */
-#define SigIeTPCReport ( 0x0074 )
+#define SigIeTPCReport ( 0x0076 )
tANI_U32 dot11fUnpackIeTPCRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIETPCRequest *pDst)
@@ -4829,7 +4878,7 @@ tANI_U32 dot11fUnpackIeTPCRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ie
return status;
} /* End dot11fUnpackIeTPCRequest. */
-#define SigIeTPCRequest ( 0x0075 )
+#define SigIeTPCRequest ( 0x0077 )
tANI_U32 dot11fUnpackIeTimeoutInterval(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIETimeoutInterval *pDst)
@@ -4846,7 +4895,7 @@ tANI_U32 dot11fUnpackIeTimeoutInterval(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_
return status;
} /* End dot11fUnpackIeTimeoutInterval. */
-#define SigIeTimeoutInterval ( 0x0076 )
+#define SigIeTimeoutInterval ( 0x0078 )
tANI_U32 dot11fUnpackIeVHTCaps(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEVHTCaps *pDst)
@@ -4899,7 +4948,7 @@ tANI_U32 dot11fUnpackIeVHTCaps(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen
return status;
} /* End dot11fUnpackIeVHTCaps. */
-#define SigIeVHTCaps ( 0x0077 )
+#define SigIeVHTCaps ( 0x0079 )
tANI_U32 dot11fUnpackIeVHTExtBssLoad(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEVHTExtBssLoad *pDst)
@@ -4925,7 +4974,7 @@ tANI_U32 dot11fUnpackIeVHTExtBssLoad(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8
return status;
} /* End dot11fUnpackIeVHTExtBssLoad. */
-#define SigIeVHTExtBssLoad ( 0x0078 )
+#define SigIeVHTExtBssLoad ( 0x007a )
tANI_U32 dot11fUnpackIeVHTOperation(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEVHTOperation *pDst)
@@ -4948,7 +4997,7 @@ tANI_U32 dot11fUnpackIeVHTOperation(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8
return status;
} /* End dot11fUnpackIeVHTOperation. */
-#define SigIeVHTOperation ( 0x0079 )
+#define SigIeVHTOperation ( 0x007b )
tANI_U32 dot11fUnpackIeVendor1IE(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEVendor1IE *pDst)
@@ -4961,7 +5010,7 @@ tANI_U32 dot11fUnpackIeVendor1IE(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 iel
return status;
} /* End dot11fUnpackIeVendor1IE. */
-#define SigIeVendor1IE ( 0x007a )
+#define SigIeVendor1IE ( 0x007c )
tANI_U32 dot11fUnpackIeVendor2IE(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEVendor2IE *pDst)
@@ -4974,7 +5023,7 @@ tANI_U32 dot11fUnpackIeVendor2IE(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 iel
return status;
} /* End dot11fUnpackIeVendor2IE. */
-#define SigIeVendor2IE ( 0x007b )
+#define SigIeVendor2IE ( 0x007d )
tANI_U32 dot11fUnpackIeVendor3IE(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEVendor3IE *pDst)
@@ -4987,7 +5036,7 @@ tANI_U32 dot11fUnpackIeVendor3IE(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 iel
return status;
} /* End dot11fUnpackIeVendor3IE. */
-#define SigIeVendor3IE ( 0x007c )
+#define SigIeVendor3IE ( 0x007e )
tANI_U32 dot11fUnpackIeWAPI(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWAPI *pDst)
@@ -5056,7 +5105,7 @@ tANI_U32 dot11fUnpackIeWAPI(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, t
return status;
} /* End dot11fUnpackIeWAPI. */
-#define SigIeWAPI ( 0x007d )
+#define SigIeWAPI ( 0x007f )
tANI_U32 dot11fUnpackIeWAPIOpaque(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWAPIOpaque *pDst)
@@ -5076,7 +5125,7 @@ tANI_U32 dot11fUnpackIeWAPIOpaque(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ie
return status;
} /* End dot11fUnpackIeWAPIOpaque. */
-#define SigIeWAPIOpaque ( 0x007e )
+#define SigIeWAPIOpaque ( 0x0080 )
tANI_U32 dot11fUnpackIeWFATPC(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWFATPC *pDst)
@@ -5093,7 +5142,7 @@ tANI_U32 dot11fUnpackIeWFATPC(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen,
return status;
} /* End dot11fUnpackIeWFATPC. */
-#define SigIeWFATPC ( 0x007f )
+#define SigIeWFATPC ( 0x0081 )
tANI_U32 dot11fUnpackIeWFDIEOpaque(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWFDIEOpaque *pDst)
@@ -5113,7 +5162,7 @@ tANI_U32 dot11fUnpackIeWFDIEOpaque(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 i
return status;
} /* End dot11fUnpackIeWFDIEOpaque. */
-#define SigIeWFDIEOpaque ( 0x0080 )
+#define SigIeWFDIEOpaque ( 0x0082 )
tANI_U32 dot11fUnpackIeWMMCaps(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWMMCaps *pDst)
@@ -5141,7 +5190,7 @@ tANI_U32 dot11fUnpackIeWMMCaps(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen
return status;
} /* End dot11fUnpackIeWMMCaps. */
-#define SigIeWMMCaps ( 0x0081 )
+#define SigIeWMMCaps ( 0x0083 )
tANI_U32 dot11fUnpackIeWMMInfoAp(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWMMInfoAp *pDst)
@@ -5162,7 +5211,7 @@ tANI_U32 dot11fUnpackIeWMMInfoAp(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 iel
return status;
} /* End dot11fUnpackIeWMMInfoAp. */
-#define SigIeWMMInfoAp ( 0x0082 )
+#define SigIeWMMInfoAp ( 0x0084 )
tANI_U32 dot11fUnpackIeWMMInfoStation(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWMMInfoStation *pDst)
@@ -5187,7 +5236,7 @@ tANI_U32 dot11fUnpackIeWMMInfoStation(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U
return status;
} /* End dot11fUnpackIeWMMInfoStation. */
-#define SigIeWMMInfoStation ( 0x0083 )
+#define SigIeWMMInfoStation ( 0x0085 )
tANI_U32 dot11fUnpackIeWMMParams(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWMMParams *pDst)
@@ -5280,7 +5329,7 @@ tANI_U32 dot11fUnpackIeWMMParams(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 iel
return status;
} /* End dot11fUnpackIeWMMParams. */
-#define SigIeWMMParams ( 0x0084 )
+#define SigIeWMMParams ( 0x0086 )
tANI_U32 dot11fUnpackIeWPA(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWPA *pDst)
@@ -5362,7 +5411,7 @@ tANI_U32 dot11fUnpackIeWPA(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tD
return status;
} /* End dot11fUnpackIeWPA. */
-#define SigIeWPA ( 0x0085 )
+#define SigIeWPA ( 0x0087 )
tANI_U32 dot11fUnpackIeWPAOpaque(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWPAOpaque *pDst)
@@ -5382,7 +5431,7 @@ tANI_U32 dot11fUnpackIeWPAOpaque(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 iel
return status;
} /* End dot11fUnpackIeWPAOpaque. */
-#define SigIeWPAOpaque ( 0x0086 )
+#define SigIeWPAOpaque ( 0x0088 )
static const tTLVDefn TLVS_WSC[ ] = {
@@ -5420,27 +5469,7 @@ tANI_U32 dot11fUnpackIeWSC(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tD
return status;
} /* End dot11fUnpackIeWSC. */
-#define SigIeWSC ( 0x0087 )
-
-
-tANI_U32 dot11fUnpackIeWiderBWChanSwitchAnn(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWiderBWChanSwitchAnn *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->newChanWidth = *pBuf;
- pBuf += 1;
- ielen -= (tANI_U8)1;
- pDst->newCenterChanFreq0 = *pBuf;
- pBuf += 1;
- ielen -= (tANI_U8)1;
- pDst->newCenterChanFreq1 = *pBuf;
- (void)pCtx;
- return status;
-} /* End dot11fUnpackIeWiderBWChanSwitchAnn. */
-
-#define SigIeWiderBWChanSwitchAnn ( 0x0088 )
+#define SigIeWSC ( 0x0089 )
static const tTLVDefn TLVS_WscAssocReq[ ] = {
@@ -5459,7 +5488,7 @@ tANI_U32 dot11fUnpackIeWscAssocReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 i
return status;
} /* End dot11fUnpackIeWscAssocReq. */
-#define SigIeWscAssocReq ( 0x0089 )
+#define SigIeWscAssocReq ( 0x008a )
static const tTLVDefn TLVS_WscAssocRes[ ] = {
@@ -5478,7 +5507,7 @@ tANI_U32 dot11fUnpackIeWscAssocRes(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 i
return status;
} /* End dot11fUnpackIeWscAssocRes. */
-#define SigIeWscAssocRes ( 0x008a )
+#define SigIeWscAssocRes ( 0x008b )
static const tTLVDefn TLVS_WscBeacon[ ] = {
@@ -5503,7 +5532,7 @@ tANI_U32 dot11fUnpackIeWscBeacon(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 iel
return status;
} /* End dot11fUnpackIeWscBeacon. */
-#define SigIeWscBeacon ( 0x008b )
+#define SigIeWscBeacon ( 0x008c )
static const tTLVDefn TLVS_WscBeaconProbeRes[ ] = {
@@ -5536,7 +5565,7 @@ tANI_U32 dot11fUnpackIeWscBeaconProbeRes(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tAN
return status;
} /* End dot11fUnpackIeWscBeaconProbeRes. */
-#define SigIeWscBeaconProbeRes ( 0x008c )
+#define SigIeWscBeaconProbeRes ( 0x008d )
tANI_U32 dot11fUnpackIeWscIEOpaque(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 ielen, tDot11fIEWscIEOpaque *pDst)
@@ -5556,7 +5585,7 @@ tANI_U32 dot11fUnpackIeWscIEOpaque(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 i
return status;
} /* End dot11fUnpackIeWscIEOpaque. */
-#define SigIeWscIEOpaque ( 0x008d )
+#define SigIeWscIEOpaque ( 0x008e )
static const tTLVDefn TLVS_WscProbeReq[ ] = {
@@ -5587,7 +5616,7 @@ tANI_U32 dot11fUnpackIeWscProbeReq(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 i
return status;
} /* End dot11fUnpackIeWscProbeReq. */
-#define SigIeWscProbeReq ( 0x008e )
+#define SigIeWscProbeReq ( 0x008f )
static const tTLVDefn TLVS_WscProbeRes[ ] = {
@@ -5620,7 +5649,7 @@ tANI_U32 dot11fUnpackIeWscProbeRes(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8 i
return status;
} /* End dot11fUnpackIeWscProbeRes. */
-#define SigIeWscProbeRes ( 0x008f )
+#define SigIeWscProbeRes ( 0x0090 )
static const tTLVDefn TLVS_WscReassocRes[ ] = {
@@ -5639,7 +5668,7 @@ tANI_U32 dot11fUnpackIeWscReassocRes(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U8
return status;
} /* End dot11fUnpackIeWscReassocRes. */
-#define SigIeWscReassocRes ( 0x0090 )
+#define SigIeWscReassocRes ( 0x0091 )
static const tFFDefn FFS_AddBAReq[] = {
@@ -8604,6 +8633,7 @@ tANI_U32 dot11fUnpackAuthentication(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32
{offsetof(tDot11fBeacon, Vendor1IE), offsetof(tDot11fIEVendor1IE, present), 0, "Vendor1IE" , 0, 5, 5, SigIeVendor1IE, {0, 16, 24, 0, 0}, 3, DOT11F_EID_VENDOR1IE, 0, },
{offsetof(tDot11fBeacon, Vendor2IE), offsetof(tDot11fIEVendor2IE, present), 0, "Vendor2IE" , 0, 5, 5, SigIeVendor2IE, {0, 144, 76, 0, 0}, 3, DOT11F_EID_VENDOR2IE, 0, },
{offsetof(tDot11fBeacon, Vendor3IE), offsetof(tDot11fIEVendor3IE, present), 0, "Vendor3IE" , 0, 5, 5, SigIeVendor3IE, {0, 22, 50, 0, 0}, 3, DOT11F_EID_VENDOR3IE, 0, },
+ {offsetof(tDot11fBeacon, ChannelSwitchWrapper), offsetof(tDot11fIEChannelSwitchWrapper, present), 0, "ChannelSwitchWrapper" , 0, 2, 7, SigIeChannelSwitchWrapper, {0, 0, 0, 0, 0}, 0, DOT11F_EID_CHANNELSWITCHWRAPPER, 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)
@@ -9727,6 +9757,25 @@ tANI_U32 dot11fUnpackBeacon(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf, t
else
{
}
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("ChannelSwitchWrapper:\n"));
+ if (!pFrm->ChannelSwitchWrapper.present)
+ {
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("Not present.\n"));
+ }
+ else
+ {
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("WiderBWChanSwitchAnn:\n"));
+ if (!pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.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->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newChanWidth, 1);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* )&pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newCenterChanFreq0, 1);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* )&pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newCenterChanFreq1, 1);
+ }
+ }
}
# endif // DOT11F_DUMP_FRAMES
return status;
@@ -9865,6 +9914,7 @@ tANI_U32 dot11fUnpackBeacon1(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf,
{offsetof(tDot11fBeacon2, Vendor1IE), offsetof(tDot11fIEVendor1IE, present), 0, "Vendor1IE" , 0, 5, 5, SigIeVendor1IE, {0, 16, 24, 0, 0}, 3, DOT11F_EID_VENDOR1IE, 0, },
{offsetof(tDot11fBeacon2, Vendor2IE), offsetof(tDot11fIEVendor2IE, present), 0, "Vendor2IE" , 0, 5, 5, SigIeVendor2IE, {0, 144, 76, 0, 0}, 3, DOT11F_EID_VENDOR2IE, 0, },
{offsetof(tDot11fBeacon2, Vendor3IE), offsetof(tDot11fIEVendor3IE, present), 0, "Vendor3IE" , 0, 5, 5, SigIeVendor3IE, {0, 22, 50, 0, 0}, 3, DOT11F_EID_VENDOR3IE, 0, },
+ {offsetof(tDot11fBeacon2, ChannelSwitchWrapper), offsetof(tDot11fIEChannelSwitchWrapper, present), 0, "ChannelSwitchWrapper" , 0, 2, 7, SigIeChannelSwitchWrapper, {0, 0, 0, 0, 0}, 0, DOT11F_EID_CHANNELSWITCHWRAPPER, 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)
@@ -10821,6 +10871,25 @@ tANI_U32 dot11fUnpackBeacon2(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf,
else
{
}
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("ChannelSwitchWrapper:\n"));
+ if (!pFrm->ChannelSwitchWrapper.present)
+ {
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("Not present.\n"));
+ }
+ else
+ {
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("WiderBWChanSwitchAnn:\n"));
+ if (!pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.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->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newChanWidth, 1);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* )&pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newCenterChanFreq0, 1);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* )&pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newCenterChanFreq1, 1);
+ }
+ }
}
# endif // DOT11F_DUMP_FRAMES
return status;
@@ -10880,6 +10949,7 @@ tANI_U32 dot11fUnpackBeacon2(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf,
{offsetof(tDot11fBeaconIEs, Vendor1IE), offsetof(tDot11fIEVendor1IE, present), 0, "Vendor1IE" , 0, 5, 5, SigIeVendor1IE, {0, 16, 24, 0, 0}, 3, DOT11F_EID_VENDOR1IE, 0, },
{offsetof(tDot11fBeaconIEs, Vendor2IE), offsetof(tDot11fIEVendor2IE, present), 0, "Vendor2IE" , 0, 5, 5, SigIeVendor2IE, {0, 144, 76, 0, 0}, 3, DOT11F_EID_VENDOR2IE, 0, },
{offsetof(tDot11fBeaconIEs, Vendor3IE), offsetof(tDot11fIEVendor3IE, present), 0, "Vendor3IE" , 0, 5, 5, SigIeVendor3IE, {0, 22, 50, 0, 0}, 3, DOT11F_EID_VENDOR3IE, 0, },
+ {offsetof(tDot11fBeaconIEs, ChannelSwitchWrapper), offsetof(tDot11fIEChannelSwitchWrapper, present), 0, "ChannelSwitchWrapper" , 0, 2, 7, SigIeChannelSwitchWrapper, {0, 0, 0, 0, 0}, 0, DOT11F_EID_CHANNELSWITCHWRAPPER, 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)
@@ -12111,6 +12181,25 @@ tANI_U32 dot11fUnpackBeaconIEs(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 nBuf
else
{
}
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("ChannelSwitchWrapper:\n"));
+ if (!pFrm->ChannelSwitchWrapper.present)
+ {
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("Not present.\n"));
+ }
+ else
+ {
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("WiderBWChanSwitchAnn:\n"));
+ if (!pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.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->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newChanWidth, 1);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* )&pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newCenterChanFreq0, 1);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* )&pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newCenterChanFreq1, 1);
+ }
+ }
}
# endif // DOT11F_DUMP_FRAMES
return status;
@@ -14388,6 +14477,7 @@ tANI_U32 dot11fUnpackProbeRequest(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32 n
{offsetof(tDot11fProbeResponse, Vendor1IE), offsetof(tDot11fIEVendor1IE, present), 0, "Vendor1IE" , 0, 5, 5, SigIeVendor1IE, {0, 16, 24, 0, 0}, 3, DOT11F_EID_VENDOR1IE, 0, },
{offsetof(tDot11fProbeResponse, Vendor2IE), offsetof(tDot11fIEVendor2IE, present), 0, "Vendor2IE" , 0, 5, 5, SigIeVendor2IE, {0, 144, 76, 0, 0}, 3, DOT11F_EID_VENDOR2IE, 0, },
{offsetof(tDot11fProbeResponse, Vendor3IE), offsetof(tDot11fIEVendor3IE, present), 0, "Vendor3IE" , 0, 5, 5, SigIeVendor3IE, {0, 22, 50, 0, 0}, 3, DOT11F_EID_VENDOR3IE, 0, },
+ {offsetof(tDot11fProbeResponse, ChannelSwitchWrapper), offsetof(tDot11fIEChannelSwitchWrapper, present), 0, "ChannelSwitchWrapper" , 0, 2, 7, SigIeChannelSwitchWrapper, {0, 0, 0, 0, 0}, 0, DOT11F_EID_CHANNELSWITCHWRAPPER, 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)
@@ -15565,6 +15655,25 @@ tANI_U32 dot11fUnpackProbeResponse(tpAniSirGlobal pCtx, tANI_U8 *pBuf, tANI_U32
else
{
}
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("ChannelSwitchWrapper:\n"));
+ if (!pFrm->ChannelSwitchWrapper.present)
+ {
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("Not present.\n"));
+ }
+ else
+ {
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("WiderBWChanSwitchAnn:\n"));
+ if (!pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.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->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newChanWidth, 1);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* )&pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newCenterChanFreq0, 1);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* )&pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newCenterChanFreq1, 1);
+ }
+ }
}
# endif // DOT11F_DUMP_FRAMES
return status;
@@ -20828,6 +20937,9 @@ static tANI_U32 UnpackCore(tpAniSirGlobal pCtx,
case SigIeWMMTSPEC:
status |= dot11fUnpackIeWMMTSPEC(pCtx, pBufRemaining, len, ( tDot11fIEWMMTSPEC* )(pFrm + pIe->offset + sizeof(tDot11fIEWMMTSPEC)*countOffset) );
break;
+ case SigIeWiderBWChanSwitchAnn:
+ status |= dot11fUnpackIeWiderBWChanSwitchAnn(pCtx, pBufRemaining, len, ( tDot11fIEWiderBWChanSwitchAnn* )(pFrm + pIe->offset + sizeof(tDot11fIEWiderBWChanSwitchAnn)*countOffset) );
+ break;
case SigIeAID:
status |= dot11fUnpackIeAID(pCtx, pBufRemaining, len, ( tDot11fIEAID* )(pFrm + pIe->offset + sizeof(tDot11fIEAID)*countOffset) );
break;
@@ -20843,6 +20955,9 @@ static tANI_U32 UnpackCore(tpAniSirGlobal pCtx,
case SigIeChanSwitchAnn:
status |= dot11fUnpackIeChanSwitchAnn(pCtx, pBufRemaining, len, ( tDot11fIEChanSwitchAnn* )(pFrm + pIe->offset + sizeof(tDot11fIEChanSwitchAnn)*countOffset) );
break;
+ case SigIeChannelSwitchWrapper:
+ status |= dot11fUnpackIeChannelSwitchWrapper(pCtx, pBufRemaining, len, ( tDot11fIEChannelSwitchWrapper* )(pFrm + pIe->offset + sizeof(tDot11fIEChannelSwitchWrapper)*countOffset) );
+ break;
case SigIeCountry:
status |= dot11fUnpackIeCountry(pCtx, pBufRemaining, len, ( tDot11fIECountry* )(pFrm + pIe->offset + sizeof(tDot11fIECountry)*countOffset) );
break;
@@ -21115,9 +21230,6 @@ static tANI_U32 UnpackCore(tpAniSirGlobal pCtx,
case SigIeWSC:
status |= dot11fUnpackIeWSC(pCtx, pBufRemaining, len, ( tDot11fIEWSC* )(pFrm + pIe->offset + sizeof(tDot11fIEWSC)*countOffset) );
break;
- case SigIeWiderBWChanSwitchAnn:
- status |= dot11fUnpackIeWiderBWChanSwitchAnn(pCtx, pBufRemaining, len, ( tDot11fIEWiderBWChanSwitchAnn* )(pFrm + pIe->offset + sizeof(tDot11fIEWiderBWChanSwitchAnn)*countOffset) );
- break;
case SigIeWscAssocReq:
status |= dot11fUnpackIeWscAssocReq(pCtx, pBufRemaining, len, ( tDot11fIEWscAssocReq* )(pFrm + pIe->offset + sizeof(tDot11fIEWscAssocReq)*countOffset) );
break;
@@ -21668,6 +21780,18 @@ tANI_U32 dot11fGetPackedIEAirgo(tpAniSirGlobal pCtx, tDot11fIEAirgo *pIe, tANI_U
return status;
} /* End dot11fGetPackedIEAirgo. */
+tANI_U32 dot11fGetPackedIEChannelSwitchWrapper(tpAniSirGlobal pCtx, tDot11fIEChannelSwitchWrapper *pIe, tANI_U32 *pnNeeded)
+{
+ tANI_U32 status = DOT11F_PARSE_SUCCESS;
+ (void)pCtx;
+ while ( pIe->present )
+ {
+ status = GetPackedSizeCore(pCtx, ( tANI_U8* )pIe, pnNeeded, IES_ChannelSwitchWrapper);
+ break;
+ }
+ return status;
+} /* End dot11fGetPackedIEChannelSwitchWrapper. */
+
tANI_U32 dot11fGetPackedIECountry(tpAniSirGlobal pCtx, tDot11fIECountry *pIe, tANI_U32 *pnNeeded)
{
tANI_U32 status = DOT11F_PARSE_SUCCESS;
@@ -22997,6 +23121,11 @@ static tANI_U32 GetPackedSizeCore(tpAniSirGlobal pCtx,
byteCount = 56;
pIePresent = ( (tDot11fIEWMMTSPEC* )(pFrm + pIe->offset + offset * i ))->present;
break;
+ case SigIeWiderBWChanSwitchAnn:
+ offset = sizeof(tDot11fIEWiderBWChanSwitchAnn);
+ byteCount = 3;
+ pIePresent = ( (tDot11fIEWiderBWChanSwitchAnn* )(pFrm + pIe->offset + offset * i ))->present;
+ break;
case SigIeAID:
offset = sizeof(tDot11fIEAID);
byteCount = 2;
@@ -23021,6 +23150,10 @@ static tANI_U32 GetPackedSizeCore(tpAniSirGlobal pCtx,
byteCount = 3;
pIePresent = ( (tDot11fIEChanSwitchAnn* )(pFrm + pIe->offset + offset * i ))->present;
break;
+ case SigIeChannelSwitchWrapper:
+ offset = sizeof(tDot11fIEChannelSwitchWrapper);
+ status |= dot11fGetPackedIEChannelSwitchWrapper(pCtx, ( tDot11fIEChannelSwitchWrapper* )(pFrm + pIe->offset + offset * i ), pnNeeded);
+ break;
case SigIeCountry:
offset = sizeof(tDot11fIECountry);
status |= dot11fGetPackedIECountry(pCtx, ( tDot11fIECountry* )(pFrm + pIe->offset + offset * i ), pnNeeded);
@@ -23422,11 +23555,6 @@ static tANI_U32 GetPackedSizeCore(tpAniSirGlobal pCtx,
offset = sizeof(tDot11fIEWSC);
status |= dot11fGetPackedIEWSC(pCtx, ( tDot11fIEWSC* )(pFrm + pIe->offset + offset * i ), pnNeeded);
break;
- case SigIeWiderBWChanSwitchAnn:
- offset = sizeof(tDot11fIEWiderBWChanSwitchAnn);
- byteCount = 3;
- pIePresent = ( (tDot11fIEWiderBWChanSwitchAnn* )(pFrm + pIe->offset + offset * i ))->present;
- break;
case SigIeWscAssocReq:
offset = sizeof(tDot11fIEWscAssocReq);
status |= dot11fGetPackedIEWscAssocReq(pCtx, ( tDot11fIEWscAssocReq* )(pFrm + pIe->offset + offset * i ), pnNeeded);
@@ -27396,6 +27524,42 @@ tANI_U32 dot11fPackIeWMMTSPEC(tpAniSirGlobal pCtx,
return DOT11F_PARSE_SUCCESS;
} /* End dot11fPackIeWMMTSPEC. */
+tANI_U32 dot11fPackIeWiderBWChanSwitchAnn(tpAniSirGlobal pCtx,
+ tDot11fIEWiderBWChanSwitchAnn *pSrc,
+ tANI_U8 *pBuf,
+ tANI_U32 nBuf,
+ tANI_U32 *pnConsumed)
+{
+ tANI_U8* pIeLen = 0;
+ tANI_U32 nConsumedOnEntry = *pnConsumed;
+ tANI_U32 nNeeded = 0U;
+ nNeeded += 3;
+ while ( pSrc->present )
+ {
+ if ( nNeeded > nBuf ) return DOT11F_BUFFER_OVERFLOW;
+ *pBuf = 194;
+ ++pBuf; ++(*pnConsumed);
+ pIeLen = pBuf;
+ ++pBuf; ++(*pnConsumed);
+ *pBuf = pSrc->newChanWidth;
+ *pnConsumed += 1;
+ pBuf += 1;
+ *pBuf = pSrc->newCenterChanFreq0;
+ *pnConsumed += 1;
+ pBuf += 1;
+ *pBuf = pSrc->newCenterChanFreq1;
+ *pnConsumed += 1;
+ // fieldsEndFlag = 1
+ break;
+ }
+ (void)pCtx;
+ if (pIeLen)
+ {
+ *pIeLen = *pnConsumed - nConsumedOnEntry - 2;
+ }
+ return DOT11F_PARSE_SUCCESS;
+} /* End dot11fPackIeWiderBWChanSwitchAnn. */
+
tANI_U32 dot11fPackIeAID(tpAniSirGlobal pCtx,
tDot11fIEAID *pSrc,
tANI_U8 *pBuf,
@@ -27573,6 +27737,42 @@ tANI_U32 dot11fPackIeChanSwitchAnn(tpAniSirGlobal pCtx,
return DOT11F_PARSE_SUCCESS;
} /* End dot11fPackIeChanSwitchAnn. */
+tANI_U32 dot11fPackIeChannelSwitchWrapper(tpAniSirGlobal pCtx,
+ tDot11fIEChannelSwitchWrapper *pSrc,
+ tANI_U8 *pBuf,
+ tANI_U32 nBuf,
+ tANI_U32 *pnConsumed)
+{
+ tANI_U8* pIeLen = 0;
+ tANI_U32 nConsumedOnEntry = *pnConsumed;
+ tANI_U32 nNeeded = 0U;
+ tANI_U32 status = DOT11F_PARSE_SUCCESS;
+ status = dot11fGetPackedIEChannelSwitchWrapper(pCtx, pSrc, &nNeeded);
+ if ( ! DOT11F_SUCCEEDED( status ) ) return status;
+ while ( pSrc->present )
+ {
+ if ( nNeeded > nBuf ) return DOT11F_BUFFER_OVERFLOW;
+ *pBuf = 196;
+ ++pBuf; --nBuf; ++(*pnConsumed);
+ pIeLen = pBuf;
+ ++pBuf; --nBuf; ++(*pnConsumed);
+ status = PackCore(pCtx,
+ (tANI_U8*)pSrc,
+ pBuf,
+ nBuf,
+ pnConsumed,
+ FFS_ChannelSwitchWrapper,
+ IES_ChannelSwitchWrapper);
+ break;
+ }
+ (void)pCtx;
+ if (pIeLen)
+ {
+ *pIeLen = *pnConsumed - nConsumedOnEntry - 2;
+ }
+ return status;
+} /* End dot11fPackIeChannelSwitchWrapper. */
+
tANI_U32 dot11fPackIeCountry(tpAniSirGlobal pCtx,
tDot11fIECountry *pSrc,
tANI_U8 *pBuf,
@@ -31578,42 +31778,6 @@ tANI_U32 dot11fPackIeWSC(tpAniSirGlobal pCtx,
return status;
} /* End dot11fPackIeWSC. */
-tANI_U32 dot11fPackIeWiderBWChanSwitchAnn(tpAniSirGlobal pCtx,
- tDot11fIEWiderBWChanSwitchAnn *pSrc,
- tANI_U8 *pBuf,
- tANI_U32 nBuf,
- tANI_U32 *pnConsumed)
-{
- tANI_U8* pIeLen = 0;
- tANI_U32 nConsumedOnEntry = *pnConsumed;
- tANI_U32 nNeeded = 0U;
- nNeeded += 3;
- while ( pSrc->present )
- {
- if ( nNeeded > nBuf ) return DOT11F_BUFFER_OVERFLOW;
- *pBuf = 194;
- ++pBuf; ++(*pnConsumed);
- pIeLen = pBuf;
- ++pBuf; ++(*pnConsumed);
- *pBuf = pSrc->newChanWidth;
- *pnConsumed += 1;
- pBuf += 1;
- *pBuf = pSrc->newCenterChanFreq0;
- *pnConsumed += 1;
- pBuf += 1;
- *pBuf = pSrc->newCenterChanFreq1;
- *pnConsumed += 1;
- // fieldsEndFlag = 1
- break;
- }
- (void)pCtx;
- if (pIeLen)
- {
- *pIeLen = *pnConsumed - nConsumedOnEntry - 2;
- }
- return DOT11F_PARSE_SUCCESS;
-} /* End dot11fPackIeWiderBWChanSwitchAnn. */
-
tANI_U32 dot11fPackIeWscAssocReq(tpAniSirGlobal pCtx,
tDot11fIEWscAssocReq *pSrc,
tANI_U8 *pBuf,
@@ -35836,6 +36000,25 @@ tANI_U32 dot11fPackBeacon(tpAniSirGlobal pCtx, tDot11fBeacon *pFrm, tANI_U8 *pBu
else
{
}
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("ChannelSwitchWrapper:\n"));
+ if (!pFrm->ChannelSwitchWrapper.present)
+ {
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("Not present.\n"));
+ }
+ else
+ {
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), FRFL("WiderBWChanSwitchAnn:\n"));
+ if (!pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.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->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newChanWidth, 1);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* )&pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newCenterChanFreq0, 1);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON), ( tANI_U8* )&pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newCenterChanFreq1, 1);
+ }
+ }
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);
}
@@ -36876,6 +37059,25 @@ tANI_U32 dot11fPackBeacon2(tpAniSirGlobal pCtx, tDot11fBeacon2 *pFrm, tANI_U8 *p
else
{
}
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("ChannelSwitchWrapper:\n"));
+ if (!pFrm->ChannelSwitchWrapper.present)
+ {
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("Not present.\n"));
+ }
+ else
+ {
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), FRFL("WiderBWChanSwitchAnn:\n"));
+ if (!pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.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->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newChanWidth, 1);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* )&pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newCenterChanFreq0, 1);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACON2), ( tANI_U8* )&pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newCenterChanFreq1, 1);
+ }
+ }
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);
}
@@ -38112,6 +38314,25 @@ tANI_U32 dot11fPackBeaconIEs(tpAniSirGlobal pCtx, tDot11fBeaconIEs *pFrm, tANI_U
else
{
}
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("ChannelSwitchWrapper:\n"));
+ if (!pFrm->ChannelSwitchWrapper.present)
+ {
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("Not present.\n"));
+ }
+ else
+ {
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), FRFL("WiderBWChanSwitchAnn:\n"));
+ if (!pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.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->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newChanWidth, 1);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* )&pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newCenterChanFreq0, 1);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_BEACONIES), ( tANI_U8* )&pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newCenterChanFreq1, 1);
+ }
+ }
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);
}
@@ -41245,6 +41466,25 @@ tANI_U32 dot11fPackProbeResponse(tpAniSirGlobal pCtx, tDot11fProbeResponse *pFrm
else
{
}
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("ChannelSwitchWrapper:\n"));
+ if (!pFrm->ChannelSwitchWrapper.present)
+ {
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("Not present.\n"));
+ }
+ else
+ {
+ FRAMES_LOG0(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), FRFL("WiderBWChanSwitchAnn:\n"));
+ if (!pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.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->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newChanWidth, 1);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* )&pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newCenterChanFreq0, 1);
+ FRAMES_DUMP(pCtx, FRAMES_SEV_FOR_FRAME(pCtx, DOT11F_PROBERESPONSE), ( tANI_U8* )&pFrm->ChannelSwitchWrapper.WiderBWChanSwitchAnn.newCenterChanFreq1, 1);
+ }
+ }
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);
}
@@ -46075,6 +46315,9 @@ static tANI_U32 PackCore(tpAniSirGlobal pCtx,
case SigIeWMMTSPEC:
status |= dot11fPackIeWMMTSPEC(pCtx, ( tDot11fIEWMMTSPEC* )(pSrc + pIe->offset + sizeof(tDot11fIEWMMTSPEC) * i ), pBufRemaining, nBufRemaining, &len);
break;
+ case SigIeWiderBWChanSwitchAnn:
+ status |= dot11fPackIeWiderBWChanSwitchAnn(pCtx, ( tDot11fIEWiderBWChanSwitchAnn* )(pSrc + pIe->offset + sizeof(tDot11fIEWiderBWChanSwitchAnn) * i ), pBufRemaining, nBufRemaining, &len);
+ break;
case SigIeAID:
status |= dot11fPackIeAID(pCtx, ( tDot11fIEAID* )(pSrc + pIe->offset + sizeof(tDot11fIEAID) * i ), pBufRemaining, nBufRemaining, &len);
break;
@@ -46090,6 +46333,9 @@ static tANI_U32 PackCore(tpAniSirGlobal pCtx,
case SigIeChanSwitchAnn:
status |= dot11fPackIeChanSwitchAnn(pCtx, ( tDot11fIEChanSwitchAnn* )(pSrc + pIe->offset + sizeof(tDot11fIEChanSwitchAnn) * i ), pBufRemaining, nBufRemaining, &len);
break;
+ case SigIeChannelSwitchWrapper:
+ status |= dot11fPackIeChannelSwitchWrapper(pCtx, ( tDot11fIEChannelSwitchWrapper* )(pSrc + pIe->offset + sizeof(tDot11fIEChannelSwitchWrapper) * i ), pBufRemaining, nBufRemaining, &len);
+ break;
case SigIeCountry:
status |= dot11fPackIeCountry(pCtx, ( tDot11fIECountry* )(pSrc + pIe->offset + sizeof(tDot11fIECountry) * i ), pBufRemaining, nBufRemaining, &len);
break;
@@ -46348,9 +46594,6 @@ static tANI_U32 PackCore(tpAniSirGlobal pCtx,
case SigIeWSC:
status |= dot11fPackIeWSC(pCtx, ( tDot11fIEWSC* )(pSrc + pIe->offset + sizeof(tDot11fIEWSC) * i ), pBufRemaining, nBufRemaining, &len);
break;
- case SigIeWiderBWChanSwitchAnn:
- status |= dot11fPackIeWiderBWChanSwitchAnn(pCtx, ( tDot11fIEWiderBWChanSwitchAnn* )(pSrc + pIe->offset + sizeof(tDot11fIEWiderBWChanSwitchAnn) * i ), pBufRemaining, nBufRemaining, &len);
- break;
case SigIeWscAssocReq:
status |= dot11fPackIeWscAssocReq(pCtx, ( tDot11fIEWscAssocReq* )(pSrc + pIe->offset + sizeof(tDot11fIEWscAssocReq) * 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 d476461bff14..a894ee4b58dd 100644
--- a/CORE/SYS/legacy/src/utils/src/parserApi.c
+++ b/CORE/SYS/legacy/src/utils/src/parserApi.c
@@ -295,6 +295,42 @@ PopulateDot11fExtChanSwitchAnn(tpAniSirGlobal pMac,
pDot11f->present = 1;
}
+void
+PopulateDot11fChanSwitchWrapper(tpAniSirGlobal pMac,
+ tDot11fIEChannelSwitchWrapper *pDot11f,
+ tpPESession psessionEntry)
+{
+ /*
+ * The new country subelement is present only when
+ * 1. AP performs Extended Channel switching to new country.
+ * 2. New Operating Class table or a changed set of operating
+ * classes relative to the contents of the country element sent
+ * in the beacons.
+ *
+ * In the current scenario Channel Switch wrapper IE is included
+ * when we a radar is found and the AP does a channel change in
+ * the same regulatory domain(No country change or Operating class
+ * table). So, we do not need to include the New Country IE.
+ *
+ * Transmit Power Envlope Subelement is optional
+ * in Channel Switch Wrapper IE. So, not setting
+ * the TPE subelement. We include only WiderBWChanSwitchAnn.
+ */
+ pDot11f->present = 1;
+
+ /*
+ * Add the Wide Channel Bandwidth Sublement.
+ */
+ pDot11f->WiderBWChanSwitchAnn.newChanWidth =
+ psessionEntry->gLimWiderBWChannelSwitch.newChanWidth;
+ pDot11f->WiderBWChanSwitchAnn.newCenterChanFreq0 =
+ psessionEntry->gLimWiderBWChannelSwitch.newCenterChanFreq0;
+ pDot11f->WiderBWChanSwitchAnn.newCenterChanFreq1 =
+ psessionEntry->gLimWiderBWChannelSwitch.newCenterChanFreq1;
+ pDot11f->WiderBWChanSwitchAnn.present = 1;
+
+}
+
#ifdef WLAN_FEATURE_11AC
void
PopulateDot11fWiderBWChanSwitchAnn(tpAniSirGlobal pMac,