xref: /wlan-dirver/qca-wifi-host-cmn/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_tgt_if_tx_defs.h (revision 2f4b444fb7e689b83a4ab0e7b3b38f0bf4def8e0)
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