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