1*5113495bSYour Name /* 2*5113495bSYour Name * Copyright (c) 2011-2021 The Linux Foundation. All rights reserved. 3*5113495bSYour Name * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved. 4*5113495bSYour Name * 5*5113495bSYour Name * Permission to use, copy, modify, and/or distribute this software for 6*5113495bSYour Name * any purpose with or without fee is hereby granted, provided that the 7*5113495bSYour Name * above copyright notice and this permission notice appear in all 8*5113495bSYour Name * copies. 9*5113495bSYour Name * 10*5113495bSYour Name * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11*5113495bSYour Name * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12*5113495bSYour Name * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13*5113495bSYour Name * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14*5113495bSYour Name * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15*5113495bSYour Name * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16*5113495bSYour Name * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17*5113495bSYour Name * PERFORMANCE OF THIS SOFTWARE. 18*5113495bSYour Name */ 19*5113495bSYour Name 20*5113495bSYour Name #ifndef _HALMSGAPI_H_ 21*5113495bSYour Name #define _HALMSGAPI_H_ 22*5113495bSYour Name 23*5113495bSYour Name #include "qdf_types.h" 24*5113495bSYour Name #include "sir_api.h" 25*5113495bSYour Name #include "sir_params.h" 26*5113495bSYour Name 27*5113495bSYour Name /* 28*5113495bSYour Name * Validate the OS Type being built 29*5113495bSYour Name */ 30*5113495bSYour Name 31*5113495bSYour Name #if defined(ANI_OS_TYPE_ANDROID) /* ANDROID */ 32*5113495bSYour Name 33*5113495bSYour Name #if defined(ANI_OS_TYPE_QNX) 34*5113495bSYour Name #error "more than one ANI_OS_TYPE_xxx is defined for this build" 35*5113495bSYour Name #endif 36*5113495bSYour Name 37*5113495bSYour Name #elif defined(ANI_OS_TYPE_QNX) /* QNX */ 38*5113495bSYour Name 39*5113495bSYour Name #if defined(ANI_OS_TYPE_ANDROID) 40*5113495bSYour Name #error "more than one ANI_OS_TYPE_xxx is defined for this build" 41*5113495bSYour Name #endif 42*5113495bSYour Name 43*5113495bSYour Name #elif !defined(ANI_OS_TYPE_ANDROID) && !defined(ANI_OS_TYPE_QNX) /* NONE */ 44*5113495bSYour Name #error "NONE of the ANI_OS_TYPE_xxx are defined for this build" 45*5113495bSYour Name #endif 46*5113495bSYour Name 47*5113495bSYour Name /* operMode in ADD BSS message */ 48*5113495bSYour Name #define BSS_OPERATIONAL_MODE_AP 0 49*5113495bSYour Name #define BSS_OPERATIONAL_MODE_STA 1 50*5113495bSYour Name #define BSS_OPERATIONAL_MODE_IBSS 2 51*5113495bSYour Name #define BSS_OPERATIONAL_MODE_NDI 3 52*5113495bSYour Name 53*5113495bSYour Name /* STA entry type in add sta message */ 54*5113495bSYour Name #define STA_ENTRY_SELF 0 55*5113495bSYour Name #define STA_ENTRY_OTHER 1 56*5113495bSYour Name #define STA_ENTRY_BSSID 2 57*5113495bSYour Name /* Special station id for transmitting broadcast frames. */ 58*5113495bSYour Name #define STA_ENTRY_BCAST 3 59*5113495bSYour Name #define STA_ENTRY_PEER STA_ENTRY_OTHER 60*5113495bSYour Name #define STA_ENTRY_TDLS_PEER 4 61*5113495bSYour Name #ifdef FEATURE_WLAN_TDLS 62*5113495bSYour Name #define IS_TDLS_PEER(type) ((type) == STA_ENTRY_TDLS_PEER) 63*5113495bSYour Name #else /* !FEATURE_WLAN_TDLS */ 64*5113495bSYour Name #define IS_TDLS_PEER(type) false 65*5113495bSYour Name #endif /* FEATURE_WLAN_TDLS */ 66*5113495bSYour Name #define STA_ENTRY_NDI_PEER 5 67*5113495bSYour Name 68*5113495bSYour Name #define STA_INVALID_IDX 0xFF 69*5113495bSYour Name 70*5113495bSYour Name /* invalid channel id. */ 71*5113495bSYour Name #define INVALID_CHANNEL_ID 0 72*5113495bSYour Name 73*5113495bSYour Name /** 74*5113495bSYour Name * enum eFrameType - frame types 75*5113495bSYour Name * @TXRX_FRM_RAW: raw frame 76*5113495bSYour Name * @TXRX_FRM_ETH2: ethernet frame 77*5113495bSYour Name * @TXRX_FRM_802_3: 802.3 frame 78*5113495bSYour Name * @TXRX_FRM_802_11_MGMT: 802.11 mgmt frame 79*5113495bSYour Name * @TXRX_FRM_802_11_CTRL: 802.11 control frame 80*5113495bSYour Name * @TXRX_FRM_802_11_DATA: 802.11 data frame 81*5113495bSYour Name */ 82*5113495bSYour Name typedef enum { 83*5113495bSYour Name TXRX_FRM_RAW, 84*5113495bSYour Name TXRX_FRM_ETH2, 85*5113495bSYour Name TXRX_FRM_802_3, 86*5113495bSYour Name TXRX_FRM_802_11_MGMT, 87*5113495bSYour Name TXRX_FRM_802_11_CTRL, 88*5113495bSYour Name TXRX_FRM_802_11_DATA, 89*5113495bSYour Name TXRX_FRM_IGNORED, /* This frame will be dropped */ 90*5113495bSYour Name TXRX_FRM_MAX 91*5113495bSYour Name } eFrameType; 92*5113495bSYour Name 93*5113495bSYour Name /** 94*5113495bSYour Name * enum eFrameTxDir - frame tx direction 95*5113495bSYour Name * @ANI_TXDIR_IBSS: IBSS frame 96*5113495bSYour Name * @ANI_TXDIR_TODS: frame to DS 97*5113495bSYour Name * @ANI_TXDIR_FROMDS: Frame from DS 98*5113495bSYour Name * @ANI_TXDIR_WDS: WDS frame 99*5113495bSYour Name */ 100*5113495bSYour Name typedef enum { 101*5113495bSYour Name ANI_TXDIR_IBSS = 0, 102*5113495bSYour Name ANI_TXDIR_TODS, 103*5113495bSYour Name ANI_TXDIR_FROMDS, 104*5113495bSYour Name ANI_TXDIR_WDS 105*5113495bSYour Name } eFrameTxDir; 106*5113495bSYour Name 107*5113495bSYour Name /** 108*5113495bSYour Name *struct sAniBeaconStruct - Beacon structure 109*5113495bSYour Name * @beaconLength: beacon length 110*5113495bSYour Name * @macHdr: mac header for beacon 111*5113495bSYour Name */ 112*5113495bSYour Name typedef struct sAniBeaconStruct { 113*5113495bSYour Name uint32_t beaconLength; 114*5113495bSYour Name tSirMacMgmtHdr macHdr; 115*5113495bSYour Name } qdf_packed tAniBeaconStruct, *tpAniBeaconStruct; 116*5113495bSYour Name 117*5113495bSYour Name /** 118*5113495bSYour Name * struct sAniProbeRspStruct - probeRsp template structure 119*5113495bSYour Name * @macHdr: mac header for probe response 120*5113495bSYour Name */ 121*5113495bSYour Name struct sAniProbeRspStruct { 122*5113495bSYour Name tSirMacMgmtHdr macHdr; 123*5113495bSYour Name /* probeRsp body follows here */ 124*5113495bSYour Name } qdf_packed; 125*5113495bSYour Name 126*5113495bSYour Name /** 127*5113495bSYour Name * med_sync_delay - medium sync delay info 128*5113495bSYour Name * @med_sync_duration: medium sync duration 129*5113495bSYour Name * @med_sync_ofdm_ed_thresh: medium sync OFDM ED threshold 130*5113495bSYour Name * @med_sync_max_txop_num: medium sync max txop num 131*5113495bSYour Name */ 132*5113495bSYour Name struct med_sync_delay { 133*5113495bSYour Name uint16_t med_sync_duration:8; 134*5113495bSYour Name uint16_t med_sync_ofdm_ed_thresh:4; 135*5113495bSYour Name uint16_t med_sync_max_txop_num:4; 136*5113495bSYour Name }; 137*5113495bSYour Name 138*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO 139*5113495bSYour Name /** 140*5113495bSYour Name * struct ml_partner_link_info: partner link info 141*5113495bSYour Name * @link_id: partner link ID 142*5113495bSYour Name * @link_addr: partner link address 143*5113495bSYour Name * @ch_freq:Channel in Mhz 144*5113495bSYour Name * @ch_phymode: Channel phymode 145*5113495bSYour Name */ 146*5113495bSYour Name struct ml_partner_link_info { 147*5113495bSYour Name uint8_t vdev_id; 148*5113495bSYour Name uint8_t link_id; 149*5113495bSYour Name struct qdf_mac_addr link_addr; 150*5113495bSYour Name struct qdf_mac_addr self_mac_addr; 151*5113495bSYour Name struct wlan_channel channel_info; 152*5113495bSYour Name }; 153*5113495bSYour Name 154*5113495bSYour Name struct peer_ml_info { 155*5113495bSYour Name uint32_t vdev_id; 156*5113495bSYour Name uint32_t link_id; 157*5113495bSYour Name struct qdf_mac_addr link_addr; 158*5113495bSYour Name struct wlan_channel channel_info; 159*5113495bSYour Name struct qdf_mac_addr self_mac_addr; 160*5113495bSYour Name uint8_t num_links; 161*5113495bSYour Name struct ml_partner_link_info partner_info[MLD_MAX_LINKS - 1]; 162*5113495bSYour Name uint8_t rec_max_simultaneous_links; 163*5113495bSYour Name }; 164*5113495bSYour Name #endif 165*5113495bSYour Name 166*5113495bSYour Name /** 167*5113495bSYour Name * struct tAddStaParams - add sta related parameters 168*5113495bSYour Name * @bssId: bssid of sta 169*5113495bSYour Name * @assocId: associd 170*5113495bSYour Name * @staType: 0 - Self, 1 other/remote, 2 - bssid 171*5113495bSYour Name * @staMac: MAC Address of STA 172*5113495bSYour Name * @listenInterval: Listen interval 173*5113495bSYour Name * @wmmEnabled: Support for 11e/WMM 174*5113495bSYour Name * @uAPSD: U-APSD Flags: 1b per AC 175*5113495bSYour Name * @maxSPLen: Max SP Length 176*5113495bSYour Name * @htCapable: 11n HT capable STA 177*5113495bSYour Name * @txChannelWidthSet: TX Width Set: 0 - 20 MHz only, 1 - 20/40 MHz 178*5113495bSYour Name * @mimoPS: MIMO Power Save 179*5113495bSYour Name * @maxAmpduDensity: 3 : 0~7 : 2^(11nAMPDUdensity -4) 180*5113495bSYour Name * @maxAmsduSize: 1 : 3839 bytes, 0 : 7935 bytes 181*5113495bSYour Name * @fShortGI40Mhz: short GI support for 40Mhz packets 182*5113495bSYour Name * @fShortGI20Mhz: short GI support for 20Mhz packets 183*5113495bSYour Name * @supportedRates: legacy supported rates 184*5113495bSYour Name * @status: QDF status 185*5113495bSYour Name * @staIdx: station index 186*5113495bSYour Name * @updateSta: pdate the existing STA entry, if this flag is set 187*5113495bSYour Name * @rmfEnabled: Robust Management Frame (RMF) enabled/disabled 188*5113495bSYour Name * @encryptType: The unicast encryption type in the association 189*5113495bSYour Name * @sessionId: PE session id 190*5113495bSYour Name * @p2pCapableSta: if this is a P2P Capable Sta 191*5113495bSYour Name * @csaOffloadEnable: CSA offload enable flag 192*5113495bSYour Name * @vhtCapable: is VHT capabale or not 193*5113495bSYour Name * @vhtTxChannelWidthSet: VHT channel width 194*5113495bSYour Name * @vhtSupportedRxNss: VHT supported RX NSS 195*5113495bSYour Name * @vhtTxBFCapable: txbf capable or not 196*5113495bSYour Name * @vhtTxMUBformeeCapable: Bformee capable or not 197*5113495bSYour Name * @enableVhtpAid: enable VHT AID 198*5113495bSYour Name * @enableAmpduPs: AMPDU power save 199*5113495bSYour Name * @enableHtSmps: enable HT SMPS 200*5113495bSYour Name * @htSmpsconfig: HT SMPS config 201*5113495bSYour Name * @htLdpcCapable: HT LDPC capable 202*5113495bSYour Name * @vhtLdpcCapable: VHT LDPC capable 203*5113495bSYour Name * @vht_mcs_10_11_supp: VHT MCS 10 & 11 support 204*5113495bSYour Name * @smesessionId: sme session id 205*5113495bSYour Name * @wpa_rsn: RSN capable 206*5113495bSYour Name * @capab_info: capabality info 207*5113495bSYour Name * @ht_caps: HT capabalities 208*5113495bSYour Name * @vht_caps: VHT vapabalities 209*5113495bSYour Name * @nwType: NW Type 210*5113495bSYour Name * @maxTxPower: max tx power 211*5113495bSYour Name * @nss: Return the number of spatial streams supported 212*5113495bSYour Name * @stbc_capable: stbc capable 213*5113495bSYour Name * @no_ptk_4_way: Do not need 4-way handshake 214*5113495bSYour Name * @eht_capable: is EHT capabale or not 215*5113495bSYour Name * @eht_config: EHT capability 216*5113495bSYour Name * @eht_op: EHT operation 217*5113495bSYour Name * @mld_mac_addr: mld mac address 218*5113495bSYour Name * @is_assoc_peer: is assoc peer or not 219*5113495bSYour Name * @emlsr_support: is EMLSR mode supported or not 220*5113495bSYour Name * @msd_caps_present: is MSD capability present in MLO IE or not 221*5113495bSYour Name * @link_id: per link id 222*5113495bSYour Name * @emlsr_trans_timeout: EMLSR transition timeout value 223*5113495bSYour Name * 224*5113495bSYour Name * This structure contains parameter required for 225*5113495bSYour Name * add sta request of upper layer. 226*5113495bSYour Name */ 227*5113495bSYour Name typedef struct { 228*5113495bSYour Name tSirMacAddr bssId; 229*5113495bSYour Name uint16_t assocId; 230*5113495bSYour Name /* Field to indicate if this is sta entry for itself STA adding entry 231*5113495bSYour Name * for itself or remote (AP adding STA after successful association. 232*5113495bSYour Name * This may or may not be required in production driver. 233*5113495bSYour Name */ 234*5113495bSYour Name uint8_t staType; 235*5113495bSYour Name tSirMacAddr staMac; 236*5113495bSYour Name uint16_t listenInterval; 237*5113495bSYour Name uint8_t wmmEnabled; 238*5113495bSYour Name uint8_t uAPSD; 239*5113495bSYour Name uint8_t maxSPLen; 240*5113495bSYour Name uint8_t htCapable; 241*5113495bSYour Name enum phy_ch_width ch_width; 242*5113495bSYour Name tSirMacHTMIMOPowerSaveState mimoPS; 243*5113495bSYour Name uint8_t maxAmpduSize; 244*5113495bSYour Name uint8_t maxAmpduDensity; 245*5113495bSYour Name /* 11n Parameters */ 246*5113495bSYour Name /* HT STA should set it to 1 if it is enabled in BSS 247*5113495bSYour Name * HT STA should set it to 0 if AP does not support it. 248*5113495bSYour Name * This indication is sent to HAL and HAL uses this flag 249*5113495bSYour Name * to pickup up appropriate 40Mhz rates. 250*5113495bSYour Name */ 251*5113495bSYour Name uint8_t fShortGI40Mhz; 252*5113495bSYour Name uint8_t fShortGI20Mhz; 253*5113495bSYour Name struct supported_rates supportedRates; 254*5113495bSYour Name /* 255*5113495bSYour Name * Following parameters are for returning status and station index from 256*5113495bSYour Name * HAL to PE via response message. HAL does not read them. 257*5113495bSYour Name */ 258*5113495bSYour Name /* The return status of SIR_HAL_ADD_STA_REQ is reported here */ 259*5113495bSYour Name QDF_STATUS status; 260*5113495bSYour Name uint8_t updateSta; 261*5113495bSYour Name uint8_t rmfEnabled; 262*5113495bSYour Name uint32_t encryptType; 263*5113495bSYour Name uint8_t sessionId; 264*5113495bSYour Name uint8_t p2pCapableSta; 265*5113495bSYour Name uint8_t csaOffloadEnable; 266*5113495bSYour Name uint8_t vhtCapable; 267*5113495bSYour Name uint8_t vhtSupportedRxNss; 268*5113495bSYour Name uint8_t vht_160mhz_nss; 269*5113495bSYour Name uint8_t vht_80p80mhz_nss; 270*5113495bSYour Name uint8_t vht_extended_nss_bw_cap; 271*5113495bSYour Name uint8_t vhtTxBFCapable; 272*5113495bSYour Name uint8_t enable_su_tx_bformer; 273*5113495bSYour Name uint8_t vhtTxMUBformeeCapable; 274*5113495bSYour Name uint8_t enableVhtpAid; 275*5113495bSYour Name uint8_t enableAmpduPs; 276*5113495bSYour Name uint8_t enableHtSmps; 277*5113495bSYour Name uint8_t htSmpsconfig; 278*5113495bSYour Name bool send_smps_action; 279*5113495bSYour Name uint8_t htLdpcCapable; 280*5113495bSYour Name uint8_t vhtLdpcCapable; 281*5113495bSYour Name uint8_t vht_mcs_10_11_supp; 282*5113495bSYour Name uint8_t smesessionId; 283*5113495bSYour Name uint8_t wpa_rsn; 284*5113495bSYour Name uint16_t capab_info; 285*5113495bSYour Name uint16_t ht_caps; 286*5113495bSYour Name uint32_t vht_caps; 287*5113495bSYour Name tSirNwType nwType; 288*5113495bSYour Name int8_t maxTxPower; 289*5113495bSYour Name uint8_t nonRoamReassoc; 290*5113495bSYour Name uint32_t nss; 291*5113495bSYour Name #ifdef WLAN_FEATURE_11AX 292*5113495bSYour Name bool he_capable; 293*5113495bSYour Name tDot11fIEhe_cap he_config; 294*5113495bSYour Name tDot11fIEhe_op he_op; 295*5113495bSYour Name tDot11fIEhe_6ghz_band_cap he_6ghz_band_caps; 296*5113495bSYour Name uint16_t he_mcs_12_13_map; 297*5113495bSYour Name #endif 298*5113495bSYour Name uint8_t stbc_capable; 299*5113495bSYour Name #ifdef WLAN_SUPPORT_TWT 300*5113495bSYour Name uint8_t twt_requestor; 301*5113495bSYour Name uint8_t twt_responder; 302*5113495bSYour Name #endif 303*5113495bSYour Name bool no_ptk_4_way; 304*5113495bSYour Name #ifdef WLAN_FEATURE_11BE 305*5113495bSYour Name bool eht_capable; 306*5113495bSYour Name tDot11fIEeht_cap eht_config; 307*5113495bSYour Name tDot11fIEeht_op eht_op; 308*5113495bSYour Name #endif 309*5113495bSYour Name struct med_sync_delay msd_caps; 310*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO 311*5113495bSYour Name uint8_t mld_mac_addr[QDF_MAC_ADDR_SIZE]; 312*5113495bSYour Name bool is_assoc_peer; 313*5113495bSYour Name bool emlsr_support; 314*5113495bSYour Name bool msd_caps_present; 315*5113495bSYour Name uint8_t link_id; 316*5113495bSYour Name uint16_t emlsr_trans_timeout; 317*5113495bSYour Name struct ml_partner_link_info ml_partner_info[MLD_MAX_LINKS - 1]; 318*5113495bSYour Name struct peer_ml_info ml_info; 319*5113495bSYour Name #endif 320*5113495bSYour Name } tAddStaParams, *tpAddStaParams; 321*5113495bSYour Name 322*5113495bSYour Name /** 323*5113495bSYour Name * struct tDeleteStaParams - parameters required for del sta request 324*5113495bSYour Name * @assocId: association index 325*5113495bSYour Name * @status: status 326*5113495bSYour Name * @respReqd: is response required 327*5113495bSYour Name * @sessionId: PE session id 328*5113495bSYour Name * @smesessionId: SME session id 329*5113495bSYour Name * @staType: station type 330*5113495bSYour Name * @staMac: station mac 331*5113495bSYour Name */ 332*5113495bSYour Name typedef struct { 333*5113495bSYour Name uint16_t assocId; 334*5113495bSYour Name QDF_STATUS status; 335*5113495bSYour Name uint8_t respReqd; 336*5113495bSYour Name uint8_t sessionId; 337*5113495bSYour Name uint8_t smesessionId; 338*5113495bSYour Name uint8_t staType; 339*5113495bSYour Name tSirMacAddr staMac; 340*5113495bSYour Name } tDeleteStaParams, *tpDeleteStaParams; 341*5113495bSYour Name 342*5113495bSYour Name /** 343*5113495bSYour Name * struct tSetStaKeyParams - set key params 344*5113495bSYour Name * @encType: encryption type 345*5113495bSYour Name * @defWEPIdx: Default WEP key, valid only for static WEP, must between 0 and 3 346*5113495bSYour Name * @singleTidRc: 1=Single TID based Replay Count, 0=Per TID based RC 347*5113495bSYour Name * @vdev_id: vdev_id 348*5113495bSYour Name * @peerMacAddr: peer mac address 349*5113495bSYour Name * @status: status 350*5113495bSYour Name * @macaddr: MAC address of the peer 351*5113495bSYour Name * @key_len: key len 352*5113495bSYour Name * 353*5113495bSYour Name * This is used by PE to configure the key information on a given station. 354*5113495bSYour Name * When the secType is WEP40 or WEP104, the defWEPIdx is used to locate 355*5113495bSYour Name * a preconfigured key from a BSS the station associated with; otherwise 356*5113495bSYour Name * a new key descriptor is created based on the key field. 357*5113495bSYour Name */ 358*5113495bSYour Name typedef struct { 359*5113495bSYour Name tAniEdType encType; 360*5113495bSYour Name uint8_t defWEPIdx; 361*5113495bSYour Name uint8_t singleTidRc; 362*5113495bSYour Name uint8_t vdev_id; 363*5113495bSYour Name struct qdf_mac_addr peer_macaddr; 364*5113495bSYour Name QDF_STATUS status; 365*5113495bSYour Name uint8_t sendRsp; 366*5113495bSYour Name struct qdf_mac_addr macaddr; 367*5113495bSYour Name uint16_t key_len; 368*5113495bSYour Name } tSetStaKeyParams, *tpSetStaKeyParams; 369*5113495bSYour Name 370*5113495bSYour Name /** 371*5113495bSYour Name * struct bss_params - parameters required for add bss params 372*5113495bSYour Name * @bssId: MAC Address/BSSID 373*5113495bSYour Name * @nwType: network type 374*5113495bSYour Name * @shortSlotTimeSupported: is short slot time supported or not 375*5113495bSYour Name * @llbCoexist: 11b coexist supported or not 376*5113495bSYour Name * @beaconInterval: beacon interval 377*5113495bSYour Name * @dtimPeriod: DTIM period 378*5113495bSYour Name * @htCapable: Enable/Disable HT capabilities 379*5113495bSYour Name * @rmfEnabled: RMF enabled/disabled 380*5113495bSYour Name * @staContext: sta context 381*5113495bSYour Name * @updateBss: update the existing BSS entry, if this flag is set 382*5113495bSYour Name * @maxTxPower: max power to be used after applying the power constraint 383*5113495bSYour Name * @bSpectrumMgtEnabled: Spectrum Management Capability, 1:Enabled, 0:Disabled. 384*5113495bSYour Name * @vhtCapable: VHT capability 385*5113495bSYour Name * @ch_width: VHT tx channel width 386*5113495bSYour Name * @he_capable: HE Capability 387*5113495bSYour Name * @no_ptk_4_way: Do not need 4-way handshake 388*5113495bSYour Name * @eht_capable: EHT capability 389*5113495bSYour Name */ 390*5113495bSYour Name struct bss_params { 391*5113495bSYour Name tSirMacAddr bssId; 392*5113495bSYour Name tSirNwType nwType; 393*5113495bSYour Name uint8_t shortSlotTimeSupported; 394*5113495bSYour Name uint8_t llbCoexist; 395*5113495bSYour Name tSirMacBeaconInterval beaconInterval; 396*5113495bSYour Name uint8_t dtimPeriod; 397*5113495bSYour Name uint8_t htCapable; 398*5113495bSYour Name uint8_t rmfEnabled; 399*5113495bSYour Name tAddStaParams staContext; 400*5113495bSYour Name /* HAL should update the existing BSS entry, if this flag is set. 401*5113495bSYour Name * PE will set this flag in case of reassoc, where we want to reuse the 402*5113495bSYour Name * the old bssID and still return success. 403*5113495bSYour Name */ 404*5113495bSYour Name uint8_t updateBss; 405*5113495bSYour Name int8_t maxTxPower; 406*5113495bSYour Name uint8_t vhtCapable; 407*5113495bSYour Name enum phy_ch_width ch_width; 408*5113495bSYour Name uint8_t nonRoamReassoc; 409*5113495bSYour Name #ifdef WLAN_FEATURE_11AX 410*5113495bSYour Name bool he_capable; 411*5113495bSYour Name uint32_t he_sta_obsspd; 412*5113495bSYour Name #endif 413*5113495bSYour Name bool no_ptk_4_way; 414*5113495bSYour Name uint16_t bss_max_idle_period; 415*5113495bSYour Name #ifdef WLAN_FEATURE_11BE 416*5113495bSYour Name bool eht_capable; 417*5113495bSYour Name #endif 418*5113495bSYour Name }; 419*5113495bSYour Name 420*5113495bSYour Name /** 421*5113495bSYour Name * struct add_bss_rsp - params required for add bss response 422*5113495bSYour Name * @vdev_id: vdev_id 423*5113495bSYour Name * @status: QDF status 424*5113495bSYour Name * @chain_mask: chain mask vdev start resp 425*5113495bSYour Name * @smps_mode: smps mode in vdev start resp 426*5113495bSYour Name */ 427*5113495bSYour Name struct add_bss_rsp { 428*5113495bSYour Name uint8_t vdev_id; 429*5113495bSYour Name QDF_STATUS status; 430*5113495bSYour Name uint32_t chain_mask; 431*5113495bSYour Name uint8_t smps_mode; 432*5113495bSYour Name }; 433*5113495bSYour Name 434*5113495bSYour Name typedef enum eDelStaReasonCode { 435*5113495bSYour Name HAL_DEL_STA_REASON_CODE_KEEP_ALIVE = 0x1, 436*5113495bSYour Name HAL_DEL_STA_REASON_CODE_TIM_BASED = 0x2, 437*5113495bSYour Name HAL_DEL_STA_REASON_CODE_RA_BASED = 0x3, 438*5113495bSYour Name HAL_DEL_STA_REASON_CODE_UNKNOWN_A2 = 0x4, 439*5113495bSYour Name HAL_DEL_STA_REASON_CODE_BTM_DISASSOC_IMMINENT = 0x5, 440*5113495bSYour Name HAL_DEL_STA_REASON_CODE_SA_QUERY_TIMEOUT = 0x6, 441*5113495bSYour Name HAL_DEL_STA_REASON_CODE_XRETRY = 0x7, 442*5113495bSYour Name } tDelStaReasonCode; 443*5113495bSYour Name 444*5113495bSYour Name typedef enum eSmpsModeValue { 445*5113495bSYour Name STATIC_SMPS_MODE = 0x0, 446*5113495bSYour Name DYNAMIC_SMPS_MODE = 0x1, 447*5113495bSYour Name SMPS_MODE_RESERVED = 0x2, 448*5113495bSYour Name SMPS_MODE_DISABLED = 0x3 449*5113495bSYour Name } tSmpsModeValue; 450*5113495bSYour Name 451*5113495bSYour Name /** 452*5113495bSYour Name * struct tDeleteStaContext - params required for delete sta request 453*5113495bSYour Name * @assocId: association id 454*5113495bSYour Name * @bssId: mac address 455*5113495bSYour Name * @addr2: mac address 456*5113495bSYour Name * @reasonCode: reason code 457*5113495bSYour Name * @rssi: rssi value during disconnection 458*5113495bSYour Name */ 459*5113495bSYour Name typedef struct { 460*5113495bSYour Name bool is_tdls; 461*5113495bSYour Name uint8_t vdev_id; 462*5113495bSYour Name uint16_t assocId; 463*5113495bSYour Name tSirMacAddr bssId; 464*5113495bSYour Name tSirMacAddr addr2; 465*5113495bSYour Name uint16_t reasonCode; 466*5113495bSYour Name int8_t rssi; 467*5113495bSYour Name } tDeleteStaContext, *tpDeleteStaContext; 468*5113495bSYour Name 469*5113495bSYour Name #ifdef FEATURE_OEM_DATA_SUPPORT 470*5113495bSYour Name 471*5113495bSYour Name #ifndef OEM_DATA_RSP_SIZE 472*5113495bSYour Name #define OEM_DATA_RSP_SIZE 1724 473*5113495bSYour Name #endif 474*5113495bSYour Name 475*5113495bSYour Name /** 476*5113495bSYour Name * struct tStartOemDataRsp - start OEM Data response 477*5113495bSYour Name * @target_rsp: Indicates if the rsp is from Target or WMA generated. 478*5113495bSYour Name * @rsp_len: oem data response length 479*5113495bSYour Name * @oem_data_rsp: pointer to OEM Data response 480*5113495bSYour Name */ 481*5113495bSYour Name typedef struct { 482*5113495bSYour Name bool target_rsp; 483*5113495bSYour Name uint32_t rsp_len; 484*5113495bSYour Name uint8_t *oem_data_rsp; 485*5113495bSYour Name } tStartOemDataRsp, *tpStartOemDataRsp; 486*5113495bSYour Name #endif /* FEATURE_OEM_DATA_SUPPORT */ 487*5113495bSYour Name 488*5113495bSYour Name /** 489*5113495bSYour Name * struct beacon_gen_params - params required for beacon gen request 490*5113495bSYour Name * @bssdd: BSSID for which it is time to generate a beacon 491*5113495bSYour Name */ 492*5113495bSYour Name struct beacon_gen_params { 493*5113495bSYour Name tSirMacAddr bssid; 494*5113495bSYour Name }; 495*5113495bSYour Name 496*5113495bSYour Name /** 497*5113495bSYour Name * struct tSendbeaconParams - send beacon parameters 498*5113495bSYour Name * vdev_id: vdev id 499*5113495bSYour Name * @bssId: BSSID mac address 500*5113495bSYour Name * @beacon: beacon data 501*5113495bSYour Name * @beaconLength: beacon length of template 502*5113495bSYour Name * @timIeOffset: TIM IE offset 503*5113495bSYour Name * @p2pIeOffset: P2P IE offset 504*5113495bSYour Name * @csa_count_offset: Offset of Switch count field in CSA IE 505*5113495bSYour Name * @ecsa_count_offset: Offset of Switch count field in ECSA IE 506*5113495bSYour Name * @reason: bcn update reason 507*5113495bSYour Name * @status: beacon send status 508*5113495bSYour Name */ 509*5113495bSYour Name typedef struct { 510*5113495bSYour Name uint8_t vdev_id; 511*5113495bSYour Name tSirMacAddr bssId; 512*5113495bSYour Name uint8_t beacon[SIR_MAX_BEACON_SIZE]; 513*5113495bSYour Name uint32_t beaconLength; 514*5113495bSYour Name uint32_t timIeOffset; 515*5113495bSYour Name uint16_t p2pIeOffset; 516*5113495bSYour Name uint32_t csa_count_offset; 517*5113495bSYour Name uint32_t ecsa_count_offset; 518*5113495bSYour Name enum sir_bcn_update_reason reason; 519*5113495bSYour Name QDF_STATUS status; 520*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO 521*5113495bSYour Name struct mlo_bcn_templ_partner_links mlo_partner; 522*5113495bSYour Name #endif 523*5113495bSYour Name } tSendbeaconParams, *tpSendbeaconParams; 524*5113495bSYour Name 525*5113495bSYour Name /** 526*5113495bSYour Name * struct tSendProbeRespParams - send probe response parameters 527*5113495bSYour Name * @bssId: BSSID 528*5113495bSYour Name * @probeRespTemplate: probe response template 529*5113495bSYour Name * @probeRespTemplateLen: probe response template length 530*5113495bSYour Name * @ucProxyProbeReqValidIEBmap: valid IE bitmap 531*5113495bSYour Name * @go_ignore_non_p2p_probe_req: go ignore non-p2p probe req 532*5113495bSYour Name */ 533*5113495bSYour Name typedef struct sSendProbeRespParams { 534*5113495bSYour Name tSirMacAddr bssId; 535*5113495bSYour Name uint8_t probeRespTemplate[SIR_MAX_PROBE_RESP_SIZE]; 536*5113495bSYour Name uint32_t probeRespTemplateLen; 537*5113495bSYour Name uint32_t ucProxyProbeReqValidIEBmap[8]; 538*5113495bSYour Name bool go_ignore_non_p2p_probe_req; 539*5113495bSYour Name } tSendProbeRespParams, *tpSendProbeRespParams; 540*5113495bSYour Name 541*5113495bSYour Name /** 542*5113495bSYour Name * struct tSetBssKeyParams - BSS key parameters 543*5113495bSYour Name * @vdev_id: vdev id id 544*5113495bSYour Name * @status: return status of command 545*5113495bSYour Name * @macaddr: MAC address of the peer 546*5113495bSYour Name * @key_len: key len 547*5113495bSYour Name */ 548*5113495bSYour Name typedef struct { 549*5113495bSYour Name uint8_t vdev_id; 550*5113495bSYour Name QDF_STATUS status; 551*5113495bSYour Name struct qdf_mac_addr macaddr; 552*5113495bSYour Name uint16_t key_len; 553*5113495bSYour Name } tSetBssKeyParams, *tpSetBssKeyParams; 554*5113495bSYour Name 555*5113495bSYour Name /** 556*5113495bSYour Name * struct tUpdateBeaconParams - update beacon request parameters 557*5113495bSYour Name * @bss_idx: BSSID index 558*5113495bSYour Name * @fShortPreamble: shortPreamble mode 559*5113495bSYour Name * @fShortSlotTime: short Slot time 560*5113495bSYour Name * @beaconInterval: Beacon Interval 561*5113495bSYour Name * @llaCoexist: 11a coexist 562*5113495bSYour Name * @llbCoexist: 11b coexist 563*5113495bSYour Name * @llgCoexist: 11g coexist 564*5113495bSYour Name * @ht20MhzCoexist: HT 20MHz coexist 565*5113495bSYour Name * @fLsigTXOPProtectionFullSupport: TXOP protection supported or not 566*5113495bSYour Name * @fRIFSMode: RIFS mode 567*5113495bSYour Name * @paramChangeBitmap: change bitmap 568*5113495bSYour Name * @vdev_id: vdev_id 569*5113495bSYour Name */ 570*5113495bSYour Name typedef struct { 571*5113495bSYour Name uint8_t bss_idx; 572*5113495bSYour Name uint8_t fShortPreamble; 573*5113495bSYour Name uint8_t fShortSlotTime; 574*5113495bSYour Name uint16_t beaconInterval; 575*5113495bSYour Name uint8_t llaCoexist; 576*5113495bSYour Name uint8_t llbCoexist; 577*5113495bSYour Name uint8_t llgCoexist; 578*5113495bSYour Name uint8_t ht20MhzCoexist; 579*5113495bSYour Name uint8_t llnNonGFCoexist; 580*5113495bSYour Name uint8_t fLsigTXOPProtectionFullSupport; 581*5113495bSYour Name uint8_t fRIFSMode; 582*5113495bSYour Name uint16_t paramChangeBitmap; 583*5113495bSYour Name uint8_t vdev_id; 584*5113495bSYour Name uint32_t bss_color; 585*5113495bSYour Name bool bss_color_disabled; 586*5113495bSYour Name } tUpdateBeaconParams, *tpUpdateBeaconParams; 587*5113495bSYour Name 588*5113495bSYour Name /** 589*5113495bSYour Name * struct tUpdateVHTOpMode - VHT operating mode 590*5113495bSYour Name * @opMode: VHT operating mode 591*5113495bSYour Name * @staId: station id 592*5113495bSYour Name * @smesessionId: SME session id 593*5113495bSYour Name * @peer_mac: peer mac address 594*5113495bSYour Name */ 595*5113495bSYour Name typedef struct { 596*5113495bSYour Name uint16_t opMode; 597*5113495bSYour Name uint16_t smesessionId; 598*5113495bSYour Name tSirMacAddr peer_mac; 599*5113495bSYour Name } tUpdateVHTOpMode, *tpUpdateVHTOpMode; 600*5113495bSYour Name 601*5113495bSYour Name /** 602*5113495bSYour Name * struct tUpdateRxNss - update rx nss parameters 603*5113495bSYour Name * @rxNss: rx nss value 604*5113495bSYour Name * @staId: station id 605*5113495bSYour Name * @smesessionId: sme session id 606*5113495bSYour Name * @peer_mac: peer mac address 607*5113495bSYour Name */ 608*5113495bSYour Name typedef struct { 609*5113495bSYour Name uint16_t rxNss; 610*5113495bSYour Name uint16_t smesessionId; 611*5113495bSYour Name tSirMacAddr peer_mac; 612*5113495bSYour Name } tUpdateRxNss, *tpUpdateRxNss; 613*5113495bSYour Name 614*5113495bSYour Name /** 615*5113495bSYour Name * struct tUpdateMembership - update membership parameters 616*5113495bSYour Name * @membership: membership value 617*5113495bSYour Name * @staId: station id 618*5113495bSYour Name * @smesessionId: SME session id 619*5113495bSYour Name * @peer_mac: peer mac address 620*5113495bSYour Name */ 621*5113495bSYour Name typedef struct { 622*5113495bSYour Name uint32_t membership; 623*5113495bSYour Name uint16_t smesessionId; 624*5113495bSYour Name tSirMacAddr peer_mac; 625*5113495bSYour Name } tUpdateMembership, *tpUpdateMembership; 626*5113495bSYour Name 627*5113495bSYour Name /** 628*5113495bSYour Name * struct tUpdateUserPos - update user position parameters 629*5113495bSYour Name * @userPos: user position 630*5113495bSYour Name * @staId: station id 631*5113495bSYour Name * @smesessionId: sme session id 632*5113495bSYour Name * @peer_mac: peer mac address 633*5113495bSYour Name */ 634*5113495bSYour Name typedef struct { 635*5113495bSYour Name uint32_t userPos; 636*5113495bSYour Name uint16_t smesessionId; 637*5113495bSYour Name tSirMacAddr peer_mac; 638*5113495bSYour Name } tUpdateUserPos, *tpUpdateUserPos; 639*5113495bSYour Name 640*5113495bSYour Name /** 641*5113495bSYour Name * struct tEdcaParams - EDCA parameters 642*5113495bSYour Name * @vdev_id: vdev id 643*5113495bSYour Name * @acbe: best effort access category 644*5113495bSYour Name * @acbk: Background access category 645*5113495bSYour Name * @acvi: video access category 646*5113495bSYour Name * @acvo: voice access category 647*5113495bSYour Name * @mu_edca_params: flag to indicate MU EDCA 648*5113495bSYour Name */ 649*5113495bSYour Name typedef struct { 650*5113495bSYour Name uint16_t vdev_id; 651*5113495bSYour Name tSirMacEdcaParamRecord acbe; 652*5113495bSYour Name tSirMacEdcaParamRecord acbk; 653*5113495bSYour Name tSirMacEdcaParamRecord acvi; 654*5113495bSYour Name tSirMacEdcaParamRecord acvo; 655*5113495bSYour Name bool mu_edca_params; 656*5113495bSYour Name } tEdcaParams, *tpEdcaParams; 657*5113495bSYour Name 658*5113495bSYour Name /** 659*5113495bSYour Name * struct tSetMIMOPS - MIMO power save related parameters 660*5113495bSYour Name * @htMIMOPSState: MIMO Power Save State 661*5113495bSYour Name * @status: response status 662*5113495bSYour Name * @fsendRsp: send response flag 663*5113495bSYour Name * @peerMac: peer mac address 664*5113495bSYour Name * @sessionId: session id 665*5113495bSYour Name */ 666*5113495bSYour Name typedef struct sSet_MIMOPS { 667*5113495bSYour Name tSirMacHTMIMOPowerSaveState htMIMOPSState; 668*5113495bSYour Name QDF_STATUS status; 669*5113495bSYour Name uint8_t fsendRsp; 670*5113495bSYour Name tSirMacAddr peerMac; 671*5113495bSYour Name uint8_t sessionId; 672*5113495bSYour Name } tSetMIMOPS, *tpSetMIMOPS; 673*5113495bSYour Name 674*5113495bSYour Name /** 675*5113495bSYour Name * struct tMaxTxPowerParams - Max Tx Power parameters 676*5113495bSYour Name * @bssId: BSSID is needed to identify which session issued this request 677*5113495bSYour Name * @selfStaMacAddr: self mac address 678*5113495bSYour Name * @power: tx power in dbm 679*5113495bSYour Name * @dev_mode: device mode 680*5113495bSYour Name * Request Type = SIR_HAL_SET_MAX_TX_POWER_REQ 681*5113495bSYour Name */ 682*5113495bSYour Name typedef struct sMaxTxPowerParams { 683*5113495bSYour Name struct qdf_mac_addr bssId; 684*5113495bSYour Name struct qdf_mac_addr selfStaMacAddr; 685*5113495bSYour Name /* In request, 686*5113495bSYour Name * power == MaxTx power to be used. 687*5113495bSYour Name * In response, 688*5113495bSYour Name * power == tx power used for management frames. 689*5113495bSYour Name */ 690*5113495bSYour Name int8_t power; 691*5113495bSYour Name enum QDF_OPMODE dev_mode; 692*5113495bSYour Name } tMaxTxPowerParams, *tpMaxTxPowerParams; 693*5113495bSYour Name 694*5113495bSYour Name /** 695*5113495bSYour Name * struct tMaxTxPowerPerBandParams - max tx power per band info 696*5113495bSYour Name * @bandInfo: band info 697*5113495bSYour Name * @power: power in dbm 698*5113495bSYour Name */ 699*5113495bSYour Name typedef struct sMaxTxPowerPerBandParams { 700*5113495bSYour Name enum band_info bandInfo; 701*5113495bSYour Name int8_t power; 702*5113495bSYour Name } tMaxTxPowerPerBandParams, *tpMaxTxPowerPerBandParams; 703*5113495bSYour Name 704*5113495bSYour Name /** 705*5113495bSYour Name * struct set_ie_param - set IE params structure 706*5113495bSYour Name * @pdev_id: pdev id 707*5113495bSYour Name * @ie_type: IE type 708*5113495bSYour Name * @nss: Nss value 709*5113495bSYour Name * @ie_len: IE length 710*5113495bSYour Name * @ie_ptr: Pointer to IE data 711*5113495bSYour Name * 712*5113495bSYour Name * Holds the set pdev IE req data. 713*5113495bSYour Name */ 714*5113495bSYour Name struct set_ie_param { 715*5113495bSYour Name uint8_t pdev_id; 716*5113495bSYour Name uint8_t ie_type; 717*5113495bSYour Name uint8_t nss; 718*5113495bSYour Name uint8_t ie_len; 719*5113495bSYour Name uint8_t *ie_ptr; 720*5113495bSYour Name }; 721*5113495bSYour Name 722*5113495bSYour Name /** 723*5113495bSYour Name * struct set_dtim_params - dtim params 724*5113495bSYour Name * @session_id: SME Session ID 725*5113495bSYour Name * @dtim_period: dtim period 726*5113495bSYour Name */ 727*5113495bSYour Name struct set_dtim_params { 728*5113495bSYour Name uint8_t session_id; 729*5113495bSYour Name uint8_t dtim_period; 730*5113495bSYour Name }; 731*5113495bSYour Name 732*5113495bSYour Name #define DOT11_HT_IE 1 733*5113495bSYour Name #define DOT11_VHT_IE 2 734*5113495bSYour Name 735*5113495bSYour Name /** 736*5113495bSYour Name * struct del_vdev_params - Del Sta Self params 737*5113495bSYour Name * @session_id: SME Session ID 738*5113495bSYour Name * @status: response status code 739*5113495bSYour Name * @vdev: Object to vdev 740*5113495bSYour Name */ 741*5113495bSYour Name struct del_vdev_params { 742*5113495bSYour Name tSirMacAddr self_mac_addr; 743*5113495bSYour Name uint8_t vdev_id; 744*5113495bSYour Name uint32_t status; 745*5113495bSYour Name struct wlan_objmgr_vdev *vdev; 746*5113495bSYour Name }; 747*5113495bSYour Name 748*5113495bSYour Name /** 749*5113495bSYour Name * struct del_sta_self_rsp_params - Del Sta Self response params 750*5113495bSYour Name * @self_sta_param: sta params 751*5113495bSYour Name * @generate_rsp: generate response to upper layers 752*5113495bSYour Name */ 753*5113495bSYour Name struct del_sta_self_rsp_params { 754*5113495bSYour Name struct del_vdev_params *self_sta_param; 755*5113495bSYour Name }; 756*5113495bSYour Name 757*5113495bSYour Name /** 758*5113495bSYour Name * struct send_peer_unmap_conf_params - Send Peer Unmap Conf param 759*5113495bSYour Name * @vdev_id: vdev ID 760*5113495bSYour Name * @peer_id_cnt: peer_id count 761*5113495bSYour Name * @peer_id_list: list of peer IDs 762*5113495bSYour Name */ 763*5113495bSYour Name struct send_peer_unmap_conf_params { 764*5113495bSYour Name uint8_t vdev_id; 765*5113495bSYour Name uint32_t peer_id_cnt; 766*5113495bSYour Name uint16_t *peer_id_list; 767*5113495bSYour Name }; 768*5113495bSYour Name 769*5113495bSYour Name /** 770*5113495bSYour Name * struct peer_create_rsp_params - Peer create response parameters 771*5113495bSYour Name * @peer_mac: Peer mac address 772*5113495bSYour Name */ 773*5113495bSYour Name struct peer_create_rsp_params { 774*5113495bSYour Name struct qdf_mac_addr peer_mac; 775*5113495bSYour Name }; 776*5113495bSYour Name 777*5113495bSYour Name /** 778*5113495bSYour Name * struct tDisableIntraBssFwd - intra bss forward parameters 779*5113495bSYour Name * @sessionId: session id 780*5113495bSYour Name * @disableintrabssfwd: disable intra bss forward flag 781*5113495bSYour Name */ 782*5113495bSYour Name typedef struct sDisableIntraBssFwd { 783*5113495bSYour Name uint16_t sessionId; 784*5113495bSYour Name bool disableintrabssfwd; 785*5113495bSYour Name } qdf_packed tDisableIntraBssFwd, *tpDisableIntraBssFwd; 786*5113495bSYour Name 787*5113495bSYour Name #ifdef WLAN_FEATURE_STATS_EXT 788*5113495bSYour Name /** 789*5113495bSYour Name * struct tStatsExtRequest - ext stats request 790*5113495bSYour Name * @vdev_id: vdev id 791*5113495bSYour Name * @request_data_len: request data length 792*5113495bSYour Name * @request_data: request data 793*5113495bSYour Name */ 794*5113495bSYour Name typedef struct sStatsExtRequest { 795*5113495bSYour Name uint32_t vdev_id; 796*5113495bSYour Name uint32_t request_data_len; 797*5113495bSYour Name uint8_t request_data[]; 798*5113495bSYour Name } tStatsExtRequest, *tpStatsExtRequest; 799*5113495bSYour Name #endif /* WLAN_FEATURE_STATS_EXT */ 800*5113495bSYour Name 801*5113495bSYour Name #endif /* _HALMSGAPI_H_ */ 802