From f191257b448ad38a2c2e7e37ff0a0ad53fc9d296 Mon Sep 17 00:00:00 2001 From: Abhinav Kumar Date: Thu, 1 Oct 2020 12:01:45 +0530 Subject: [PATCH] qcacld-3.0: Add support to send MSCS Request frames Add support to send MSCS add/change/remove types of Action frames to the connected AP. Change-Id: I12c28700007302fd1b1ff22edd23edb98c3bc144 CRs-Fixed: 2791794 --- core/mac/src/cfg/cfgUtil/dot11f.frms | 60 ++ core/mac/src/include/dot11f.h | 180 +++- .../mac/src/sys/legacy/src/utils/src/dot11f.c | 844 +++++++++++++++--- 3 files changed, 964 insertions(+), 120 deletions(-) diff --git a/core/mac/src/cfg/cfgUtil/dot11f.frms b/core/mac/src/cfg/cfgUtil/dot11f.frms index 3a5c868acc94..636bbc10151f 100644 --- a/core/mac/src/cfg/cfgUtil/dot11f.frms +++ b/core/mac/src/cfg/cfgUtil/dot11f.frms @@ -99,6 +99,7 @@ const EID_20_40_BSS_COEXISTENCE = 72; const EID_20_40_BSS_INTOLERANT_REPORT= 73; const EID_OBSS_SCAN_PARAMETERS = 74; const EID_FT_RIC_DESCRIPTOR = 75; +const EID_MSCS_STATUS = 76; const EID_LINK_IDENTIFIER = 101; const EID_PTI_CONTROL = 105; const EID_PU_BUFFER_STATUS = 106; @@ -2910,6 +2911,57 @@ IE MeasurementRequest (EID_MEAS_REQUEST) // 7.3.2.21 }; } +IE tclas_mask (EID_EXTN_ID_ELEMENT) OUI (0x59) +{ + classifier_type, 1; + classifier_mask, 1; + UNION info (DISCRIMINATOR classifier_type) + { + IpParams (classifier_type IS 4) + { + version, 1; + UNION params (DISCRIMINATOR version) + { + IpV4Params (version IS 4) + { + source[4]; + dest[4]; + src_port, 2; + dest_port, 2; + DSCP, 1; + proto, 1; + reserved, 1; + } + IpV6Params (version IS 6) + { + source[16]; + dest[16]; + src_port, 2; + dest_port, 2; + DSCP, 1; + next_header, 1; + flow_label[3]; + } + }; + } + }; +} + +IE mscs_status (EID_MSCS_STATUS) +{ + status_code, 1; +} + +IE decriptor_element (EID_EXTN_ID_ELEMENT) OUI (0x58) +{ + request_type, 1; + user_priority_control, 2; + stream_timeout, 4; + OPTIE IE tclas_mask; + OPTIE IE mscs_status; + //Optional Vendor specific IEs ... ignoring +} + IE he_cap (EID_EXTN_ID_ELEMENT) OUI (0x23) { { @@ -4454,6 +4506,14 @@ FRAME vendor_action_frame FF vendor_action_subtype; } +FRAME mscs_request_action_frame +{ + FF Category; + FF Action; + FF DialogToken; + MANDIE decriptor_element; +} + // Local Variables: // mode: c++ // fill-column: 77 diff --git a/core/mac/src/include/dot11f.h b/core/mac/src/include/dot11f.h index 826b793c4c0a..52a9243ee2b6 100644 --- a/core/mac/src/include/dot11f.h +++ b/core/mac/src/include/dot11f.h @@ -26,7 +26,7 @@ * * * This file was automatically generated by 'framesc' - * Tue Sep 29 11:31:39 2020 from the following file(s): + * Thu Oct 1 12:01:17 2020 from the following file(s): * * dot11f.frms * @@ -4459,6 +4459,45 @@ uint32_t dot11f_get_packed_ie_max_age( }; /* End extern "C". */ #endif /* C++ */ +/* EID 76 (0x4c) */ +typedef struct sDot11fIEmscs_status { + uint8_t present; + uint8_t status_code; +} tDot11fIEmscs_status; + +#define DOT11F_EID_MSCS_STATUS (76) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_MSCS_STATUS_MIN_LEN (1) + +#define DOT11F_IE_MSCS_STATUS_MAX_LEN (1) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_mscs_status( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEmscs_status*, + bool); + +uint32_t dot11f_pack_ie_mscs_status( + tpAniSirGlobal, + tDot11fIEmscs_status *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_mscs_status( + tpAniSirGlobal, + tDot11fIEmscs_status *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* EID 52 (0x34) */ typedef struct sDot11fIEneighbor_rpt { uint8_t present; @@ -4557,6 +4596,71 @@ uint32_t dot11f_get_packed_ie_req_mac_addr( }; /* End extern "C". */ #endif /* C++ */ +/* EID 255 (0xff) Extended EID 89 (0x59) */ +typedef struct sDot11fIEtclas_mask { + uint8_t present; + uint8_t classifier_type; + uint8_t classifier_mask; + union { + struct { + uint8_t version; + union { + struct { + uint8_t source[4]; + uint8_t dest[4]; + uint16_t src_port; + uint16_t dest_port; + uint8_t DSCP; + uint8_t proto; + uint8_t reserved; + } IpV4Params; /* version = 4 */ + struct { + uint8_t source[16]; + uint8_t dest[16]; + uint16_t src_port; + uint16_t dest_port; + uint8_t DSCP; + uint8_t next_header; + uint8_t flow_label[3]; + } IpV6Params; /* version = 6 */ + } params; + } IpParams; /* classifier_type = 4 */ + } info; +} tDot11fIEtclas_mask; + +#define DOT11F_EID_TCLAS_MASK (255) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_TCLAS_MASK_MIN_LEN (18) + +#define DOT11F_IE_TCLAS_MASK_MAX_LEN (44) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_tclas_mask( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEtclas_mask*, + bool); + +uint32_t dot11f_pack_ie_tclas_mask( + tpAniSirGlobal, + tDot11fIEtclas_mask *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_tclas_mask( + tpAniSirGlobal, + tDot11fIEtclas_mask *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* EID 3 (0x03) */ typedef struct sDot11fIEtgt_mac_addr { uint8_t present; @@ -8561,6 +8665,49 @@ uint32_t dot11f_get_packed_ie_bss_color_change( }; /* End extern "C". */ #endif /* C++ */ +/* EID 255 (0xff) Extended EID 88 (0x58) */ +typedef struct sDot11fIEdecriptor_element { + uint8_t present; + uint8_t request_type; + uint16_t user_priority_control; + uint32_t stream_timeout; + tDot11fIEtclas_mask tclas_mask; + tDot11fIEmscs_status mscs_status; +} tDot11fIEdecriptor_element; + +#define DOT11F_EID_DECRIPTOR_ELEMENT (255) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_DECRIPTOR_ELEMENT_MIN_LEN (7) + +#define DOT11F_IE_DECRIPTOR_ELEMENT_MAX_LEN (56) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +__must_check uint32_t dot11f_unpack_ie_decriptor_element( + tpAniSirGlobal, + uint8_t *, + uint8_t, + tDot11fIEdecriptor_element*, + bool); + +uint32_t dot11f_pack_ie_decriptor_element( + tpAniSirGlobal, + tDot11fIEdecriptor_element *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_decriptor_element( + tpAniSirGlobal, + tDot11fIEdecriptor_element *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* EID 255 (0xff) Extended EID 32 (0x20) */ typedef struct sDot11fIEdh_parameter_element { uint8_t present; @@ -11608,6 +11755,33 @@ uint32_t dot11f_get_packed_ht2040_bss_coexistence_mgmt_action_frameSize(tpAniSir } /* End extern "C". */ #endif /* C++ */ +typedef struct sDot11fmscs_request_action_frame{ + tDot11fFfCategory Category; + tDot11fFfAction Action; + tDot11fFfDialogToken DialogToken; + tDot11fIEdecriptor_element decriptor_element; +} tDot11fmscs_request_action_frame; + +#define DOT11F_MSCS_REQUEST_ACTION_FRAME (51) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ + +uint32_t dot11f_unpack_mscs_request_action_frame(tpAniSirGlobal pCtx, + uint8_t *pBuf, uint32_t nBuf, + tDot11fmscs_request_action_frame * pFrm, bool append_ie); +uint32_t dot11f_pack_mscs_request_action_frame(tpAniSirGlobal pCtx, + tDot11fmscs_request_action_frame *pFrm, uint8_t *pBuf, + uint32_t nBuf, uint32_t *pnConsumed); +uint32_t dot11f_get_packed_mscs_request_action_frameSize(tpAniSirGlobal pCtx, + tDot11fmscs_request_action_frame *pFrm, + uint32_t *pnNeeded); + +#ifdef __cplusplus +} /* End extern "C". */ +#endif /* C++ */ + typedef struct sDot11fp2p_oper_chan_change_confirm{ tDot11fFfCategory Category; tDot11fFfp2p_action_oui p2p_action_oui; @@ -11618,7 +11792,7 @@ typedef struct sDot11fp2p_oper_chan_change_confirm{ tDot11fIEOperatingMode OperatingMode; } tDot11fp2p_oper_chan_change_confirm; -#define DOT11F_P2P_OPER_CHAN_CHANGE_CONFIRM (51) +#define DOT11F_P2P_OPER_CHAN_CHANGE_CONFIRM (52) #ifdef __cplusplus extern "C" { @@ -11644,7 +11818,7 @@ typedef struct sDot11fvendor_action_frame{ tDot11fFfvendor_action_subtype vendor_action_subtype; } tDot11fvendor_action_frame; -#define DOT11F_VENDOR_ACTION_FRAME (52) +#define DOT11F_VENDOR_ACTION_FRAME (53) #ifdef __cplusplus extern "C" { diff --git a/core/mac/src/sys/legacy/src/utils/src/dot11f.c b/core/mac/src/sys/legacy/src/utils/src/dot11f.c index f6005b63a7f7..117ce9c00cba 100644 --- a/core/mac/src/sys/legacy/src/utils/src/dot11f.c +++ b/core/mac/src/sys/legacy/src/utils/src/dot11f.c @@ -24,7 +24,7 @@ * * * This file was automatically generated by 'framesc' - * Tue Sep 29 11:31:39 2020 from the following file(s): + * Thu Oct 1 12:01:17 2020 from the following file(s): * * dot11f.frms * @@ -3642,6 +3642,30 @@ uint32_t dot11f_unpack_ie_max_age(tpAniSirGlobal pCtx, #define SigIemax_age (0x0022) +uint32_t dot11f_unpack_ie_mscs_status(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEmscs_status *pDst, + bool append_ie) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + (void) pBuf; (void)ielen; /* Shutup the compiler */ + if (pDst->present) + return DOT11F_DUPLICATE_IE; + pDst->present = 1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->status_code = *pBuf; + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_mscs_status. */ + +#define SigIemscs_status (0x0023) + + static const tFFDefn FFS_neighbor_rpt[] = { { NULL, 0, 0, 0,}, }; @@ -3761,7 +3785,7 @@ uint32_t dot11f_unpack_ie_neighbor_rpt(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_neighbor_rpt. */ -#define SigIeneighbor_rpt (0x0023) +#define SigIeneighbor_rpt (0x0024) uint32_t dot11f_unpack_ie_req_mac_addr(tpAniSirGlobal pCtx, @@ -3785,7 +3809,171 @@ uint32_t dot11f_unpack_ie_req_mac_addr(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_req_mac_addr. */ -#define SigIereq_mac_addr (0x0024) +#define SigIereq_mac_addr (0x0025) + + +uint32_t dot11f_unpack_ie_tclas_mask(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEtclas_mask *pDst, + bool append_ie) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + (void) pBuf; (void)ielen; /* Shutup the compiler */ + if (pDst->present) + return DOT11F_DUPLICATE_IE; + pDst->present = 1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->classifier_type = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->classifier_mask = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + switch (pDst->classifier_type) { + case 4: + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->info.IpParams.version = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + switch (pDst->info.IpParams.version) { + case 4: + if (unlikely(ielen < 4)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->info.IpParams.params.IpV4Params.source, pBuf, 4); + pBuf += 4; + ielen -= (uint8_t)4; + if (unlikely(ielen < 4)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->info.IpParams.params.IpV4Params.dest, pBuf, 4); + pBuf += 4; + ielen -= (uint8_t)4; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->info.IpParams.params.IpV4Params.src_port, pBuf, 0); + pBuf += 2; + ielen -= (uint8_t)2; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->info.IpParams.params.IpV4Params.dest_port, pBuf, 0); + pBuf += 2; + ielen -= (uint8_t)2; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->info.IpParams.params.IpV4Params.DSCP = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->info.IpParams.params.IpV4Params.proto = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->info.IpParams.params.IpV4Params.reserved = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + break; + case 6: + if (unlikely(ielen < 16)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->info.IpParams.params.IpV6Params.source, pBuf, 16); + pBuf += 16; + ielen -= (uint8_t)16; + if (unlikely(ielen < 16)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->info.IpParams.params.IpV6Params.dest, pBuf, 16); + pBuf += 16; + ielen -= (uint8_t)16; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->info.IpParams.params.IpV6Params.src_port, pBuf, 0); + pBuf += 2; + ielen -= (uint8_t)2; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->info.IpParams.params.IpV6Params.dest_port, pBuf, 0); + pBuf += 2; + ielen -= (uint8_t)2; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->info.IpParams.params.IpV6Params.DSCP = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->info.IpParams.params.IpV6Params.next_header = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 3)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + DOT11F_MEMCPY(pCtx, pDst->info.IpParams.params.IpV6Params.flow_label, pBuf, 3); + pBuf += 3; + ielen -= (uint8_t)3; + break; + } + break; + } + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_tclas_mask. */ + +#define SigIetclas_mask (0x0026) uint32_t dot11f_unpack_ie_tgt_mac_addr(tpAniSirGlobal pCtx, @@ -3809,7 +3997,7 @@ uint32_t dot11f_unpack_ie_tgt_mac_addr(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tgt_mac_addr. */ -#define SigIetgt_mac_addr (0x0025) +#define SigIetgt_mac_addr (0x0027) uint32_t dot11f_unpack_ie_vht_transmit_power_env(tpAniSirGlobal pCtx, @@ -3834,7 +4022,7 @@ uint32_t dot11f_unpack_ie_vht_transmit_power_env(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_vht_transmit_power_env. */ -#define SigIevht_transmit_power_env (0x0026) +#define SigIevht_transmit_power_env (0x0028) uint32_t dot11f_unpack_ie_aid(tpAniSirGlobal pCtx, @@ -3858,7 +4046,7 @@ uint32_t dot11f_unpack_ie_aid(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_aid. */ -#define SigIeAID (0x0027) +#define SigIeAID (0x0029) uint32_t dot11f_unpack_ie_cf_params(tpAniSirGlobal pCtx, @@ -3906,7 +4094,7 @@ uint32_t dot11f_unpack_ie_cf_params(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_cf_params. */ -#define SigIeCFParams (0x0028) +#define SigIeCFParams (0x002a) uint32_t dot11f_unpack_ie_challenge_text(tpAniSirGlobal pCtx, @@ -3931,7 +4119,7 @@ uint32_t dot11f_unpack_ie_challenge_text(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_challenge_text. */ -#define SigIeChallengeText (0x0029) +#define SigIeChallengeText (0x002b) uint32_t dot11f_unpack_ie_chan_switch_ann(tpAniSirGlobal pCtx, @@ -3971,7 +4159,7 @@ uint32_t dot11f_unpack_ie_chan_switch_ann(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_chan_switch_ann. */ -#define SigIeChanSwitchAnn (0x002a) +#define SigIeChanSwitchAnn (0x002c) static const tFFDefn FFS_ChannelSwitchWrapper[] = { @@ -4013,7 +4201,7 @@ uint32_t dot11f_unpack_ie_channel_switch_wrapper(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_channel_switch_wrapper. */ -#define SigIeChannelSwitchWrapper (0x002b) +#define SigIeChannelSwitchWrapper (0x002d) uint32_t dot11f_unpack_ie_country(tpAniSirGlobal pCtx, @@ -4051,10 +4239,10 @@ uint32_t dot11f_unpack_ie_country(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_country. */ -#define SigIeCountry (0x002c) +#define SigIeCountry (0x002e) -#define SigIeDSParams (0x002d) +#define SigIeDSParams (0x002f) uint32_t dot11f_unpack_ie_edca_param_set(tpAniSirGlobal pCtx, @@ -4214,7 +4402,7 @@ uint32_t dot11f_unpack_ie_edca_param_set(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_edca_param_set. */ -#define SigIeEDCAParamSet (0x002e) +#define SigIeEDCAParamSet (0x0030) uint32_t dot11f_unpack_ie_erp_info(tpAniSirGlobal pCtx, @@ -4243,7 +4431,7 @@ uint32_t dot11f_unpack_ie_erp_info(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_erp_info. */ -#define SigIeERPInfo (0x002f) +#define SigIeERPInfo (0x0031) uint32_t dot11f_unpack_ie_ese_cckm_opaque(tpAniSirGlobal pCtx, @@ -4268,7 +4456,7 @@ uint32_t dot11f_unpack_ie_ese_cckm_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ese_cckm_opaque. */ -#define SigIeESECckmOpaque (0x0030) +#define SigIeESECckmOpaque (0x0032) uint32_t dot11f_unpack_ie_ese_rad_mgmt_cap(tpAniSirGlobal pCtx, @@ -4303,7 +4491,7 @@ uint32_t dot11f_unpack_ie_ese_rad_mgmt_cap(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ese_rad_mgmt_cap. */ -#define SigIeESERadMgmtCap (0x0031) +#define SigIeESERadMgmtCap (0x0033) uint32_t dot11f_unpack_ie_ese_traf_strm_met(tpAniSirGlobal pCtx, @@ -4343,7 +4531,7 @@ uint32_t dot11f_unpack_ie_ese_traf_strm_met(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ese_traf_strm_met. */ -#define SigIeESETrafStrmMet (0x0032) +#define SigIeESETrafStrmMet (0x0034) uint32_t dot11f_unpack_ie_ese_traf_strm_rate_set(tpAniSirGlobal pCtx, @@ -4376,7 +4564,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 (0x0033) +#define SigIeESETrafStrmRateSet (0x0035) uint32_t dot11f_unpack_ie_ese_txmit_power(tpAniSirGlobal pCtx, @@ -4408,7 +4596,7 @@ uint32_t dot11f_unpack_ie_ese_txmit_power(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ese_txmit_power. */ -#define SigIeESETxmitPower (0x0034) +#define SigIeESETxmitPower (0x0036) uint32_t dot11f_unpack_ie_ese_version(tpAniSirGlobal pCtx, @@ -4432,7 +4620,7 @@ uint32_t dot11f_unpack_ie_ese_version(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ese_version. */ -#define SigIeESEVersion (0x0035) +#define SigIeESEVersion (0x0037) uint32_t dot11f_unpack_ie_ext_cap(tpAniSirGlobal pCtx, @@ -4462,7 +4650,7 @@ endUnpackIeExtCap: return status; } /* End dot11f_unpack_ie_ext_cap. */ -#define SigIeExtCap (0x0036) +#define SigIeExtCap (0x0038) uint32_t dot11f_unpack_ie_ext_supp_rates(tpAniSirGlobal pCtx, @@ -4495,7 +4683,7 @@ uint32_t dot11f_unpack_ie_ext_supp_rates(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ext_supp_rates. */ -#define SigIeExtSuppRates (0x0037) +#define SigIeExtSuppRates (0x0039) uint32_t dot11f_unpack_ie_fh_param_set(tpAniSirGlobal pCtx, @@ -4543,7 +4731,7 @@ uint32_t dot11f_unpack_ie_fh_param_set(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fh_param_set. */ -#define SigIeFHParamSet (0x0038) +#define SigIeFHParamSet (0x003a) uint32_t dot11f_unpack_ie_fh_params(tpAniSirGlobal pCtx, @@ -4575,7 +4763,7 @@ uint32_t dot11f_unpack_ie_fh_params(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fh_params. */ -#define SigIeFHParams (0x0039) +#define SigIeFHParams (0x003b) uint32_t dot11f_unpack_ie_fh_patt_table(tpAniSirGlobal pCtx, @@ -4632,7 +4820,7 @@ uint32_t dot11f_unpack_ie_fh_patt_table(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fh_patt_table. */ -#define SigIeFHPattTable (0x003a) +#define SigIeFHPattTable (0x003c) static const tFFDefn FFS_FTInfo[] = { @@ -4712,7 +4900,7 @@ uint32_t dot11f_unpack_ie_ft_info(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ft_info. */ -#define SigIeFTInfo (0x003b) +#define SigIeFTInfo (0x003d) uint32_t dot11f_unpack_ie_ht_caps(tpAniSirGlobal pCtx, @@ -4836,7 +5024,7 @@ uint32_t dot11f_unpack_ie_ht_caps(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ht_caps. */ -#define SigIeHTCaps (0x003c) +#define SigIeHTCaps (0x003e) uint32_t dot11f_unpack_ie_ht_info(tpAniSirGlobal pCtx, @@ -4922,7 +5110,7 @@ uint32_t dot11f_unpack_ie_ht_info(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ht_info. */ -#define SigIeHTInfo (0x003d) +#define SigIeHTInfo (0x003f) uint32_t dot11f_unpack_ie_link_identifier(tpAniSirGlobal pCtx, @@ -4962,7 +5150,7 @@ uint32_t dot11f_unpack_ie_link_identifier(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_link_identifier. */ -#define SigIeLinkIdentifier (0x003e) +#define SigIeLinkIdentifier (0x0040) static const tTLVDefn TLVS_MBO_IE[] = { @@ -5025,7 +5213,7 @@ uint32_t dot11f_unpack_ie_MBO_IE(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_MBO_IE. */ -#define SigIeMBO_IE (0x003f) +#define SigIeMBO_IE (0x0041) static const tFFDefn FFS_reportBeacon[] = { @@ -5360,7 +5548,7 @@ uint32_t dot11f_unpack_ie_measurement_report(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_measurement_report. */ -#define SigIeMeasurementReport (0x0040) +#define SigIeMeasurementReport (0x0042) static const tFFDefn FFS_measurement_requestBeacon[] = { @@ -5664,7 +5852,7 @@ uint32_t dot11f_unpack_ie_measurement_request(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_measurement_request. */ -#define SigIeMeasurementRequest (0x0041) +#define SigIeMeasurementRequest (0x0043) uint32_t dot11f_unpack_ie_mobility_domain(tpAniSirGlobal pCtx, @@ -5700,7 +5888,7 @@ uint32_t dot11f_unpack_ie_mobility_domain(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_mobility_domain. */ -#define SigIeMobilityDomain (0x0042) +#define SigIeMobilityDomain (0x0044) static const tFFDefn FFS_NeighborReport[] = { @@ -5822,7 +6010,7 @@ uint32_t dot11f_unpack_ie_neighbor_report(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_neighbor_report. */ -#define SigIeNeighborReport (0x0043) +#define SigIeNeighborReport (0x0045) uint32_t dot11f_unpack_ie_obss_scan_parameters(tpAniSirGlobal pCtx, @@ -5894,7 +6082,7 @@ uint32_t dot11f_unpack_ie_obss_scan_parameters(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_obss_scan_parameters. */ -#define SigIeOBSSScanParameters (0x0044) +#define SigIeOBSSScanParameters (0x0046) uint32_t dot11f_unpack_ie_operating_mode(tpAniSirGlobal pCtx, @@ -5924,7 +6112,7 @@ uint32_t dot11f_unpack_ie_operating_mode(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_operating_mode. */ -#define SigIeOperatingMode (0x0045) +#define SigIeOperatingMode (0x0047) static const tTLVDefn TLVS_P2PAssocReq[] = { @@ -5956,7 +6144,7 @@ uint32_t dot11f_unpack_ie_p2_p_assoc_req(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_p_assoc_req. */ -#define SigIeP2PAssocReq (0x0046) +#define SigIeP2PAssocReq (0x0048) static const tTLVDefn TLVS_P2PAssocRes[] = { @@ -5985,7 +6173,7 @@ uint32_t dot11f_unpack_ie_p2_p_assoc_res(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_p_assoc_res. */ -#define SigIeP2PAssocRes (0x0047) +#define SigIeP2PAssocRes (0x0049) static const tTLVDefn TLVS_P2PBeacon[] = { @@ -6017,7 +6205,7 @@ uint32_t dot11f_unpack_ie_p2_p_beacon(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_p_beacon. */ -#define SigIeP2PBeacon (0x0048) +#define SigIeP2PBeacon (0x004a) static const tTLVDefn TLVS_P2PBeaconProbeRes[] = { @@ -6059,7 +6247,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 (0x0049) +#define SigIeP2PBeaconProbeRes (0x004b) static const tTLVDefn TLVS_P2PDeAuth[] = { @@ -6085,7 +6273,7 @@ uint32_t dot11f_unpack_ie_p2_p_de_auth(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_p_de_auth. */ -#define SigIeP2PDeAuth (0x004a) +#define SigIeP2PDeAuth (0x004c) static const tTLVDefn TLVS_P2PDisAssoc[] = { @@ -6111,7 +6299,7 @@ uint32_t dot11f_unpack_ie_p2_p_dis_assoc(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_p_dis_assoc. */ -#define SigIeP2PDisAssoc (0x004b) +#define SigIeP2PDisAssoc (0x004d) uint32_t dot11f_unpack_ie_p2_pie_opaque(tpAniSirGlobal pCtx, @@ -6136,7 +6324,7 @@ uint32_t dot11f_unpack_ie_p2_pie_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_pie_opaque. */ -#define SigIeP2PIEOpaque (0x004c) +#define SigIeP2PIEOpaque (0x004e) static const tTLVDefn TLVS_P2PProbeReq[] = { @@ -6175,7 +6363,7 @@ uint32_t dot11f_unpack_ie_p2_p_probe_req(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_p_probe_req. */ -#define SigIeP2PProbeReq (0x004d) +#define SigIeP2PProbeReq (0x004f) static const tTLVDefn TLVS_P2PProbeRes[] = { @@ -6214,7 +6402,7 @@ uint32_t dot11f_unpack_ie_p2_p_probe_res(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_p2_p_probe_res. */ -#define SigIeP2PProbeRes (0x004e) +#define SigIeP2PProbeRes (0x0050) uint32_t dot11f_unpack_ie_pti_control(tpAniSirGlobal pCtx, @@ -6246,7 +6434,7 @@ uint32_t dot11f_unpack_ie_pti_control(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_pti_control. */ -#define SigIePTIControl (0x004f) +#define SigIePTIControl (0x0051) uint32_t dot11f_unpack_ie_pu_buffer_status(tpAniSirGlobal pCtx, @@ -6276,7 +6464,7 @@ uint32_t dot11f_unpack_ie_pu_buffer_status(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_pu_buffer_status. */ -#define SigIePUBufferStatus (0x0050) +#define SigIePUBufferStatus (0x0052) uint32_t dot11f_unpack_ie_power_caps(tpAniSirGlobal pCtx, @@ -6308,7 +6496,7 @@ uint32_t dot11f_unpack_ie_power_caps(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_power_caps. */ -#define SigIePowerCaps (0x0051) +#define SigIePowerCaps (0x0053) uint32_t dot11f_unpack_ie_power_constraints(tpAniSirGlobal pCtx, @@ -6332,7 +6520,7 @@ uint32_t dot11f_unpack_ie_power_constraints(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_power_constraints. */ -#define SigIePowerConstraints (0x0052) +#define SigIePowerConstraints (0x0054) uint32_t dot11f_unpack_ie_qbss_load(tpAniSirGlobal pCtx, @@ -6372,7 +6560,7 @@ uint32_t dot11f_unpack_ie_qbss_load(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_qbss_load. */ -#define SigIeQBSSLoad (0x0053) +#define SigIeQBSSLoad (0x0055) uint32_t dot11f_unpack_ie_QComVendorIE(tpAniSirGlobal pCtx, @@ -6404,7 +6592,7 @@ uint32_t dot11f_unpack_ie_QComVendorIE(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_QComVendorIE. */ -#define SigIeQComVendorIE (0x0054) +#define SigIeQComVendorIE (0x0056) uint32_t dot11f_unpack_ie_qos_caps_ap(tpAniSirGlobal pCtx, @@ -6434,7 +6622,7 @@ uint32_t dot11f_unpack_ie_qos_caps_ap(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_qos_caps_ap. */ -#define SigIeQOSCapsAp (0x0055) +#define SigIeQOSCapsAp (0x0057) uint32_t dot11f_unpack_ie_qos_caps_station(tpAniSirGlobal pCtx, @@ -6466,7 +6654,7 @@ uint32_t dot11f_unpack_ie_qos_caps_station(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_qos_caps_station. */ -#define SigIeQOSCapsStation (0x0056) +#define SigIeQOSCapsStation (0x0058) uint32_t dot11f_unpack_ie_qos_map_set(tpAniSirGlobal pCtx, @@ -6491,7 +6679,7 @@ uint32_t dot11f_unpack_ie_qos_map_set(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_qos_map_set. */ -#define SigIeQosMapSet (0x0057) +#define SigIeQosMapSet (0x0059) uint32_t dot11f_unpack_ie_quiet(tpAniSirGlobal pCtx, @@ -6539,7 +6727,7 @@ uint32_t dot11f_unpack_ie_quiet(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_quiet. */ -#define SigIeQuiet (0x0058) +#define SigIeQuiet (0x005a) uint32_t dot11f_unpack_ie_rcpiie(tpAniSirGlobal pCtx, @@ -6563,7 +6751,7 @@ uint32_t dot11f_unpack_ie_rcpiie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_rcpiie. */ -#define SigIeRCPIIE (0x0059) +#define SigIeRCPIIE (0x005b) static const tFFDefn FFS_RICDataDesc[] = { @@ -6639,7 +6827,7 @@ uint32_t dot11f_unpack_ie_ric_data_desc(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ric_data_desc. */ -#define SigIeRICDataDesc (0x005a) +#define SigIeRICDataDesc (0x005c) uint32_t dot11f_unpack_ie_rsn(tpAniSirGlobal pCtx, @@ -6814,7 +7002,7 @@ uint32_t dot11f_unpack_ie_rsn(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_rsn. */ -#define SigIeRSN (0x005b) +#define SigIeRSN (0x005d) uint32_t dot11f_unpack_ie_rsniie(tpAniSirGlobal pCtx, @@ -6838,7 +7026,7 @@ uint32_t dot11f_unpack_ie_rsniie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_rsniie. */ -#define SigIeRSNIIE (0x005c) +#define SigIeRSNIIE (0x005e) uint32_t dot11f_unpack_ie_rsn_opaque(tpAniSirGlobal pCtx, @@ -6863,7 +7051,7 @@ uint32_t dot11f_unpack_ie_rsn_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_rsn_opaque. */ -#define SigIeRSNOpaque (0x005d) +#define SigIeRSNOpaque (0x005f) uint32_t dot11f_unpack_ie_supp_channels(tpAniSirGlobal pCtx, @@ -6888,7 +7076,7 @@ uint32_t dot11f_unpack_ie_supp_channels(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_supp_channels. */ -#define SigIeSuppChannels (0x005e) +#define SigIeSuppChannels (0x0060) uint32_t dot11f_unpack_ie_supp_operating_classes(tpAniSirGlobal pCtx, @@ -6913,7 +7101,7 @@ uint32_t dot11f_unpack_ie_supp_operating_classes(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_supp_operating_classes. */ -#define SigIeSuppOperatingClasses (0x005f) +#define SigIeSuppOperatingClasses (0x0061) uint32_t dot11f_unpack_ie_supp_rates(tpAniSirGlobal pCtx, @@ -6946,7 +7134,7 @@ uint32_t dot11f_unpack_ie_supp_rates(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_supp_rates. */ -#define SigIeSuppRates (0x0060) +#define SigIeSuppRates (0x0062) uint32_t dot11f_unpack_ie_tim(tpAniSirGlobal pCtx, @@ -6995,7 +7183,7 @@ uint32_t dot11f_unpack_ie_tim(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tim. */ -#define SigIeTIM (0x0061) +#define SigIeTIM (0x0063) uint32_t dot11f_unpack_ie_tpc_report(tpAniSirGlobal pCtx, @@ -7027,7 +7215,7 @@ uint32_t dot11f_unpack_ie_tpc_report(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tpc_report. */ -#define SigIeTPCReport (0x0062) +#define SigIeTPCReport (0x0064) uint32_t dot11f_unpack_ie_tpc_request(tpAniSirGlobal pCtx, @@ -7045,7 +7233,7 @@ uint32_t dot11f_unpack_ie_tpc_request(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_tpc_request. */ -#define SigIeTPCRequest (0x0063) +#define SigIeTPCRequest (0x0065) uint32_t dot11f_unpack_ie_time_advertisement(tpAniSirGlobal pCtx, @@ -7085,7 +7273,7 @@ uint32_t dot11f_unpack_ie_time_advertisement(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_time_advertisement. */ -#define SigIeTimeAdvertisement (0x0064) +#define SigIeTimeAdvertisement (0x0066) uint32_t dot11f_unpack_ie_timeout_interval(tpAniSirGlobal pCtx, @@ -7117,7 +7305,7 @@ uint32_t dot11f_unpack_ie_timeout_interval(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_timeout_interval. */ -#define SigIeTimeoutInterval (0x0065) +#define SigIeTimeoutInterval (0x0067) uint32_t dot11f_unpack_ie_vht_ext_bss_load(tpAniSirGlobal pCtx, @@ -7173,7 +7361,7 @@ uint32_t dot11f_unpack_ie_vht_ext_bss_load(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_vht_ext_bss_load. */ -#define SigIeVHTExtBssLoad (0x0066) +#define SigIeVHTExtBssLoad (0x0068) uint32_t dot11f_unpack_ie_vendor1_ie(tpAniSirGlobal pCtx, @@ -7191,7 +7379,7 @@ uint32_t dot11f_unpack_ie_vendor1_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_vendor1_ie. */ -#define SigIeVendor1IE (0x0067) +#define SigIeVendor1IE (0x0069) uint32_t dot11f_unpack_ie_vendor3_ie(tpAniSirGlobal pCtx, @@ -7209,7 +7397,7 @@ uint32_t dot11f_unpack_ie_vendor3_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_vendor3_ie. */ -#define SigIeVendor3IE (0x0068) +#define SigIeVendor3IE (0x006a) uint32_t dot11f_unpack_ie_wapi(tpAniSirGlobal pCtx, @@ -7324,7 +7512,7 @@ uint32_t dot11f_unpack_ie_wapi(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wapi. */ -#define SigIeWAPI (0x0069) +#define SigIeWAPI (0x006b) uint32_t dot11f_unpack_ie_wapi_opaque(tpAniSirGlobal pCtx, @@ -7349,7 +7537,7 @@ uint32_t dot11f_unpack_ie_wapi_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wapi_opaque. */ -#define SigIeWAPIOpaque (0x006a) +#define SigIeWAPIOpaque (0x006c) uint32_t dot11f_unpack_ie_wfatpc(tpAniSirGlobal pCtx, @@ -7381,7 +7569,7 @@ uint32_t dot11f_unpack_ie_wfatpc(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wfatpc. */ -#define SigIeWFATPC (0x006b) +#define SigIeWFATPC (0x006d) uint32_t dot11f_unpack_ie_wfdie_opaque(tpAniSirGlobal pCtx, @@ -7406,7 +7594,7 @@ uint32_t dot11f_unpack_ie_wfdie_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wfdie_opaque. */ -#define SigIeWFDIEOpaque (0x006c) +#define SigIeWFDIEOpaque (0x006e) uint32_t dot11f_unpack_ie_wmm_caps(tpAniSirGlobal pCtx, @@ -7448,7 +7636,7 @@ uint32_t dot11f_unpack_ie_wmm_caps(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmm_caps. */ -#define SigIeWMMCaps (0x006d) +#define SigIeWMMCaps (0x006f) uint32_t dot11f_unpack_ie_wmm_info_ap(tpAniSirGlobal pCtx, @@ -7484,7 +7672,7 @@ uint32_t dot11f_unpack_ie_wmm_info_ap(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmm_info_ap. */ -#define SigIeWMMInfoAp (0x006e) +#define SigIeWMMInfoAp (0x0070) uint32_t dot11f_unpack_ie_wmm_info_station(tpAniSirGlobal pCtx, @@ -7524,7 +7712,7 @@ uint32_t dot11f_unpack_ie_wmm_info_station(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmm_info_station. */ -#define SigIeWMMInfoStation (0x006f) +#define SigIeWMMInfoStation (0x0071) uint32_t dot11f_unpack_ie_wmm_params(tpAniSirGlobal pCtx, @@ -7696,7 +7884,7 @@ uint32_t dot11f_unpack_ie_wmm_params(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wmm_params. */ -#define SigIeWMMParams (0x0070) +#define SigIeWMMParams (0x0072) uint32_t dot11f_unpack_ie_wpa(tpAniSirGlobal pCtx, @@ -7805,7 +7993,7 @@ uint32_t dot11f_unpack_ie_wpa(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wpa. */ -#define SigIeWPA (0x0071) +#define SigIeWPA (0x0073) uint32_t dot11f_unpack_ie_wpa_opaque(tpAniSirGlobal pCtx, @@ -7830,7 +8018,7 @@ uint32_t dot11f_unpack_ie_wpa_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wpa_opaque. */ -#define SigIeWPAOpaque (0x0072) +#define SigIeWPAOpaque (0x0074) static const tTLVDefn TLVS_WSC[] = { @@ -7921,7 +8109,7 @@ uint32_t dot11f_unpack_ie_wsc(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc. */ -#define SigIeWSC (0x0073) +#define SigIeWSC (0x0075) static const tTLVDefn TLVS_WscAssocReq[] = { @@ -7953,7 +8141,7 @@ uint32_t dot11f_unpack_ie_wsc_assoc_req(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_assoc_req. */ -#define SigIeWscAssocReq (0x0074) +#define SigIeWscAssocReq (0x0076) static const tTLVDefn TLVS_WscAssocRes[] = { @@ -7985,7 +8173,7 @@ uint32_t dot11f_unpack_ie_wsc_assoc_res(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_assoc_res. */ -#define SigIeWscAssocRes (0x0075) +#define SigIeWscAssocRes (0x0077) static const tTLVDefn TLVS_WscBeacon[] = { @@ -8038,7 +8226,7 @@ uint32_t dot11f_unpack_ie_wsc_beacon(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_beacon. */ -#define SigIeWscBeacon (0x0076) +#define SigIeWscBeacon (0x0078) static const tTLVDefn TLVS_WscBeaconProbeRes[] = { @@ -8116,7 +8304,7 @@ uint32_t dot11f_unpack_ie_wsc_beacon_probe_res(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_beacon_probe_res. */ -#define SigIeWscBeaconProbeRes (0x0077) +#define SigIeWscBeaconProbeRes (0x0079) uint32_t dot11f_unpack_ie_wsc_ie_opaque(tpAniSirGlobal pCtx, @@ -8141,7 +8329,7 @@ uint32_t dot11f_unpack_ie_wsc_ie_opaque(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_ie_opaque. */ -#define SigIeWscIEOpaque (0x0078) +#define SigIeWscIEOpaque (0x007a) static const tTLVDefn TLVS_WscProbeReq[] = { @@ -8214,7 +8402,7 @@ uint32_t dot11f_unpack_ie_wsc_probe_req(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_probe_req. */ -#define SigIeWscProbeReq (0x0079) +#define SigIeWscProbeReq (0x007b) static const tTLVDefn TLVS_WscProbeRes[] = { @@ -8292,7 +8480,7 @@ uint32_t dot11f_unpack_ie_wsc_probe_res(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_probe_res. */ -#define SigIeWscProbeRes (0x007a) +#define SigIeWscProbeRes (0x007c) static const tTLVDefn TLVS_WscReassocRes[] = { @@ -8324,7 +8512,7 @@ uint32_t dot11f_unpack_ie_wsc_reassoc_res(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_wsc_reassoc_res. */ -#define SigIeWscReassocRes (0x007b) +#define SigIeWscReassocRes (0x007d) uint32_t dot11f_unpack_ie_addba_extn_element(tpAniSirGlobal pCtx, @@ -8352,7 +8540,7 @@ uint32_t dot11f_unpack_ie_addba_extn_element(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_addba_extn_element. */ -#define SigIeaddba_extn_element (0x007c) +#define SigIeaddba_extn_element (0x007e) uint32_t dot11f_unpack_ie_bss_color_change(tpAniSirGlobal pCtx, @@ -8387,7 +8575,73 @@ uint32_t dot11f_unpack_ie_bss_color_change(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_bss_color_change. */ -#define SigIebss_color_change (0x007d) +#define SigIebss_color_change (0x007f) + + +static const tFFDefn FFS_decriptor_element[] = { + { NULL, 0, 0, 0,}, +}; + +static const tIEDefn IES_decriptor_element[] = { + { offsetof(tDot11fIEdecriptor_element, tclas_mask), + offsetof(tDot11fIEtclas_mask, present), 0, "tclas_mask", + 0, 20, 46, SigIetclas_mask, {0, 0, 0, 0, 0}, + 0, DOT11F_EID_TCLAS_MASK, 89, 0, }, + { offsetof(tDot11fIEdecriptor_element, mscs_status), + offsetof(tDot11fIEmscs_status, present), 0, "mscs_status", + 0, 3, 3, SigIemscs_status, {0, 0, 0, 0, 0}, + 0, DOT11F_EID_MSCS_STATUS, 0, 0, }, + {0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, }, +}; + +uint32_t dot11f_unpack_ie_decriptor_element(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint8_t ielen, + tDot11fIEdecriptor_element *pDst, + bool append_ie) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + (void) pBuf; (void)ielen; /* Shutup the compiler */ + if (pDst->present) + return DOT11F_DUPLICATE_IE; + pDst->present = 1; + if (unlikely(ielen < 1)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + pDst->request_type = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + if (unlikely(ielen < 2)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohs(pCtx, &pDst->user_priority_control, pBuf, 0); + pBuf += 2; + ielen -= (uint8_t)2; + if (unlikely(ielen < 4)) { + pDst->present = 0; + return DOT11F_INCOMPLETE_IE; + } + + framesntohl(pCtx, &pDst->stream_timeout, pBuf, 0); + pBuf += 4; + ielen -= (uint8_t)4; + (void)pCtx; + status |= unpack_core(pCtx, + pBuf, + ielen, + FFS_decriptor_element, + IES_decriptor_element, + (uint8_t *)pDst, + sizeof(*pDst), + append_ie); + return status; +} /* End dot11f_unpack_ie_decriptor_element. */ + +#define SigIedecriptor_element (0x0080) uint32_t dot11f_unpack_ie_dh_parameter_element(tpAniSirGlobal pCtx, @@ -8415,7 +8669,7 @@ uint32_t dot11f_unpack_ie_dh_parameter_element(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_dh_parameter_element. */ -#define SigIedh_parameter_element (0x007e) +#define SigIedh_parameter_element (0x0081) uint32_t dot11f_unpack_ie_esp_information(tpAniSirGlobal pCtx, @@ -8440,7 +8694,7 @@ uint32_t dot11f_unpack_ie_esp_information(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_esp_information. */ -#define SigIeesp_information (0x007f) +#define SigIeesp_information (0x0082) uint32_t dot11f_unpack_ie_ext_chan_switch_ann(tpAniSirGlobal pCtx, @@ -8488,7 +8742,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 (0x0080) +#define SigIeext_chan_switch_ann (0x0083) uint32_t dot11f_unpack_ie_fils_assoc_delay_info(tpAniSirGlobal pCtx, @@ -8512,7 +8766,7 @@ uint32_t dot11f_unpack_ie_fils_assoc_delay_info(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_assoc_delay_info. */ -#define SigIefils_assoc_delay_info (0x0081) +#define SigIefils_assoc_delay_info (0x0084) uint32_t dot11f_unpack_ie_fils_hlp_container(tpAniSirGlobal pCtx, @@ -8548,7 +8802,7 @@ uint32_t dot11f_unpack_ie_fils_hlp_container(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_hlp_container. */ -#define SigIefils_hlp_container (0x0082) +#define SigIefils_hlp_container (0x0085) uint32_t dot11f_unpack_ie_fils_indication(tpAniSirGlobal pCtx, @@ -8586,7 +8840,7 @@ uint32_t dot11f_unpack_ie_fils_indication(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_indication. */ -#define SigIefils_indication (0x0083) +#define SigIefils_indication (0x0086) uint32_t dot11f_unpack_ie_fils_kde(tpAniSirGlobal pCtx, @@ -8614,7 +8868,7 @@ uint32_t dot11f_unpack_ie_fils_kde(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_kde. */ -#define SigIefils_kde (0x0084) +#define SigIefils_kde (0x0087) uint32_t dot11f_unpack_ie_fils_key_confirmation(tpAniSirGlobal pCtx, @@ -8634,7 +8888,7 @@ uint32_t dot11f_unpack_ie_fils_key_confirmation(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_key_confirmation. */ -#define SigIefils_key_confirmation (0x0085) +#define SigIefils_key_confirmation (0x0088) uint32_t dot11f_unpack_ie_fils_nonce(tpAniSirGlobal pCtx, @@ -8658,7 +8912,7 @@ uint32_t dot11f_unpack_ie_fils_nonce(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_nonce. */ -#define SigIefils_nonce (0x0086) +#define SigIefils_nonce (0x0089) uint32_t dot11f_unpack_ie_fils_public_key(tpAniSirGlobal pCtx, @@ -8686,7 +8940,7 @@ uint32_t dot11f_unpack_ie_fils_public_key(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_public_key. */ -#define SigIefils_public_key (0x0087) +#define SigIefils_public_key (0x008a) uint32_t dot11f_unpack_ie_fils_session(tpAniSirGlobal pCtx, @@ -8710,7 +8964,7 @@ uint32_t dot11f_unpack_ie_fils_session(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_session. */ -#define SigIefils_session (0x0088) +#define SigIefils_session (0x008b) uint32_t dot11f_unpack_ie_fils_wrapped_data(tpAniSirGlobal pCtx, @@ -8730,7 +8984,7 @@ uint32_t dot11f_unpack_ie_fils_wrapped_data(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fils_wrapped_data. */ -#define SigIefils_wrapped_data (0x0089) +#define SigIefils_wrapped_data (0x008c) uint32_t dot11f_unpack_ie_fragment_ie(tpAniSirGlobal pCtx, @@ -8750,7 +9004,7 @@ uint32_t dot11f_unpack_ie_fragment_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_fragment_ie. */ -#define SigIefragment_ie (0x008a) +#define SigIefragment_ie (0x008d) uint32_t dot11f_unpack_ie_he_6ghz_band_cap(tpAniSirGlobal pCtx, @@ -8783,7 +9037,7 @@ uint32_t dot11f_unpack_ie_he_6ghz_band_cap(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_he_6ghz_band_cap. */ -#define SigIehe_6ghz_band_cap (0x008b) +#define SigIehe_6ghz_band_cap (0x008e) uint32_t dot11f_unpack_ie_he_cap(tpAniSirGlobal pCtx, @@ -9028,7 +9282,7 @@ uint32_t dot11f_unpack_ie_he_cap(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_he_cap. */ -#define SigIehe_cap (0x008c) +#define SigIehe_cap (0x008f) uint32_t dot11f_unpack_ie_he_op(tpAniSirGlobal pCtx, @@ -9180,7 +9434,7 @@ uint32_t dot11f_unpack_ie_he_op(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_he_op. */ -#define SigIehe_op (0x008d) +#define SigIehe_op (0x0090) uint32_t dot11f_unpack_ie_hs20vendor_ie(tpAniSirGlobal pCtx, @@ -9237,7 +9491,7 @@ uint32_t dot11f_unpack_ie_hs20vendor_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_hs20vendor_ie. */ -#define SigIehs20vendor_ie (0x008e) +#define SigIehs20vendor_ie (0x0091) uint32_t dot11f_unpack_ie_ht2040_bss_coexistence(tpAniSirGlobal pCtx, @@ -9268,7 +9522,7 @@ uint32_t dot11f_unpack_ie_ht2040_bss_coexistence(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_ht2040_bss_coexistence. */ -#define SigIeht2040_bss_coexistence (0x008f) +#define SigIeht2040_bss_coexistence (0x0092) uint32_t dot11f_unpack_ie_ht2040_bss_intolerant_report(tpAniSirGlobal pCtx, @@ -9301,7 +9555,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 (0x0090) +#define SigIeht2040_bss_intolerant_report (0x0093) uint32_t dot11f_unpack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, @@ -9453,7 +9707,7 @@ uint32_t dot11f_unpack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_mu_edca_param_set. */ -#define SigIemu_edca_param_set (0x0091) +#define SigIemu_edca_param_set (0x0094) uint32_t dot11f_unpack_ie_osen_ie(tpAniSirGlobal pCtx, @@ -9473,7 +9727,7 @@ uint32_t dot11f_unpack_ie_osen_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_osen_ie. */ -#define SigIeosen_ie (0x0092) +#define SigIeosen_ie (0x0095) static const tTLVDefn TLVS_qcn_ie[] = { @@ -9528,7 +9782,7 @@ uint32_t dot11f_unpack_ie_qcn_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_qcn_ie. */ -#define SigIeqcn_ie (0x0093) +#define SigIeqcn_ie (0x0096) uint32_t dot11f_unpack_ie_roaming_consortium_sel(tpAniSirGlobal pCtx, @@ -9548,7 +9802,7 @@ uint32_t dot11f_unpack_ie_roaming_consortium_sel(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_roaming_consortium_sel. */ -#define SigIeroaming_consortium_sel (0x0094) +#define SigIeroaming_consortium_sel (0x0097) uint32_t dot11f_unpack_ie_sec_chan_offset_ele(tpAniSirGlobal pCtx, @@ -9572,7 +9826,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 (0x0095) +#define SigIesec_chan_offset_ele (0x0098) static const tFFDefn FFS_vendor_vht_ie[] = { @@ -9621,7 +9875,7 @@ uint32_t dot11f_unpack_ie_vendor_vht_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_vendor_vht_ie. */ -#define SigIevendor_vht_ie (0x0096) +#define SigIevendor_vht_ie (0x0099) static const tFFDefn FFS_AddTSRequest[] = { @@ -12865,6 +13119,38 @@ uint32_t dot11f_unpack_ht2040_bss_coexistence_mgmt_action_frame(tpAniSirGlobal p } /* End dot11f_unpack_ht2040_bss_coexistence_mgmt_action_frame. */ +static const tFFDefn FFS_mscs_request_action_frame[] = { + { "Category", offsetof(tDot11fmscs_request_action_frame, Category), + SigFfCategory, DOT11F_FF_CATEGORY_LEN, }, + { "Action", offsetof(tDot11fmscs_request_action_frame, Action), + SigFfAction, DOT11F_FF_ACTION_LEN, }, + { "DialogToken", offsetof(tDot11fmscs_request_action_frame, DialogToken), + SigFfDialogToken, DOT11F_FF_DIALOGTOKEN_LEN, }, + { NULL, 0, 0, 0,}, +}; + +static const tIEDefn IES_mscs_request_action_frame[] = { + { offsetof(tDot11fmscs_request_action_frame, decriptor_element), + offsetof(tDot11fIEdecriptor_element, present), 0, "decriptor_element", + 0, 9, 58, SigIedecriptor_element, {0, 0, 0, 0, 0}, + 0, DOT11F_EID_DECRIPTOR_ELEMENT, 88, 1, }, + {0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },}; + +uint32_t dot11f_unpack_mscs_request_action_frame(tpAniSirGlobal pCtx, + uint8_t *pBuf, uint32_t nBuf, + tDot11fmscs_request_action_frame *pFrm, bool append_ie) +{ + uint32_t i = 0; + uint32_t status = 0; + status = unpack_core(pCtx, pBuf, nBuf, + FFS_mscs_request_action_frame, IES_mscs_request_action_frame, + (uint8_t *)pFrm, sizeof(*pFrm), append_ie); + + (void)i; + return status; + +} /* End dot11f_unpack_mscs_request_action_frame. */ + static const tFFDefn FFS_p2p_oper_chan_change_confirm[] = { { "Category", offsetof(tDot11fp2p_oper_chan_change_confirm, Category), SigFfCategory, DOT11F_FF_CATEGORY_LEN, }, @@ -13615,6 +13901,16 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; + case SigIemscs_status: + status |= + dot11f_unpack_ie_mscs_status( + pCtx, pBufRemaining, len, + (tDot11fIEmscs_status *) + (pFrm + pIe->offset + + sizeof(tDot11fIEmscs_status) * + countOffset), + append_ie); + break; case SigIeneighbor_rpt: status |= dot11f_unpack_ie_neighbor_rpt( @@ -13635,6 +13931,16 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; + case SigIetclas_mask: + status |= + dot11f_unpack_ie_tclas_mask( + pCtx, pBufRemaining, len, + (tDot11fIEtclas_mask *) + (pFrm + pIe->offset + + sizeof(tDot11fIEtclas_mask) * + countOffset), + append_ie); + break; case SigIetgt_mac_addr: status |= dot11f_unpack_ie_tgt_mac_addr( @@ -14531,6 +14837,16 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; + case SigIedecriptor_element: + status |= + dot11f_unpack_ie_decriptor_element( + pCtx, pBufRemaining, len, + (tDot11fIEdecriptor_element *) + (pFrm + pIe->offset + + sizeof(tDot11fIEdecriptor_element) * + countOffset), + append_ie); + break; case SigIedh_parameter_element: status |= dot11f_unpack_ie_dh_parameter_element( @@ -15599,6 +15915,44 @@ uint32_t dot11f_get_packed_ie_neighbor_rpt(tpAniSirGlobal pCtx, return status; } /* End dot11f_get_packed_ie_neighbor_rpt. */ +uint32_t dot11f_get_packed_ie_tclas_mask(tpAniSirGlobal pCtx, + tDot11fIEtclas_mask *pIe, uint32_t *pnNeeded) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + (void)pCtx; + while (pIe->present) { + *pnNeeded += 1; + *pnNeeded += 1; + switch (pIe->classifier_type) { + case 4: + *pnNeeded += 1; + switch (pIe->info.IpParams.version) { + case 4: + *pnNeeded += 4; + *pnNeeded += 4; + *pnNeeded += 2; + *pnNeeded += 2; + *pnNeeded += 1; + *pnNeeded += 1; + *pnNeeded += 1; + break; + case 6: + *pnNeeded += 16; + *pnNeeded += 16; + *pnNeeded += 2; + *pnNeeded += 2; + *pnNeeded += 1; + *pnNeeded += 1; + *pnNeeded += 3; + break; + } + break; + } + break; + } + return status; +} /* End dot11f_get_packed_ie_tclas_mask. */ + uint32_t dot11f_get_packed_ie_channel_switch_wrapper(tpAniSirGlobal pCtx, tDot11fIEChannelSwitchWrapper *pIe, uint32_t *pnNeeded) { @@ -16116,6 +16470,22 @@ uint32_t dot11f_get_packed_ie_wsc_reassoc_res(tpAniSirGlobal pCtx, return status; } /* End dot11f_get_packed_ie_wsc_reassoc_res. */ +uint32_t dot11f_get_packed_ie_decriptor_element(tpAniSirGlobal pCtx, + tDot11fIEdecriptor_element *pIe, uint32_t *pnNeeded) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + (void)pCtx; + while (pIe->present) { + *pnNeeded += 1; + *pnNeeded += 2; + *pnNeeded += 4; + status = get_packed_size_core(pCtx, (uint8_t *)pIe, pnNeeded, + IES_decriptor_element); + break; + } + return status; +} /* End dot11f_get_packed_ie_decriptor_element. */ + uint32_t dot11f_get_packed_ie_he_cap(tpAniSirGlobal pCtx, tDot11fIEhe_cap *pIe, uint32_t *pnNeeded) { @@ -16741,6 +17111,16 @@ uint32_t dot11f_get_packed_ht2040_bss_coexistence_mgmt_action_frameSize(tpAniSir return status; } /* End dot11f_get_packed_ht2040_bss_coexistence_mgmt_action_frameSize. */ +uint32_t dot11f_get_packed_mscs_request_action_frameSize(tpAniSirGlobal pCtx, + tDot11fmscs_request_action_frame *pFrm, uint32_t *pnNeeded) +{ + uint32_t status = 0; + *pnNeeded = 3; + status = get_packed_size_core(pCtx, (uint8_t *)pFrm, pnNeeded, + IES_mscs_request_action_frame); + return status; +} /* End dot11f_get_packed_mscs_request_action_frameSize. */ + uint32_t dot11f_get_packed_p2p_oper_chan_change_confirmSize(tpAniSirGlobal pCtx, tDot11fp2p_oper_chan_change_confirm *pFrm, uint32_t *pnNeeded) { @@ -17050,6 +17430,13 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; + case SigIemscs_status: + offset = sizeof(tDot11fIEmscs_status); + byteCount = 1; + pIePresent = ((tDot11fIEmscs_status *) + (pFrm + pIe->offset + offset * i))-> + present; + break; case SigIeneighbor_rpt: offset = sizeof(tDot11fIEneighbor_rpt); status |= @@ -17065,6 +17452,14 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; + case SigIetclas_mask: + offset = sizeof(tDot11fIEtclas_mask); + status |= + dot11f_get_packed_ie_tclas_mask( + pCtx, (tDot11fIEtclas_mask *) + (pFrm + pIe->offset + offset * i), + pnNeeded); + break; case SigIetgt_mac_addr: offset = sizeof(tDot11fIEtgt_mac_addr); byteCount = 6; @@ -17756,6 +18151,14 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; + case SigIedecriptor_element: + offset = sizeof(tDot11fIEdecriptor_element); + status |= + dot11f_get_packed_ie_decriptor_element( + pCtx, (tDot11fIEdecriptor_element *) + (pFrm + pIe->offset + offset * i), + pnNeeded); + break; case SigIedh_parameter_element: offset = sizeof(tDot11fIEdh_parameter_element); byteCount = ((tDot11fIEdh_parameter_element *) @@ -22046,6 +22449,35 @@ uint32_t dot11f_pack_ie_max_age(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_max_age. */ +uint32_t dot11f_pack_ie_mscs_status(tpAniSirGlobal pCtx, + tDot11fIEmscs_status *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + nNeeded += 1; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 76; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + *pBuf = pSrc->status_code; + *pnConsumed += 1; + /* fieldsEndFlag = 1 */ + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return DOT11F_PARSE_SUCCESS; +} /* End dot11f_pack_ie_mscs_status. */ + uint32_t dot11f_pack_ie_neighbor_rpt(tpAniSirGlobal pCtx, tDot11fIEneighbor_rpt *pSrc, uint8_t *pBuf, @@ -22155,6 +22587,98 @@ uint32_t dot11f_pack_ie_req_mac_addr(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_req_mac_addr. */ +uint32_t dot11f_pack_ie_tclas_mask(tpAniSirGlobal pCtx, + tDot11fIEtclas_mask *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + uint32_t status = DOT11F_PARSE_SUCCESS; + status = dot11f_get_packed_ie_tclas_mask(pCtx, pSrc, &nNeeded); + if (!DOT11F_SUCCEEDED(status)) + return status; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 255; + ++pBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; ++(*pnConsumed); + *pBuf = 89; + ++pBuf; ++(*pnConsumed); + *pBuf = pSrc->classifier_type; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->classifier_mask; + *pnConsumed += 1; + pBuf += 1; + switch (pSrc->classifier_type) { + case 4: + *pBuf = pSrc->info.IpParams.version; + *pnConsumed += 1; + pBuf += 1; + switch (pSrc->info.IpParams.version) { + case 4: + DOT11F_MEMCPY(pCtx, pBuf, pSrc->info.IpParams.params.IpV4Params.source, 4); + *pnConsumed += 4; + pBuf += 4; + DOT11F_MEMCPY(pCtx, pBuf, pSrc->info.IpParams.params.IpV4Params.dest, 4); + *pnConsumed += 4; + pBuf += 4; + frameshtons(pCtx, pBuf, pSrc->info.IpParams.params.IpV4Params.src_port, 0); + *pnConsumed += 2; + pBuf += 2; + frameshtons(pCtx, pBuf, pSrc->info.IpParams.params.IpV4Params.dest_port, 0); + *pnConsumed += 2; + pBuf += 2; + *pBuf = pSrc->info.IpParams.params.IpV4Params.DSCP; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->info.IpParams.params.IpV4Params.proto; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->info.IpParams.params.IpV4Params.reserved; + *pnConsumed += 1; + /* fieldsEndFlag = 1 */ + break; + case 6: + DOT11F_MEMCPY(pCtx, pBuf, pSrc->info.IpParams.params.IpV6Params.source, 16); + *pnConsumed += 16; + pBuf += 16; + DOT11F_MEMCPY(pCtx, pBuf, pSrc->info.IpParams.params.IpV6Params.dest, 16); + *pnConsumed += 16; + pBuf += 16; + frameshtons(pCtx, pBuf, pSrc->info.IpParams.params.IpV6Params.src_port, 0); + *pnConsumed += 2; + pBuf += 2; + frameshtons(pCtx, pBuf, pSrc->info.IpParams.params.IpV6Params.dest_port, 0); + *pnConsumed += 2; + pBuf += 2; + *pBuf = pSrc->info.IpParams.params.IpV6Params.DSCP; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->info.IpParams.params.IpV6Params.next_header; + *pnConsumed += 1; + pBuf += 1; + DOT11F_MEMCPY(pCtx, pBuf, pSrc->info.IpParams.params.IpV6Params.flow_label, 3); + *pnConsumed += 3; + /* fieldsEndFlag = 1 */ + break; + } + break; + } + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return status; +} /* End dot11f_pack_ie_tclas_mask. */ + uint32_t dot11f_pack_ie_tgt_mac_addr(tpAniSirGlobal pCtx, tDot11fIEtgt_mac_addr *pSrc, uint8_t *pBuf, @@ -26338,6 +26862,53 @@ uint32_t dot11f_pack_ie_bss_color_change(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_bss_color_change. */ +uint32_t dot11f_pack_ie_decriptor_element(tpAniSirGlobal pCtx, + tDot11fIEdecriptor_element *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + uint32_t status = DOT11F_PARSE_SUCCESS; + status = dot11f_get_packed_ie_decriptor_element(pCtx, pSrc, &nNeeded); + if (!DOT11F_SUCCEEDED(status)) + return status; + while (pSrc->present) { + if (nNeeded > nBuf) + return DOT11F_BUFFER_OVERFLOW; + *pBuf = 255; + ++pBuf; --nBuf; ++(*pnConsumed); + pIeLen = pBuf; + ++pBuf; --nBuf; ++(*pnConsumed); + *pBuf = 88; + ++pBuf; --nBuf; ++(*pnConsumed); + *pBuf = pSrc->request_type; + *pnConsumed += 1; + pBuf += 1; + frameshtons(pCtx, pBuf, pSrc->user_priority_control, 0); + *pnConsumed += 2; + pBuf += 2; + frameshtonl(pCtx, pBuf, pSrc->stream_timeout, 0); + *pnConsumed += 4; + pBuf += 4; + status = pack_core(pCtx, + (uint8_t *)pSrc, + pBuf, + nBuf, + pnConsumed, + FFS_decriptor_element, + IES_decriptor_element); + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return status; +} /* End dot11f_pack_ie_decriptor_element. */ + uint32_t dot11f_pack_ie_dh_parameter_element(tpAniSirGlobal pCtx, tDot11fIEdh_parameter_element *pSrc, uint8_t *pBuf, @@ -28375,6 +28946,21 @@ uint32_t dot11f_pack_ht2040_bss_coexistence_mgmt_action_frame(tpAniSirGlobal pCt } /* End dot11f_unpack_ht2040_bss_coexistence_mgmt_action_frame. */ +uint32_t dot11f_pack_mscs_request_action_frame(tpAniSirGlobal pCtx, + tDot11fmscs_request_action_frame *pFrm, + uint8_t *pBuf, uint32_t nBuf, uint32_t *pnConsumed) +{ + uint32_t i = 0; + uint32_t status = 0; + (void)i; + *pnConsumed = 0U; + status = pack_core(pCtx, (uint8_t *)pFrm, pBuf, nBuf, pnConsumed, + FFS_mscs_request_action_frame, IES_mscs_request_action_frame); + + return status; + +} /* End dot11f_unpack_mscs_request_action_frame. */ + uint32_t dot11f_pack_p2p_oper_chan_change_confirm(tpAniSirGlobal pCtx, tDot11fp2p_oper_chan_change_confirm *pFrm, uint8_t *pBuf, uint32_t nBuf, uint32_t *pnConsumed) @@ -28937,6 +29523,14 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEmax_age) * i), pBufRemaining, nBufRemaining, &len); break; + case SigIemscs_status: + status |= + dot11f_pack_ie_mscs_status( + pCtx, (tDot11fIEmscs_status *) + (pSrc + pIe->offset + + sizeof(tDot11fIEmscs_status) * i), + pBufRemaining, nBufRemaining, &len); + break; case SigIeneighbor_rpt: status |= dot11f_pack_ie_neighbor_rpt( @@ -28953,6 +29547,14 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEreq_mac_addr) * i), pBufRemaining, nBufRemaining, &len); break; + case SigIetclas_mask: + status |= + dot11f_pack_ie_tclas_mask( + pCtx, (tDot11fIEtclas_mask *) + (pSrc + pIe->offset + + sizeof(tDot11fIEtclas_mask) * i), + pBufRemaining, nBufRemaining, &len); + break; case SigIetgt_mac_addr: status |= dot11f_pack_ie_tgt_mac_addr( @@ -29665,6 +30267,14 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEbss_color_change) * i), pBufRemaining, nBufRemaining, &len); break; + case SigIedecriptor_element: + status |= + dot11f_pack_ie_decriptor_element( + pCtx, (tDot11fIEdecriptor_element *) + (pSrc + pIe->offset + + sizeof(tDot11fIEdecriptor_element) * i), + pBufRemaining, nBufRemaining, &len); + break; case SigIedh_parameter_element: status |= dot11f_pack_ie_dh_parameter_element(