qcacld-3.0: Add VHT transmit power envelope IE in chan switch wrapper

qcacld-2.0 to qcacld-3.0 propagation

Add changes to support VHT transmit power envelope sub element in
channel switch wrapper.

Change-Id: Ieac517ec44238034e1a5539cbe10ebbefb30dd09
CRs-Fixed: 1052716
This commit is contained in:
Abhishek Singh 2016-08-29 16:05:11 +05:30 • committed by Gerrit - the friendly Code Review server
commit 37456d231d
4 changed files with 245 additions and 97 deletions

View file

@ -120,6 +120,7 @@ const EID_AID = 197;
const EID_EXT_CAP = 127;
const EID_OPERATING_MODE = 199;
const EID_WIDER_BW_CHANNEL_SWITCH_ANN= 194;
const VHT_TRANSMIT_POWER_ENVELOPE = 195;
const EID_CHANNEL_SWITCH_WRAPPER = 196;
const EID_VENDOR_SPECIFIC = 221;
@ -2248,9 +2249,15 @@ IE WiderBWChanSwitchAnn (EID_WIDER_BW_CHANNEL_SWITCH_ANN)
newCenterChanFreq1, 1;
}
IE vht_transmit_power_env (VHT_TRANSMIT_POWER_ENVELOPE)
{
bytes[2..5];
}
IE ChannelSwitchWrapper (EID_CHANNEL_SWITCH_WRAPPER)
{
OPTIE IE WiderBWChanSwitchAnn;
OPTIE IE vht_transmit_power_env;
}
IE ExtCap (EID_EXT_CAP)
{

View file

@ -3581,6 +3581,45 @@ uint32_t dot11f_get_packed_ie_tgt_mac_addr(
}; /* End extern "C". */
#endif /* C++ */
/* EID 195 (0xc3) */
typedef struct sDot11fIEvht_transmit_power_env {
uint8_t present;
uint8_t num_bytes;
uint8_t bytes[5];
} tDot11fIEvht_transmit_power_env;
#define DOT11F_EID_VHT_TRANSMIT_POWER_ENV (195)
/* N.B. These #defines do *not* include the EID & length */
#define DOT11F_IE_VHT_TRANSMIT_POWER_ENV_MIN_LEN (2)
#define DOT11F_IE_VHT_TRANSMIT_POWER_ENV_MAX_LEN (5)
#ifdef __cplusplus
extern "C" {
#endif /* C++ */
uint32_t dot11f_unpack_ie_vht_transmit_power_env(
tpAniSirGlobal,
uint8_t *,
uint8_t,
tDot11fIEvht_transmit_power_env*);
uint32_t dot11f_pack_ie_vht_transmit_power_env(
tpAniSirGlobal,
tDot11fIEvht_transmit_power_env *,
uint8_t *,
uint32_t,
uint32_t*);
uint32_t dot11f_get_packed_ie_vht_transmit_power_env(
tpAniSirGlobal,
tDot11fIEvht_transmit_power_env *,
uint32_t*);
#ifdef __cplusplus
}; /* End extern "C". */
#endif /* C++ */
/* EID 197 (0xc5) */
typedef struct sDot11fIEAID {
uint8_t present;
@ -3743,6 +3782,7 @@ uint32_t dot11f_get_packed_ie_ChanSwitchAnn(
typedef struct sDot11fIEChannelSwitchWrapper {
uint8_t present;
tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn;
tDot11fIEvht_transmit_power_env vht_transmit_power_env;
} tDot11fIEChannelSwitchWrapper;
#define DOT11F_EID_CHANNELSWITCHWRAPPER (196)
@ -3750,7 +3790,7 @@ typedef struct sDot11fIEChannelSwitchWrapper {
/* N.B. These #defines do *not* include the EID & length */
#define DOT11F_IE_CHANNELSWITCHWRAPPER_MIN_LEN (0)
#define DOT11F_IE_CHANNELSWITCHWRAPPER_MAX_LEN (5)
#define DOT11F_IE_CHANNELSWITCHWRAPPER_MAX_LEN (12)
#ifdef __cplusplus
extern "C" {

View file

@ -2526,6 +2526,30 @@ uint32_t dot11f_unpack_ie_tgt_mac_addr(tpAniSirGlobal pCtx,
#define SigIetgt_mac_addr (0x0023)
uint32_t dot11f_unpack_ie_vht_transmit_power_env(tpAniSirGlobal pCtx,
uint8_t *pBuf,
uint8_t ielen,
tDot11fIEvht_transmit_power_env *pDst)
{
uint32_t status = DOT11F_PARSE_SUCCESS;
(void) pBuf; (void)ielen; /* Shutup the compiler */
if (pDst->present)
status = DOT11F_DUPLICATE_IE;
pDst->present = 1;
pDst->num_bytes = (uint8_t)(ielen);
if (ielen > 5) {
pDst->present = 0;
return DOT11F_SKIPPED_BAD_IE;
}
DOT11F_MEMCPY(pCtx, pDst->bytes, pBuf, (ielen));
(void)pCtx;
return status;
} /* End dot11f_unpack_ie_vht_transmit_power_env. */
#define SigIevht_transmit_power_env (0x0024)
uint32_t dot11f_unpack_ie_aid(tpAniSirGlobal pCtx,
uint8_t *pBuf,
uint8_t ielen,
@ -2541,7 +2565,7 @@ uint32_t dot11f_unpack_ie_aid(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_aid. */
#define SigIeAID (0x0024)
#define SigIeAID (0x0025)
uint32_t dot11f_unpack_ie_cf_params(tpAniSirGlobal pCtx,
@ -2568,7 +2592,7 @@ uint32_t dot11f_unpack_ie_cf_params(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_cf_params. */
#define SigIeCFParams (0x0025)
#define SigIeCFParams (0x0026)
uint32_t dot11f_unpack_ie_challenge_text(tpAniSirGlobal pCtx,
@ -2592,7 +2616,7 @@ uint32_t dot11f_unpack_ie_challenge_text(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_challenge_text. */
#define SigIeChallengeText (0x0026)
#define SigIeChallengeText (0x0027)
uint32_t dot11f_unpack_ie_chan_switch_ann(tpAniSirGlobal pCtx,
@ -2616,7 +2640,7 @@ uint32_t dot11f_unpack_ie_chan_switch_ann(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_chan_switch_ann. */
#define SigIeChanSwitchAnn (0x0027)
#define SigIeChanSwitchAnn (0x0028)
static const tFFDefn FFS_ChannelSwitchWrapper[] = {
@ -2628,6 +2652,10 @@ static const tIEDefn IES_ChannelSwitchWrapper[] = {
offsetof(tDot11fIEWiderBWChanSwitchAnn, present), 0,
"WiderBWChanSwitchAnn", 0, 5, 5, SigIeWiderBWChanSwitchAnn,
{0, 0, 0, 0, 0}, 0, DOT11F_EID_WIDERBWCHANSWITCHANN, 0, },
{ offsetof(tDot11fIEChannelSwitchWrapper, vht_transmit_power_env),
offsetof(tDot11fIEvht_transmit_power_env, present), 0,
"vht_transmit_power_env", 0, 4, 7, SigIevht_transmit_power_env,
{0, 0, 0, 0, 0}, 0, DOT11F_EID_VHT_TRANSMIT_POWER_ENV, 0, },
{0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },
};
@ -2652,7 +2680,7 @@ uint32_t dot11f_unpack_ie_channel_switch_wrapper(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_channel_switch_wrapper. */
#define SigIeChannelSwitchWrapper (0x0028)
#define SigIeChannelSwitchWrapper (0x0029)
uint32_t dot11f_unpack_ie_country(tpAniSirGlobal pCtx,
@ -2684,10 +2712,10 @@ uint32_t dot11f_unpack_ie_country(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_country. */
#define SigIeCountry (0x0029)
#define SigIeCountry (0x002a)
#define SigIeDSParams (0x002a)
#define SigIeDSParams (0x002b)
uint32_t dot11f_unpack_ie_edca_param_set(tpAniSirGlobal pCtx,
@ -2776,7 +2804,7 @@ uint32_t dot11f_unpack_ie_edca_param_set(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_edca_param_set. */
#define SigIeEDCAParamSet (0x002b)
#define SigIeEDCAParamSet (0x002c)
uint32_t dot11f_unpack_ie_erp_info(tpAniSirGlobal pCtx,
@ -2799,7 +2827,7 @@ uint32_t dot11f_unpack_ie_erp_info(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_erp_info. */
#define SigIeERPInfo (0x002c)
#define SigIeERPInfo (0x002d)
uint32_t dot11f_unpack_ie_ese_cckm_opaque(tpAniSirGlobal pCtx,
@ -2823,7 +2851,7 @@ uint32_t dot11f_unpack_ie_ese_cckm_opaque(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_ese_cckm_opaque. */
#define SigIeESECckmOpaque (0x002d)
#define SigIeESECckmOpaque (0x002e)
uint32_t dot11f_unpack_ie_ese_rad_mgmt_cap(tpAniSirGlobal pCtx,
@ -2847,7 +2875,7 @@ uint32_t dot11f_unpack_ie_ese_rad_mgmt_cap(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_ese_rad_mgmt_cap. */
#define SigIeESERadMgmtCap (0x002e)
#define SigIeESERadMgmtCap (0x002f)
uint32_t dot11f_unpack_ie_ese_traf_strm_met(tpAniSirGlobal pCtx,
@ -2871,7 +2899,7 @@ uint32_t dot11f_unpack_ie_ese_traf_strm_met(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_ese_traf_strm_met. */
#define SigIeESETrafStrmMet (0x002f)
#define SigIeESETrafStrmMet (0x0030)
uint32_t dot11f_unpack_ie_ese_traf_strm_rate_set(tpAniSirGlobal pCtx,
@ -2898,7 +2926,7 @@ uint32_t dot11f_unpack_ie_ese_traf_strm_rate_set(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_ese_traf_strm_rate_set. */
#define SigIeESETrafStrmRateSet (0x0030)
#define SigIeESETrafStrmRateSet (0x0031)
uint32_t dot11f_unpack_ie_ese_txmit_power(tpAniSirGlobal pCtx,
@ -2919,7 +2947,7 @@ uint32_t dot11f_unpack_ie_ese_txmit_power(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_ese_txmit_power. */
#define SigIeESETxmitPower (0x0031)
#define SigIeESETxmitPower (0x0032)
uint32_t dot11f_unpack_ie_ese_version(tpAniSirGlobal pCtx,
@ -2937,7 +2965,7 @@ uint32_t dot11f_unpack_ie_ese_version(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_ese_version. */
#define SigIeESEVersion (0x0032)
#define SigIeESEVersion (0x0033)
uint32_t dot11f_unpack_ie_ext_cap(tpAniSirGlobal pCtx,
@ -2966,7 +2994,7 @@ endUnpackIeExtCap:
return status;
} /* End dot11f_unpack_ie_ext_cap. */
#define SigIeExtCap (0x0033)
#define SigIeExtCap (0x0034)
uint32_t dot11f_unpack_ie_ext_supp_rates(tpAniSirGlobal pCtx,
@ -2998,7 +3026,7 @@ uint32_t dot11f_unpack_ie_ext_supp_rates(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_ext_supp_rates. */
#define SigIeExtSuppRates (0x0034)
#define SigIeExtSuppRates (0x0035)
uint32_t dot11f_unpack_ie_fh_param_set(tpAniSirGlobal pCtx,
@ -3025,7 +3053,7 @@ uint32_t dot11f_unpack_ie_fh_param_set(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_fh_param_set. */
#define SigIeFHParamSet (0x0035)
#define SigIeFHParamSet (0x0036)
uint32_t dot11f_unpack_ie_fh_params(tpAniSirGlobal pCtx,
@ -3046,7 +3074,7 @@ uint32_t dot11f_unpack_ie_fh_params(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_fh_params. */
#define SigIeFHParams (0x0036)
#define SigIeFHParams (0x0037)
uint32_t dot11f_unpack_ie_fh_patt_table(tpAniSirGlobal pCtx,
@ -3082,7 +3110,7 @@ uint32_t dot11f_unpack_ie_fh_patt_table(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_fh_patt_table. */
#define SigIeFHPattTable (0x0037)
#define SigIeFHPattTable (0x0038)
static const tFFDefn FFS_FTInfo[] = {
@ -3139,7 +3167,7 @@ uint32_t dot11f_unpack_ie_ft_info(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_ft_info. */
#define SigIeFTInfo (0x0038)
#define SigIeFTInfo (0x0039)
uint32_t dot11f_unpack_ie_ht_caps(tpAniSirGlobal pCtx,
@ -3232,7 +3260,7 @@ uint32_t dot11f_unpack_ie_ht_caps(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_ht_caps. */
#define SigIeHTCaps (0x0039)
#define SigIeHTCaps (0x003a)
uint32_t dot11f_unpack_ie_ht_info(tpAniSirGlobal pCtx,
@ -3291,7 +3319,7 @@ uint32_t dot11f_unpack_ie_ht_info(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_ht_info. */
#define SigIeHTInfo (0x003a)
#define SigIeHTInfo (0x003b)
uint32_t dot11f_unpack_ie_ibss_params(tpAniSirGlobal pCtx,
@ -3309,7 +3337,7 @@ uint32_t dot11f_unpack_ie_ibss_params(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_ibss_params. */
#define SigIeIBSSParams (0x003b)
#define SigIeIBSSParams (0x003c)
uint32_t dot11f_unpack_ie_link_identifier(tpAniSirGlobal pCtx,
@ -3333,7 +3361,7 @@ uint32_t dot11f_unpack_ie_link_identifier(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_link_identifier. */
#define SigIeLinkIdentifier (0x003c)
#define SigIeLinkIdentifier (0x003d)
uint32_t dot11f_unpack_ie_MBO_IE(tpAniSirGlobal pCtx,
@ -3360,7 +3388,7 @@ uint32_t dot11f_unpack_ie_MBO_IE(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_MBO_IE. */
#define SigIeMBO_IE (0x003d)
#define SigIeMBO_IE (0x003e)
static const tFFDefn FFS_reportBeacon[] = {
@ -3522,7 +3550,7 @@ uint32_t dot11f_unpack_ie_measurement_report(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_measurement_report. */
#define SigIeMeasurementReport (0x003e)
#define SigIeMeasurementReport (0x003f)
static const tFFDefn FFS_measurement_requestBeacon[] = {
@ -3714,7 +3742,7 @@ uint32_t dot11f_unpack_ie_measurement_request(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_measurement_request. */
#define SigIeMeasurementRequest (0x003f)
#define SigIeMeasurementRequest (0x0040)
uint32_t dot11f_unpack_ie_mobility_domain(tpAniSirGlobal pCtx,
@ -3739,7 +3767,7 @@ uint32_t dot11f_unpack_ie_mobility_domain(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_mobility_domain. */
#define SigIeMobilityDomain (0x0040)
#define SigIeMobilityDomain (0x0041)
static const tFFDefn FFS_NeighborReport[] = {
@ -3824,7 +3852,7 @@ uint32_t dot11f_unpack_ie_neighbor_report(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_neighbor_report. */
#define SigIeNeighborReport (0x0041)
#define SigIeNeighborReport (0x0042)
uint32_t dot11f_unpack_ie_obss_scan_parameters(tpAniSirGlobal pCtx,
@ -3860,7 +3888,7 @@ uint32_t dot11f_unpack_ie_obss_scan_parameters(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_obss_scan_parameters. */
#define SigIeOBSSScanParameters (0x0042)
#define SigIeOBSSScanParameters (0x0043)
uint32_t dot11f_unpack_ie_operating_mode(tpAniSirGlobal pCtx,
@ -3883,7 +3911,7 @@ uint32_t dot11f_unpack_ie_operating_mode(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_operating_mode. */
#define SigIeOperatingMode (0x0043)
#define SigIeOperatingMode (0x0044)
static const tTLVDefn TLVS_P2PAssocReq[] = {
@ -3914,7 +3942,7 @@ uint32_t dot11f_unpack_ie_p2_p_assoc_req(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_p2_p_assoc_req. */
#define SigIeP2PAssocReq (0x0044)
#define SigIeP2PAssocReq (0x0045)
static const tTLVDefn TLVS_P2PAssocRes[] = {
@ -3942,7 +3970,7 @@ uint32_t dot11f_unpack_ie_p2_p_assoc_res(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_p2_p_assoc_res. */
#define SigIeP2PAssocRes (0x0045)
#define SigIeP2PAssocRes (0x0046)
static const tTLVDefn TLVS_P2PBeacon[] = {
@ -3973,7 +4001,7 @@ uint32_t dot11f_unpack_ie_p2_p_beacon(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_p2_p_beacon. */
#define SigIeP2PBeacon (0x0046)
#define SigIeP2PBeacon (0x0047)
static const tTLVDefn TLVS_P2PBeaconProbeRes[] = {
@ -4014,7 +4042,7 @@ uint32_t dot11f_unpack_ie_p2_p_beacon_probe_res(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_p2_p_beacon_probe_res. */
#define SigIeP2PBeaconProbeRes (0x0047)
#define SigIeP2PBeaconProbeRes (0x0048)
static const tTLVDefn TLVS_P2PDeAuth[] = {
@ -4039,7 +4067,7 @@ uint32_t dot11f_unpack_ie_p2_p_de_auth(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_p2_p_de_auth. */
#define SigIeP2PDeAuth (0x0048)
#define SigIeP2PDeAuth (0x0049)
static const tTLVDefn TLVS_P2PDisAssoc[] = {
@ -4064,7 +4092,7 @@ uint32_t dot11f_unpack_ie_p2_p_dis_assoc(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_p2_p_dis_assoc. */
#define SigIeP2PDisAssoc (0x0049)
#define SigIeP2PDisAssoc (0x004a)
uint32_t dot11f_unpack_ie_p2_pie_opaque(tpAniSirGlobal pCtx,
@ -4088,7 +4116,7 @@ uint32_t dot11f_unpack_ie_p2_pie_opaque(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_p2_pie_opaque. */
#define SigIeP2PIEOpaque (0x004a)
#define SigIeP2PIEOpaque (0x004b)
static const tTLVDefn TLVS_P2PProbeReq[] = {
@ -4126,7 +4154,7 @@ uint32_t dot11f_unpack_ie_p2_p_probe_req(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_p2_p_probe_req. */
#define SigIeP2PProbeReq (0x004b)
#define SigIeP2PProbeReq (0x004c)
static const tTLVDefn TLVS_P2PProbeRes[] = {
@ -4164,7 +4192,7 @@ uint32_t dot11f_unpack_ie_p2_p_probe_res(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_p2_p_probe_res. */
#define SigIeP2PProbeRes (0x004c)
#define SigIeP2PProbeRes (0x004d)
uint32_t dot11f_unpack_ie_pti_control(tpAniSirGlobal pCtx,
@ -4185,7 +4213,7 @@ uint32_t dot11f_unpack_ie_pti_control(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_pti_control. */
#define SigIePTIControl (0x004d)
#define SigIePTIControl (0x004e)
uint32_t dot11f_unpack_ie_pu_buffer_status(tpAniSirGlobal pCtx,
@ -4209,7 +4237,7 @@ uint32_t dot11f_unpack_ie_pu_buffer_status(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_pu_buffer_status. */
#define SigIePUBufferStatus (0x004e)
#define SigIePUBufferStatus (0x004f)
uint32_t dot11f_unpack_ie_power_caps(tpAniSirGlobal pCtx,
@ -4230,7 +4258,7 @@ uint32_t dot11f_unpack_ie_power_caps(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_power_caps. */
#define SigIePowerCaps (0x004f)
#define SigIePowerCaps (0x0050)
uint32_t dot11f_unpack_ie_power_constraints(tpAniSirGlobal pCtx,
@ -4248,7 +4276,7 @@ uint32_t dot11f_unpack_ie_power_constraints(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_power_constraints. */
#define SigIePowerConstraints (0x0050)
#define SigIePowerConstraints (0x0051)
uint32_t dot11f_unpack_ie_qbss_load(tpAniSirGlobal pCtx,
@ -4272,7 +4300,7 @@ uint32_t dot11f_unpack_ie_qbss_load(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_qbss_load. */
#define SigIeQBSSLoad (0x0051)
#define SigIeQBSSLoad (0x0052)
uint32_t dot11f_unpack_ie_QComVendorIE(tpAniSirGlobal pCtx,
@ -4293,7 +4321,7 @@ uint32_t dot11f_unpack_ie_QComVendorIE(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_QComVendorIE. */
#define SigIeQComVendorIE (0x0052)
#define SigIeQComVendorIE (0x0053)
uint32_t dot11f_unpack_ie_qos_caps_ap(tpAniSirGlobal pCtx,
@ -4317,7 +4345,7 @@ uint32_t dot11f_unpack_ie_qos_caps_ap(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_qos_caps_ap. */
#define SigIeQOSCapsAp (0x0053)
#define SigIeQOSCapsAp (0x0054)
uint32_t dot11f_unpack_ie_qos_caps_station(tpAniSirGlobal pCtx,
@ -4343,7 +4371,7 @@ uint32_t dot11f_unpack_ie_qos_caps_station(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_qos_caps_station. */
#define SigIeQOSCapsStation (0x0054)
#define SigIeQOSCapsStation (0x0055)
uint32_t dot11f_unpack_ie_qos_map_set(tpAniSirGlobal pCtx,
@ -4367,7 +4395,7 @@ uint32_t dot11f_unpack_ie_qos_map_set(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_qos_map_set. */
#define SigIeQosMapSet (0x0055)
#define SigIeQosMapSet (0x0056)
uint32_t dot11f_unpack_ie_quiet(tpAniSirGlobal pCtx,
@ -4394,7 +4422,7 @@ uint32_t dot11f_unpack_ie_quiet(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_quiet. */
#define SigIeQuiet (0x0056)
#define SigIeQuiet (0x0057)
uint32_t dot11f_unpack_ie_rcpiie(tpAniSirGlobal pCtx,
@ -4412,7 +4440,7 @@ uint32_t dot11f_unpack_ie_rcpiie(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_rcpiie. */
#define SigIeRCPIIE (0x0057)
#define SigIeRCPIIE (0x0058)
static const tFFDefn FFS_RICDataDesc[] = {
@ -4486,7 +4514,7 @@ uint32_t dot11f_unpack_ie_ric_data_desc(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_ric_data_desc. */
#define SigIeRICDataDesc (0x0058)
#define SigIeRICDataDesc (0x0059)
uint32_t dot11f_unpack_ie_rsn(tpAniSirGlobal pCtx,
@ -4577,7 +4605,7 @@ uint32_t dot11f_unpack_ie_rsn(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_rsn. */
#define SigIeRSN (0x0059)
#define SigIeRSN (0x005a)
uint32_t dot11f_unpack_ie_rsniie(tpAniSirGlobal pCtx,
@ -4595,7 +4623,7 @@ uint32_t dot11f_unpack_ie_rsniie(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_rsniie. */
#define SigIeRSNIIE (0x005a)
#define SigIeRSNIIE (0x005b)
uint32_t dot11f_unpack_ie_rsn_opaque(tpAniSirGlobal pCtx,
@ -4619,7 +4647,7 @@ uint32_t dot11f_unpack_ie_rsn_opaque(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_rsn_opaque. */
#define SigIeRSNOpaque (0x005b)
#define SigIeRSNOpaque (0x005c)
uint32_t dot11f_unpack_ie_supp_channels(tpAniSirGlobal pCtx,
@ -4643,7 +4671,7 @@ uint32_t dot11f_unpack_ie_supp_channels(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_supp_channels. */
#define SigIeSuppChannels (0x005c)
#define SigIeSuppChannels (0x005d)
uint32_t dot11f_unpack_ie_supp_operating_classes(tpAniSirGlobal pCtx,
@ -4667,7 +4695,7 @@ uint32_t dot11f_unpack_ie_supp_operating_classes(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_supp_operating_classes. */
#define SigIeSuppOperatingClasses (0x005d)
#define SigIeSuppOperatingClasses (0x005e)
uint32_t dot11f_unpack_ie_supp_rates(tpAniSirGlobal pCtx,
@ -4699,7 +4727,7 @@ uint32_t dot11f_unpack_ie_supp_rates(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_supp_rates. */
#define SigIeSuppRates (0x005e)
#define SigIeSuppRates (0x005f)
uint32_t dot11f_unpack_ie_tim(tpAniSirGlobal pCtx,
@ -4732,7 +4760,7 @@ uint32_t dot11f_unpack_ie_tim(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_tim. */
#define SigIeTIM (0x005f)
#define SigIeTIM (0x0060)
uint32_t dot11f_unpack_ie_tpc_report(tpAniSirGlobal pCtx,
@ -4753,7 +4781,7 @@ uint32_t dot11f_unpack_ie_tpc_report(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_tpc_report. */
#define SigIeTPCReport (0x0060)
#define SigIeTPCReport (0x0061)
uint32_t dot11f_unpack_ie_tpc_request(tpAniSirGlobal pCtx,
@ -4770,7 +4798,7 @@ uint32_t dot11f_unpack_ie_tpc_request(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_tpc_request. */
#define SigIeTPCRequest (0x0061)
#define SigIeTPCRequest (0x0062)
uint32_t dot11f_unpack_ie_time_advertisement(tpAniSirGlobal pCtx,
@ -4794,7 +4822,7 @@ uint32_t dot11f_unpack_ie_time_advertisement(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_time_advertisement. */
#define SigIeTimeAdvertisement (0x0062)
#define SigIeTimeAdvertisement (0x0063)
uint32_t dot11f_unpack_ie_timeout_interval(tpAniSirGlobal pCtx,
@ -4815,7 +4843,7 @@ uint32_t dot11f_unpack_ie_timeout_interval(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_timeout_interval. */
#define SigIeTimeoutInterval (0x0063)
#define SigIeTimeoutInterval (0x0064)
uint32_t dot11f_unpack_ie_vht_ext_bss_load(tpAniSirGlobal pCtx,
@ -4845,7 +4873,7 @@ uint32_t dot11f_unpack_ie_vht_ext_bss_load(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_vht_ext_bss_load. */
#define SigIeVHTExtBssLoad (0x0064)
#define SigIeVHTExtBssLoad (0x0065)
uint32_t dot11f_unpack_ie_vendor1_ie(tpAniSirGlobal pCtx,
@ -4862,7 +4890,7 @@ uint32_t dot11f_unpack_ie_vendor1_ie(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_vendor1_ie. */
#define SigIeVendor1IE (0x0065)
#define SigIeVendor1IE (0x0066)
uint32_t dot11f_unpack_ie_vendor3_ie(tpAniSirGlobal pCtx,
@ -4879,7 +4907,7 @@ uint32_t dot11f_unpack_ie_vendor3_ie(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_vendor3_ie. */
#define SigIeVendor3IE (0x0066)
#define SigIeVendor3IE (0x0067)
uint32_t dot11f_unpack_ie_wapi(tpAniSirGlobal pCtx,
@ -4948,7 +4976,7 @@ uint32_t dot11f_unpack_ie_wapi(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_wapi. */
#define SigIeWAPI (0x0067)
#define SigIeWAPI (0x0068)
uint32_t dot11f_unpack_ie_wapi_opaque(tpAniSirGlobal pCtx,
@ -4972,7 +5000,7 @@ uint32_t dot11f_unpack_ie_wapi_opaque(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_wapi_opaque. */
#define SigIeWAPIOpaque (0x0068)
#define SigIeWAPIOpaque (0x0069)
uint32_t dot11f_unpack_ie_wfatpc(tpAniSirGlobal pCtx,
@ -4993,7 +5021,7 @@ uint32_t dot11f_unpack_ie_wfatpc(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_wfatpc. */
#define SigIeWFATPC (0x0069)
#define SigIeWFATPC (0x006a)
uint32_t dot11f_unpack_ie_wfdie_opaque(tpAniSirGlobal pCtx,
@ -5017,7 +5045,7 @@ uint32_t dot11f_unpack_ie_wfdie_opaque(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_wfdie_opaque. */
#define SigIeWFDIEOpaque (0x006a)
#define SigIeWFDIEOpaque (0x006b)
uint32_t dot11f_unpack_ie_wmm_caps(tpAniSirGlobal pCtx,
@ -5048,7 +5076,7 @@ uint32_t dot11f_unpack_ie_wmm_caps(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_wmm_caps. */
#define SigIeWMMCaps (0x006b)
#define SigIeWMMCaps (0x006c)
uint32_t dot11f_unpack_ie_wmm_info_ap(tpAniSirGlobal pCtx,
@ -5073,7 +5101,7 @@ uint32_t dot11f_unpack_ie_wmm_info_ap(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_wmm_info_ap. */
#define SigIeWMMInfoAp (0x006c)
#define SigIeWMMInfoAp (0x006d)
uint32_t dot11f_unpack_ie_wmm_info_station(tpAniSirGlobal pCtx,
@ -5102,7 +5130,7 @@ uint32_t dot11f_unpack_ie_wmm_info_station(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_wmm_info_station. */
#define SigIeWMMInfoStation (0x006d)
#define SigIeWMMInfoStation (0x006e)
uint32_t dot11f_unpack_ie_wmm_params(tpAniSirGlobal pCtx,
@ -5198,7 +5226,7 @@ uint32_t dot11f_unpack_ie_wmm_params(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_wmm_params. */
#define SigIeWMMParams (0x006e)
#define SigIeWMMParams (0x006f)
uint32_t dot11f_unpack_ie_wpa(tpAniSirGlobal pCtx,
@ -5271,7 +5299,7 @@ uint32_t dot11f_unpack_ie_wpa(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_wpa. */
#define SigIeWPA (0x006f)
#define SigIeWPA (0x0070)
uint32_t dot11f_unpack_ie_wpa_opaque(tpAniSirGlobal pCtx,
@ -5295,7 +5323,7 @@ uint32_t dot11f_unpack_ie_wpa_opaque(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_wpa_opaque. */
#define SigIeWPAOpaque (0x0070)
#define SigIeWPAOpaque (0x0071)
static const tTLVDefn TLVS_WSC[] = {
@ -5385,7 +5413,7 @@ uint32_t dot11f_unpack_ie_wsc(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_wsc. */
#define SigIeWSC (0x0071)
#define SigIeWSC (0x0072)
static const tTLVDefn TLVS_WscAssocReq[] = {
@ -5416,7 +5444,7 @@ uint32_t dot11f_unpack_ie_wsc_assoc_req(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_wsc_assoc_req. */
#define SigIeWscAssocReq (0x0072)
#define SigIeWscAssocReq (0x0073)
static const tTLVDefn TLVS_WscAssocRes[] = {
@ -5447,7 +5475,7 @@ uint32_t dot11f_unpack_ie_wsc_assoc_res(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_wsc_assoc_res. */
#define SigIeWscAssocRes (0x0073)
#define SigIeWscAssocRes (0x0074)
static const tTLVDefn TLVS_WscBeacon[] = {
@ -5499,7 +5527,7 @@ uint32_t dot11f_unpack_ie_wsc_beacon(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_wsc_beacon. */
#define SigIeWscBeacon (0x0074)
#define SigIeWscBeacon (0x0075)
static const tTLVDefn TLVS_WscBeaconProbeRes[] = {
@ -5576,7 +5604,7 @@ uint32_t dot11f_unpack_ie_wsc_beacon_probe_res(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_wsc_beacon_probe_res. */
#define SigIeWscBeaconProbeRes (0x0075)
#define SigIeWscBeaconProbeRes (0x0076)
uint32_t dot11f_unpack_ie_wsc_ie_opaque(tpAniSirGlobal pCtx,
@ -5600,7 +5628,7 @@ uint32_t dot11f_unpack_ie_wsc_ie_opaque(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_wsc_ie_opaque. */
#define SigIeWscIEOpaque (0x0076)
#define SigIeWscIEOpaque (0x0077)
static const tTLVDefn TLVS_WscProbeReq[] = {
@ -5672,7 +5700,7 @@ uint32_t dot11f_unpack_ie_wsc_probe_req(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_wsc_probe_req. */
#define SigIeWscProbeReq (0x0077)
#define SigIeWscProbeReq (0x0078)
static const tTLVDefn TLVS_WscProbeRes[] = {
@ -5749,7 +5777,7 @@ uint32_t dot11f_unpack_ie_wsc_probe_res(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_wsc_probe_res. */
#define SigIeWscProbeRes (0x0078)
#define SigIeWscProbeRes (0x0079)
static const tTLVDefn TLVS_WscReassocRes[] = {
@ -5780,7 +5808,7 @@ uint32_t dot11f_unpack_ie_wsc_reassoc_res(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_wsc_reassoc_res. */
#define SigIeWscReassocRes (0x0079)
#define SigIeWscReassocRes (0x007a)
uint32_t dot11f_unpack_ie_ext_chan_switch_ann(tpAniSirGlobal pCtx,
@ -5807,7 +5835,7 @@ uint32_t dot11f_unpack_ie_ext_chan_switch_ann(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_ext_chan_switch_ann. */
#define SigIeext_chan_switch_ann (0x007a)
#define SigIeext_chan_switch_ann (0x007b)
uint32_t dot11f_unpack_ie_hs20vendor_ie(tpAniSirGlobal pCtx,
@ -5851,7 +5879,7 @@ uint32_t dot11f_unpack_ie_hs20vendor_ie(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_hs20vendor_ie. */
#define SigIehs20vendor_ie (0x007b)
#define SigIehs20vendor_ie (0x007c)
uint32_t dot11f_unpack_ie_ht2040_bss_coexistence(tpAniSirGlobal pCtx,
@ -5876,7 +5904,7 @@ uint32_t dot11f_unpack_ie_ht2040_bss_coexistence(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_ht2040_bss_coexistence. */
#define SigIeht2040_bss_coexistence (0x007c)
#define SigIeht2040_bss_coexistence (0x007d)
uint32_t dot11f_unpack_ie_ht2040_bss_intolerant_report(tpAniSirGlobal pCtx,
@ -5903,7 +5931,7 @@ uint32_t dot11f_unpack_ie_ht2040_bss_intolerant_report(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_ht2040_bss_intolerant_report. */
#define SigIeht2040_bss_intolerant_report (0x007d)
#define SigIeht2040_bss_intolerant_report (0x007e)
uint32_t dot11f_unpack_ie_sec_chan_offset_ele(tpAniSirGlobal pCtx,
@ -5921,7 +5949,7 @@ uint32_t dot11f_unpack_ie_sec_chan_offset_ele(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_sec_chan_offset_ele. */
#define SigIesec_chan_offset_ele (0x007e)
#define SigIesec_chan_offset_ele (0x007f)
static const tFFDefn FFS_vendor2_ie[] = {
@ -5966,7 +5994,7 @@ uint32_t dot11f_unpack_ie_vendor2_ie(tpAniSirGlobal pCtx,
return status;
} /* End dot11f_unpack_ie_vendor2_ie. */
#define SigIevendor2_ie (0x007f)
#define SigIevendor2_ie (0x0080)
static const tFFDefn FFS_AddTSRequest[] = {
@ -6554,7 +6582,7 @@ static const tIEDefn IES_Beacon[] = {
3, DOT11F_EID_HS20VENDOR_IE, 0, },
{ offsetof(tDot11fBeacon, ChannelSwitchWrapper),
offsetof(tDot11fIEChannelSwitchWrapper, present), 0,
"ChannelSwitchWrapper", 0, 2, 7, SigIeChannelSwitchWrapper,
"ChannelSwitchWrapper", 0, 2, 14, SigIeChannelSwitchWrapper,
{0, 0, 0, 0, 0}, 0, DOT11F_EID_CHANNELSWITCHWRAPPER, 0, },
{ offsetof(tDot11fBeacon, QComVendorIE), offsetof(tDot11fIEQComVendorIE,
present), 0, "QComVendorIE", 0, 7, 7, SigIeQComVendorIE,
@ -6755,7 +6783,7 @@ static const tIEDefn IES_Beacon2[] = {
3, DOT11F_EID_HS20VENDOR_IE, 0, },
{ offsetof(tDot11fBeacon2, ChannelSwitchWrapper),
offsetof(tDot11fIEChannelSwitchWrapper, present), 0,
"ChannelSwitchWrapper", 0, 2, 7, SigIeChannelSwitchWrapper,
"ChannelSwitchWrapper", 0, 2, 14, SigIeChannelSwitchWrapper,
{0, 0, 0, 0, 0}, 0, DOT11F_EID_CHANNELSWITCHWRAPPER, 0, },
{ offsetof(tDot11fBeacon2, QComVendorIE), offsetof(tDot11fIEQComVendorIE,
present), 0, "QComVendorIE", 0, 7, 7, SigIeQComVendorIE,
@ -6952,7 +6980,7 @@ static const tIEDefn IES_BeaconIEs[] = {
3, DOT11F_EID_HS20VENDOR_IE, 0, },
{ offsetof(tDot11fBeaconIEs, ChannelSwitchWrapper),
offsetof(tDot11fIEChannelSwitchWrapper, present), 0,
"ChannelSwitchWrapper", 0, 2, 7, SigIeChannelSwitchWrapper,
"ChannelSwitchWrapper", 0, 2, 14, SigIeChannelSwitchWrapper,
{0, 0, 0, 0, 0}, 0, DOT11F_EID_CHANNELSWITCHWRAPPER, 0, },
{ offsetof(tDot11fBeaconIEs, QComVendorIE),
offsetof(tDot11fIEQComVendorIE, present), 0, "QComVendorIE",
@ -7561,7 +7589,7 @@ static const tIEDefn IES_ProbeResponse[] = {
3, DOT11F_EID_HS20VENDOR_IE, 0, },
{ offsetof(tDot11fProbeResponse, ChannelSwitchWrapper),
offsetof(tDot11fIEChannelSwitchWrapper, present), 0,
"ChannelSwitchWrapper", 0, 2, 7, SigIeChannelSwitchWrapper,
"ChannelSwitchWrapper", 0, 2, 14, SigIeChannelSwitchWrapper,
{0, 0, 0, 0, 0}, 0, DOT11F_EID_CHANNELSWITCHWRAPPER, 0, },
{ offsetof(tDot11fProbeResponse, QComVendorIE),
offsetof(tDot11fIEQComVendorIE, present), 0, "QComVendorIE",
@ -9410,6 +9438,15 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx,
sizeof(tDot11fIEtgt_mac_addr) *
countOffset));
break;
case SigIevht_transmit_power_env:
status |=
dot11f_unpack_ie_vht_transmit_power_env(
pCtx, pBufRemaining, len,
(tDot11fIEvht_transmit_power_env *)
(pFrm + pIe->offset +
sizeof(tDot11fIEvht_transmit_power_env) *
countOffset));
break;
case SigIeAID:
status |=
dot11f_unpack_ie_aid(
@ -12200,6 +12237,15 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx,
(pFrm + pIe->offset + offset * i))->
present;
break;
case SigIevht_transmit_power_env:
offset = sizeof(tDot11fIEvht_transmit_power_env);
byteCount = ((tDot11fIEvht_transmit_power_env *)
(pFrm + pIe->offset + offset * i))->
num_bytes;
pIePresent = ((tDot11fIEvht_transmit_power_env *)
(pFrm + pIe->offset + offset * i))->
present;
break;
case SigIeAID:
offset = sizeof(tDot11fIEAID);
byteCount = 2;
@ -16212,6 +16258,35 @@ uint32_t dot11f_pack_ie_tgt_mac_addr(tpAniSirGlobal pCtx,
return DOT11F_PARSE_SUCCESS;
} /* End dot11f_pack_ie_tgt_mac_addr. */
uint32_t dot11f_pack_ie_vht_transmit_power_env(tpAniSirGlobal pCtx,
tDot11fIEvht_transmit_power_env *pSrc,
uint8_t *pBuf,
uint32_t nBuf,
uint32_t *pnConsumed)
{
uint8_t *pIeLen = 0;
uint32_t nConsumedOnEntry = *pnConsumed;
uint32_t nNeeded = 0U;
nNeeded += pSrc->num_bytes;
while (pSrc->present) {
if (nNeeded > nBuf)
return DOT11F_BUFFER_OVERFLOW;
*pBuf = 195;
++pBuf; ++(*pnConsumed);
pIeLen = pBuf;
++pBuf; ++(*pnConsumed);
DOT11F_MEMCPY(pCtx, pBuf, &(pSrc->bytes), pSrc->num_bytes);
*pnConsumed += pSrc->num_bytes;
/* fieldsEndFlag = 1 */
break;
}
(void)pCtx;
if (pIeLen) {
*pIeLen = *pnConsumed - nConsumedOnEntry - 2;
}
return DOT11F_PARSE_SUCCESS;
} /* End dot11f_pack_ie_vht_transmit_power_env. */
uint32_t dot11f_pack_ie_aid(tpAniSirGlobal pCtx,
tDot11fIEAID *pSrc,
uint8_t *pBuf,
@ -21596,6 +21671,14 @@ static uint32_t pack_core(tpAniSirGlobal pCtx,
sizeof(tDot11fIEtgt_mac_addr) * i),
pBufRemaining, nBufRemaining, &len);
break;
case SigIevht_transmit_power_env:
status |=
dot11f_pack_ie_vht_transmit_power_env(
pCtx, (tDot11fIEvht_transmit_power_env *)
(pSrc + pIe->offset +
sizeof(tDot11fIEvht_transmit_power_env) * i),
pBufRemaining, nBufRemaining, &len);
break;
case SigIeAID:
status |=
dot11f_pack_ie_aid(

View file

@ -331,6 +331,8 @@ populate_dot11f_chan_switch_wrapper(tpAniSirGlobal pMac,
tDot11fIEChannelSwitchWrapper *pDot11f,
tpPESession psessionEntry)
{
uint8_t *ie_ptr = NULL;
/*
* The new country subelement is present only when
* 1. AP performs Extended Channel switching to new country.
@ -360,6 +362,22 @@ populate_dot11f_chan_switch_wrapper(tpAniSirGlobal pMac,
psessionEntry->gLimWiderBWChannelSwitch.newCenterChanFreq1;
pDot11f->WiderBWChanSwitchAnn.present = 1;
/*
* Add the VHT Transmit power Envelope Sublement.
*/
ie_ptr = lim_get_ie_ptr_new(pMac,
psessionEntry->addIeParams.probeRespBCNData_buff,
psessionEntry->addIeParams.probeRespBCNDataLen,
DOT11F_EID_VHT_TRANSMIT_POWER_ENV, ONE_BYTE);
if (ie_ptr) {
/* Ignore EID field */
ie_ptr++;
pDot11f->vht_transmit_power_env.present = 1;
pDot11f->vht_transmit_power_env.num_bytes = *ie_ptr++;
qdf_mem_copy(pDot11f->vht_transmit_power_env.bytes,
ie_ptr, pDot11f->vht_transmit_power_env.num_bytes);
}
}
#ifdef FEATURE_AP_MCC_CH_AVOIDANCE