1 /* 2 * Copyright (c) 2019-2021 The Linux Foundation. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for 5 * any purpose with or without fee is hereby granted, provided that the 6 * above copyright notice and this permission notice appear in all 7 * copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16 * PERFORMANCE OF THIS SOFTWARE. 17 */ 18 19 /** 20 * DOC: wlan_vdev_mgr_tgt_if_tx_defs.h 21 * 22 * This file provides definitions to data structures required for vdev Tx ops 23 */ 24 25 #ifndef __WLAN_VDEV_MGR_TX_OPS_DEFS_H__ 26 #define __WLAN_VDEV_MGR_TX_OPS_DEFS_H__ 27 28 #include <qdf_nbuf.h> 29 #ifdef WLAN_FEATURE_11BE_MLO 30 #include <wlan_mlo_mgr_public_structs.h> 31 #endif 32 33 /** slot time long */ 34 #define WLAN_MLME_VDEV_SLOT_TIME_LONG 0x1 35 /** slot time short */ 36 #define WLAN_MLME_VDEV_SLOT_TIME_SHORT 0x2 37 38 /** 39 * enum MLME_bcn_tx_rate_code - beacon tx rate code 40 */ 41 enum mlme_bcn_tx_rate_code { 42 MLME_BCN_TX_RATE_CODE_1_M = 0x43, 43 MLME_BCN_TX_RATE_CODE_2_M = 0x42, 44 MLME_BCN_TX_RATE_CODE_5_5_M = 0x41, 45 MLME_BCN_TX_RATE_CODE_6_M = 0x03, 46 MLME_BCN_TX_RATE_CODE_9_M = 0x07, 47 MLME_BCN_TX_RATE_CODE_11M = 0x40, 48 MLME_BCN_TX_RATE_CODE_12_M = 0x02, 49 MLME_BCN_TX_RATE_CODE_18_M = 0x06, 50 MLME_BCN_TX_RATE_CODE_24_M = 0x01, 51 MLME_BCN_TX_RATE_CODE_36_M = 0x05, 52 MLME_BCN_TX_RATE_CODE_48_M = 0x00, 53 MLME_BCN_TX_RATE_CODE_54_M = 0x04, 54 }; 55 56 /** 57 * enum wlan_mlme_host_sta_ps_param_uapsd - STA UPASD params 58 */ 59 enum wlan_mlme_host_sta_ps_param_uapsd { 60 WLAN_MLME_HOST_STA_PS_UAPSD_AC0_DELIVERY_EN = (1 << 0), 61 WLAN_MLME_HOST_STA_PS_UAPSD_AC0_TRIGGER_EN = (1 << 1), 62 WLAN_MLME_HOST_STA_PS_UAPSD_AC1_DELIVERY_EN = (1 << 2), 63 WLAN_MLME_HOST_STA_PS_UAPSD_AC1_TRIGGER_EN = (1 << 3), 64 WLAN_MLME_HOST_STA_PS_UAPSD_AC2_DELIVERY_EN = (1 << 4), 65 WLAN_MLME_HOST_STA_PS_UAPSD_AC2_TRIGGER_EN = (1 << 5), 66 WLAN_MLME_HOST_STA_PS_UAPSD_AC3_DELIVERY_EN = (1 << 6), 67 WLAN_MLME_HOST_STA_PS_UAPSD_AC3_TRIGGER_EN = (1 << 7), 68 }; 69 70 /** 71 * enum wlan_mlme_host_vdev_start_status - vdev start status code 72 */ 73 enum wlan_mlme_host_vdev_start_status { 74 WLAN_MLME_HOST_VDEV_START_OK = 0, 75 WLAN_MLME_HOST_VDEV_START_CHAN_INVALID, 76 WLAN_MLME_HOST_VDEV_START_CHAN_BLOCKED, 77 WLAN_MLME_HOST_VDEV_START_CHAN_DFS_VIOLATION, 78 WLAN_MLME_HOST_VDEV_START_CHAN_INVALID_REGDOMAIN, 79 WLAN_MLME_HOST_VDEV_START_CHAN_INVALID_BAND, 80 WLAN_MLME_HOST_VDEV_START_TIMEOUT, 81 /* Add new response status code from here */ 82 WLAN_MLME_HOST_VDEV_START_MAX_REASON, 83 }; 84 85 /** 86 * string_from_start_rsp_status() - Convert start response status to string 87 * @start_rsp - start response status 88 * 89 * Please note to add new string in the array at index equal to 90 * its enum value in wlan_mlme_host_vdev_start_status. 91 */ 92 static inline char *string_from_start_rsp_status( 93 enum wlan_mlme_host_vdev_start_status start_rsp) 94 { 95 static const char *strings[] = { "START_OK", 96 "CHAN_INVALID", 97 "CHAN_BLOCKED", 98 "CHAN_DFS_VIOLATION", 99 "CHAN_INVALID_REGDOMAIN", 100 "CHAN_INVALID_BAND", 101 "START_RESPONSE_TIMEOUT", 102 "START_RESPONSE_UNKNOWN"}; 103 104 if (start_rsp >= WLAN_MLME_HOST_VDEV_START_MAX_REASON) 105 start_rsp = WLAN_MLME_HOST_VDEV_START_MAX_REASON; 106 107 return (char *)strings[start_rsp]; 108 } 109 110 /** 111 * enum wlan_mlme_host_start_event_param - start/restart resp event 112 */ 113 enum wlan_mlme_host_start_event_param { 114 WLAN_MLME_HOST_VDEV_START_RESP_EVENT = 0, 115 WLAN_MLME_HOST_VDEV_RESTART_RESP_EVENT, 116 }; 117 118 /** 119 * enum wlan_mlme_custom_aggr_type: custon aggregate type 120 * @WLAN_MLME_CUSTOM_AGGR_TYPE_AMPDU: A-MPDU aggregation 121 * @WLAN_MLME_CUSTOM_AGGR_TYPE_AMSDU: A-MSDU aggregation 122 * @WLAN_MLME_CUSTOM_AGGR_TYPE_MAX: Max type 123 */ 124 enum wlan_mlme_custom_aggr_type { 125 WLAN_MLME_CUSTOM_AGGR_TYPE_AMPDU = 0, 126 WLAN_MLME_CUSTOM_AGGR_TYPE_AMSDU = 1, 127 WLAN_MLME_CUSTOM_AGGR_TYPE_MAX, 128 }; 129 130 /** 131 * struct sta_ps_params - sta ps cmd parameter 132 * @vdev_id: vdev id 133 * @param_id: sta ps parameter 134 * @value: sta ps parameter value 135 */ 136 struct sta_ps_params { 137 uint32_t vdev_id; 138 uint32_t param_id; 139 uint32_t value; 140 }; 141 142 /** 143 * struct rnr_bss_tbtt_info_param: Reported Vdev info 144 * @bss_mac: Mac address 145 * @beacon_intval: Beacon interval of reported AP 146 * @opclass: Channel Opclass 147 * @chan_idx: Channel number 148 * @next_qtime_tbtt_high: Tbtt higher 32bit 149 * @next_qtime_tbtt_low: Tbtt lower 32bit 150 */ 151 struct rnr_bss_tbtt_info_param { 152 uint8_t bss_mac[QDF_MAC_ADDR_SIZE]; 153 uint32_t beacon_intval; 154 uint32_t opclass; 155 uint32_t chan_idx; 156 uint32_t next_qtime_tbtt_high; 157 uint32_t next_qtime_tbtt_low; 158 }; 159 160 /** 161 * struct rnr_tbtt_multisoc_sync_param - Params to 162 * sync tbtt with non self SoCs timers 163 * @pdev_id: Host pdev_id 164 * @rnr_vap_count: Count of Vap to be included in WMI cmd 165 * @cmd_type: Set/Get tbtt sync info 166 * @rnr_bss_tbtt: Reported AP Vap info 167 */ 168 struct rnr_tbtt_multisoc_sync_param { 169 uint32_t pdev_id; 170 uint8_t rnr_vap_count; 171 uint8_t cmd_type; 172 struct rnr_bss_tbtt_info_param *rnr_bss_tbtt; 173 }; 174 175 /** 176 * struct tbttoffset_params - Tbttoffset event params 177 * @vdev_id: Virtual AP device identifier 178 * @tbttoffset : Tbttoffset for the virtual AP device 179 * @vdev_tbtt_qtime_lo: Tbtt qtime low value 180 * @vdev_tbtt_qtime_hi: Tbtt qtime high value 181 */ 182 struct tbttoffset_params { 183 uint32_t vdev_id; 184 uint32_t tbttoffset; 185 uint32_t vdev_tbtt_qtime_lo; 186 uint32_t vdev_tbtt_qtime_hi; 187 }; 188 189 /* Follow bitmap for sending the CSA switch count event */ 190 #define WLAN_CSA_EVENT_BMAP_VALID_MASK 0X80000000 191 /* Send only when the switch count becomes zero, added for backward 192 * compatibility same can also be achieved by setting bitmap to 0X80000001. 193 */ 194 #define WLAN_CSA_EVENT_BMAP_SWITCH_COUNT_ZERO 0 195 /* Send CSA switch count event for every update to switch count */ 196 #define WLAN_CSA_EVENT_BMAP_ALL 0XFFFFFFFF 197 198 #ifdef WLAN_FEATURE_11BE_MLO 199 /** 200 * struct ml_bcn_partner_info - Partner link beacon information 201 * @vdev_id: Vdev id 202 * @hw_link_id: Unique hw link id across SoCs 203 * @beacon_interval: Beacon interval 204 * @csa_switch_count_offset: CSA swith count offset in beacon frame 205 * @ext_csa_switch_count_offset: ECSA switch count offset in beacon frame 206 */ 207 struct ml_bcn_partner_info { 208 uint32_t vdev_id; 209 uint32_t hw_link_id; 210 uint32_t beacon_interval; 211 uint32_t csa_switch_count_offset; 212 uint32_t ext_csa_switch_count_offset; 213 }; 214 215 /** 216 * struct mlo_bcn_templ_partner_links - ML partner links 217 * @num_links: Number of links 218 * @partner_info: Partner link info 219 */ 220 struct mlo_bcn_templ_partner_links { 221 uint8_t num_links; 222 struct ml_bcn_partner_info partner_info[WLAN_UMAC_MLO_MAX_VDEVS]; 223 }; 224 #endif 225 226 /** 227 * struct beacon_tmpl_params - beacon template cmd parameter 228 * @vdev_id: vdev id 229 * @tim_ie_offset: tim ie offset 230 * @mbssid_ie_offset: mbssid ie offset 231 * @tmpl_len: beacon template length 232 * @tmpl_len_aligned: beacon template alignment 233 * @csa_switch_count_offset: CSA swith count offset in beacon frame 234 * @ext_csa_switch_count_offset: ECSA switch count offset in beacon frame 235 * @esp_ie_offset: ESP IE offset in beacon frame 236 * @mu_edca_ie_offset: Mu EDCA IE offset in beacon frame 237 * @ema_params: The 4 octets in this field respectively indicate 238 * ema_beacon_profile_periodicity, ema_beacon_tmpl_idx, 239 * ema_first_tmpl and ema_last_tmpl in the order of low 240 * to high 241 * @csa_event_bitmap: Specify when to send the CSA switch count status from FW 242 * to host. Example: if CSA switch count event is needed to be sent when the 243 * switch count is 0, 1, 4, and 5, set the bitmap to (0X80000033) 244 * @enable_bigtk: enable bigtk or not 245 * @frm: beacon template parameter 246 * @mlo_partner: Partner link information 247 */ 248 struct beacon_tmpl_params { 249 uint8_t vdev_id; 250 uint32_t tim_ie_offset; 251 uint32_t mbssid_ie_offset; 252 uint32_t tmpl_len; 253 uint32_t tmpl_len_aligned; 254 uint32_t csa_switch_count_offset; 255 uint32_t ext_csa_switch_count_offset; 256 uint32_t esp_ie_offset; 257 uint32_t mu_edca_ie_offset; 258 uint32_t ema_params; 259 uint32_t csa_event_bitmap; 260 bool enable_bigtk; 261 uint8_t *frm; 262 #ifdef WLAN_FEATURE_11BE_MLO 263 struct mlo_bcn_templ_partner_links mlo_partner; 264 #endif 265 }; 266 267 /** 268 * struct beacon_params - beacon cmd parameter 269 * @vdev_id: vdev id 270 * @beacon_interval: Beacon interval 271 * @wbuf: beacon buffer 272 * @frame_ctrl: frame control field 273 * @bcn_txant: beacon antenna 274 * @is_dtim_count_zero: is it dtim beacon 275 * @is_bitctl_reqd: is Bit control required 276 * @is_high_latency: Is this high latency target 277 */ 278 struct beacon_params { 279 uint8_t vdev_id; 280 uint16_t beacon_interval; 281 qdf_nbuf_t wbuf; 282 uint16_t frame_ctrl; 283 uint32_t bcn_txant; 284 bool is_dtim_count_zero; 285 bool is_bitctl_reqd; 286 bool is_high_latency; 287 }; 288 289 /* struct fils_discovery_tmpl_params - FILS Discovery template cmd parameter 290 * @vdev_id: vdev ID 291 * @tmpl_len: FILS Discovery template length 292 * @tmpl_aligned: FILS Discovery template alignment 293 * @frm: FILS Discovery template parameter 294 */ 295 struct fils_discovery_tmpl_params { 296 uint8_t vdev_id; 297 uint32_t tmpl_len; 298 uint32_t tmpl_len_aligned; 299 uint8_t *frm; 300 }; 301 302 /** 303 * struct mlme_channel_param - Channel parameters with all 304 * info required by target. 305 * @chan_id: channel id 306 * @pwr: channel power 307 * @mhz: channel frequency 308 * @half_rate: is half rate 309 * @quarter_rate: is quarter rate 310 * @dfs_set: is dfs channel 311 * @dfs_set_cfreq2: is secondary freq dfs channel 312 * @is_chan_passive: is this passive channel 313 * @allow_ht: HT allowed in chan 314 * @allow_vht: VHT allowed on chan 315 * @set_agile: is agile mode 316 * @is_stadfs_en: STA DFS enabled 317 * @phy_mode: phymode (vht80 or ht40 or ...) 318 * @cfreq1: centre frequency on primary 319 * @cfreq2: centre frequency on secondary 320 * @maxpower: max power for channel 321 * @minpower: min power for channel 322 * @maxreqpower: Max regulatory power 323 * @antennamac: Max antenna 324 * @reg_class_id: Regulatory class id. 325 * @puncture_pattern: 11be static puncture pattern 326 */ 327 struct mlme_channel_param { 328 uint8_t chan_id; 329 uint8_t pwr; 330 uint32_t mhz; 331 uint32_t half_rate:1, 332 quarter_rate:1, 333 dfs_set:1, 334 dfs_set_cfreq2:1, 335 is_chan_passive:1, 336 allow_ht:1, 337 allow_vht:1, 338 set_agile:1, 339 is_stadfs_en:1; 340 enum wlan_phymode phy_mode; 341 uint32_t cfreq1; 342 uint32_t cfreq2; 343 int8_t maxpower; 344 int8_t minpower; 345 int8_t maxregpower; 346 uint8_t antennamax; 347 uint8_t reg_class_id; 348 #ifdef WLAN_FEATURE_11BE 349 uint16_t puncture_pattern; 350 #endif 351 }; 352 353 /** 354 * struct vdev_mlme_mvr_param - Multiple vdev restart params 355 * @phymode: phymode information 356 * @preferred_tx_streams: preferred tx streams for VAP 357 * @preferred_rx_streams: preferred rx streams for VAP 358 */ 359 struct vdev_mlme_mvr_param { 360 uint32_t phymode; 361 uint32_t preferred_tx_streams; 362 uint32_t preferred_rx_streams; 363 }; 364 365 /** 366 * struct multiple_vdev_restart_params - Multiple vdev restart cmd parameter 367 * @pdev_id: Pdev identifier 368 * @requestor_id: Unique id identifying the module 369 * @disable_hw_ack: Flag to indicate disabling HW ACK during CAC 370 * @cac_duration_ms: CAC duration on the given channel 371 * @num_vdevs: No. of vdevs that need to be restarted 372 * @ch_param: Pointer to channel_param 373 * @vdev_ids: Pointer to array of vdev_ids 374 * @mvr_param: array holding multi vdev restart param 375 */ 376 struct multiple_vdev_restart_params { 377 uint32_t pdev_id; 378 uint32_t requestor_id; 379 uint32_t disable_hw_ack; 380 uint32_t cac_duration_ms; 381 uint32_t num_vdevs; 382 struct mlme_channel_param ch_param; 383 uint32_t vdev_ids[WLAN_UMAC_PDEV_MAX_VDEVS]; 384 struct vdev_mlme_mvr_param mvr_param[WLAN_UMAC_PDEV_MAX_VDEVS]; 385 }; 386 387 /** 388 * struct multiple_vdev_set_param - Multiple vdev set param command parameter 389 * @pdev_id: Pdev identifier 390 * @param_id: parameter id 391 * @param_value: parameter value 392 * @num_vdevs: number of vdevs 393 * @vdev_ids: Pointer to array of vdev_ids 394 */ 395 struct multiple_vdev_set_param { 396 uint32_t pdev_id; 397 uint32_t param_id; 398 uint32_t param_value; 399 uint32_t num_vdevs; 400 uint32_t vdev_ids[WLAN_UMAC_PDEV_MAX_VDEVS]; 401 }; 402 403 /** 404 * struct peer_flush_params - peer flush cmd parameter 405 * @peer_tid_bitmap: peer tid bitmap 406 * @vdev_id: vdev id 407 * @peer_mac: peer mac address 408 */ 409 struct peer_flush_params { 410 uint32_t peer_tid_bitmap; 411 uint8_t vdev_id; 412 uint8_t peer_mac[QDF_MAC_ADDR_SIZE]; 413 }; 414 415 /* Default FILS DISCOVERY/probe response sent in period of 20TU */ 416 #define DEFAULT_FILS_DISCOVERY_PERIOD 20 417 #define DEFAULT_PROBE_RESP_PERIOD 20 418 419 /** 420 * struct config_fils_params - FILS config params 421 * @vdev_id: vdev id 422 * @fd_period: 0 - Disabled, non-zero - Period in ms (mili seconds) 423 * @send_prb_rsp_frame: send broadcast prb resp frame 424 */ 425 struct config_fils_params { 426 uint8_t vdev_id; 427 uint32_t fd_period; 428 uint32_t send_prb_rsp_frame: 1; 429 }; 430 431 /** 432 * struct config_ratemask_params - ratemask config parameters 433 * @vdev_id: vdev id 434 * @type: Type 435 * @lower32: Lower 32 bits in the 1st 64-bit value 436 * @higher32: Higher 32 bits in the 1st 64-bit value 437 * @lower32_2: Lower 32 bits in the 2nd 64-bit value 438 * @higher32_2: Higher 32 bits in the 2nd 64-bit value 439 */ 440 struct config_ratemask_params { 441 uint8_t vdev_id; 442 uint8_t type; 443 uint32_t lower32; 444 uint32_t higher32; 445 uint32_t lower32_2; 446 uint32_t higher32_2; 447 }; 448 449 /** 450 * struct set_custom_aggr_size_params - custom aggr size params 451 * @vdev_id : vdev id 452 * @tx_aggr_size : TX aggr size 453 * @rx_aggr_size : RX aggr size 454 * @enable_bitmap: Bitmap for aggr size check 455 */ 456 struct set_custom_aggr_size_params { 457 uint32_t vdev_id; 458 uint32_t tx_aggr_size; 459 uint32_t rx_aggr_size; 460 uint32_t ac:2, 461 aggr_type:1, 462 tx_aggr_size_disable:1, 463 rx_aggr_size_disable:1, 464 tx_ac_enable:1, 465 aggr_ba_enable:1, 466 reserved:25; 467 }; 468 469 /** 470 * struct sifs_trigger_param - sifs_trigger cmd parameter 471 * @vdev_id: vdev id 472 * @param_value: parameter value 473 */ 474 struct sifs_trigger_param { 475 uint32_t vdev_id; 476 uint32_t param_value; 477 }; 478 479 /** 480 * struct set_neighbour_rx_params - Neighbour RX params 481 * @vdev_id: vdev id 482 * @idx: index of param 483 * @action: action 484 * @type: Type of param 485 */ 486 struct set_neighbour_rx_params { 487 uint8_t vdev_id; 488 uint32_t idx; 489 uint32_t action; 490 uint32_t type; 491 }; 492 493 /** 494 * struct vdev_scan_nac_rssi_params - NAC_RSSI cmd parameter 495 * @vdev_id: vdev id 496 * @bssid_addr: BSSID address 497 * @client_addr: client address 498 * @chan_num: channel number 499 * @action:NAC_RSSI action, 500 */ 501 struct vdev_scan_nac_rssi_params { 502 uint32_t vdev_id; 503 uint8_t bssid_addr[QDF_MAC_ADDR_SIZE]; 504 uint8_t client_addr[QDF_MAC_ADDR_SIZE]; 505 uint32_t chan_num; 506 uint32_t action; /* WMI_FILTER_NAC_RSSI_ACTION */ 507 }; 508 509 #ifdef WLAN_FEATURE_11BE_MLO 510 /** 511 * @mlo_enabled: indicate is MLO enabled 512 * @mlo_assoc_link: indicate is the link used to initialize 513 * the association of mlo connection 514 */ 515 struct mlo_vdev_start_flags { 516 uint32_t mlo_enabled:1, 517 mlo_assoc_link:1, 518 rsvd:30; 519 }; 520 521 /** 522 * struct ml_vdev_start_partner_info - partner link info 523 * @vdev_id: vdev id 524 * @hw_mld_link_id: unique hw link id across SoCs 525 * @mac_addr: Partner mac address 526 */ 527 struct ml_vdev_start_partner_info { 528 uint32_t vdev_id; 529 uint32_t hw_mld_link_id; 530 uint8_t mac_addr[QDF_MAC_ADDR_SIZE]; 531 }; 532 533 /** 534 * struct mlo_vdev_start__partner_links - ML partner links 535 * @num_links: Number of links 536 * @partner_info: Partner link info 537 */ 538 struct mlo_vdev_start_partner_links { 539 uint8_t num_links; 540 struct ml_vdev_start_partner_info partner_info[WLAN_UMAC_MLO_MAX_VDEVS]; 541 }; 542 #endif 543 /** 544 * struct vdev_start_params - vdev start cmd parameter 545 * @vdev_id: vdev id 546 * @beacon_interval: beacon interval 547 * @dtim_period: dtim period 548 * @is_restart: flag to check if it is vdev 549 * @disable_hw_ack: to update disable hw ack flag 550 * @hidden_ssid: hidden ssid 551 * @pmf_enabled: pmf enabled 552 * @ssid: ssid MAC 553 * @num_noa_descriptors: number of noa descriptors 554 * @preferred_tx_streams: preferred tx streams 555 * @preferred_rx_streams: preferred rx streams 556 * @cac_duration_ms: cac duration in milliseconds 557 * @regdomain: Regulatory domain 558 * @he_ops: HE ops 559 * @eht_ops: EHT ops 560 * @channel_param: Channel params required by target. 561 * @bcn_tx_rate_code: Beacon tx rate code. 562 * @ldpc_rx_enabled: Enable/Disable LDPC RX for this vdev 563 * @mbssid_flags: MBSSID flags to FW 564 * @vdevid_trans: Tx VDEV ID 565 * @mbssid_multi_group_flag: Flag to identify multi group mbssid support 566 * @mbssid_multi_group_id: Group id of current vdev 567 */ 568 struct vdev_start_params { 569 uint8_t vdev_id; 570 uint32_t beacon_interval; 571 uint32_t dtim_period; 572 bool is_restart; 573 uint32_t disable_hw_ack; 574 bool hidden_ssid; 575 bool pmf_enabled; 576 struct wlan_ssid ssid; 577 uint32_t num_noa_descriptors; 578 uint32_t preferred_rx_streams; 579 uint32_t preferred_tx_streams; 580 uint32_t cac_duration_ms; 581 uint32_t regdomain; 582 uint32_t he_ops; 583 #ifdef WLAN_FEATURE_11BE 584 uint32_t eht_ops; 585 #endif 586 struct mlme_channel_param channel; 587 enum mlme_bcn_tx_rate_code bcn_tx_rate_code; 588 bool ldpc_rx_enabled; 589 uint32_t mbssid_flags; 590 uint8_t vdevid_trans; 591 #ifdef WLAN_FEATURE_11BE_MLO 592 struct mlo_vdev_start_flags mlo_flags; 593 struct mlo_vdev_start_partner_links mlo_partner; 594 #endif 595 uint8_t mbssid_multi_group_flag; 596 uint32_t mbssid_multi_group_id; 597 }; 598 599 /** 600 * struct vdev_set_params - vdev set cmd parameter 601 * @vdev_id: vdev id 602 * @param_id: parameter id 603 * @param_value: parameter value 604 */ 605 struct vdev_set_params { 606 uint32_t vdev_id; 607 uint32_t param_id; 608 uint32_t param_value; 609 }; 610 611 /** 612 * struct vdev_create_params - vdev create cmd parameter 613 * @vdev_id: interface id 614 * @type: interface type 615 * @subtype: interface subtype 616 * @nss_2g: NSS for 2G 617 * @nss_5g: NSS for 5G 618 * @pdev_id: pdev id on pdev for this vdev 619 * @mbssid_flags: MBSS IE flags indicating vdev type 620 * @vdevid_trans: id of transmitting vdev for MBSS IE 621 * @special_vdev_mode: indicates special vdev mode 622 */ 623 struct vdev_create_params { 624 uint8_t vdev_id; 625 uint32_t type; 626 uint32_t subtype; 627 uint8_t nss_2g; 628 uint8_t nss_5g; 629 uint32_t pdev_id; 630 uint32_t mbssid_flags; 631 uint8_t vdevid_trans; 632 bool special_vdev_mode; 633 #ifdef WLAN_FEATURE_11BE_MLO 634 uint8_t mlo_mac[QDF_MAC_ADDR_SIZE]; 635 #endif 636 }; 637 638 /** 639 * struct vdev_delete_params - vdev delete cmd parameter 640 * @vdev_id: vdev id 641 */ 642 struct vdev_delete_params { 643 uint8_t vdev_id; 644 }; 645 646 /** 647 * struct vdev_stop_params - vdev stop cmd parameter 648 * @vdev_id: vdev id 649 */ 650 struct vdev_stop_params { 651 uint8_t vdev_id; 652 }; 653 654 /** 655 * struct vdev_up_params - vdev up cmd parameter 656 * @vdev_id: vdev id 657 * @assoc_id: association id 658 * @profile_idx: profile index of the connected non-trans ap (mbssid case). 659 * 0 means invalid. 660 * @profile_num: the total profile numbers of non-trans aps (mbssid case). 661 * 0 means non-MBSS AP. 662 * @trans_bssid: bssid of transmitted AP (MBSS IE case) 663 */ 664 struct vdev_up_params { 665 uint8_t vdev_id; 666 uint16_t assoc_id; 667 uint32_t profile_idx; 668 uint32_t profile_num; 669 uint8_t trans_bssid[QDF_MAC_ADDR_SIZE]; 670 }; 671 672 /** 673 * struct vdev_down_params - vdev down cmd parameter 674 * @vdev_id: vdev id 675 */ 676 struct vdev_down_params { 677 uint8_t vdev_id; 678 }; 679 680 /** 681 * struct peer_delete_all_params - peer delete all request parameter 682 * @vdev_id: vdev id 683 */ 684 struct peer_delete_all_params { 685 uint8_t vdev_id; 686 }; 687 688 #define AC_MAX 4 689 #define WMI_MUEDCA_PARAM_MASK 0xff 690 /** 691 * struct muedca_params - MU-EDCA parameters 692 * @muedca_ecwmin: CWmin in exponential form 693 * @muedca_ecwmax: CWmax in exponential form 694 * @muedca_aifsn: AIFSN parameter 695 * @muedca_acm: ACM parameter 696 * @muedca_timer: MU EDCA timer value 697 */ 698 struct muedca_params { 699 uint32_t pdev_id; 700 uint8_t muedca_ecwmin[AC_MAX]; /* CWmin in exponential form */ 701 uint8_t muedca_ecwmax[AC_MAX]; /* CWmax in exponential form */ 702 uint8_t muedca_aifsn[AC_MAX]; /* AIFSN parameter */ 703 uint8_t muedca_acm[AC_MAX]; /* ACM parameter */ 704 uint8_t muedca_timer[AC_MAX]; /* MU EDCA timer value */ 705 }; 706 707 #endif /* __WLAN_VDEV_MGR_TX_OPS_DEFS_H__ */ 708