diff --git a/core/mac/src/cfg/cfgUtil/dot11f.frms b/core/mac/src/cfg/cfgUtil/dot11f.frms index a34239a6cd9e..fda797dafdfe 100644 --- a/core/mac/src/cfg/cfgUtil/dot11f.frms +++ b/core/mac/src/cfg/cfgUtil/dot11f.frms @@ -2804,7 +2804,7 @@ IE MeasurementRequest (EID_MEAS_REQUEST) // 7.3.2.21 const SUB_EID_PPET = 1; -IE vendor_he_cap (EID_VENDOR_SPECIFIC) OUI (0x00, 0x13, 0x74, 0x01) +IE he_cap (EID_EXTN_ID_ELEMENT) OUI (0x23) { { htc_he:1; @@ -2899,7 +2899,7 @@ IE vendor_he_cap (EID_VENDOR_SPECIFIC) OUI (0x00, 0x13, 0x74, 0x01) } } -IE vendor_he_op (EID_VENDOR_SPECIFIC) OUI (0x00, 0x13, 0x74, 0x02) +IE he_op (EID_EXTN_ID_ELEMENT) OUI (0x24) { { bss_color: 6; @@ -3397,8 +3397,8 @@ FRAME Beacon // C.f. Sec. 7.2.3.1 OPTIE ESEVersion; OPTIE MBO_IE; OPTIE QCN_IE; - OPTIE vendor_he_cap; - OPTIE vendor_he_op; + OPTIE he_cap; + OPTIE he_op; OPTIE bss_color_change; OPTIE mu_edca_param_set; OPTIE esp_information; @@ -3492,8 +3492,8 @@ FRAME Beacon2 OPTIE QComVendorIE; OPTIE ESEVersion; OPTIE QCN_IE; - OPTIE vendor_he_cap; - OPTIE vendor_he_op; + OPTIE he_cap; + OPTIE he_op; OPTIE bss_color_change; OPTIE mu_edca_param_set; OPTIE esp_information; @@ -3564,8 +3564,8 @@ FRAME BeaconIEs OPTIE QComVendorIE; OPTIE MBO_IE; OPTIE QCN_IE; - OPTIE vendor_he_cap; - OPTIE vendor_he_op; + OPTIE he_cap; + OPTIE he_op; OPTIE bss_color_change; OPTIE mu_edca_param_set; OPTIE esp_information; @@ -3614,7 +3614,7 @@ FRAME AssocRequest // 7.2.3.4 OPTIE vendor_vht_ie; OPTIE hs20vendor_ie; OPTIE QCN_IE; - OPTIE vendor_he_cap; + OPTIE he_cap; OPTIE MBO_IE; OPTIE osen_ie; } // End frame AssocRequest. @@ -3658,8 +3658,8 @@ FRAME AssocResponse // 7.2.3.5 OPTIE fils_kde; OPTIE vendor_vht_ie; OPTIE QCN_IE; - OPTIE vendor_he_cap; - OPTIE vendor_he_op; + OPTIE he_cap; + OPTIE he_op; OPTIE bss_color_change; OPTIE mu_edca_param_set; OPTIE MBO_IE; @@ -3701,7 +3701,7 @@ FRAME ReAssocRequest // 7.2.3.6 OPTIE QosMapSet; OPTIE vendor_vht_ie; OPTIE hs20vendor_ie; - OPTIE vendor_he_cap; + OPTIE he_cap; } // End frame ReAssocRequest. FRAME ReAssocResponse // 7.2.3.7 @@ -3737,8 +3737,8 @@ FRAME ReAssocResponse // 7.2.3.7 OPTIE OBSSScanParameters; OPTIE QosMapSet; OPTIE vendor_vht_ie; - OPTIE vendor_he_cap; - OPTIE vendor_he_op; + OPTIE he_cap; + OPTIE he_op; OPTIE bss_color_change; OPTIE mu_edca_param_set; OPTIE MBO_IE; @@ -3758,7 +3758,7 @@ FRAME ProbeRequest // 7.2.3.8 OPTIE VHTCaps; OPTIE ExtCap; OPTIE QCN_IE; - OPTIE vendor_he_cap; + OPTIE he_cap; } // End frame ProbeRequest. FRAME ProbeResponse // 7.2.3.9 @@ -3819,8 +3819,8 @@ FRAME ProbeResponse // 7.2.3.9 OPTIE ESEVersion; OPTIE MBO_IE; OPTIE QCN_IE; - OPTIE vendor_he_cap; - OPTIE vendor_he_op; + OPTIE he_cap; + OPTIE he_op; OPTIE bss_color_change; OPTIE mu_edca_param_set; OPTIE esp_information; diff --git a/core/mac/src/include/dot11f.h b/core/mac/src/include/dot11f.h index 8651301a5485..d5b3f87529a0 100644 --- a/core/mac/src/include/dot11f.h +++ b/core/mac/src/include/dot11f.h @@ -35,7 +35,7 @@ * * * This file was automatically generated by 'framesc' - * Thu Oct 12 13:47:01 2017 from the following file(s): + * Thu Oct 12 13:49:11 2017 from the following file(s): * * dot11f.frms * @@ -8673,6 +8673,177 @@ uint32_t dot11f_get_packed_ie_fragment_ie( }; /* End extern "C". */ #endif /* C++ */ +/* EID 255 (0xff) Extended EID 35 (0x23) */ +typedef struct sDot11fIEhe_cap { + uint8_t present; + uint32_t htc_he:1; + uint32_t twt_request:1; + uint32_t twt_responder:1; + uint32_t fragmentation:2; + uint32_t max_num_frag_msdu:3; + uint32_t min_frag_size:2; + uint32_t trigger_frm_mac_pad:2; + uint32_t multi_tid_aggr:3; + uint32_t he_link_adaptation:2; + uint32_t all_ack:1; + uint32_t ul_mu_rsp_sched:1; + uint32_t a_bsr:1; + uint32_t broadcast_twt:1; + uint32_t ba_32bit_bitmap:1; + uint32_t mu_cascade:1; + uint32_t ack_enabled_multitid:1; + uint32_t dl_mu_ba:1; + uint32_t omi_a_ctrl:1; + uint32_t ofdma_ra:1; + uint32_t max_ampdu_len:2; + uint32_t amsdu_frag:1; + uint32_t flex_twt_sched:1; + uint32_t rx_ctrl_frame:1; + uint8_t bsrp_ampdu_aggr:1; + uint8_t qtp:1; + uint8_t a_bqr:1; + uint8_t sr_responder:1; + uint8_t ndp_feedback_supp:1; + uint8_t ops_supp:1; + uint8_t reserved1:2; + uint32_t dual_band:1; + uint32_t chan_width:7; + uint32_t rx_pream_puncturing:4; + uint32_t device_class:1; + uint32_t ldpc_coding:1; + uint32_t he_1x_ltf_800_gi_ppdu:1; + uint32_t reserved:2; + uint32_t he_4x_ltf_3200_gi_ndp:1; + uint32_t stbc_lt_80mhz:2; + uint32_t doppler:2; + uint32_t ul_mu:2; + uint32_t dcm_enc_tx:3; + uint32_t dcm_enc_rx:3; + uint32_t ul_he_mu:1; + uint32_t su_beamformer:1; + uint32_t su_beamformee:1; + uint32_t mu_beamformer:1; + uint32_t bfee_sts_lt_80:3; + uint32_t bfee_sts_gt_80:3; + uint32_t num_sounding_lt_80:3; + uint32_t num_sounding_gt_80:3; + uint32_t su_feedback_tone16:1; + uint32_t mu_feedback_tone16:1; + uint32_t codebook_su:1; + uint32_t codebook_mu:1; + uint32_t beamforming_feedback:3; + uint32_t he_er_su_ppdu:1; + uint32_t dl_mu_mimo_part_bw:1; + uint32_t ppet_present:1; + uint32_t srp:1; + uint32_t power_boost:1; + uint32_t he_ltf_800_gi_4x:1; + uint32_t max_nc:3; + uint32_t stbc_gt_80mhz:2; + uint8_t er_he_ltf_800_gi_4x:1; + uint8_t reserved2:7; + uint16_t nss_supported:3; + uint16_t mcs_supported:3; + uint16_t tx_bw_bitmap:5; + uint16_t rx_bw_bitmap:5; + tDot11fIEppe_threshold ppe_threshold; +} tDot11fIEhe_cap; + +#define DOT11F_EID_HE_CAP (255) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_HE_CAP_MIN_LEN (16) + +#define DOT11F_IE_HE_CAP_MAX_LEN (43) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +uint32_t dot11f_unpack_ie_he_cap( + tpAniSirGlobal, + uint8_t *, + uint32_t, + tDot11fIEhe_cap*, + bool); + +uint32_t dot11f_pack_ie_he_cap( + tpAniSirGlobal, + tDot11fIEhe_cap *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_he_cap( + tpAniSirGlobal, + tDot11fIEhe_cap *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + +/* EID 255 (0xff) Extended EID 36 (0x24) */ +typedef struct sDot11fIEhe_op { + uint8_t present; + uint32_t bss_color:6; + uint32_t default_pe:3; + uint32_t twt_required:1; + uint32_t rts_threshold:10; + uint32_t partial_bss_col:1; + uint32_t vht_oper_present:1; + uint32_t reserved1:6; + uint32_t mbssid_ap:1; + uint32_t tx_bssid_ind:1; + uint32_t bss_col_disabled:1; + uint32_t reserved2:1; + uint8_t basic_mcs_nss[3]; + union { + struct { + uint8_t chan_width; + uint8_t center_freq_seg0; + uint8_t center_freq_seg1; + } info; /* vht_oper_present = 1 */ + } vht_oper; + union { + struct { + uint8_t data; + } info; /* mbssid_ap = 1 */ + } maxbssid_ind; +} tDot11fIEhe_op; + +#define DOT11F_EID_HE_OP (255) + +/* N.B. These #defines do *not* include the EID & length */ +#define DOT11F_IE_HE_OP_MIN_LEN (7) + +#define DOT11F_IE_HE_OP_MAX_LEN (11) + +#ifdef __cplusplus +extern "C" { +#endif /* C++ */ +uint32_t dot11f_unpack_ie_he_op( + tpAniSirGlobal, + uint8_t *, + uint32_t, + tDot11fIEhe_op*, + bool); + +uint32_t dot11f_pack_ie_he_op( + tpAniSirGlobal, + tDot11fIEhe_op *, + uint8_t *, + uint32_t, + uint32_t*); + +uint32_t dot11f_get_packed_ie_he_op( + tpAniSirGlobal, + tDot11fIEhe_op *, + uint32_t*); + +#ifdef __cplusplus +}; /* End extern "C". */ +#endif /* C++ */ + /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x10} */ typedef struct sDot11fIEhs20vendor_ie { uint8_t present; @@ -8954,177 +9125,6 @@ uint32_t dot11f_get_packed_ie_sec_chan_offset_ele( }; /* End extern "C". */ #endif /* C++ */ -/* EID 221 (0xdd) {OUI 0x00, 0x13, 0x74, 0x01} */ -typedef struct sDot11fIEvendor_he_cap { - uint8_t present; - uint32_t htc_he:1; - uint32_t twt_request:1; - uint32_t twt_responder:1; - uint32_t fragmentation:2; - uint32_t max_num_frag_msdu:3; - uint32_t min_frag_size:2; - uint32_t trigger_frm_mac_pad:2; - uint32_t multi_tid_aggr:3; - uint32_t he_link_adaptation:2; - uint32_t all_ack:1; - uint32_t ul_mu_rsp_sched:1; - uint32_t a_bsr:1; - uint32_t broadcast_twt:1; - uint32_t ba_32bit_bitmap:1; - uint32_t mu_cascade:1; - uint32_t ack_enabled_multitid:1; - uint32_t dl_mu_ba:1; - uint32_t omi_a_ctrl:1; - uint32_t ofdma_ra:1; - uint32_t max_ampdu_len:2; - uint32_t amsdu_frag:1; - uint32_t flex_twt_sched:1; - uint32_t rx_ctrl_frame:1; - uint8_t bsrp_ampdu_aggr:1; - uint8_t qtp:1; - uint8_t a_bqr:1; - uint8_t sr_responder:1; - uint8_t ndp_feedback_supp:1; - uint8_t ops_supp:1; - uint8_t reserved1:2; - uint32_t dual_band:1; - uint32_t chan_width:7; - uint32_t rx_pream_puncturing:4; - uint32_t device_class:1; - uint32_t ldpc_coding:1; - uint32_t he_1x_ltf_800_gi_ppdu:1; - uint32_t reserved:2; - uint32_t he_4x_ltf_3200_gi_ndp:1; - uint32_t stbc_lt_80mhz:2; - uint32_t doppler:2; - uint32_t ul_mu:2; - uint32_t dcm_enc_tx:3; - uint32_t dcm_enc_rx:3; - uint32_t ul_he_mu:1; - uint32_t su_beamformer:1; - uint32_t su_beamformee:1; - uint32_t mu_beamformer:1; - uint32_t bfee_sts_lt_80:3; - uint32_t bfee_sts_gt_80:3; - uint32_t num_sounding_lt_80:3; - uint32_t num_sounding_gt_80:3; - uint32_t su_feedback_tone16:1; - uint32_t mu_feedback_tone16:1; - uint32_t codebook_su:1; - uint32_t codebook_mu:1; - uint32_t beamforming_feedback:3; - uint32_t he_er_su_ppdu:1; - uint32_t dl_mu_mimo_part_bw:1; - uint32_t ppet_present:1; - uint32_t srp:1; - uint32_t power_boost:1; - uint32_t he_ltf_800_gi_4x:1; - uint32_t max_nc:3; - uint32_t stbc_gt_80mhz:2; - uint8_t er_he_ltf_800_gi_4x:1; - uint8_t reserved2:7; - uint16_t nss_supported:3; - uint16_t mcs_supported:3; - uint16_t tx_bw_bitmap:5; - uint16_t rx_bw_bitmap:5; - tDot11fIEppe_threshold ppe_threshold; -} tDot11fIEvendor_he_cap; - -#define DOT11F_EID_VENDOR_HE_CAP (221) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_VENDOR_HE_CAP_MIN_LEN (20) - -#define DOT11F_IE_VENDOR_HE_CAP_MAX_LEN (47) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -uint32_t dot11f_unpack_ie_vendor_he_cap( - tpAniSirGlobal, - uint8_t *, - uint32_t, - tDot11fIEvendor_he_cap*, - bool); - -uint32_t dot11f_pack_ie_vendor_he_cap( - tpAniSirGlobal, - tDot11fIEvendor_he_cap *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_vendor_he_cap( - tpAniSirGlobal, - tDot11fIEvendor_he_cap *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - -/* EID 221 (0xdd) {OUI 0x00, 0x13, 0x74, 0x02} */ -typedef struct sDot11fIEvendor_he_op { - uint8_t present; - uint32_t bss_color:6; - uint32_t default_pe:3; - uint32_t twt_required:1; - uint32_t rts_threshold:10; - uint32_t partial_bss_col:1; - uint32_t vht_oper_present:1; - uint32_t reserved1:6; - uint32_t mbssid_ap:1; - uint32_t tx_bssid_ind:1; - uint32_t bss_col_disabled:1; - uint32_t reserved2:1; - uint8_t basic_mcs_nss[3]; - union { - struct { - uint8_t chan_width; - uint8_t center_freq_seg0; - uint8_t center_freq_seg1; - } info; /* vht_oper_present = 1 */ - } vht_oper; - union { - struct { - uint8_t data; - } info; /* mbssid_ap = 1 */ - } maxbssid_ind; -} tDot11fIEvendor_he_op; - -#define DOT11F_EID_VENDOR_HE_OP (221) - -/* N.B. These #defines do *not* include the EID & length */ -#define DOT11F_IE_VENDOR_HE_OP_MIN_LEN (11) - -#define DOT11F_IE_VENDOR_HE_OP_MAX_LEN (15) - -#ifdef __cplusplus -extern "C" { -#endif /* C++ */ -uint32_t dot11f_unpack_ie_vendor_he_op( - tpAniSirGlobal, - uint8_t *, - uint32_t, - tDot11fIEvendor_he_op*, - bool); - -uint32_t dot11f_pack_ie_vendor_he_op( - tpAniSirGlobal, - tDot11fIEvendor_he_op *, - uint8_t *, - uint32_t, - uint32_t*); - -uint32_t dot11f_get_packed_ie_vendor_he_op( - tpAniSirGlobal, - tDot11fIEvendor_he_op *, - uint32_t*); - -#ifdef __cplusplus -}; /* End extern "C". */ -#endif /* C++ */ - /* EID 221 (0xdd) {OUI 0x00, 0x90, 0x4c, 0x04} */ typedef struct sDot11fIEvendor_vht_ie { uint8_t present; @@ -9280,7 +9280,7 @@ typedef struct sDot11fAssocRequest{ tDot11fIEvendor_vht_ie vendor_vht_ie; tDot11fIEhs20vendor_ie hs20vendor_ie; tDot11fIEQCN_IE QCN_IE; - tDot11fIEvendor_he_cap vendor_he_cap; + tDot11fIEhe_cap he_cap; tDot11fIEMBO_IE MBO_IE; tDot11fIEosen_ie osen_ie; } tDot11fAssocRequest; @@ -9345,8 +9345,8 @@ typedef struct sDot11fAssocResponse{ tDot11fIEfils_kde fils_kde; tDot11fIEvendor_vht_ie vendor_vht_ie; tDot11fIEQCN_IE QCN_IE; - tDot11fIEvendor_he_cap vendor_he_cap; - tDot11fIEvendor_he_op vendor_he_op; + tDot11fIEhe_cap he_cap; + tDot11fIEhe_op he_op; tDot11fIEbss_color_change bss_color_change; tDot11fIEmu_edca_param_set mu_edca_param_set; tDot11fIEMBO_IE MBO_IE; @@ -9468,8 +9468,8 @@ typedef struct sDot11fBeacon{ tDot11fIEESEVersion ESEVersion; tDot11fIEMBO_IE MBO_IE; tDot11fIEQCN_IE QCN_IE; - tDot11fIEvendor_he_cap vendor_he_cap; - tDot11fIEvendor_he_op vendor_he_op; + tDot11fIEhe_cap he_cap; + tDot11fIEhe_op he_op; tDot11fIEbss_color_change bss_color_change; tDot11fIEmu_edca_param_set mu_edca_param_set; tDot11fIEesp_information esp_information; @@ -9569,8 +9569,8 @@ typedef struct sDot11fBeacon2{ tDot11fIEQComVendorIE QComVendorIE; tDot11fIEESEVersion ESEVersion; tDot11fIEQCN_IE QCN_IE; - tDot11fIEvendor_he_cap vendor_he_cap; - tDot11fIEvendor_he_op vendor_he_op; + tDot11fIEhe_cap he_cap; + tDot11fIEhe_op he_op; tDot11fIEbss_color_change bss_color_change; tDot11fIEmu_edca_param_set mu_edca_param_set; tDot11fIEesp_information esp_information; @@ -9652,8 +9652,8 @@ typedef struct sDot11fBeaconIEs{ tDot11fIEQComVendorIE QComVendorIE; tDot11fIEMBO_IE MBO_IE; tDot11fIEQCN_IE QCN_IE; - tDot11fIEvendor_he_cap vendor_he_cap; - tDot11fIEvendor_he_op vendor_he_op; + tDot11fIEhe_cap he_cap; + tDot11fIEhe_op he_op; tDot11fIEbss_color_change bss_color_change; tDot11fIEmu_edca_param_set mu_edca_param_set; tDot11fIEesp_information esp_information; @@ -9995,7 +9995,7 @@ typedef struct sDot11fProbeRequest{ tDot11fIEVHTCaps VHTCaps; tDot11fIEExtCap ExtCap; tDot11fIEQCN_IE QCN_IE; - tDot11fIEvendor_he_cap vendor_he_cap; + tDot11fIEhe_cap he_cap; } tDot11fProbeRequest; #define DOT11F_PROBEREQUEST (21) @@ -10073,8 +10073,8 @@ typedef struct sDot11fProbeResponse{ tDot11fIEESEVersion ESEVersion; tDot11fIEMBO_IE MBO_IE; tDot11fIEQCN_IE QCN_IE; - tDot11fIEvendor_he_cap vendor_he_cap; - tDot11fIEvendor_he_op vendor_he_op; + tDot11fIEhe_cap he_cap; + tDot11fIEhe_op he_op; tDot11fIEbss_color_change bss_color_change; tDot11fIEmu_edca_param_set mu_edca_param_set; tDot11fIEesp_information esp_information; @@ -10220,7 +10220,7 @@ typedef struct sDot11fReAssocRequest{ tDot11fIEQosMapSet QosMapSet; tDot11fIEvendor_vht_ie vendor_vht_ie; tDot11fIEhs20vendor_ie hs20vendor_ie; - tDot11fIEvendor_he_cap vendor_he_cap; + tDot11fIEhe_cap he_cap; } tDot11fReAssocRequest; #define DOT11F_REASSOCREQUEST (26) @@ -10277,8 +10277,8 @@ typedef struct sDot11fReAssocResponse{ tDot11fIEOBSSScanParameters OBSSScanParameters; tDot11fIEQosMapSet QosMapSet; tDot11fIEvendor_vht_ie vendor_vht_ie; - tDot11fIEvendor_he_cap vendor_he_cap; - tDot11fIEvendor_he_op vendor_he_op; + tDot11fIEhe_cap he_cap; + tDot11fIEhe_op he_op; tDot11fIEbss_color_change bss_color_change; tDot11fIEmu_edca_param_set mu_edca_param_set; tDot11fIEMBO_IE MBO_IE; 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 9d68559d19b6..e7d43e13fe7e 100644 --- a/core/mac/src/sys/legacy/src/utils/src/dot11f.c +++ b/core/mac/src/sys/legacy/src/utils/src/dot11f.c @@ -33,7 +33,7 @@ * * * This file was automatically generated by 'framesc' - * Thu Oct 12 13:47:01 2017 from the following file(s): + * Thu Oct 12 13:49:11 2017 from the following file(s): * * dot11f.frms * @@ -6519,6 +6519,194 @@ uint32_t dot11f_unpack_ie_fragment_ie(tpAniSirGlobal pCtx, #define SigIefragment_ie (0x0089) +static const tFFDefn FFS_he_cap[] = { + { NULL, 0, 0, 0,}, +}; + +static const tIEDefn IES_he_cap[] = { + { offsetof(tDot11fIEhe_cap, ppe_threshold), + offsetof(tDot11fIEppe_threshold, present), 0, "ppe_threshold", + 0, 4, 27, SigIeppe_threshold, {0, 0, 0, 0, 0}, + 0, DOT11F_EID_PPE_THRESHOLD, 0, 0, }, + {0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, }, +}; + +uint32_t dot11f_unpack_ie_he_cap(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint32_t ielen, + tDot11fIEhe_cap *pDst, + bool append_ie) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + uint32_t tmp76__; + uint8_t tmp77__; + uint32_t tmp78__; + uint32_t tmp79__; + uint8_t tmp80__; + uint16_t tmp81__; + (void) pBuf; (void)ielen; /* Shutup the compiler */ + if (pDst->present) + status = DOT11F_DUPLICATE_IE; + pDst->present = 1; + framesntohl(pCtx, &tmp76__, pBuf, 0); + pBuf += 4; + ielen -= 4; + pDst->htc_he = tmp76__ >> 0 & 0x1; + pDst->twt_request = tmp76__ >> 1 & 0x1; + pDst->twt_responder = tmp76__ >> 2 & 0x1; + pDst->fragmentation = tmp76__ >> 3 & 0x3; + pDst->max_num_frag_msdu = tmp76__ >> 5 & 0x7; + pDst->min_frag_size = tmp76__ >> 8 & 0x3; + pDst->trigger_frm_mac_pad = tmp76__ >> 10 & 0x3; + pDst->multi_tid_aggr = tmp76__ >> 12 & 0x7; + pDst->he_link_adaptation = tmp76__ >> 15 & 0x3; + pDst->all_ack = tmp76__ >> 17 & 0x1; + pDst->ul_mu_rsp_sched = tmp76__ >> 18 & 0x1; + pDst->a_bsr = tmp76__ >> 19 & 0x1; + pDst->broadcast_twt = tmp76__ >> 20 & 0x1; + pDst->ba_32bit_bitmap = tmp76__ >> 21 & 0x1; + pDst->mu_cascade = tmp76__ >> 22 & 0x1; + pDst->ack_enabled_multitid = tmp76__ >> 23 & 0x1; + pDst->dl_mu_ba = tmp76__ >> 24 & 0x1; + pDst->omi_a_ctrl = tmp76__ >> 25 & 0x1; + pDst->ofdma_ra = tmp76__ >> 26 & 0x1; + pDst->max_ampdu_len = tmp76__ >> 27 & 0x3; + pDst->amsdu_frag = tmp76__ >> 29 & 0x1; + pDst->flex_twt_sched = tmp76__ >> 30 & 0x1; + pDst->rx_ctrl_frame = tmp76__ >> 31 & 0x1; + tmp77__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->bsrp_ampdu_aggr = tmp77__ >> 0 & 0x1; + pDst->qtp = tmp77__ >> 1 & 0x1; + pDst->a_bqr = tmp77__ >> 2 & 0x1; + pDst->sr_responder = tmp77__ >> 3 & 0x1; + pDst->ndp_feedback_supp = tmp77__ >> 4 & 0x1; + pDst->ops_supp = tmp77__ >> 5 & 0x1; + pDst->reserved1 = tmp77__ >> 6 & 0x3; + framesntohl(pCtx, &tmp78__, pBuf, 0); + pBuf += 4; + ielen -= 4; + pDst->dual_band = tmp78__ >> 0 & 0x1; + pDst->chan_width = tmp78__ >> 1 & 0x7f; + pDst->rx_pream_puncturing = tmp78__ >> 8 & 0xf; + pDst->device_class = tmp78__ >> 12 & 0x1; + pDst->ldpc_coding = tmp78__ >> 13 & 0x1; + pDst->he_1x_ltf_800_gi_ppdu = tmp78__ >> 14 & 0x1; + pDst->reserved = tmp78__ >> 15 & 0x3; + pDst->he_4x_ltf_3200_gi_ndp = tmp78__ >> 17 & 0x1; + pDst->stbc_lt_80mhz = tmp78__ >> 18 & 0x3; + pDst->doppler = tmp78__ >> 20 & 0x3; + pDst->ul_mu = tmp78__ >> 22 & 0x3; + pDst->dcm_enc_tx = tmp78__ >> 24 & 0x7; + pDst->dcm_enc_rx = tmp78__ >> 27 & 0x7; + pDst->ul_he_mu = tmp78__ >> 30 & 0x1; + pDst->su_beamformer = tmp78__ >> 31 & 0x1; + framesntohl(pCtx, &tmp79__, pBuf, 0); + pBuf += 4; + ielen -= 4; + pDst->su_beamformee = tmp79__ >> 0 & 0x1; + pDst->mu_beamformer = tmp79__ >> 1 & 0x1; + pDst->bfee_sts_lt_80 = tmp79__ >> 2 & 0x7; + pDst->bfee_sts_gt_80 = tmp79__ >> 5 & 0x7; + pDst->num_sounding_lt_80 = tmp79__ >> 8 & 0x7; + pDst->num_sounding_gt_80 = tmp79__ >> 11 & 0x7; + pDst->su_feedback_tone16 = tmp79__ >> 14 & 0x1; + pDst->mu_feedback_tone16 = tmp79__ >> 15 & 0x1; + pDst->codebook_su = tmp79__ >> 16 & 0x1; + pDst->codebook_mu = tmp79__ >> 17 & 0x1; + pDst->beamforming_feedback = tmp79__ >> 18 & 0x7; + pDst->he_er_su_ppdu = tmp79__ >> 21 & 0x1; + pDst->dl_mu_mimo_part_bw = tmp79__ >> 22 & 0x1; + pDst->ppet_present = tmp79__ >> 23 & 0x1; + pDst->srp = tmp79__ >> 24 & 0x1; + pDst->power_boost = tmp79__ >> 25 & 0x1; + pDst->he_ltf_800_gi_4x = tmp79__ >> 26 & 0x1; + pDst->max_nc = tmp79__ >> 27 & 0x7; + pDst->stbc_gt_80mhz = tmp79__ >> 30 & 0x3; + tmp80__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->er_he_ltf_800_gi_4x = tmp80__ >> 0 & 0x1; + pDst->reserved2 = tmp80__ >> 1 & 0x7f; + framesntohs(pCtx, &tmp81__, pBuf, 0); + pBuf += 2; + ielen -= 2; + pDst->nss_supported = tmp81__ >> 0 & 0x7; + pDst->mcs_supported = tmp81__ >> 3 & 0x7; + pDst->tx_bw_bitmap = tmp81__ >> 6 & 0x1f; + pDst->rx_bw_bitmap = tmp81__ >> 11 & 0x1f; + (void)pCtx; + status |= unpack_core(pCtx, + pBuf, + ielen, + FFS_he_cap, + IES_he_cap, + (uint8_t *)pDst, + sizeof(*pDst), + append_ie); + return status; +} /* End dot11f_unpack_ie_he_cap. */ + +#define SigIehe_cap (0x008a) + + +uint32_t dot11f_unpack_ie_he_op(tpAniSirGlobal pCtx, + uint8_t *pBuf, + uint32_t ielen, + tDot11fIEhe_op *pDst, + bool append_ie) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + uint32_t tmp82__; + (void) pBuf; (void)ielen; /* Shutup the compiler */ + if (pDst->present) + status = DOT11F_DUPLICATE_IE; + pDst->present = 1; + framesntohl(pCtx, &tmp82__, pBuf, 0); + pBuf += 4; + ielen -= 4; + pDst->bss_color = tmp82__ >> 0 & 0x3f; + pDst->default_pe = tmp82__ >> 6 & 0x7; + pDst->twt_required = tmp82__ >> 9 & 0x1; + pDst->rts_threshold = tmp82__ >> 10 & 0x3ff; + pDst->partial_bss_col = tmp82__ >> 20 & 0x1; + pDst->vht_oper_present = tmp82__ >> 21 & 0x1; + pDst->reserved1 = tmp82__ >> 22 & 0x3f; + pDst->mbssid_ap = tmp82__ >> 28 & 0x1; + pDst->tx_bssid_ind = tmp82__ >> 29 & 0x1; + pDst->bss_col_disabled = tmp82__ >> 30 & 0x1; + pDst->reserved2 = tmp82__ >> 31 & 0x1; + DOT11F_MEMCPY(pCtx, pDst->basic_mcs_nss, pBuf, 3); + pBuf += 3; + ielen -= (uint8_t)3; + switch (pDst->vht_oper_present) { + case 1: + pDst->vht_oper.info.chan_width = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + pDst->vht_oper.info.center_freq_seg0 = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + pDst->vht_oper.info.center_freq_seg1 = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + break; + } + switch (pDst->mbssid_ap) { + case 1: + pDst->maxbssid_ind.info.data = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + break; + } + (void)pCtx; + return status; +} /* End dot11f_unpack_ie_he_op. */ + +#define SigIehe_op (0x008b) + + uint32_t dot11f_unpack_ie_hs20vendor_ie(tpAniSirGlobal pCtx, uint8_t *pBuf, uint32_t ielen, @@ -6526,18 +6714,18 @@ uint32_t dot11f_unpack_ie_hs20vendor_ie(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp76__; + uint8_t tmp83__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) status = DOT11F_DUPLICATE_IE; pDst->present = 1; - tmp76__ = *pBuf; + tmp83__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->dgaf_dis = tmp76__ >> 0 & 0x1; - pDst->hs_id_present = tmp76__ >> 1 & 0x3; - pDst->reserved = tmp76__ >> 3 & 0x1; - pDst->release_num = tmp76__ >> 4 & 0xf; + pDst->dgaf_dis = tmp83__ >> 0 & 0x1; + pDst->hs_id_present = tmp83__ >> 1 & 0x3; + pDst->reserved = tmp83__ >> 3 & 0x1; + pDst->release_num = tmp83__ >> 4 & 0xf; if (!ielen) { return 0U; } else { @@ -6558,7 +6746,7 @@ uint32_t dot11f_unpack_ie_hs20vendor_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_hs20vendor_ie. */ -#define SigIehs20vendor_ie (0x008a) +#define SigIehs20vendor_ie (0x008c) uint32_t dot11f_unpack_ie_ht2040_bss_coexistence(tpAniSirGlobal pCtx, @@ -6568,23 +6756,23 @@ uint32_t dot11f_unpack_ie_ht2040_bss_coexistence(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp77__; + uint8_t tmp84__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) status = DOT11F_DUPLICATE_IE; pDst->present = 1; - tmp77__ = *pBuf; - pDst->info_request = tmp77__ >> 0 & 0x1; - pDst->forty_mhz_intolerant = tmp77__ >> 1 & 0x1; - pDst->twenty_mhz_bsswidth_req = tmp77__ >> 2 & 0x1; - pDst->obss_scan_exemption_req = tmp77__ >> 3 & 0x1; - pDst->obss_scan_exemption_grant = tmp77__ >> 4 & 0x1; - pDst->unused = tmp77__ >> 5 & 0x7; + tmp84__ = *pBuf; + pDst->info_request = tmp84__ >> 0 & 0x1; + pDst->forty_mhz_intolerant = tmp84__ >> 1 & 0x1; + pDst->twenty_mhz_bsswidth_req = tmp84__ >> 2 & 0x1; + pDst->obss_scan_exemption_req = tmp84__ >> 3 & 0x1; + pDst->obss_scan_exemption_grant = tmp84__ >> 4 & 0x1; + pDst->unused = tmp84__ >> 5 & 0x7; (void)pCtx; return status; } /* End dot11f_unpack_ie_ht2040_bss_coexistence. */ -#define SigIeht2040_bss_coexistence (0x008b) +#define SigIeht2040_bss_coexistence (0x008d) uint32_t dot11f_unpack_ie_ht2040_bss_intolerant_report(tpAniSirGlobal pCtx, @@ -6612,7 +6800,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 (0x008c) +#define SigIeht2040_bss_intolerant_report (0x008e) uint32_t dot11f_unpack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, @@ -6622,14 +6810,14 @@ uint32_t dot11f_unpack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, bool append_ie) { uint32_t status = DOT11F_PARSE_SUCCESS; - uint8_t tmp78__; - uint8_t tmp79__; - uint8_t tmp80__; - uint8_t tmp81__; - uint8_t tmp82__; - uint8_t tmp83__; - uint8_t tmp84__; uint8_t tmp85__; + uint8_t tmp86__; + uint8_t tmp87__; + uint8_t tmp88__; + uint8_t tmp89__; + uint8_t tmp90__; + uint8_t tmp91__; + uint8_t tmp92__; (void) pBuf; (void)ielen; /* Shutup the compiler */ if (pDst->present) status = DOT11F_DUPLICATE_IE; @@ -6637,69 +6825,69 @@ uint32_t dot11f_unpack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, pDst->qos = *pBuf; pBuf += 1; ielen -= (uint8_t)1; - tmp78__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->acbe_aifsn = tmp78__ >> 0 & 0xf; - pDst->acbe_acm = tmp78__ >> 4 & 0x1; - pDst->acbe_aci = tmp78__ >> 5 & 0x3; - pDst->unused1 = tmp78__ >> 7 & 0x1; - tmp79__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->acbe_acwmin = tmp79__ >> 0 & 0xf; - pDst->acbe_acwmax = tmp79__ >> 4 & 0xf; - pDst->acbe_muedca_timer = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - tmp80__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->acbk_aifsn = tmp80__ >> 0 & 0xf; - pDst->acbk_acm = tmp80__ >> 4 & 0x1; - pDst->acbk_aci = tmp80__ >> 5 & 0x3; - pDst->unused2 = tmp80__ >> 7 & 0x1; - tmp81__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->acbk_acwmin = tmp81__ >> 0 & 0xf; - pDst->acbk_acwmax = tmp81__ >> 4 & 0xf; - pDst->acbk_muedca_timer = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - tmp82__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->acvi_aifsn = tmp82__ >> 0 & 0xf; - pDst->acvi_acm = tmp82__ >> 4 & 0x1; - pDst->acvi_aci = tmp82__ >> 5 & 0x3; - pDst->unused3 = tmp82__ >> 7 & 0x1; - tmp83__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->acvi_acwmin = tmp83__ >> 0 & 0xf; - pDst->acvi_acwmax = tmp83__ >> 4 & 0xf; - pDst->acvi_muedca_timer = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - tmp84__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->acvo_aifsn = tmp84__ >> 0 & 0xf; - pDst->acvo_acm = tmp84__ >> 4 & 0x1; - pDst->acvo_aci = tmp84__ >> 5 & 0x3; - pDst->unused4 = tmp84__ >> 7 & 0x1; tmp85__ = *pBuf; pBuf += 1; ielen -= 1; - pDst->acvo_acwmin = tmp85__ >> 0 & 0xf; - pDst->acvo_acwmax = tmp85__ >> 4 & 0xf; + pDst->acbe_aifsn = tmp85__ >> 0 & 0xf; + pDst->acbe_acm = tmp85__ >> 4 & 0x1; + pDst->acbe_aci = tmp85__ >> 5 & 0x3; + pDst->unused1 = tmp85__ >> 7 & 0x1; + tmp86__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->acbe_acwmin = tmp86__ >> 0 & 0xf; + pDst->acbe_acwmax = tmp86__ >> 4 & 0xf; + pDst->acbe_muedca_timer = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + tmp87__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->acbk_aifsn = tmp87__ >> 0 & 0xf; + pDst->acbk_acm = tmp87__ >> 4 & 0x1; + pDst->acbk_aci = tmp87__ >> 5 & 0x3; + pDst->unused2 = tmp87__ >> 7 & 0x1; + tmp88__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->acbk_acwmin = tmp88__ >> 0 & 0xf; + pDst->acbk_acwmax = tmp88__ >> 4 & 0xf; + pDst->acbk_muedca_timer = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + tmp89__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->acvi_aifsn = tmp89__ >> 0 & 0xf; + pDst->acvi_acm = tmp89__ >> 4 & 0x1; + pDst->acvi_aci = tmp89__ >> 5 & 0x3; + pDst->unused3 = tmp89__ >> 7 & 0x1; + tmp90__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->acvi_acwmin = tmp90__ >> 0 & 0xf; + pDst->acvi_acwmax = tmp90__ >> 4 & 0xf; + pDst->acvi_muedca_timer = *pBuf; + pBuf += 1; + ielen -= (uint8_t)1; + tmp91__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->acvo_aifsn = tmp91__ >> 0 & 0xf; + pDst->acvo_acm = tmp91__ >> 4 & 0x1; + pDst->acvo_aci = tmp91__ >> 5 & 0x3; + pDst->unused4 = tmp91__ >> 7 & 0x1; + tmp92__ = *pBuf; + pBuf += 1; + ielen -= 1; + pDst->acvo_acwmin = tmp92__ >> 0 & 0xf; + pDst->acvo_acwmax = tmp92__ >> 4 & 0xf; pDst->acvo_muedca_timer = *pBuf; (void)pCtx; return status; } /* End dot11f_unpack_ie_mu_edca_param_set. */ -#define SigIemu_edca_param_set (0x008d) +#define SigIemu_edca_param_set (0x008f) uint32_t dot11f_unpack_ie_osen_ie(tpAniSirGlobal pCtx, @@ -6719,7 +6907,7 @@ uint32_t dot11f_unpack_ie_osen_ie(tpAniSirGlobal pCtx, return status; } /* End dot11f_unpack_ie_osen_ie. */ -#define SigIeosen_ie (0x008e) +#define SigIeosen_ie (0x0090) uint32_t dot11f_unpack_ie_sec_chan_offset_ele(tpAniSirGlobal pCtx, @@ -6738,207 +6926,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 (0x008f) - - -static const tFFDefn FFS_vendor_he_cap[] = { - { NULL, 0, 0, 0,}, -}; - -static const tIEDefn IES_vendor_he_cap[] = { - { offsetof(tDot11fIEvendor_he_cap, ppe_threshold), - offsetof(tDot11fIEppe_threshold, present), 0, "ppe_threshold", - 0, 4, 27, SigIeppe_threshold, {0, 0, 0, 0, 0}, - 0, DOT11F_EID_PPE_THRESHOLD, 0, 0, }, - {0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, }, -}; - -uint32_t dot11f_unpack_ie_vendor_he_cap(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint32_t ielen, - tDot11fIEvendor_he_cap *pDst, - bool append_ie) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - uint32_t tmp86__; - uint8_t tmp87__; - uint32_t tmp88__; - uint32_t tmp89__; - uint8_t tmp90__; - uint16_t tmp91__; - (void) pBuf; (void)ielen; /* Shutup the compiler */ - if (pDst->present) - status = DOT11F_DUPLICATE_IE; - pDst->present = 1; - framesntohl(pCtx, &tmp86__, pBuf, 0); - pBuf += 4; - ielen -= 4; - pDst->htc_he = tmp86__ >> 0 & 0x1; - pDst->twt_request = tmp86__ >> 1 & 0x1; - pDst->twt_responder = tmp86__ >> 2 & 0x1; - pDst->fragmentation = tmp86__ >> 3 & 0x3; - pDst->max_num_frag_msdu = tmp86__ >> 5 & 0x7; - pDst->min_frag_size = tmp86__ >> 8 & 0x3; - pDst->trigger_frm_mac_pad = tmp86__ >> 10 & 0x3; - pDst->multi_tid_aggr = tmp86__ >> 12 & 0x7; - pDst->he_link_adaptation = tmp86__ >> 15 & 0x3; - pDst->all_ack = tmp86__ >> 17 & 0x1; - pDst->ul_mu_rsp_sched = tmp86__ >> 18 & 0x1; - pDst->a_bsr = tmp86__ >> 19 & 0x1; - pDst->broadcast_twt = tmp86__ >> 20 & 0x1; - pDst->ba_32bit_bitmap = tmp86__ >> 21 & 0x1; - pDst->mu_cascade = tmp86__ >> 22 & 0x1; - pDst->ack_enabled_multitid = tmp86__ >> 23 & 0x1; - pDst->dl_mu_ba = tmp86__ >> 24 & 0x1; - pDst->omi_a_ctrl = tmp86__ >> 25 & 0x1; - pDst->ofdma_ra = tmp86__ >> 26 & 0x1; - pDst->max_ampdu_len = tmp86__ >> 27 & 0x3; - pDst->amsdu_frag = tmp86__ >> 29 & 0x1; - pDst->flex_twt_sched = tmp86__ >> 30 & 0x1; - pDst->rx_ctrl_frame = tmp86__ >> 31 & 0x1; - tmp87__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->bsrp_ampdu_aggr = tmp87__ >> 0 & 0x1; - pDst->qtp = tmp87__ >> 1 & 0x1; - pDst->a_bqr = tmp87__ >> 2 & 0x1; - pDst->sr_responder = tmp87__ >> 3 & 0x1; - pDst->ndp_feedback_supp = tmp87__ >> 4 & 0x1; - pDst->ops_supp = tmp87__ >> 5 & 0x1; - pDst->reserved1 = tmp87__ >> 6 & 0x3; - framesntohl(pCtx, &tmp88__, pBuf, 0); - pBuf += 4; - ielen -= 4; - pDst->dual_band = tmp88__ >> 0 & 0x1; - pDst->chan_width = tmp88__ >> 1 & 0x7f; - pDst->rx_pream_puncturing = tmp88__ >> 8 & 0xf; - pDst->device_class = tmp88__ >> 12 & 0x1; - pDst->ldpc_coding = tmp88__ >> 13 & 0x1; - pDst->he_1x_ltf_800_gi_ppdu = tmp88__ >> 14 & 0x1; - pDst->reserved = tmp88__ >> 15 & 0x3; - pDst->he_4x_ltf_3200_gi_ndp = tmp88__ >> 17 & 0x1; - pDst->stbc_lt_80mhz = tmp88__ >> 18 & 0x3; - pDst->doppler = tmp88__ >> 20 & 0x3; - pDst->ul_mu = tmp88__ >> 22 & 0x3; - pDst->dcm_enc_tx = tmp88__ >> 24 & 0x7; - pDst->dcm_enc_rx = tmp88__ >> 27 & 0x7; - pDst->ul_he_mu = tmp88__ >> 30 & 0x1; - pDst->su_beamformer = tmp88__ >> 31 & 0x1; - framesntohl(pCtx, &tmp89__, pBuf, 0); - pBuf += 4; - ielen -= 4; - pDst->su_beamformee = tmp89__ >> 0 & 0x1; - pDst->mu_beamformer = tmp89__ >> 1 & 0x1; - pDst->bfee_sts_lt_80 = tmp89__ >> 2 & 0x7; - pDst->bfee_sts_gt_80 = tmp89__ >> 5 & 0x7; - pDst->num_sounding_lt_80 = tmp89__ >> 8 & 0x7; - pDst->num_sounding_gt_80 = tmp89__ >> 11 & 0x7; - pDst->su_feedback_tone16 = tmp89__ >> 14 & 0x1; - pDst->mu_feedback_tone16 = tmp89__ >> 15 & 0x1; - pDst->codebook_su = tmp89__ >> 16 & 0x1; - pDst->codebook_mu = tmp89__ >> 17 & 0x1; - pDst->beamforming_feedback = tmp89__ >> 18 & 0x7; - pDst->he_er_su_ppdu = tmp89__ >> 21 & 0x1; - pDst->dl_mu_mimo_part_bw = tmp89__ >> 22 & 0x1; - pDst->ppet_present = tmp89__ >> 23 & 0x1; - pDst->srp = tmp89__ >> 24 & 0x1; - pDst->power_boost = tmp89__ >> 25 & 0x1; - pDst->he_ltf_800_gi_4x = tmp89__ >> 26 & 0x1; - pDst->max_nc = tmp89__ >> 27 & 0x7; - pDst->stbc_gt_80mhz = tmp89__ >> 30 & 0x3; - tmp90__ = *pBuf; - pBuf += 1; - ielen -= 1; - pDst->er_he_ltf_800_gi_4x = tmp90__ >> 0 & 0x1; - pDst->reserved2 = tmp90__ >> 1 & 0x7f; - framesntohs(pCtx, &tmp91__, pBuf, 0); - pBuf += 2; - ielen -= 2; - pDst->nss_supported = tmp91__ >> 0 & 0x7; - pDst->mcs_supported = tmp91__ >> 3 & 0x7; - pDst->tx_bw_bitmap = tmp91__ >> 6 & 0x1f; - pDst->rx_bw_bitmap = tmp91__ >> 11 & 0x1f; - (void)pCtx; - - if (!pDst->ppet_present) - return status; - - status |= unpack_core(pCtx, - pBuf, - ielen, - FFS_vendor_he_cap, - IES_vendor_he_cap, - (uint8_t *)pDst, - sizeof(*pDst), - append_ie); - return status; -} /* End dot11f_unpack_ie_vendor_he_cap. */ - -#define SigIevendor_he_cap (0x0090) - - -uint32_t dot11f_unpack_ie_vendor_he_op(tpAniSirGlobal pCtx, - uint8_t *pBuf, - uint32_t ielen, - tDot11fIEvendor_he_op *pDst, - bool append_ie) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - uint32_t tmp92__; - (void) pBuf; (void)ielen; /* Shutup the compiler */ - if (pDst->present) - status = DOT11F_DUPLICATE_IE; - pDst->present = 1; - framesntohl(pCtx, &tmp92__, pBuf, 0); - pBuf += 4; - ielen -= 4; - pDst->bss_color = tmp92__ >> 0 & 0x3f; - pDst->default_pe = tmp92__ >> 6 & 0x7; - pDst->twt_required = tmp92__ >> 9 & 0x1; - pDst->rts_threshold = tmp92__ >> 10 & 0x3ff; - pDst->partial_bss_col = tmp92__ >> 20 & 0x1; - pDst->vht_oper_present = tmp92__ >> 21 & 0x1; - pDst->reserved1 = tmp92__ >> 22 & 0x3f; - pDst->mbssid_ap = tmp92__ >> 28 & 0x1; - pDst->tx_bssid_ind = tmp92__ >> 29 & 0x1; - pDst->bss_col_disabled = tmp92__ >> 30 & 0x1; - pDst->reserved2 = tmp92__ >> 31 & 0x1; - DOT11F_MEMCPY(pCtx, pDst->basic_mcs_nss, pBuf, 3); - pBuf += 3; - ielen -= (uint8_t)3; - if (!ielen) { - return 0U; - } else { - switch (pDst->vht_oper_present) { - case 1: - pDst->vht_oper.info.chan_width = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - pDst->vht_oper.info.center_freq_seg0 = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - pDst->vht_oper.info.center_freq_seg1 = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - break; - } - } - if (!ielen) { - return 0U; - } else { - switch (pDst->mbssid_ap) { - case 1: - pDst->maxbssid_ind.info.data = *pBuf; - pBuf += 1; - ielen -= (uint8_t)1; - break; - } - } - (void)pCtx; - return status; -} /* End dot11f_unpack_ie_vendor_he_op. */ - -#define SigIevendor_he_op (0x0091) +#define SigIesec_chan_offset_ele (0x0091) static const tFFDefn FFS_vendor_vht_ie[] = { @@ -7235,10 +7223,9 @@ static const tIEDefn IES_AssocRequest[] = { { offsetof(tDot11fAssocRequest, QCN_IE), offsetof(tDot11fIEQCN_IE, present), 0, "QCN_IE", 0, 10, 10, SigIeQCN_IE, {140, 253, 240, 1, 0}, 4, DOT11F_EID_QCN_IE, 0, 0, }, - { offsetof(tDot11fAssocRequest, vendor_he_cap), - offsetof(tDot11fIEvendor_he_cap, present), 0, "vendor_he_cap", - 0, 22, 49, SigIevendor_he_cap, {0, 19, 116, 1, 0}, - 4, DOT11F_EID_VENDOR_HE_CAP, 0, 0, }, + { offsetof(tDot11fAssocRequest, he_cap), offsetof(tDot11fIEhe_cap, + present), 0, "he_cap", 0, 18, 45, SigIehe_cap, {0, 0, 0, 0, 0}, + 0, DOT11F_EID_HE_CAP, 35, 0, }, { offsetof(tDot11fAssocRequest, MBO_IE), offsetof(tDot11fIEMBO_IE, present), 0, "MBO_IE", 0, 6, 295, SigIeMBO_IE, {80, 111, 154, 22, 0}, 4, DOT11F_EID_MBO_IE, 0, 0, }, @@ -7395,14 +7382,12 @@ static const tIEDefn IES_AssocResponse[] = { { offsetof(tDot11fAssocResponse, QCN_IE), offsetof(tDot11fIEQCN_IE, present), 0, "QCN_IE", 0, 10, 10, SigIeQCN_IE, {140, 253, 240, 1, 0}, 4, DOT11F_EID_QCN_IE, 0, 0, }, - { offsetof(tDot11fAssocResponse, vendor_he_cap), - offsetof(tDot11fIEvendor_he_cap, present), 0, "vendor_he_cap", - 0, 22, 49, SigIevendor_he_cap, {0, 19, 116, 1, 0}, - 4, DOT11F_EID_VENDOR_HE_CAP, 0, 0, }, - { offsetof(tDot11fAssocResponse, vendor_he_op), - offsetof(tDot11fIEvendor_he_op, present), 0, "vendor_he_op", - 0, 13, 17, SigIevendor_he_op, {0, 19, 116, 2, 0}, - 4, DOT11F_EID_VENDOR_HE_OP, 0, 0, }, + { offsetof(tDot11fAssocResponse, he_cap), offsetof(tDot11fIEhe_cap, + present), 0, "he_cap", 0, 18, 45, SigIehe_cap, {0, 0, 0, 0, 0}, + 0, DOT11F_EID_HE_CAP, 35, 0, }, + { offsetof(tDot11fAssocResponse, he_op), offsetof(tDot11fIEhe_op, + present), 0, "he_op", 0, 9, 13, SigIehe_op, {0, 0, 0, 0, 0}, + 0, DOT11F_EID_HE_OP, 36, 0, }, { offsetof(tDot11fAssocResponse, bss_color_change), offsetof(tDot11fIEbss_color_change, present), 0, "bss_color_change", 0, 8, 8, SigIebss_color_change, {0, 19, 116, 5, 0}, @@ -7690,13 +7675,12 @@ static const tIEDefn IES_Beacon[] = { { offsetof(tDot11fBeacon, QCN_IE), offsetof(tDot11fIEQCN_IE, present), 0, "QCN_IE", 0, 10, 10, SigIeQCN_IE, {140, 253, 240, 1, 0}, 4, DOT11F_EID_QCN_IE, 0, 0, }, - { offsetof(tDot11fBeacon, vendor_he_cap), - offsetof(tDot11fIEvendor_he_cap, present), 0, "vendor_he_cap", - 0, 22, 49, SigIevendor_he_cap, {0, 19, 116, 1, 0}, - 4, DOT11F_EID_VENDOR_HE_CAP, 0, 0, }, - { offsetof(tDot11fBeacon, vendor_he_op), offsetof(tDot11fIEvendor_he_op, - present), 0, "vendor_he_op", 0, 13, 17, SigIevendor_he_op, - {0, 19, 116, 2, 0}, 4, DOT11F_EID_VENDOR_HE_OP, 0, 0, }, + { offsetof(tDot11fBeacon, he_cap), offsetof(tDot11fIEhe_cap, present), 0, + "he_cap", 0, 18, 45, SigIehe_cap, {0, 0, 0, 0, 0}, + 0, DOT11F_EID_HE_CAP, 35, 0, }, + { offsetof(tDot11fBeacon, he_op), offsetof(tDot11fIEhe_op, present), 0, + "he_op", 0, 9, 13, SigIehe_op, {0, 0, 0, 0, 0}, + 0, DOT11F_EID_HE_OP, 36, 0, }, { offsetof(tDot11fBeacon, bss_color_change), offsetof(tDot11fIEbss_color_change, present), 0, "bss_color_change", 0, 8, 8, SigIebss_color_change, {0, 19, 116, 5, 0}, @@ -7917,13 +7901,12 @@ static const tIEDefn IES_Beacon2[] = { { offsetof(tDot11fBeacon2, QCN_IE), offsetof(tDot11fIEQCN_IE, present), 0, "QCN_IE", 0, 10, 10, SigIeQCN_IE, {140, 253, 240, 1, 0}, 4, DOT11F_EID_QCN_IE, 0, 0, }, - { offsetof(tDot11fBeacon2, vendor_he_cap), - offsetof(tDot11fIEvendor_he_cap, present), 0, "vendor_he_cap", - 0, 22, 49, SigIevendor_he_cap, {0, 19, 116, 1, 0}, - 4, DOT11F_EID_VENDOR_HE_CAP, 0, 0, }, - { offsetof(tDot11fBeacon2, vendor_he_op), offsetof(tDot11fIEvendor_he_op, - present), 0, "vendor_he_op", 0, 13, 17, SigIevendor_he_op, - {0, 19, 116, 2, 0}, 4, DOT11F_EID_VENDOR_HE_OP, 0, 0, }, + { offsetof(tDot11fBeacon2, he_cap), offsetof(tDot11fIEhe_cap, present), 0, + "he_cap", 0, 18, 45, SigIehe_cap, {0, 0, 0, 0, 0}, + 0, DOT11F_EID_HE_CAP, 35, 0, }, + { offsetof(tDot11fBeacon2, he_op), offsetof(tDot11fIEhe_op, present), 0, + "he_op", 0, 9, 13, SigIehe_op, {0, 0, 0, 0, 0}, + 0, DOT11F_EID_HE_OP, 36, 0, }, { offsetof(tDot11fBeacon2, bss_color_change), offsetof(tDot11fIEbss_color_change, present), 0, "bss_color_change", 0, 8, 8, SigIebss_color_change, {0, 19, 116, 5, 0}, @@ -8144,14 +8127,12 @@ static const tIEDefn IES_BeaconIEs[] = { { offsetof(tDot11fBeaconIEs, QCN_IE), offsetof(tDot11fIEQCN_IE, present), 0, "QCN_IE", 0, 10, 10, SigIeQCN_IE, {140, 253, 240, 1, 0}, 4, DOT11F_EID_QCN_IE, 0, 0, }, - { offsetof(tDot11fBeaconIEs, vendor_he_cap), - offsetof(tDot11fIEvendor_he_cap, present), 0, "vendor_he_cap", - 0, 22, 49, SigIevendor_he_cap, {0, 19, 116, 1, 0}, - 4, DOT11F_EID_VENDOR_HE_CAP, 0, 0, }, - { offsetof(tDot11fBeaconIEs, vendor_he_op), - offsetof(tDot11fIEvendor_he_op, present), 0, "vendor_he_op", - 0, 13, 17, SigIevendor_he_op, {0, 19, 116, 2, 0}, - 4, DOT11F_EID_VENDOR_HE_OP, 0, 0, }, + { offsetof(tDot11fBeaconIEs, he_cap), offsetof(tDot11fIEhe_cap, present), + 0, "he_cap", 0, 18, 45, SigIehe_cap, {0, 0, 0, 0, 0}, + 0, DOT11F_EID_HE_CAP, 35, 0, }, + { offsetof(tDot11fBeaconIEs, he_op), offsetof(tDot11fIEhe_op, present), 0, + "he_op", 0, 9, 13, SigIehe_op, {0, 0, 0, 0, 0}, + 0, DOT11F_EID_HE_OP, 36, 0, }, { offsetof(tDot11fBeaconIEs, bss_color_change), offsetof(tDot11fIEbss_color_change, present), 0, "bss_color_change", 0, 8, 8, SigIebss_color_change, {0, 19, 116, 5, 0}, @@ -8581,10 +8562,9 @@ static const tIEDefn IES_ProbeRequest[] = { { offsetof(tDot11fProbeRequest, QCN_IE), offsetof(tDot11fIEQCN_IE, present), 0, "QCN_IE", 0, 10, 10, SigIeQCN_IE, {140, 253, 240, 1, 0}, 4, DOT11F_EID_QCN_IE, 0, 0, }, - { offsetof(tDot11fProbeRequest, vendor_he_cap), - offsetof(tDot11fIEvendor_he_cap, present), 0, "vendor_he_cap", - 0, 22, 49, SigIevendor_he_cap, {0, 19, 116, 1, 0}, - 4, DOT11F_EID_VENDOR_HE_CAP, 0, 0, }, + { offsetof(tDot11fProbeRequest, he_cap), offsetof(tDot11fIEhe_cap, + present), 0, "he_cap", 0, 18, 45, SigIehe_cap, {0, 0, 0, 0, 0}, + 0, DOT11F_EID_HE_CAP, 35, 0, }, {0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },}; uint32_t dot11f_unpack_probe_request(tpAniSirGlobal pCtx, @@ -8792,14 +8772,12 @@ static const tIEDefn IES_ProbeResponse[] = { { offsetof(tDot11fProbeResponse, QCN_IE), offsetof(tDot11fIEQCN_IE, present), 0, "QCN_IE", 0, 10, 10, SigIeQCN_IE, {140, 253, 240, 1, 0}, 4, DOT11F_EID_QCN_IE, 0, 0, }, - { offsetof(tDot11fProbeResponse, vendor_he_cap), - offsetof(tDot11fIEvendor_he_cap, present), 0, "vendor_he_cap", - 0, 22, 49, SigIevendor_he_cap, {0, 19, 116, 1, 0}, - 4, DOT11F_EID_VENDOR_HE_CAP, 0, 0, }, - { offsetof(tDot11fProbeResponse, vendor_he_op), - offsetof(tDot11fIEvendor_he_op, present), 0, "vendor_he_op", - 0, 13, 17, SigIevendor_he_op, {0, 19, 116, 2, 0}, - 4, DOT11F_EID_VENDOR_HE_OP, 0, 0, }, + { offsetof(tDot11fProbeResponse, he_cap), offsetof(tDot11fIEhe_cap, + present), 0, "he_cap", 0, 18, 45, SigIehe_cap, {0, 0, 0, 0, 0}, + 0, DOT11F_EID_HE_CAP, 35, 0, }, + { offsetof(tDot11fProbeResponse, he_op), offsetof(tDot11fIEhe_op, + present), 0, "he_op", 0, 9, 13, SigIehe_op, {0, 0, 0, 0, 0}, + 0, DOT11F_EID_HE_OP, 36, 0, }, { offsetof(tDot11fProbeResponse, bss_color_change), offsetof(tDot11fIEbss_color_change, present), 0, "bss_color_change", 0, 8, 8, SigIebss_color_change, {0, 19, 116, 5, 0}, @@ -9057,10 +9035,9 @@ static const tIEDefn IES_ReAssocRequest[] = { offsetof(tDot11fIEhs20vendor_ie, present), 0, "hs20vendor_ie", 0, 7, 9, SigIehs20vendor_ie, {80, 111, 154, 16, 0}, 4, DOT11F_EID_HS20VENDOR_IE, 0, 0, }, - { offsetof(tDot11fReAssocRequest, vendor_he_cap), - offsetof(tDot11fIEvendor_he_cap, present), 0, "vendor_he_cap", - 0, 22, 49, SigIevendor_he_cap, {0, 19, 116, 1, 0}, - 4, DOT11F_EID_VENDOR_HE_CAP, 0, 0, }, + { offsetof(tDot11fReAssocRequest, he_cap), offsetof(tDot11fIEhe_cap, + present), 0, "he_cap", 0, 18, 45, SigIehe_cap, {0, 0, 0, 0, 0}, + 0, DOT11F_EID_HE_CAP, 35, 0, }, {0, 0, 0, NULL, 0, 0, 0, 0, {0, 0, 0, 0, 0}, 0, 0xff, 0, },}; uint32_t dot11f_unpack_re_assoc_request(tpAniSirGlobal pCtx, @@ -9194,14 +9171,12 @@ static const tIEDefn IES_ReAssocResponse[] = { offsetof(tDot11fIEvendor_vht_ie, present), 0, "vendor_vht_ie", 0, 7, 28, SigIevendor_vht_ie, {0, 144, 76, 4, 0}, 4, DOT11F_EID_VENDOR_VHT_IE, 0, 0, }, - { offsetof(tDot11fReAssocResponse, vendor_he_cap), - offsetof(tDot11fIEvendor_he_cap, present), 0, "vendor_he_cap", - 0, 22, 49, SigIevendor_he_cap, {0, 19, 116, 1, 0}, - 4, DOT11F_EID_VENDOR_HE_CAP, 0, 0, }, - { offsetof(tDot11fReAssocResponse, vendor_he_op), - offsetof(tDot11fIEvendor_he_op, present), 0, "vendor_he_op", - 0, 13, 17, SigIevendor_he_op, {0, 19, 116, 2, 0}, - 4, DOT11F_EID_VENDOR_HE_OP, 0, 0, }, + { offsetof(tDot11fReAssocResponse, he_cap), offsetof(tDot11fIEhe_cap, + present), 0, "he_cap", 0, 18, 45, SigIehe_cap, {0, 0, 0, 0, 0}, + 0, DOT11F_EID_HE_CAP, 35, 0, }, + { offsetof(tDot11fReAssocResponse, he_op), offsetof(tDot11fIEhe_op, + present), 0, "he_op", 0, 9, 13, SigIehe_op, {0, 0, 0, 0, 0}, + 0, DOT11F_EID_HE_OP, 36, 0, }, { offsetof(tDot11fReAssocResponse, bss_color_change), offsetof(tDot11fIEbss_color_change, present), 0, "bss_color_change", 0, 8, 8, SigIebss_color_change, {0, 19, 116, 5, 0}, @@ -11922,6 +11897,26 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; + case SigIehe_cap: + status |= + dot11f_unpack_ie_he_cap( + pCtx, pBufRemaining, len, + (tDot11fIEhe_cap *) + (pFrm + pIe->offset + + sizeof(tDot11fIEhe_cap) * + countOffset), + append_ie); + break; + case SigIehe_op: + status |= + dot11f_unpack_ie_he_op( + pCtx, pBufRemaining, len, + (tDot11fIEhe_op *) + (pFrm + pIe->offset + + sizeof(tDot11fIEhe_op) * + countOffset), + append_ie); + break; case SigIehs20vendor_ie: status |= dot11f_unpack_ie_hs20vendor_ie( @@ -11982,26 +11977,6 @@ static uint32_t unpack_core(tpAniSirGlobal pCtx, countOffset), append_ie); break; - case SigIevendor_he_cap: - status |= - dot11f_unpack_ie_vendor_he_cap( - pCtx, pBufRemaining, len, - (tDot11fIEvendor_he_cap *) - (pFrm + pIe->offset + - sizeof(tDot11fIEvendor_he_cap) * - countOffset), - append_ie); - break; - case SigIevendor_he_op: - status |= - dot11f_unpack_ie_vendor_he_op( - pCtx, pBufRemaining, len, - (tDot11fIEvendor_he_op *) - (pFrm + pIe->offset + - sizeof(tDot11fIEvendor_he_op) * - countOffset), - append_ie); - break; case SigIevendor_vht_ie: status |= dot11f_unpack_ie_vendor_vht_ie( @@ -13263,32 +13238,8 @@ 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_hs20vendor_ie(tpAniSirGlobal pCtx, - tDot11fIEhs20vendor_ie *pIe, uint32_t *pnNeeded) -{ - uint32_t status = DOT11F_PARSE_SUCCESS; - (void)pCtx; - while (pIe->present) { - *pnNeeded += 1; - if (pIe->hs_id_present) { - switch (pIe->hs_id_present) { - case 1: - *pnNeeded += 2; - break; - case 2: - *pnNeeded += 2; - break; - } - } else { - break; - } - break; - } - return status; -} /* End dot11f_get_packed_ie_hs20vendor_ie. */ - -uint32_t dot11f_get_packed_ie_vendor_he_cap(tpAniSirGlobal pCtx, - tDot11fIEvendor_he_cap *pIe, uint32_t *pnNeeded) +uint32_t dot11f_get_packed_ie_he_cap(tpAniSirGlobal pCtx, + tDot11fIEhe_cap *pIe, uint32_t *pnNeeded) { uint32_t status = DOT11F_PARSE_SUCCESS; (void)pCtx; @@ -13300,14 +13251,14 @@ uint32_t dot11f_get_packed_ie_vendor_he_cap(tpAniSirGlobal pCtx, *pnNeeded += 1; *pnNeeded += 2; status = get_packed_size_core(pCtx, (uint8_t *)pIe, pnNeeded, - IES_vendor_he_cap); + IES_he_cap); break; } return status; -} /* End dot11f_get_packed_ie_vendor_he_cap. */ +} /* End dot11f_get_packed_ie_he_cap. */ -uint32_t dot11f_get_packed_ie_vendor_he_op(tpAniSirGlobal pCtx, - tDot11fIEvendor_he_op *pIe, uint32_t *pnNeeded) +uint32_t dot11f_get_packed_ie_he_op(tpAniSirGlobal pCtx, + tDot11fIEhe_op *pIe, uint32_t *pnNeeded) { uint32_t status = DOT11F_PARSE_SUCCESS; (void)pCtx; @@ -13337,7 +13288,31 @@ uint32_t dot11f_get_packed_ie_vendor_he_op(tpAniSirGlobal pCtx, break; } return status; -} /* End dot11f_get_packed_ie_vendor_he_op. */ +} /* End dot11f_get_packed_ie_he_op. */ + +uint32_t dot11f_get_packed_ie_hs20vendor_ie(tpAniSirGlobal pCtx, + tDot11fIEhs20vendor_ie *pIe, uint32_t *pnNeeded) +{ + uint32_t status = DOT11F_PARSE_SUCCESS; + (void)pCtx; + while (pIe->present) { + *pnNeeded += 1; + if (pIe->hs_id_present) { + switch (pIe->hs_id_present) { + case 1: + *pnNeeded += 2; + break; + case 2: + *pnNeeded += 2; + break; + } + } else { + break; + } + break; + } + return status; +} /* End dot11f_get_packed_ie_hs20vendor_ie. */ uint32_t dot11f_get_packed_ie_vendor_vht_ie(tpAniSirGlobal pCtx, tDot11fIEvendor_vht_ie *pIe, uint32_t *pnNeeded) @@ -14960,6 +14935,22 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; + case SigIehe_cap: + offset = sizeof(tDot11fIEhe_cap); + status |= + dot11f_get_packed_ie_he_cap( + pCtx, (tDot11fIEhe_cap *) + (pFrm + pIe->offset + offset * i), + pnNeeded); + break; + case SigIehe_op: + offset = sizeof(tDot11fIEhe_op); + status |= + dot11f_get_packed_ie_he_op( + pCtx, (tDot11fIEhe_op *) + (pFrm + pIe->offset + offset * i), + pnNeeded); + break; case SigIehs20vendor_ie: offset = sizeof(tDot11fIEhs20vendor_ie); status |= @@ -15007,22 +14998,6 @@ static uint32_t get_packed_size_core(tpAniSirGlobal pCtx, (pFrm + pIe->offset + offset * i))-> present; break; - case SigIevendor_he_cap: - offset = sizeof(tDot11fIEvendor_he_cap); - status |= - dot11f_get_packed_ie_vendor_he_cap( - pCtx, (tDot11fIEvendor_he_cap *) - (pFrm + pIe->offset + offset * i), - pnNeeded); - break; - case SigIevendor_he_op: - offset = sizeof(tDot11fIEvendor_he_op); - status |= - dot11f_get_packed_ie_vendor_he_op( - pCtx, (tDot11fIEvendor_he_op *) - (pFrm + pIe->offset + offset * i), - pnNeeded); - break; case SigIevendor_vht_ie: offset = sizeof(tDot11fIEvendor_vht_ie); status |= @@ -23282,6 +23257,229 @@ uint32_t dot11f_pack_ie_fragment_ie(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_fragment_ie. */ +uint32_t dot11f_pack_ie_he_cap(tpAniSirGlobal pCtx, + tDot11fIEhe_cap *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + uint32_t tmp169__; + uint8_t tmp170__; + uint32_t tmp171__; + uint32_t tmp172__; + uint8_t tmp173__; + uint16_t tmp174__; + uint32_t status = DOT11F_PARSE_SUCCESS; + status = dot11f_get_packed_ie_he_cap(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 = 35; + ++pBuf; --nBuf; ++(*pnConsumed); + tmp169__ = 0U; + tmp169__ |= (pSrc->htc_he << 0); + tmp169__ |= (pSrc->twt_request << 1); + tmp169__ |= (pSrc->twt_responder << 2); + tmp169__ |= (pSrc->fragmentation << 3); + tmp169__ |= (pSrc->max_num_frag_msdu << 5); + tmp169__ |= (pSrc->min_frag_size << 8); + tmp169__ |= (pSrc->trigger_frm_mac_pad << 10); + tmp169__ |= (pSrc->multi_tid_aggr << 12); + tmp169__ |= (pSrc->he_link_adaptation << 15); + tmp169__ |= (pSrc->all_ack << 17); + tmp169__ |= (pSrc->ul_mu_rsp_sched << 18); + tmp169__ |= (pSrc->a_bsr << 19); + tmp169__ |= (pSrc->broadcast_twt << 20); + tmp169__ |= (pSrc->ba_32bit_bitmap << 21); + tmp169__ |= (pSrc->mu_cascade << 22); + tmp169__ |= (pSrc->ack_enabled_multitid << 23); + tmp169__ |= (pSrc->dl_mu_ba << 24); + tmp169__ |= (pSrc->omi_a_ctrl << 25); + tmp169__ |= (pSrc->ofdma_ra << 26); + tmp169__ |= (pSrc->max_ampdu_len << 27); + tmp169__ |= (pSrc->amsdu_frag << 29); + tmp169__ |= (pSrc->flex_twt_sched << 30); + tmp169__ |= (pSrc->rx_ctrl_frame << 31); + frameshtonl(pCtx, pBuf, tmp169__, 0); + *pnConsumed += 4; + pBuf += 4; + nBuf -= 4 ; + tmp170__ = 0U; + tmp170__ |= (pSrc->bsrp_ampdu_aggr << 0); + tmp170__ |= (pSrc->qtp << 1); + tmp170__ |= (pSrc->a_bqr << 2); + tmp170__ |= (pSrc->sr_responder << 3); + tmp170__ |= (pSrc->ndp_feedback_supp << 4); + tmp170__ |= (pSrc->ops_supp << 5); + tmp170__ |= (pSrc->reserved1 << 6); + *pBuf = tmp170__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + tmp171__ = 0U; + tmp171__ |= (pSrc->dual_band << 0); + tmp171__ |= (pSrc->chan_width << 1); + tmp171__ |= (pSrc->rx_pream_puncturing << 8); + tmp171__ |= (pSrc->device_class << 12); + tmp171__ |= (pSrc->ldpc_coding << 13); + tmp171__ |= (pSrc->he_1x_ltf_800_gi_ppdu << 14); + tmp171__ |= (pSrc->reserved << 15); + tmp171__ |= (pSrc->he_4x_ltf_3200_gi_ndp << 17); + tmp171__ |= (pSrc->stbc_lt_80mhz << 18); + tmp171__ |= (pSrc->doppler << 20); + tmp171__ |= (pSrc->ul_mu << 22); + tmp171__ |= (pSrc->dcm_enc_tx << 24); + tmp171__ |= (pSrc->dcm_enc_rx << 27); + tmp171__ |= (pSrc->ul_he_mu << 30); + tmp171__ |= (pSrc->su_beamformer << 31); + frameshtonl(pCtx, pBuf, tmp171__, 0); + *pnConsumed += 4; + pBuf += 4; + nBuf -= 4 ; + tmp172__ = 0U; + tmp172__ |= (pSrc->su_beamformee << 0); + tmp172__ |= (pSrc->mu_beamformer << 1); + tmp172__ |= (pSrc->bfee_sts_lt_80 << 2); + tmp172__ |= (pSrc->bfee_sts_gt_80 << 5); + tmp172__ |= (pSrc->num_sounding_lt_80 << 8); + tmp172__ |= (pSrc->num_sounding_gt_80 << 11); + tmp172__ |= (pSrc->su_feedback_tone16 << 14); + tmp172__ |= (pSrc->mu_feedback_tone16 << 15); + tmp172__ |= (pSrc->codebook_su << 16); + tmp172__ |= (pSrc->codebook_mu << 17); + tmp172__ |= (pSrc->beamforming_feedback << 18); + tmp172__ |= (pSrc->he_er_su_ppdu << 21); + tmp172__ |= (pSrc->dl_mu_mimo_part_bw << 22); + tmp172__ |= (pSrc->ppet_present << 23); + tmp172__ |= (pSrc->srp << 24); + tmp172__ |= (pSrc->power_boost << 25); + tmp172__ |= (pSrc->he_ltf_800_gi_4x << 26); + tmp172__ |= (pSrc->max_nc << 27); + tmp172__ |= (pSrc->stbc_gt_80mhz << 30); + frameshtonl(pCtx, pBuf, tmp172__, 0); + *pnConsumed += 4; + pBuf += 4; + nBuf -= 4 ; + tmp173__ = 0U; + tmp173__ |= (pSrc->er_he_ltf_800_gi_4x << 0); + tmp173__ |= (pSrc->reserved2 << 1); + *pBuf = tmp173__; + *pnConsumed += 1; + pBuf += 1; + nBuf -= 1 ; + tmp174__ = 0U; + tmp174__ |= (pSrc->nss_supported << 0); + tmp174__ |= (pSrc->mcs_supported << 3); + tmp174__ |= (pSrc->tx_bw_bitmap << 6); + tmp174__ |= (pSrc->rx_bw_bitmap << 11); + frameshtons(pCtx, pBuf, tmp174__, 0); + *pnConsumed += 2; + pBuf += 2; + nBuf -= 2 ; + status = pack_core(pCtx, + (uint8_t *)pSrc, + pBuf, + nBuf, + pnConsumed, + FFS_he_cap, + IES_he_cap); + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return status; +} /* End dot11f_pack_ie_he_cap. */ + +uint32_t dot11f_pack_ie_he_op(tpAniSirGlobal pCtx, + tDot11fIEhe_op *pSrc, + uint8_t *pBuf, + uint32_t nBuf, + uint32_t *pnConsumed) +{ + uint8_t *pIeLen = 0; + uint32_t nConsumedOnEntry = *pnConsumed; + uint32_t nNeeded = 0U; + uint32_t tmp175__; + uint32_t status = DOT11F_PARSE_SUCCESS; + status = dot11f_get_packed_ie_he_op(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 = 36; + ++pBuf; ++(*pnConsumed); + tmp175__ = 0U; + tmp175__ |= (pSrc->bss_color << 0); + tmp175__ |= (pSrc->default_pe << 6); + tmp175__ |= (pSrc->twt_required << 9); + tmp175__ |= (pSrc->rts_threshold << 10); + tmp175__ |= (pSrc->partial_bss_col << 20); + tmp175__ |= (pSrc->vht_oper_present << 21); + tmp175__ |= (pSrc->reserved1 << 22); + tmp175__ |= (pSrc->mbssid_ap << 28); + tmp175__ |= (pSrc->tx_bssid_ind << 29); + tmp175__ |= (pSrc->bss_col_disabled << 30); + tmp175__ |= (pSrc->reserved2 << 31); + frameshtonl(pCtx, pBuf, tmp175__, 0); + *pnConsumed += 4; + pBuf += 4; + nBuf -= 4 ; + DOT11F_MEMCPY(pCtx, pBuf, pSrc->basic_mcs_nss, 3); + *pnConsumed += 3; + pBuf += 3; + if (pSrc->vht_oper_present) { + switch (pSrc->vht_oper_present) { + case 1: + *pBuf = pSrc->vht_oper.info.chan_width; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->vht_oper.info.center_freq_seg0; + *pnConsumed += 1; + pBuf += 1; + *pBuf = pSrc->vht_oper.info.center_freq_seg1; + *pnConsumed += 1; + pBuf += 1; + break; + } + } else { + break; + } + if (pSrc->mbssid_ap) { + switch (pSrc->mbssid_ap) { + case 1: + *pBuf = pSrc->maxbssid_ind.info.data; + *pnConsumed += 1; + /* fieldsEndFlag = 1 */ + break; + } + } else { + break; + } + break; + } + (void)pCtx; + if (pIeLen) { + *pIeLen = *pnConsumed - nConsumedOnEntry - 2; + } + return status; +} /* End dot11f_pack_ie_he_op. */ + uint32_t dot11f_pack_ie_hs20vendor_ie(tpAniSirGlobal pCtx, tDot11fIEhs20vendor_ie *pSrc, uint8_t *pBuf, @@ -23291,7 +23489,7 @@ uint32_t dot11f_pack_ie_hs20vendor_ie(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp169__; + uint8_t tmp176__; uint32_t status = DOT11F_PARSE_SUCCESS; status = dot11f_get_packed_ie_hs20vendor_ie(pCtx, pSrc, &nNeeded); if (!DOT11F_SUCCEEDED(status)) @@ -23311,12 +23509,12 @@ uint32_t dot11f_pack_ie_hs20vendor_ie(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); *pBuf = 0x10; ++pBuf; ++(*pnConsumed); - tmp169__ = 0U; - tmp169__ |= (pSrc->dgaf_dis << 0); - tmp169__ |= (pSrc->hs_id_present << 1); - tmp169__ |= (pSrc->reserved << 3); - tmp169__ |= (pSrc->release_num << 4); - *pBuf = tmp169__; + tmp176__ = 0U; + tmp176__ |= (pSrc->dgaf_dis << 0); + tmp176__ |= (pSrc->hs_id_present << 1); + tmp176__ |= (pSrc->reserved << 3); + tmp176__ |= (pSrc->release_num << 4); + *pBuf = tmp176__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -23354,7 +23552,7 @@ uint32_t dot11f_pack_ie_ht2040_bss_coexistence(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp170__; + uint8_t tmp177__; nNeeded += 1; while (pSrc->present) { if (nNeeded > nBuf) @@ -23363,14 +23561,14 @@ uint32_t dot11f_pack_ie_ht2040_bss_coexistence(tpAniSirGlobal pCtx, ++pBuf; ++(*pnConsumed); pIeLen = pBuf; ++pBuf; ++(*pnConsumed); - tmp170__ = 0U; - tmp170__ |= (pSrc->info_request << 0); - tmp170__ |= (pSrc->forty_mhz_intolerant << 1); - tmp170__ |= (pSrc->twenty_mhz_bsswidth_req << 2); - tmp170__ |= (pSrc->obss_scan_exemption_req << 3); - tmp170__ |= (pSrc->obss_scan_exemption_grant << 4); - tmp170__ |= (pSrc->unused << 5); - *pBuf = tmp170__; + tmp177__ = 0U; + tmp177__ |= (pSrc->info_request << 0); + tmp177__ |= (pSrc->forty_mhz_intolerant << 1); + tmp177__ |= (pSrc->twenty_mhz_bsswidth_req << 2); + tmp177__ |= (pSrc->obss_scan_exemption_req << 3); + tmp177__ |= (pSrc->obss_scan_exemption_grant << 4); + tmp177__ |= (pSrc->unused << 5); + *pBuf = tmp177__; *pnConsumed += 1; /* fieldsEndFlag = 1 */ nBuf -= 1 ; @@ -23424,14 +23622,14 @@ uint32_t dot11f_pack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, uint8_t *pIeLen = 0; uint32_t nConsumedOnEntry = *pnConsumed; uint32_t nNeeded = 0U; - uint8_t tmp171__; - uint8_t tmp172__; - uint8_t tmp173__; - uint8_t tmp174__; - uint8_t tmp175__; - uint8_t tmp176__; - uint8_t tmp177__; uint8_t tmp178__; + uint8_t tmp179__; + uint8_t tmp180__; + uint8_t tmp181__; + uint8_t tmp182__; + uint8_t tmp183__; + uint8_t tmp184__; + uint8_t tmp185__; nNeeded += 13; while (pSrc->present) { if (nNeeded > nBuf) @@ -23451,76 +23649,76 @@ uint32_t dot11f_pack_ie_mu_edca_param_set(tpAniSirGlobal pCtx, *pBuf = pSrc->qos; *pnConsumed += 1; pBuf += 1; - tmp171__ = 0U; - tmp171__ |= (pSrc->acbe_aifsn << 0); - tmp171__ |= (pSrc->acbe_acm << 4); - tmp171__ |= (pSrc->acbe_aci << 5); - tmp171__ |= (pSrc->unused1 << 7); - *pBuf = tmp171__; + tmp178__ = 0U; + tmp178__ |= (pSrc->acbe_aifsn << 0); + tmp178__ |= (pSrc->acbe_acm << 4); + tmp178__ |= (pSrc->acbe_aci << 5); + tmp178__ |= (pSrc->unused1 << 7); + *pBuf = tmp178__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; - tmp172__ = 0U; - tmp172__ |= (pSrc->acbe_acwmin << 0); - tmp172__ |= (pSrc->acbe_acwmax << 4); - *pBuf = tmp172__; + tmp179__ = 0U; + tmp179__ |= (pSrc->acbe_acwmin << 0); + tmp179__ |= (pSrc->acbe_acwmax << 4); + *pBuf = tmp179__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; *pBuf = pSrc->acbe_muedca_timer; *pnConsumed += 1; pBuf += 1; - tmp173__ = 0U; - tmp173__ |= (pSrc->acbk_aifsn << 0); - tmp173__ |= (pSrc->acbk_acm << 4); - tmp173__ |= (pSrc->acbk_aci << 5); - tmp173__ |= (pSrc->unused2 << 7); - *pBuf = tmp173__; + tmp180__ = 0U; + tmp180__ |= (pSrc->acbk_aifsn << 0); + tmp180__ |= (pSrc->acbk_acm << 4); + tmp180__ |= (pSrc->acbk_aci << 5); + tmp180__ |= (pSrc->unused2 << 7); + *pBuf = tmp180__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; - tmp174__ = 0U; - tmp174__ |= (pSrc->acbk_acwmin << 0); - tmp174__ |= (pSrc->acbk_acwmax << 4); - *pBuf = tmp174__; + tmp181__ = 0U; + tmp181__ |= (pSrc->acbk_acwmin << 0); + tmp181__ |= (pSrc->acbk_acwmax << 4); + *pBuf = tmp181__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; *pBuf = pSrc->acbk_muedca_timer; *pnConsumed += 1; pBuf += 1; - tmp175__ = 0U; - tmp175__ |= (pSrc->acvi_aifsn << 0); - tmp175__ |= (pSrc->acvi_acm << 4); - tmp175__ |= (pSrc->acvi_aci << 5); - tmp175__ |= (pSrc->unused3 << 7); - *pBuf = tmp175__; + tmp182__ = 0U; + tmp182__ |= (pSrc->acvi_aifsn << 0); + tmp182__ |= (pSrc->acvi_acm << 4); + tmp182__ |= (pSrc->acvi_aci << 5); + tmp182__ |= (pSrc->unused3 << 7); + *pBuf = tmp182__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; - tmp176__ = 0U; - tmp176__ |= (pSrc->acvi_acwmin << 0); - tmp176__ |= (pSrc->acvi_acwmax << 4); - *pBuf = tmp176__; + tmp183__ = 0U; + tmp183__ |= (pSrc->acvi_acwmin << 0); + tmp183__ |= (pSrc->acvi_acwmax << 4); + *pBuf = tmp183__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; *pBuf = pSrc->acvi_muedca_timer; *pnConsumed += 1; pBuf += 1; - tmp177__ = 0U; - tmp177__ |= (pSrc->acvo_aifsn << 0); - tmp177__ |= (pSrc->acvo_acm << 4); - tmp177__ |= (pSrc->acvo_aci << 5); - tmp177__ |= (pSrc->unused4 << 7); - *pBuf = tmp177__; + tmp184__ = 0U; + tmp184__ |= (pSrc->acvo_aifsn << 0); + tmp184__ |= (pSrc->acvo_acm << 4); + tmp184__ |= (pSrc->acvo_aci << 5); + tmp184__ |= (pSrc->unused4 << 7); + *pBuf = tmp184__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; - tmp178__ = 0U; - tmp178__ |= (pSrc->acvo_acwmin << 0); - tmp178__ |= (pSrc->acvo_acwmax << 4); - *pBuf = tmp178__; + tmp185__ = 0U; + tmp185__ |= (pSrc->acvo_acwmin << 0); + tmp185__ |= (pSrc->acvo_acwmax << 4); + *pBuf = tmp185__; *pnConsumed += 1; pBuf += 1; nBuf -= 1 ; @@ -23602,245 +23800,6 @@ uint32_t dot11f_pack_ie_sec_chan_offset_ele(tpAniSirGlobal pCtx, return DOT11F_PARSE_SUCCESS; } /* End dot11f_pack_ie_sec_chan_offset_ele. */ -uint32_t dot11f_pack_ie_vendor_he_cap(tpAniSirGlobal pCtx, - tDot11fIEvendor_he_cap *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - uint32_t tmp179__; - uint8_t tmp180__; - uint32_t tmp181__; - uint32_t tmp182__; - uint8_t tmp183__; - uint16_t tmp184__; - uint32_t status = DOT11F_PARSE_SUCCESS; - status = dot11f_get_packed_ie_vendor_he_cap(pCtx, pSrc, &nNeeded); - if (!DOT11F_SUCCEEDED(status)) - return status; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 221; - ++pBuf; --nBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; --nBuf; ++(*pnConsumed); - *pBuf = 0x0; - ++pBuf; --nBuf; ++(*pnConsumed); - *pBuf = 0x13; - ++pBuf; --nBuf; ++(*pnConsumed); - *pBuf = 0x74; - ++pBuf; --nBuf; ++(*pnConsumed); - *pBuf = 0x1; - ++pBuf; --nBuf; ++(*pnConsumed); - tmp179__ = 0U; - tmp179__ |= (pSrc->htc_he << 0); - tmp179__ |= (pSrc->twt_request << 1); - tmp179__ |= (pSrc->twt_responder << 2); - tmp179__ |= (pSrc->fragmentation << 3); - tmp179__ |= (pSrc->max_num_frag_msdu << 5); - tmp179__ |= (pSrc->min_frag_size << 8); - tmp179__ |= (pSrc->trigger_frm_mac_pad << 10); - tmp179__ |= (pSrc->multi_tid_aggr << 12); - tmp179__ |= (pSrc->he_link_adaptation << 15); - tmp179__ |= (pSrc->all_ack << 17); - tmp179__ |= (pSrc->ul_mu_rsp_sched << 18); - tmp179__ |= (pSrc->a_bsr << 19); - tmp179__ |= (pSrc->broadcast_twt << 20); - tmp179__ |= (pSrc->ba_32bit_bitmap << 21); - tmp179__ |= (pSrc->mu_cascade << 22); - tmp179__ |= (pSrc->ack_enabled_multitid << 23); - tmp179__ |= (pSrc->dl_mu_ba << 24); - tmp179__ |= (pSrc->omi_a_ctrl << 25); - tmp179__ |= (pSrc->ofdma_ra << 26); - tmp179__ |= (pSrc->max_ampdu_len << 27); - tmp179__ |= (pSrc->amsdu_frag << 29); - tmp179__ |= (pSrc->flex_twt_sched << 30); - tmp179__ |= (pSrc->rx_ctrl_frame << 31); - frameshtonl(pCtx, pBuf, tmp179__, 0); - *pnConsumed += 4; - pBuf += 4; - nBuf -= 4 ; - tmp180__ = 0U; - tmp180__ |= (pSrc->bsrp_ampdu_aggr << 0); - tmp180__ |= (pSrc->qtp << 1); - tmp180__ |= (pSrc->a_bqr << 2); - tmp180__ |= (pSrc->sr_responder << 3); - tmp180__ |= (pSrc->ndp_feedback_supp << 4); - tmp180__ |= (pSrc->ops_supp << 5); - tmp180__ |= (pSrc->reserved1 << 6); - *pBuf = tmp180__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - tmp181__ = 0U; - tmp181__ |= (pSrc->dual_band << 0); - tmp181__ |= (pSrc->chan_width << 1); - tmp181__ |= (pSrc->rx_pream_puncturing << 8); - tmp181__ |= (pSrc->device_class << 12); - tmp181__ |= (pSrc->ldpc_coding << 13); - tmp181__ |= (pSrc->he_1x_ltf_800_gi_ppdu << 14); - tmp181__ |= (pSrc->reserved << 15); - tmp181__ |= (pSrc->he_4x_ltf_3200_gi_ndp << 17); - tmp181__ |= (pSrc->stbc_lt_80mhz << 18); - tmp181__ |= (pSrc->doppler << 20); - tmp181__ |= (pSrc->ul_mu << 22); - tmp181__ |= (pSrc->dcm_enc_tx << 24); - tmp181__ |= (pSrc->dcm_enc_rx << 27); - tmp181__ |= (pSrc->ul_he_mu << 30); - tmp181__ |= (pSrc->su_beamformer << 31); - frameshtonl(pCtx, pBuf, tmp181__, 0); - *pnConsumed += 4; - pBuf += 4; - nBuf -= 4 ; - tmp182__ = 0U; - tmp182__ |= (pSrc->su_beamformee << 0); - tmp182__ |= (pSrc->mu_beamformer << 1); - tmp182__ |= (pSrc->bfee_sts_lt_80 << 2); - tmp182__ |= (pSrc->bfee_sts_gt_80 << 5); - tmp182__ |= (pSrc->num_sounding_lt_80 << 8); - tmp182__ |= (pSrc->num_sounding_gt_80 << 11); - tmp182__ |= (pSrc->su_feedback_tone16 << 14); - tmp182__ |= (pSrc->mu_feedback_tone16 << 15); - tmp182__ |= (pSrc->codebook_su << 16); - tmp182__ |= (pSrc->codebook_mu << 17); - tmp182__ |= (pSrc->beamforming_feedback << 18); - tmp182__ |= (pSrc->he_er_su_ppdu << 21); - tmp182__ |= (pSrc->dl_mu_mimo_part_bw << 22); - tmp182__ |= (pSrc->ppet_present << 23); - tmp182__ |= (pSrc->srp << 24); - tmp182__ |= (pSrc->power_boost << 25); - tmp182__ |= (pSrc->he_ltf_800_gi_4x << 26); - tmp182__ |= (pSrc->max_nc << 27); - tmp182__ |= (pSrc->stbc_gt_80mhz << 30); - frameshtonl(pCtx, pBuf, tmp182__, 0); - *pnConsumed += 4; - pBuf += 4; - nBuf -= 4 ; - tmp183__ = 0U; - tmp183__ |= (pSrc->er_he_ltf_800_gi_4x << 0); - tmp183__ |= (pSrc->reserved2 << 1); - *pBuf = tmp183__; - *pnConsumed += 1; - pBuf += 1; - nBuf -= 1 ; - tmp184__ = 0U; - tmp184__ |= (pSrc->nss_supported << 0); - tmp184__ |= (pSrc->mcs_supported << 3); - tmp184__ |= (pSrc->tx_bw_bitmap << 6); - tmp184__ |= (pSrc->rx_bw_bitmap << 11); - frameshtons(pCtx, pBuf, tmp184__, 0); - *pnConsumed += 2; - pBuf += 2; - nBuf -= 2 ; - - if (!pSrc->ppet_present) - break; - - status = pack_core(pCtx, - (uint8_t *)pSrc, - pBuf, - nBuf, - pnConsumed, - FFS_vendor_he_cap, - IES_vendor_he_cap); - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return status; -} /* End dot11f_pack_ie_vendor_he_cap. */ - -uint32_t dot11f_pack_ie_vendor_he_op(tpAniSirGlobal pCtx, - tDot11fIEvendor_he_op *pSrc, - uint8_t *pBuf, - uint32_t nBuf, - uint32_t *pnConsumed) -{ - uint8_t *pIeLen = 0; - uint32_t nConsumedOnEntry = *pnConsumed; - uint32_t nNeeded = 0U; - uint32_t tmp185__; - uint32_t status = DOT11F_PARSE_SUCCESS; - status = dot11f_get_packed_ie_vendor_he_op(pCtx, pSrc, &nNeeded); - if (!DOT11F_SUCCEEDED(status)) - return status; - while (pSrc->present) { - if (nNeeded > nBuf) - return DOT11F_BUFFER_OVERFLOW; - *pBuf = 221; - ++pBuf; ++(*pnConsumed); - pIeLen = pBuf; - ++pBuf; ++(*pnConsumed); - *pBuf = 0x0; - ++pBuf; ++(*pnConsumed); - *pBuf = 0x13; - ++pBuf; ++(*pnConsumed); - *pBuf = 0x74; - ++pBuf; ++(*pnConsumed); - *pBuf = 0x2; - ++pBuf; ++(*pnConsumed); - tmp185__ = 0U; - tmp185__ |= (pSrc->bss_color << 0); - tmp185__ |= (pSrc->default_pe << 6); - tmp185__ |= (pSrc->twt_required << 9); - tmp185__ |= (pSrc->rts_threshold << 10); - tmp185__ |= (pSrc->partial_bss_col << 20); - tmp185__ |= (pSrc->vht_oper_present << 21); - tmp185__ |= (pSrc->reserved1 << 22); - tmp185__ |= (pSrc->mbssid_ap << 28); - tmp185__ |= (pSrc->tx_bssid_ind << 29); - tmp185__ |= (pSrc->bss_col_disabled << 30); - tmp185__ |= (pSrc->reserved2 << 31); - frameshtonl(pCtx, pBuf, tmp185__, 0); - *pnConsumed += 4; - pBuf += 4; - nBuf -= 4 ; - DOT11F_MEMCPY(pCtx, pBuf, pSrc->basic_mcs_nss, 3); - *pnConsumed += 3; - pBuf += 3; - if (pSrc->vht_oper_present) { - switch (pSrc->vht_oper_present) { - case 1: - *pBuf = pSrc->vht_oper.info.chan_width; - *pnConsumed += 1; - pBuf += 1; - *pBuf = pSrc->vht_oper.info.center_freq_seg0; - *pnConsumed += 1; - pBuf += 1; - *pBuf = pSrc->vht_oper.info.center_freq_seg1; - *pnConsumed += 1; - pBuf += 1; - break; - } - } else { - break; - } - if (pSrc->mbssid_ap) { - switch (pSrc->mbssid_ap) { - case 1: - *pBuf = pSrc->maxbssid_ind.info.data; - *pnConsumed += 1; - /* fieldsEndFlag = 1 */ - break; - } - } else { - break; - } - break; - } - (void)pCtx; - if (pIeLen) { - *pIeLen = *pnConsumed - nConsumedOnEntry - 2; - } - return status; -} /* End dot11f_pack_ie_vendor_he_op. */ - uint32_t dot11f_pack_ie_vendor_vht_ie(tpAniSirGlobal pCtx, tDot11fIEvendor_vht_ie *pSrc, uint8_t *pBuf, @@ -25999,6 +25958,22 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEfragment_ie) * i), pBufRemaining, nBufRemaining, &len); break; + case SigIehe_cap: + status |= + dot11f_pack_ie_he_cap( + pCtx, (tDot11fIEhe_cap *) + (pSrc + pIe->offset + + sizeof(tDot11fIEhe_cap) * i), + pBufRemaining, nBufRemaining, &len); + break; + case SigIehe_op: + status |= + dot11f_pack_ie_he_op( + pCtx, (tDot11fIEhe_op *) + (pSrc + pIe->offset + + sizeof(tDot11fIEhe_op) * i), + pBufRemaining, nBufRemaining, &len); + break; case SigIehs20vendor_ie: status |= dot11f_pack_ie_hs20vendor_ie( @@ -26047,22 +26022,6 @@ static uint32_t pack_core(tpAniSirGlobal pCtx, sizeof(tDot11fIEsec_chan_offset_ele) * i), pBufRemaining, nBufRemaining, &len); break; - case SigIevendor_he_cap: - status |= - dot11f_pack_ie_vendor_he_cap( - pCtx, (tDot11fIEvendor_he_cap *) - (pSrc + pIe->offset + - sizeof(tDot11fIEvendor_he_cap) * i), - pBufRemaining, nBufRemaining, &len); - break; - case SigIevendor_he_op: - status |= - dot11f_pack_ie_vendor_he_op( - pCtx, (tDot11fIEvendor_he_op *) - (pSrc + pIe->offset + - sizeof(tDot11fIEvendor_he_op) * i), - pBufRemaining, nBufRemaining, &len); - break; case SigIevendor_vht_ie: status |= dot11f_pack_ie_vendor_vht_ie(