blob: 1644fe8213c960aa06fad9e7d8fde358b6738446 [file] [log] [blame]
Govind Singh3ddda1f2016-03-09 11:34:12 +05301/*
2 * Copyright (c) 2016 The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21
22/*
23 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
26 */
27
28/*
29 * This file contains the API definitions for the Unified Wireless Module
30 * Interface (WMI).
31 */
32
33#ifndef _WMI_UNIFIED_PARAM_H_
34#define _WMI_UNIFIED_PARAM_H_
35#include "wmi_unified.h"
36#define IEEE80211_ADDR_LEN 6 /* size of 802.11 address */
Govind Singh3ddda1f2016-03-09 11:34:12 +053037#define WMI_MAC_MAX_SSID_LENGTH 32
38#define WMI_SCAN_MAX_NUM_SSID 0x0A
39#define mgmt_tx_dl_frm_len 64
40#define WMI_SMPS_MASK_LOWER_16BITS 0xFF
41#define WMI_SMPS_MASK_UPPER_3BITS 0x7
42#define WMI_SMPS_PARAM_VALUE_S 29
Govind Singhae855362016-03-07 14:24:22 +053043#define WMI_MAX_NUM_ARGS 8
Govind Singhe7b800c2016-03-01 15:30:53 +053044/* The size of the utc time in bytes. */
45#define WMI_SIZE_UTC_TIME (10)
46/* The size of the utc time error in bytes. */
47#define WMI_SIZE_UTC_TIME_ERROR (5)
Govind Singh9bad0002016-03-01 15:54:59 +053048#define WMI_MCC_MIN_CHANNEL_QUOTA 20
49#define WMI_MCC_MAX_CHANNEL_QUOTA 80
50#define WMI_MCC_MIN_NON_ZERO_CHANNEL_LATENCY 30
51#define WMI_BEACON_TX_BUFFER_SIZE (512)
52#define WMI_WIFI_SCANNING_MAC_OUI_LENGTH 3
53#define WMI_EXTSCAN_MAX_SIGNIFICANT_CHANGE_APS 64
54#define WMI_RSSI_THOLD_DEFAULT -300
55#define WMI_NLO_FREQ_THRESH 1000
56#define WMI_SEC_TO_MSEC(sec) (sec * 1000)
57#define WMI_MSEC_TO_USEC(msec) (msec * 1000)
58#define WMI_ETH_LEN 64
59#define WMI_QOS_NUM_TSPEC_MAX 2
60#define WMI_QOS_NUM_AC_MAX 4
Govind Singhae855362016-03-07 14:24:22 +053061#define WMI_IPV4_ADDR_LEN 4
62#define WMI_KEEP_ALIVE_NULL_PKT 1
63#define WMI_KEEP_ALIVE_UNSOLICIT_ARP_RSP 2
Himanshu Agarwal5f2d0482016-03-09 15:25:44 +053064#define WMI_KRK_KEY_LEN 16
65#ifdef WLAN_FEATURE_ROAM_OFFLOAD
66#define WMI_BTK_KEY_LEN 32
67#define WMI_ROAM_R0KH_ID_MAX_LEN 48
68#define WMI_ROAM_SCAN_PSK_SIZE 32
69#endif
70#define WMI_NOISE_FLOOR_DBM_DEFAULT (-96)
Govind Singhae855362016-03-07 14:24:22 +053071#ifdef WLAN_NS_OFFLOAD
72/* support only one IPv6 offload */
73#define WMI_MAC_NS_OFFLOAD_SIZE 1
74/* Number of target IP V6 addresses for NS offload */
75#define WMI_MAC_NUM_TARGET_IPV6_NS_OFFLOAD_NA 16
76#define WMI_MAC_IPV6_ADDR_LEN 16
77#define WMI_IPV6_ADDR_VALID 1
78#endif /* WLAN_NS_OFFLOAD */
79#define WMI_EXTSCAN_MAX_HOTLIST_SSIDS 8
80#define WMI_ROAM_MAX_CHANNELS 80
Govind Singhd7468a52016-03-09 14:32:57 +053081#ifdef FEATURE_WLAN_EXTSCAN
82#define WMI_MAX_EXTSCAN_MSG_SIZE 1536
83#define WMI_EXTSCAN_REST_TIME 100
84#define WMI_EXTSCAN_MAX_SCAN_TIME 50000
85#define WMI_EXTSCAN_BURST_DURATION 150
86#endif
87#define WMI_SCAN_NPROBES_DEFAULT (2)
88#define WMI_SEC_TO_MSEC(sec) (sec * 1000) /* sec to msec */
89#define WMI_MSEC_TO_USEC(msec) (msec * 1000) /* msec to usec */
90#define WMI_NLO_FREQ_THRESH 1000 /* in MHz */
Himanshu Agarwal7e4f4bc2016-03-09 16:49:38 +053091#include "qdf_atomic.h"
Govind Singhd7468a52016-03-09 14:32:57 +053092
Govind Singh3ddda1f2016-03-09 11:34:12 +053093/**
94 * struct vdev_create_params - vdev create cmd parameter
95 * @if_id: interface id
96 * @type: interface type
97 * @subtype: interface subtype
98 */
99struct vdev_create_params {
100 uint8_t if_id;
101 uint32_t type;
102 uint32_t subtype;
103};
104
105/**
106 * struct vdev_delete_params - vdev delete cmd parameter
107 * @if_id: interface id
108 */
109struct vdev_delete_params {
110 uint8_t if_id;
111};
112
113/**
Govind Singh3ddda1f2016-03-09 11:34:12 +0530114 * struct vdev_stop_params - vdev stop cmd parameter
115 * @vdev_id: vdev id
116 */
117struct vdev_stop_params {
118 uint8_t vdev_id;
119};
120
121/**
122 * struct vdev_up_params - vdev up cmd parameter
123 * @vdev_id: vdev id
124 * @assoc_id: association id
125 */
126struct vdev_up_params {
127 uint8_t vdev_id;
128 uint16_t assoc_id;
129};
130
131/**
132 * struct vdev_down_params - vdev down cmd parameter
133 * @vdev_id: vdev id
134 */
135struct vdev_down_params {
136 uint8_t vdev_id;
137};
138
139/**
Himanshu Agarwal7e4f4bc2016-03-09 16:49:38 +0530140 * struct mac_ssid - mac ssid structure
141 * @length:
142 * @mac_ssid[WMI_MAC_MAX_SSID_LENGTH]:
143 */
144struct mac_ssid {
145 uint8_t length;
146 uint8_t mac_ssid[WMI_MAC_MAX_SSID_LENGTH];
147} qdf_packed;
148
149/**
150 * struct vdev_start_params - vdev start cmd parameter
151 * @vdev_id: vdev id
152 * @chan_freq: channel frequency
153 * @chan_mode: channel mode
154 * @band_center_freq1: center freq 1
155 * @band_center_freq2: center freq 2
156 * @flags: flags to set like pmf_enabled etc.
157 * @is_dfs: flag to check if dfs enabled
158 * @beacon_intval: beacon interval
159 * @dtim_period: dtim period
160 * @max_txpow: max tx power
161 * @is_restart: flag to check if it is vdev
162 * @ssid: ssid and ssid length info
163 * @preferred_tx_streams: preferred tx streams
164 * @preferred_rx_streams: preferred rx streams
165 * @intr_update: flag to check if need to update
166 * required wma interface params
167 * @intr_ssid: pointer to wma interface ssid
168 * @intr_flags: poiter to wma interface flags
169 * @requestor_id: to update requestor id
170 * @disable_hw_ack: to update disable hw ack flag
171 * @info: to update channel info
172 * @reg_info_1: to update min power, max power,
173 * reg power and reg class id
174 * @reg_info_2: to update antennamax
175 */
176struct vdev_start_params {
177 uint8_t vdev_id;
178 uint32_t chan_freq;
179 uint32_t chan_mode;
180 uint32_t band_center_freq1;
181 uint32_t band_center_freq2;
182 uint32_t flags;
183 bool is_dfs;
184 uint32_t beacon_intval;
185 uint32_t dtim_period;
186 int32_t max_txpow;
187 bool is_restart;
Siddarth Poddar466963e2016-03-29 15:13:26 +0530188 bool is_half_rate;
189 bool is_quarter_rate;
190 uint32_t dis_hw_ack;
191 uint32_t flag_dfs;
192 uint8_t hidden_ssid;
193 uint8_t pmf_enabled;
Himanshu Agarwal7e4f4bc2016-03-09 16:49:38 +0530194 struct mac_ssid ssid;
Siddarth Poddar466963e2016-03-29 15:13:26 +0530195 uint32_t num_noa_descriptors;
Himanshu Agarwal7e4f4bc2016-03-09 16:49:38 +0530196 uint32_t preferred_rx_streams;
197 uint32_t preferred_tx_streams;
Himanshu Agarwal7e4f4bc2016-03-09 16:49:38 +0530198};
199
200/**
201 * struct hidden_ssid_vdev_restart_params -
202 * vdev restart cmd parameter
203 * @session_id: session id
204 * @ssid_len: ssid length
205 * @ssid: ssid
206 * @flags: flags
207 * @requestor_id: requestor id
208 * @disable_hw_ack: flag to disable hw ack feature
209 * @mhz: channel frequency
210 * @band_center_freq1: center freq 1
211 * @band_center_freq2: center freq 2
212 * @info: channel info
213 * @reg_info_1: contains min power, max power,
214 * reg power and reg class id
215 * @reg_info_2: contains antennamax
216 * @hidden_ssid_restart_in_progress:
217 * flag to check if restart is in progress
218 */
219struct hidden_ssid_vdev_restart_params {
220 uint8_t session_id;
221 uint32_t ssid_len;
222 uint32_t ssid[8];
223 uint32_t flags;
224 uint32_t requestor_id;
225 uint32_t disable_hw_ack;
226 uint32_t mhz;
227 uint32_t band_center_freq1;
228 uint32_t band_center_freq2;
229 uint32_t info;
230 uint32_t reg_info_1;
231 uint32_t reg_info_2;
232 qdf_atomic_t hidden_ssid_restart_in_progress;
233};
234
235/**
Govind Singh3ddda1f2016-03-09 11:34:12 +0530236 * struct vdev_set_params - vdev set cmd parameter
237 * @if_id: vdev id
238 * @param_id: parameter id
239 * @param_value: parameter value
240 */
241struct vdev_set_params {
242 uint32_t if_id;
243 uint32_t param_id;
244 uint32_t param_value;
245};
246
247/**
248 * struct peer_delete_params - peer delete cmd parameter
249 * @vdev_id: vdev id
250 */
251struct peer_delete_params {
252 uint8_t vdev_id;
253};
254
255/**
256 * struct peer_flush_params - peer flush cmd parameter
257 * @peer_tid_bitmap: peer tid bitmap
258 * @vdev_id: vdev id
259 */
260struct peer_flush_params {
261 uint32_t peer_tid_bitmap;
262 uint8_t vdev_id;
263};
264
265/**
266 * struct peer_set_params - peer set cmd parameter
267 * @param_id: parameter id
268 * @param_value: parameter value
269 * @vdev_id: vdev id
270 */
271struct peer_set_params {
272 uint32_t param_id;
273 uint32_t param_value;
274 uint32_t vdev_id;
275};
276
277/**
278 * struct peer_create_params - peer create cmd parameter
279 * @peer_addr: peer mac addr
280 * @peer_type: peer type
281 * @vdev_id: vdev id
282 */
283struct peer_create_params {
284 const uint8_t *peer_addr;
285 uint32_t peer_type;
286 uint32_t vdev_id;
287};
288
289/**
290 * struct peer_remove_params - peer remove cmd parameter
291 * @bssid: bss id
292 * @vdev_id: vdev id
293 * @roam_synch_in_progress: flag to indicate if roaming is in progress
294 */
295struct peer_remove_params {
296 uint8_t *bssid;
297 uint8_t vdev_id;
298 bool roam_synch_in_progress;
299};
300
301/**
302 * struct stats_request_params - stats_request cmd parameter
303 * @stats_id: statistics id
304 * @vdev_id: vdev id
305 */
306struct stats_request_params {
307 uint32_t stats_id;
308 uint32_t vdev_id;
309};
310
311/**
312 * struct green_ap_ps_params - green ap ps cmd parameter
313 * @value: parameter value
314 */
315struct green_ap_ps_params {
316 uint32_t value;
317};
318
319/**
320 * struct wow_cmd_params - wow cmd parameter
321 * @enable: wow enable or disable flag
322 * @can_suspend_link: flag to indicate if link can be suspended
323 * @pause_iface_config: interface config
324 */
325struct wow_cmd_params {
326 bool enable;
327 bool can_suspend_link;
328 uint8_t pause_iface_config;
329};
330
331/**
332 * struct packet_enable_params - packet enable cmd parameter
333 * @vdev_id: vdev id
334 * @enable: flag to indicate if parameter can be enabled or disabled
335 */
336struct packet_enable_params {
337 uint8_t vdev_id;
338 bool enable;
339};
340
341/**
342 * struct suspend_params - suspend cmd parameter
343 * @disable_target_intr: disable target interrupt
344 */
345struct suspend_params {
346 uint8_t disable_target_intr;
347};
348
349/**
350 * struct pdev_params - pdev set cmd parameter
351 * @param_id: parameter id
352 * @param_value: parameter value
353 */
354struct pdev_params {
355 uint32_t param_id;
356 uint32_t param_value;
357};
358
359/**
360 * struct beacon_params - beacon template cmd parameter
361 * @vdev_id: vdev id
362 * @tim_ie_offset: tim ie offset
363 * @tmpl_len: beacon template length
364 * @tmpl_len_aligned: beacon template alignment
365 * @frm: beacon template parameter
366 */
367struct beacon_params {
368 uint8_t vdev_id;
369 uint32_t tim_ie_offset;
370 uint32_t tmpl_len;
371 uint32_t tmpl_len_aligned;
372 uint8_t *frm;
373};
374
375/**
376 * struct peer_assoc_params - peer assoc cmd parameter
377 * @peer_macaddr: peer mac address
378 * @vdev_id: vdev id
379 * @peer_new_assoc: peer association type
380 * @peer_associd: peer association id
381 * @peer_flags: peer flags
382 * @peer_caps: peer capabalities
383 * @peer_listen_intval: peer listen interval
384 * @peer_ht_caps: HT capabalities
385 * @peer_max_mpdu: 0 : 8k , 1 : 16k, 2 : 32k, 3 : 64k
386 * @peer_mpdu_density: 3 : 0~7 : 2^(11nAMPDUdensity -4)
387 * @peer_rate_caps: peer rate capabalities
388 * @peer_nss: peer nss
389 * @peer_phymode: peer phymode
390 * @peer_ht_info: peer HT info
391 * @peer_legacy_rates: peer legacy rates
392 * @peer_ht_rates: peer ht rates
Govind Singh3ddda1f2016-03-09 11:34:12 +0530393 * @rx_max_rate: max rx rates
394 * @rx_mcs_set: rx mcs
395 * @tx_max_rate: max tx rates
396 * @tx_mcs_set: tx mcs
397 * @vht_capable: VHT capabalities
398 */
399struct peer_assoc_params {
400 wmi_mac_addr peer_macaddr;
401 uint32_t vdev_id;
402 uint32_t peer_new_assoc;
403 uint32_t peer_associd;
404 uint32_t peer_flags;
405 uint32_t peer_caps;
406 uint32_t peer_listen_intval;
407 uint32_t peer_ht_caps;
408 uint32_t peer_max_mpdu;
409 uint32_t peer_mpdu_density;
410 uint32_t peer_rate_caps;
411 uint32_t peer_nss;
412 uint32_t peer_vht_caps;
413 uint32_t peer_phymode;
414 uint32_t peer_ht_info[2];
415 wmi_rate_set peer_legacy_rates;
416 wmi_rate_set peer_ht_rates;
Govind Singh3ddda1f2016-03-09 11:34:12 +0530417 uint32_t rx_max_rate;
418 uint32_t rx_mcs_set;
419 uint32_t tx_max_rate;
420 uint32_t tx_mcs_set;
421 uint8_t vht_capable;
422};
423
424/**
425 * struct sta_ps_params - sta ps cmd parameter
426 * @vdev_id: vdev id
427 * @param: sta ps paramter
428 * @value: sta ps parameter value
429 */
430struct sta_ps_params {
431 uint32_t vdev_id;
432 uint32_t param;
433 uint32_t value;
434};
435
436/**
437 * struct ap_ps_params - ap ps cmd parameter
438 * @vdev_id: vdev id
439 * @param: ap ps paramter
440 * @value: ap ps paramter value
441 */
442struct ap_ps_params {
443 uint32_t vdev_id;
444 uint32_t param;
445 uint32_t value;
446};
447
448/**
Govind Singh3ddda1f2016-03-09 11:34:12 +0530449 * struct scan_start_params - start scan cmd parameter
450 * @scan_id: scan id
451 * @scan_req_id: requeted scan id
452 * @vdev_id: vdev id
453 * @scan_priority: scan priority
454 * @notify_scan_events: flag to indicate if scan to be notified
455 * @dwell_time_active: active dwell time
456 * @dwell_time_passive: passive dwell time
457 * @min_rest_time: min rest time
458 * @max_rest_time: max rest time
459 * @repeat_probe_time: repeat probe time
460 * @probe_spacing_time: probe spacing time
461 * @idle_time: idle time
462 * @max_scan_time: max scan time
463 * @probe_delay: probe delay
464 * @scan_ctrl_flags: scan control flag
465 * @burst_duration: burst duration
466 * @num_chan: no of channel
467 * @num_bssid: no of bssid
468 * @num_ssids: no of ssid
469 * @ie_len: ie length
470 * @n_probes: no of probe
471 * @chan_list: channel list
472 * @ie_len_with_pad: ie length with padding
473 * @num_ssid: no of ssid
474 * @sid: pointer to mac_ssid structure
475 * @uie_fieldOffset: ie field offset
476 * @mac_add_bytes: mac address bytes
477 */
478struct scan_start_params {
479 uint32_t scan_id;
480 uint32_t scan_req_id;
481 uint32_t vdev_id;
482 uint32_t scan_priority;
483 uint32_t notify_scan_events;
484 uint32_t dwell_time_active;
485 uint32_t dwell_time_passive;
486 uint32_t min_rest_time;
487 uint32_t max_rest_time;
488 uint32_t repeat_probe_time;
489 uint32_t probe_spacing_time;
490 uint32_t idle_time;
491 uint32_t max_scan_time;
492 uint32_t probe_delay;
493 uint32_t scan_ctrl_flags;
494 uint32_t burst_duration;
495 uint32_t num_chan;
496 uint32_t num_bssid;
497 uint32_t num_ssids;
498 uint32_t ie_len;
499 uint32_t n_probes;
500 uint32_t *chan_list;
501 uint32_t ie_len_with_pad;
502 struct mac_ssid ssid[WMI_SCAN_MAX_NUM_SSID];
503 uint8_t *ie_base;
504 uint16_t uie_fieldOffset;
505 uint8_t mac_add_bytes[IEEE80211_ADDR_LEN];
506};
507
508/**
509 * struct scan_stop_params - stop scan cmd parameter
510 * @requestor: scan requestor
511 * @scan_id: scan id
512 * @req_type: scan request type
513 * @vdev_id: vdev id
514 */
515struct scan_stop_params {
516 uint32_t requestor;
517 uint32_t scan_id;
518 uint32_t req_type;
519 uint32_t vdev_id;
520};
521
522/**
523 * struct scan_chan_list_params - scan channel list cmd parameter
524 * @num_scan_chans: no of scan channels
525 * @chan_info: pointer to wmi channel info
526 */
527struct scan_chan_list_params {
528 uint8_t num_scan_chans;
529 wmi_channel *chan_info;
530};
531
532/**
533 * struct fw_hang_params - fw hang command parameters
534 * @type: 0:unused 1: ASSERT, 2:not respond detect command, 3:simulate ep-full
535 * @delay_time_ms: 0xffffffff means the simulate will delay for random time (0 ~0xffffffff ms)
536 */
537struct fw_hang_params {
538 uint32_t type;
539 uint32_t delay_time_ms;
540};
541
542/**
543 * struct pdev_utf_params - pdev utf command parameters
544 * @utf_payload:
545 * @len:
546 */
547struct pdev_utf_params {
548 uint8_t *utf_payload;
549 uint32_t len;
550};
551
552/**
553 * struct crash_inject - crash inject command parameters
554 * @type: crash inject type
555 * @delay_time_ms: time in milliseconds for FW to delay the crash
556 */
557struct crash_inject {
558 uint32_t type;
559 uint32_t delay_time_ms;
560};
561
562/**
563 * struct dbglog_params - fw deboglog command parameters
564 * @param: command parameter
565 * @val: parameter value
566 * @module_id_bitmap: fixed length module id bitmap
567 * @bitmap_len: module id bitmap length
568 */
569struct dbglog_params {
570 uint32_t param;
571 uint32_t val;
572 uint32_t *module_id_bitmap;
573 uint32_t bitmap_len;
574};
575
576/**
577 * struct seg_hdr_info - header info
578 * @len: length
579 * @msgref: message refrence
580 * @segmentInfo: segment info
581 * @pad: padding
582 */
583struct seg_hdr_info {
584 uint32_t len;
585 uint32_t msgref;
586 uint32_t segmentInfo;
587 uint32_t pad;
588};
589
590/**
591 * struct wmi_mgmt_params - wmi mgmt cmd paramters
592 * @tx_frame: management tx frame
593 * @frmLen: frame length
594 * @vdev_id: vdev id
595 * @tx_complete_cb: tx download callback handler
596 * @tx_ota_post_proc_cb: OTA complition handler
597 * @chanfreq: channel frequency
598 * @pdata: frame data
599 * @wmi_desc: command descriptor
600 */
601struct wmi_mgmt_params {
602 void *tx_frame;
603 uint16_t frm_len;
604 uint8_t vdev_id;
605 void *tx_complete_cb;
606 void *tx_ota_post_proc_cb;
607 uint16_t chanfreq;
608 void *pdata;
609 struct wmi_desc_t *wmi_desc;
Govind Singhd7468a52016-03-09 14:32:57 +0530610 void *qdf_ctx;
Govind Singh3ddda1f2016-03-09 11:34:12 +0530611};
Govind Singhbffe4de2016-02-26 17:50:39 +0530612
613/**
614 * struct p2p_ps_params - P2P powersave related params
615 * @opp_ps: opportunistic power save
616 * @ctwindow: CT window
617 * @count: count
618 * @duration: duration
619 * @interval: interval
620 * @single_noa_duration: single shot noa duration
621 * @ps_selection: power save selection
622 * @session_id: session id
623 */
624struct p2p_ps_params {
625 uint8_t opp_ps;
626 uint32_t ctwindow;
627 uint8_t count;
628 uint32_t duration;
629 uint32_t interval;
630 uint32_t single_noa_duration;
631 uint8_t ps_selection;
632 uint8_t session_id;
633};
634
635
636/**
637 * struct ta_uapsd_trig_params - uapsd trigger parameter
638 * @vdevid: vdev id
639 * @peer_addr: peer address
640 * @auto_triggerparam: trigger parameters
641 * @num_ac: no of access category
642 */
643struct sta_uapsd_trig_params {
644 uint32_t vdevid;
645 uint8_t peer_addr[IEEE80211_ADDR_LEN];
646 uint8_t *auto_triggerparam;
647 uint32_t num_ac;
648};
Govind Singhe7b800c2016-03-01 15:30:53 +0530649
650/**
651 * struct ocb_utc_param
652 * @vdev_id: session id
653 * @utc_time: number of nanoseconds from Jan 1st 1958
654 * @time_error: the error in the UTC time. All 1's for unknown
655 */
656struct ocb_utc_param {
657 uint32_t vdev_id;
658 uint8_t utc_time[WMI_SIZE_UTC_TIME];
659 uint8_t time_error[WMI_SIZE_UTC_TIME_ERROR];
660};
661
662/**
663 * struct ocb_timing_advert_param
664 * @vdev_id: session id
665 * @chan_freq: frequency on which to advertise
666 * @repeat_rate: the number of times it will send TA in 5 seconds
667 * @timestamp_offset: offset of the timestamp field in the TA frame
668 * @time_value_offset: offset of the time_value field in the TA frame
669 * @template_length: size in bytes of the TA frame
670 * @template_value: the TA frame
671 */
672struct ocb_timing_advert_param {
673 uint32_t vdev_id;
674 uint32_t chan_freq;
675 uint32_t repeat_rate;
676 uint32_t timestamp_offset;
677 uint32_t time_value_offset;
678 uint32_t template_length;
679 uint8_t *template_value;
680};
681
682/**
683 * struct dcc_get_stats_param
684 * @vdev_id: session id
685 * @channel_count: number of dcc channels
686 * @request_array_len: size in bytes of the request array
687 * @request_array: the request array
688 */
689struct dcc_get_stats_param {
690 uint32_t vdev_id;
691 uint32_t channel_count;
692 uint32_t request_array_len;
693 void *request_array;
694};
695
696/**
697 * struct dcc_update_ndl_param
698 * @vdev_id: session id
699 * @channel_count: number of channels to be updated
700 * @dcc_ndl_chan_list_len: size in bytes of the ndl_chan array
701 * @dcc_ndl_chan_list: the ndl_chan array
702 * @dcc_ndl_active_state_list_len: size in bytes of the active_state array
703 * @dcc_ndl_active_state_list: the active state array
704 */
705struct dcc_update_ndl_param {
706 uint32_t vdev_id;
707 uint32_t channel_count;
708 uint32_t dcc_ndl_chan_list_len;
709 void *dcc_ndl_chan_list;
710 uint32_t dcc_ndl_active_state_list_len;
711 void *dcc_ndl_active_state_list;
712};
713
714/**
715 * struct ocb_config_sched
716 * @chan_freq: frequency of the channel
717 * @total_duration: duration of the schedule
718 * @guard_interval: guard interval on the start of the schedule
719 */
720struct ocb_config_sched {
721 uint32_t chan_freq;
722 uint32_t total_duration;
723 uint32_t guard_interval;
724};
725
726/**
727 * OCB structures
728 */
729
730#define WMI_NUM_AC (4)
731#define WMI_OCB_CHANNEL_MAX (5)
732#define WMI_MAX_NUM_AC 4
733struct wmi_ocb_qos_params {
734 uint8_t aifsn;
735 uint8_t cwmin;
736 uint8_t cwmax;
737};
738/**
739 * struct ocb_config_channel
740 * @chan_freq: frequency of the channel
741 * @bandwidth: bandwidth of the channel, either 10 or 20 MHz
742 * @mac_address: MAC address assigned to this channel
743 * @qos_params: QoS parameters
744 * @max_pwr: maximum transmit power of the channel (dBm)
745 * @min_pwr: minimum transmit power of the channel (dBm)
746 * @reg_pwr: maximum transmit power specified by the regulatory domain (dBm)
747 * @antenna_max: maximum antenna gain specified by the regulatory domain (dB)
748 */
749struct ocb_config_channel {
750 uint32_t chan_freq;
751 uint32_t bandwidth;
Govind Singhd7468a52016-03-09 14:32:57 +0530752 struct qdf_mac_addr mac_address;
Govind Singhe7b800c2016-03-01 15:30:53 +0530753 struct wmi_ocb_qos_params qos_params[WMI_MAX_NUM_AC];
754 uint32_t max_pwr;
755 uint32_t min_pwr;
756 uint8_t reg_pwr;
757 uint8_t antenna_max;
758 uint16_t flags;
759};
760
761/**
762 * struct ocb_config_param
763 * @session_id: session id
764 * @channel_count: number of channels
765 * @schedule_size: size of the channel schedule
766 * @flags: reserved
767 * @channels: array of OCB channels
768 * @schedule: array of OCB schedule elements
769 * @dcc_ndl_chan_list_len: size of the ndl_chan array
770 * @dcc_ndl_chan_list: array of dcc channel info
771 * @dcc_ndl_active_state_list_len: size of the active state array
772 * @dcc_ndl_active_state_list: array of active states
773 * @adapter: the OCB adapter
774 * @dcc_stats_callback: callback for the response event
775 */
776struct ocb_config_param {
777 uint8_t session_id;
778 uint32_t channel_count;
779 uint32_t schedule_size;
780 uint32_t flags;
781 struct ocb_config_channel *channels;
782 struct ocb_config_sched *schedule;
783 uint32_t dcc_ndl_chan_list_len;
784 void *dcc_ndl_chan_list;
785 uint32_t dcc_ndl_active_state_list_len;
786 void *dcc_ndl_active_state_list;
787};
Govind Singh9bad0002016-03-01 15:54:59 +0530788
789/**
790 * struct t_thermal_cmd_params - thermal command parameters
791 * @min_temp: minimum temprature
792 * @max_temp: maximum temprature
793 * @thermal_enable: thermal enable
794 */
795struct thermal_cmd_params {
796 uint16_t min_temp;
797 uint16_t max_temp;
798 uint8_t thermal_enable;
799};
800
801#define WMI_LRO_IPV4_SEED_ARR_SZ 5
802#define WMI_LRO_IPV6_SEED_ARR_SZ 11
803
804/**
805 * struct wmi_lro_config_cmd_t - set LRO init parameters
806 * @lro_enable: indicates whether lro is enabled
807 * @tcp_flag: If the TCP flags from the packet do not match
808 * the values in this field after masking with TCP flags mask
809 * below, packet is not LRO eligible
810 * @tcp_flag_mask: field for comparing the TCP values provided
811 * above with the TCP flags field in the received packet
812 * @toeplitz_hash_ipv4: contains seed needed to compute the flow id
813 * 5-tuple toeplitz hash for ipv4 packets
814 * @toeplitz_hash_ipv6: contains seed needed to compute the flow id
815 * 5-tuple toeplitz hash for ipv6 packets
816 */
817struct wmi_lro_config_cmd_t {
818 uint32_t lro_enable;
819 uint32_t tcp_flag:9,
820 tcp_flag_mask:9;
821 uint32_t toeplitz_hash_ipv4[WMI_LRO_IPV4_SEED_ARR_SZ];
822 uint32_t toeplitz_hash_ipv6[WMI_LRO_IPV6_SEED_ARR_SZ];
823};
Govind Singhae855362016-03-07 14:24:22 +0530824
825/**
826 * struct gtx_config_t - GTX config
827 * @gtx_rt_mask: for HT and VHT rate masks
828 * @gtx_usrcfg: host request for GTX mask
829 * @gtx_threshold: PER Threshold (default: 10%)
830 * @gtx_margin: PER margin (default: 2%)
831 * @gtx_tcpstep: TCP step (default: 1)
832 * @gtx_tpcMin: TCP min (default: 5)
833 * @gtx_bwmask: BW mask (20/40/80/160 Mhz)
834 */
835struct wmi_gtx_config {
836 uint32_t gtx_rt_mask[2];
837 uint32_t gtx_usrcfg;
838 uint32_t gtx_threshold;
839 uint32_t gtx_margin;
840 uint32_t gtx_tpcstep;
841 uint32_t gtx_tpcmin;
842 uint32_t gtx_bwmask;
843};
844
845/**
846 * struct wmi_probe_resp_params - send probe response parameters
847 * @bssId: BSSID
848 * @pProbeRespTemplate: probe response template
849 * @probeRespTemplateLen: probe response template length
850 * @ucProxyProbeReqValidIEBmap: valid IE bitmap
851 */
852struct wmi_probe_resp_params {
Govind Singh8675b862016-03-28 22:09:18 +0530853 uint8_t bssId[IEEE80211_ADDR_LEN];
Govind Singhae855362016-03-07 14:24:22 +0530854 uint8_t *pProbeRespTemplate;
855 uint32_t probeRespTemplateLen;
856 uint32_t ucProxyProbeReqValidIEBmap[8];
857};
858
859/**
860 * struct sta_params - sta keep alive parameters
861 * @vdev_id: vdev id
862 * @method: keep alive method
863 * @timeperiod: time to keep alive
864 * @hostv4addr: host ipv4 address
865 * @destv4addr: destination ipv4 address
866 * @destmac: destination mac address
867 */
868struct sta_params {
869 uint8_t vdev_id;
870 uint32_t method;
871 uint32_t timeperiod;
872 uint8_t *hostv4addr;
873 uint8_t *destv4addr;
874 uint8_t *destmac;
875};
876
877/**
878 * struct gateway_update_req_param - gateway parameter update request
879 * @request_id: request id
880 * @session_id: session id
881 * @max_retries: Max ARP/NS retry attempts
882 * @timeout: Retry interval
883 * @ipv4_addr_type: on ipv4 network
884 * @ipv6_addr_type: on ipv6 network
885 * @gw_mac_addr: gateway mac addr
886 * @ipv4_addr: ipv4 addr
887 * @ipv6_addr: ipv6 addr
888 */
889struct gateway_update_req_param {
890 uint32_t request_id;
891 uint32_t session_id;
892 uint32_t max_retries;
893 uint32_t timeout;
894 uint32_t ipv4_addr_type;
895 uint32_t ipv6_addr_type;
Govind Singhd7468a52016-03-09 14:32:57 +0530896 struct qdf_mac_addr gw_mac_addr;
897 uint8_t ipv4_addr[QDF_IPV4_ADDR_SIZE];
898 uint8_t ipv6_addr[QDF_IPV6_ADDR_SIZE];
Govind Singhae855362016-03-07 14:24:22 +0530899};
900
901/**
902 * struct rssi_monitor_param - rssi monitoring
903 * @request_id: request id
904 * @session_id: session id
905 * @min_rssi: minimum rssi
906 * @max_rssi: maximum rssi
907 * @control: flag to indicate start or stop
908 */
909struct rssi_monitor_param {
910 uint32_t request_id;
911 uint32_t session_id;
912 int8_t min_rssi;
913 int8_t max_rssi;
914 bool control;
915};
916
917/**
918 * struct scan_mac_oui - oui paramters
919 * @oui: oui parameters
920 */
921struct scan_mac_oui {
922 uint8_t oui[WMI_WIFI_SCANNING_MAC_OUI_LENGTH];
923};
924
925#define WMI_PASSPOINT_REALM_LEN 256
926#define WMI_PASSPOINT_ROAMING_CONSORTIUM_ID_NUM 16
927#define WMI_PASSPOINT_PLMN_LEN 3
928/**
929 * struct wifi_passpoint_network_param - passpoint network block
930 * @id: identifier of this network block
931 * @realm: null terminated UTF8 encoded realm, 0 if unspecified
932 * @roaming_consortium_ids: roaming consortium ids to match, 0s if unspecified
933 * @plmn: mcc/mnc combination as per rules, 0s if unspecified
934 */
935struct wifi_passpoint_network_param {
936 uint32_t id;
937 uint8_t realm[WMI_PASSPOINT_REALM_LEN];
938 int64_t roaming_consortium_ids[WMI_PASSPOINT_ROAMING_CONSORTIUM_ID_NUM];
939 uint8_t plmn[WMI_PASSPOINT_PLMN_LEN];
940};
941
942/**
943 * struct wifi_passpoint_req_param - passpoint request
944 * @request_id: request identifier
945 * @num_networks: number of networks
946 * @networks: passpoint networks
947 */
948struct wifi_passpoint_req_param {
949 uint32_t request_id;
950 uint32_t session_id;
951 uint32_t num_networks;
952 struct wifi_passpoint_network_param networks[];
953};
954
Himanshu Agarwal5f2d0482016-03-09 15:25:44 +0530955/* struct mobility_domain_info - structure containing
956 * mobility domain info
957 * @mdie_present: mobility domain present or not
958 * @mobility_domain: mobility domain
959 */
960struct mobility_domain_info {
961 uint8_t mdie_present;
962 uint16_t mobility_domain;
963};
964
965/* struct roam_offload_scan_params - structure
966 * containing roaming offload scan parameters
967 * @is_roam_req_valid: flag to tell whether roam req
968 * is valid or NULL
969 * @mode: stores flags for scan
970 * @vdev_id: vdev id
971 * @roam_offload_enabled: flag for offload enable
972 * @psk_pmk: pre shared key/pairwise master key
973 * @pmk_len: length of PMK
974 * @prefer_5ghz: prefer select 5G candidate
975 * @roam_rssi_cat_gap: gap for every category bucket
976 * @select_5ghz_margin: select 5 Ghz margin
977 * @krk: KRK
978 * @btk: BTK
979 * @reassoc_failure_timeout: reassoc failure timeout
980 * @rokh_id_length: r0kh id length
981 * @rokh_id: r0kh id
982 * @roam_key_mgmt_offload_enabled: roam offload flag
983 * @auth_mode: authentication mode
984 * @is_ese_assoc: flag to determine ese assoc
985 * @mdid: mobility domain info
986 * @roam_offload_params: roam offload tlv params
987 */
988struct roam_offload_scan_params {
989 uint8_t is_roam_req_valid;
990 uint32_t mode;
991 uint32_t vdev_id;
992#ifdef WLAN_FEATURE_ROAM_OFFLOAD
993 uint8_t roam_offload_enabled;
994 uint8_t psk_pmk[WMI_ROAM_SCAN_PSK_SIZE];
995 uint32_t pmk_len;
996 uint8_t prefer_5ghz;
997 uint8_t roam_rssi_cat_gap;
998 uint8_t select_5ghz_margin;
999 uint8_t krk[WMI_KRK_KEY_LEN];
1000 uint8_t btk[WMI_BTK_KEY_LEN];
1001 uint32_t reassoc_failure_timeout;
1002 uint32_t rokh_id_length;
1003 uint8_t rokh_id[WMI_ROAM_R0KH_ID_MAX_LEN];
1004 uint8_t roam_key_mgmt_offload_enabled;
1005 int auth_mode;
1006#endif
1007 bool is_ese_assoc;
1008 struct mobility_domain_info mdid;
1009 wmi_roam_offload_tlv_param roam_offload_params;
1010};
1011
1012/* struct roam_offload_scan_rssi_params - structure containing
1013 * parameters for roam offload scan based on RSSI
1014 * @rssi_thresh: rssi threshold
1015 * @rssi_thresh_diff: difference in rssi threshold
1016 * @hi_rssi_scan_max_count: 5G scan max count
1017 * @hi_rssi_scan_rssi_delta: 5G scan rssi change threshold value
1018 * @hi_rssi_scan_rssi_ub: 5G scan upper bound
1019 * @raise_rssi_thresh_5g: flag to determine penalty and boost thresholds
1020 * @session_id: vdev id
1021 * @penalty_threshold_5g: RSSI threshold below which 5GHz RSSI is penalized
1022 * @boost_threshold_5g: RSSI threshold above which 5GHz RSSI is favored
1023 * @raise_factor_5g: factor by which 5GHz RSSI is boosted
1024 * @drop_factor_5g: factor by which 5GHz RSSI is penalized
1025 * @max_raise_rssi_5g: maximum boost that can be applied to a 5GHz RSSI
1026 * @max_drop_rssi_5g: maximum penalty that can be applied to a 5GHz RSSI
1027 * @good_rssi_threshold: RSSI below which roam is kicked in by background
1028 * scan although rssi is still good
1029 * @roam_earlystop_thres_min: Minimum RSSI threshold value for early stop,
1030 * unit is dB above NF
1031 * @roam_earlystop_thres_max: Maximum RSSI threshold value for early stop,
1032 * unit is dB above NF
1033 */
1034struct roam_offload_scan_rssi_params {
1035 int8_t rssi_thresh;
1036 uint8_t rssi_thresh_diff;
1037 uint32_t hi_rssi_scan_max_count;
1038 uint32_t hi_rssi_scan_rssi_delta;
1039 int32_t hi_rssi_scan_rssi_ub;
1040 int raise_rssi_thresh_5g;
1041 uint8_t session_id;
1042 uint32_t penalty_threshold_5g;
1043 uint32_t boost_threshold_5g;
1044 uint8_t raise_factor_5g;
1045 uint8_t drop_factor_5g;
1046 int max_raise_rssi_5g;
1047 int max_drop_rssi_5g;
1048 uint32_t good_rssi_threshold;
1049 uint32_t roam_earlystop_thres_min;
1050 uint32_t roam_earlystop_thres_max;
1051};
1052
Govind Singhae855362016-03-07 14:24:22 +05301053/**
1054 * struct wifi_epno_network - enhanced pno network block
1055 * @ssid: ssid
1056 * @rssi_threshold: threshold for considering this SSID as found, required
1057 * granularity for this threshold is 4dBm to 8dBm
1058 * @flags: WIFI_PNO_FLAG_XXX
1059 * @auth_bit_field: auth bit field for matching WPA IE
1060 */
1061struct wifi_epno_network_params {
1062 struct mac_ssid ssid;
1063 int8_t rssi_threshold;
1064 uint8_t flags;
1065 uint8_t auth_bit_field;
1066};
1067
1068/**
1069 * struct wifi_enhanched_pno_params - enhanced pno network params
1070 * @num_networks: number of ssids
1071 * @networks: PNO networks
1072 */
1073struct wifi_enhanched_pno_params {
1074 uint32_t request_id;
1075 uint32_t session_id;
1076 uint32_t num_networks;
1077 struct wifi_epno_network_params networks[];
1078};
1079
1080enum {
1081 WMI_AP_RX_DATA_OFFLOAD = 0x00,
1082 WMI_STA_RX_DATA_OFFLOAD = 0x01,
1083};
1084
1085/**
1086 * enum extscan_report_events_type - extscan report events type
1087 * @EXTSCAN_REPORT_EVENTS_BUFFER_FULL: report only when scan history is % full
1088 * @EXTSCAN_REPORT_EVENTS_EACH_SCAN: report a scan completion event after scan
1089 * @EXTSCAN_REPORT_EVENTS_FULL_RESULTS: forward scan results
1090 * (beacons/probe responses + IEs)
1091 * in real time to HAL, in addition to completion events.
1092 * Note: To keep backward compatibility,
1093 * fire completion events regardless of REPORT_EVENTS_EACH_SCAN.
1094 * @EXTSCAN_REPORT_EVENTS_NO_BATCH: controls batching,
1095 * 0 => batching, 1 => no batching
1096 */
1097enum wmi_extscan_report_events_type {
1098 WMI_EXTSCAN_REPORT_EVENTS_BUFFER_FULL = 0x00,
1099 WMI_EXTSCAN_REPORT_EVENTS_EACH_SCAN = 0x01,
1100 WMI_EXTSCAN_REPORT_EVENTS_FULL_RESULTS = 0x02,
1101 WMI_EXTSCAN_REPORT_EVENTS_NO_BATCH = 0x04,
1102};
1103
1104/**
1105 * struct ipa_offload_control_params - ipa offload parameters
1106 * @offload_type: ipa offload type
1107 * @vdev_id: vdev id
1108 * @enable: ipa offload enable/disable
1109 */
1110struct ipa_offload_control_params {
1111 uint32_t offload_type;
1112 uint32_t vdev_id;
1113 uint32_t enable;
1114};
1115
1116/**
1117 * struct extscan_capabilities_params - ext scan capablities
1118 * @request_id: request_id
1119 * @session_id: session_id
1120 */
1121struct extscan_capabilities_params {
1122 uint32_t request_id;
1123 uint8_t session_id;
1124};
1125
1126/**
1127 * struct extscan_capabilities_reset_params - ext scan capablities reset parameter
1128 * @request_id: request_id
1129 * @session_id: session_id
1130 */
1131struct extscan_capabilities_reset_params {
1132 uint32_t request_id;
1133 uint8_t session_id;
1134};
1135
1136/**
1137 * struct extscan_bssid_hotlist_reset_params - ext scan hotlist reset parameter
1138 * @request_id: request_id
1139 * @session_id: session_id
1140 */
1141struct extscan_bssid_hotlist_reset_params {
1142 uint32_t request_id;
1143 uint8_t session_id;
1144};
1145
1146/**
1147 * struct extscan_stop_req_params - ext scan stop parameter
1148 * @request_id: request_id
1149 * @session_id: session_id
1150 */
1151struct extscan_stop_req_params {
1152 uint32_t request_id;
1153 uint8_t session_id;
1154};
1155
1156/**
1157 * struct ap_threshold_params - ap threshold parameter
1158 * @bssid: mac address
1159 * @low: low threshold
1160 * @high: high threshold
1161 */
1162struct ap_threshold_params {
Govind Singhd7468a52016-03-09 14:32:57 +05301163 struct qdf_mac_addr bssid;
Govind Singhae855362016-03-07 14:24:22 +05301164 int32_t low;
1165 int32_t high;
1166};
1167
1168/**
1169 * struct extscan_set_sig_changereq_params - ext scan channel parameter
1170 * @request_id: mac address
1171 * @session_id: low threshold
1172 * @rssi_sample_size: Number of samples for averaging RSSI
1173 * @lostap_sample_size: Number of missed samples to confirm AP loss
1174 * @min_breaching: Number of APs breaching threshold required for firmware
1175 * @num_ap: no of scanned ap
1176 * @ap: ap threshold parameter
1177 */
1178struct extscan_set_sig_changereq_params {
1179 uint32_t request_id;
1180 uint8_t session_id;
1181 uint32_t rssi_sample_size;
1182 uint32_t lostap_sample_size;
1183 uint32_t min_breaching;
1184 uint32_t num_ap;
1185 struct ap_threshold_params ap[WMI_EXTSCAN_MAX_SIGNIFICANT_CHANGE_APS];
1186};
1187
1188/**
1189 * struct extscan_cached_result_params - ext scan cached parameter
1190 * @request_id: mac address
1191 * @session_id: low threshold
1192 * @flush: cached results flush
1193 */
1194struct extscan_cached_result_params {
1195 uint32_t request_id;
1196 uint8_t session_id;
1197 bool flush;
1198};
1199
1200#ifdef FEATURE_WLAN_SCAN_PNO
1201/* Set PNO */
1202#define WMI_PNO_MAX_NETW_CHANNELS 26
1203#define WMI_PNO_MAX_NETW_CHANNELS_EX 60
1204#define WMI_PNO_MAX_SUPP_NETWORKS 16
1205
1206/*
1207 * size based of dot11 declaration without extra IEs as we will not carry those
1208 * for PNO
1209 */
1210#define WMI_PNO_MAX_PB_REQ_SIZE 450
1211
1212#define WMI_PNO_24G_DEFAULT_CH 1
1213#define WMI_PNO_5G_DEFAULT_CH 36
1214
1215/**
1216 * enum pno_mode - pno mode types
1217 * @WMI_PNO_MODE_IMMEDIATE: immidiate mode
1218 * @WMI_PNO_MODE_ON_SUSPEND: suspend on mode
1219 * @WMI_PNO_MODE_ON_RESUME: resume on mode
1220 * @WMI_PNO_MODE_MAX: max range
1221 */
1222enum pno_mode {
1223 WMI_PNO_MODE_IMMEDIATE,
1224 WMI_PNO_MODE_ON_SUSPEND,
1225 WMI_PNO_MODE_ON_RESUME,
1226 WMI_PNO_MODE_MAX
1227};
1228
1229/**
1230 * struct pno_nw_type - pno nw type
1231 * @ssid: mac ssid
1232 * @authentication: authentication type
1233 * @encryption: encryption type
1234 * @bcastNetwType: broadcast nw type
1235 * @ucChannelCount: uc channel count
1236 * @aChannels: pno channel
1237 * @rssiThreshold: rssi threshold
1238 */
1239struct pno_nw_type {
1240 struct mac_ssid ssid;
1241 uint32_t authentication;
1242 uint32_t encryption;
1243 uint32_t bcastNetwType;
1244 uint8_t ucChannelCount;
1245 uint8_t aChannels[WMI_PNO_MAX_NETW_CHANNELS_EX];
1246 int32_t rssiThreshold;
1247};
1248
1249/**
1250 * struct pno_scan_req_params - PNO Scan request structure
1251 * @enable: flag to enable or disable
1252 * @modePNO: PNO Mode
1253 * @ucNetworksCount: Number of networks
1254 * @aNetworks: Preferred network list
1255 * @sessionId: Session identifier
1256 * @fast_scan_period: Fast Scan period
1257 * @slow_scan_period: Slow scan period
1258 * @fast_scan_max_cycles: Fast scan max cycles
1259 * @us24GProbeTemplateLen: 2.4G probe template length
1260 * @p24GProbeTemplate: 2.4G probe template
1261 * @us5GProbeTemplateLen: 5G probe template length
1262 * @p5GProbeTemplate: 5G probe template
1263 */
1264struct pno_scan_req_params {
1265 uint8_t enable;
1266 enum pno_mode modePNO;
1267 uint8_t ucNetworksCount;
1268 struct pno_nw_type aNetworks[WMI_PNO_MAX_SUPP_NETWORKS];
1269 uint8_t sessionId;
1270 uint32_t fast_scan_period;
1271 uint32_t slow_scan_period;
1272 uint8_t fast_scan_max_cycles;
1273 uint32_t active_min_time;
1274 uint32_t active_max_time;
1275 uint32_t passive_min_time;
1276 uint32_t passive_max_time;
1277 uint16_t us24GProbeTemplateLen;
1278 uint8_t p24GProbeTemplate[WMI_PNO_MAX_PB_REQ_SIZE];
1279 uint16_t us5GProbeTemplateLen;
1280 uint8_t p5GProbeTemplate[WMI_PNO_MAX_PB_REQ_SIZE];
1281#ifdef FEATURE_WLAN_SCAN_PNO
1282 bool pno_channel_prediction;
1283 uint8_t top_k_num_of_channels;
1284 uint8_t stationary_thresh;
1285 uint32_t channel_prediction_full_scan;
1286#endif
1287};
1288
1289#endif /* FEATURE_WLAN_SCAN_PNO */
1290
1291#define WMI_WLAN_EXTSCAN_MAX_CHANNELS 36
1292#define WMI_WLAN_EXTSCAN_MAX_BUCKETS 16
1293#define WMI_WLAN_EXTSCAN_MAX_HOTLIST_APS 128
1294#define WMI_WLAN_EXTSCAN_MAX_SIGNIFICANT_CHANGE_APS 64
1295#define WMI_EXTSCAN_MAX_HOTLIST_SSIDS 8
1296
1297/**
1298 * struct wifi_scan_channelspec_params - wifi scan channel parameter
1299 * @channel: Frequency in MHz
1300 * @dwellTimeMs: dwell time
1301 * @flush: cached results flush
1302 * @passive: passive scan
1303 * @chnlClass: channel class
1304 */
1305struct wifi_scan_channelspec_params {
1306 uint32_t channel;
1307 uint32_t dwellTimeMs;
1308 bool passive;
1309 uint8_t chnlClass;
1310};
1311
1312/**
1313 * enum wmi_wifi_band - wifi band
1314 * @WMI_WIFI_BAND_UNSPECIFIED: unspecified band
1315 * @WMI_WIFI_BAND_BG: 2.4 GHz
1316 * @WMI_WIFI_BAND_A: 5 GHz without DFS
1317 * @WMI_WIFI_BAND_ABG: 2.4 GHz + 5 GHz; no DFS
1318 * @WMI_WIFI_BAND_A_DFS_ONLY: 5 GHz DFS only
1319 * @WMI_WIFI_BAND_A_WITH_DFS: 5 GHz with DFS
1320 * @WMI_WIFI_BAND_ABG_WITH_DFS: 2.4 GHz + 5 GHz with DFS
1321 * @WMI_WIFI_BAND_MAX: max range
1322 */
1323enum wmi_wifi_band {
1324 WMI_WIFI_BAND_UNSPECIFIED,
1325 WMI_WIFI_BAND_BG = 1,
1326 WMI_WIFI_BAND_A = 2,
1327 WMI_WIFI_BAND_ABG = 3,
1328 WMI_WIFI_BAND_A_DFS_ONLY = 4,
1329 /* 5 is reserved */
1330 WMI_WIFI_BAND_A_WITH_DFS = 6,
1331 WMI_WIFI_BAND_ABG_WITH_DFS = 7,
1332 /* Keep it last */
1333 WMI_WIFI_BAND_MAX
1334};
1335
1336/**
1337 * struct wifi_scan_bucket_params - wifi scan bucket spec
1338 * @bucket: bucket identifier
1339 * @band: wifi band
1340 * @period: Desired period, in millisecond; if this is too
1341 * low, the firmware should choose to generate results as fast as
1342 * it can instead of failing the command byte
1343 * for exponential backoff bucket this is the min_period
1344 * @reportEvents: 0 => normal reporting (reporting rssi history
1345 * only, when rssi history buffer is % full)
1346 * 1 => same as 0 + report a scan completion event after scanning
1347 * this bucket
1348 * 2 => same as 1 + forward scan results
1349 * (beacons/probe responses + IEs) in real time to HAL
1350 * @max_period: if max_period is non zero or different than period,
1351 * then this bucket is an exponential backoff bucket and
1352 * the scan period will grow exponentially as per formula:
1353 * actual_period(N) = period ^ (N/(step_count+1)) to a
1354 * maximum period of max_period
1355 * @exponent: for exponential back off bucket: multiplier:
1356 * new_period = old_period * exponent
1357 * @step_count: for exponential back off bucket, number of scans performed
1358 * at a given period and until the exponent is applied
1359 * @numChannels: channels to scan; these may include DFS channels
1360 * Note that a given channel may appear in multiple buckets
1361 * @min_dwell_time_active: per bucket minimum active dwell time
1362 * @max_dwell_time_active: per bucket maximum active dwell time
1363 * @min_dwell_time_passive: per bucket minimum passive dwell time
1364 * @max_dwell_time_passive: per bucket maximum passive dwell time
1365 * @channels: Channel list
1366 */
1367struct wifi_scan_bucket_params {
1368 uint8_t bucket;
1369 enum wmi_wifi_band band;
1370 uint32_t period;
1371 uint32_t reportEvents;
1372 uint32_t max_period;
1373 uint32_t exponent;
1374 uint32_t step_count;
1375 uint32_t numChannels;
1376 uint32_t min_dwell_time_active;
1377 uint32_t max_dwell_time_active;
1378 uint32_t min_dwell_time_passive;
1379 uint32_t max_dwell_time_passive;
1380 struct wifi_scan_channelspec_params channels[WMI_WLAN_EXTSCAN_MAX_CHANNELS];
1381};
1382
1383/**
1384 * struct wifi_scan_cmd_req_params - wifi scan command request params
1385 * @basePeriod: base timer period
1386 * @maxAPperScan: max ap per scan
1387 * @report_threshold_percent: report threshold
1388 * in %, when buffer is this much full, wake up host
1389 * @report_threshold_num_scans: report threshold number of scans
1390 * in number of scans, wake up host after these many scans
1391 * @requestId: request id
1392 * @sessionId: session id
1393 * @numBuckets: number of buckets
1394 * @min_dwell_time_active: per bucket minimum active dwell time
1395 * @max_dwell_time_active: per bucket maximum active dwell time
1396 * @min_dwell_time_passive: per bucket minimum passive dwell time
1397 * @max_dwell_time_passive: per bucket maximum passive dwell time
1398 * @configuration_flags: configuration flags
1399 * @buckets: buckets array
1400 */
1401struct wifi_scan_cmd_req_params {
1402 uint32_t basePeriod;
1403 uint32_t maxAPperScan;
1404
1405 uint32_t report_threshold_percent;
1406 uint32_t report_threshold_num_scans;
1407
1408 uint32_t requestId;
1409 uint8_t sessionId;
1410 uint32_t numBuckets;
1411
1412 uint32_t min_dwell_time_active;
1413 uint32_t max_dwell_time_active;
1414 uint32_t min_dwell_time_passive;
1415 uint32_t max_dwell_time_passive;
1416 uint32_t configuration_flags;
1417 struct wifi_scan_bucket_params buckets[WMI_WLAN_EXTSCAN_MAX_BUCKETS];
1418};
1419
1420#if defined(FEATURE_WLAN_ESE) && defined(FEATURE_WLAN_ESE_UPLOAD)
1421#define WMI_CFG_VALID_CHANNEL_LIST_LEN 100
1422
1423/**
1424 * struct plm_req_params - plm req parameter
1425 * @diag_token: Dialog token
1426 * @meas_token: measurement token
1427 * @num_bursts: total number of bursts
1428 * @burst_int: burst interval in seconds
1429 * @meas_duration:in TU's,STA goes off-ch
1430 * @burst_len: no of times the STA should cycle through PLM ch list
1431 * @desired_tx_pwr: desired tx power
1432 * @mac_addr: MC dest addr
1433 * @plm_num_ch: channel numbers
1434 * @plm_ch_list: channel list
1435 * @session_id: session id
1436 * @enable: enable/disable
1437 */
1438struct plm_req_params {
1439 uint16_t diag_token;
1440 uint16_t meas_token;
1441 uint16_t num_bursts;
1442 uint16_t burst_int;
1443 uint16_t meas_duration;
1444 /* no of times the STA should cycle through PLM ch list */
1445 uint8_t burst_len;
1446 int8_t desired_tx_pwr;
Govind Singhd7468a52016-03-09 14:32:57 +05301447 struct qdf_mac_addr mac_addr;
Govind Singhae855362016-03-07 14:24:22 +05301448 /* no of channels */
1449 uint8_t plm_num_ch;
1450 /* channel numbers */
1451 uint8_t plm_ch_list[WMI_CFG_VALID_CHANNEL_LIST_LEN];
1452 uint8_t session_id;
1453 bool enable;
1454};
1455#endif
Himanshu Agarwal5f2d0482016-03-09 15:25:44 +05301456#define MAX_SSID_ALLOWED_LIST 4
1457#define MAX_BSSID_AVOID_LIST 16
1458#define MAX_BSSID_FAVORED 16
Govind Singhae855362016-03-07 14:24:22 +05301459
1460
1461/**
1462 * struct mac_ts_info_tfc - mac ts info parameters
1463 * @burstSizeDefn: burst size
1464 * @reserved: reserved
1465 * @ackPolicy: ack policy
1466 * @psb: psb
1467 * @aggregation: aggregation
1468 * @accessPolicy: access policy
1469 * @direction: direction
1470 * @tsid: direction
1471 * @trafficType: traffic type
1472 */
1473struct mac_ts_info_tfc {
1474#ifndef ANI_LITTLE_BIT_ENDIAN
1475 uint8_t burstSizeDefn:1;
1476 uint8_t reserved:7;
1477#else
1478 uint8_t reserved:7;
1479 uint8_t burstSizeDefn:1;
1480#endif
1481
1482#ifndef ANI_LITTLE_BIT_ENDIAN
1483 uint16_t ackPolicy:2;
1484 uint16_t userPrio:3;
1485 uint16_t psb:1;
1486 uint16_t aggregation:1;
1487 uint16_t accessPolicy:2;
1488 uint16_t direction:2;
1489 uint16_t tsid:4;
1490 uint16_t trafficType:1;
1491#else
1492 uint16_t trafficType:1;
1493 uint16_t tsid:4;
1494 uint16_t direction:2;
1495 uint16_t accessPolicy:2;
1496 uint16_t aggregation:1;
1497 uint16_t psb:1;
1498 uint16_t userPrio:3;
1499 uint16_t ackPolicy:2;
1500#endif
Govind Singhd7468a52016-03-09 14:32:57 +05301501} qdf_packed;
Govind Singhae855362016-03-07 14:24:22 +05301502
1503/**
1504 * struct mac_ts_info_sch - mac ts info schedule parameters
1505 * @rsvd: reserved
1506 * @schedule: schedule bit
1507 */
1508struct mac_ts_info_sch {
1509#ifndef ANI_LITTLE_BIT_ENDIAN
1510 uint8_t rsvd:7;
1511 uint8_t schedule:1;
1512#else
1513 uint8_t schedule:1;
1514 uint8_t rsvd:7;
1515#endif
Govind Singhd7468a52016-03-09 14:32:57 +05301516} qdf_packed;
Govind Singhae855362016-03-07 14:24:22 +05301517
1518/**
1519 * struct mac_ts_info_sch - mac ts info schedule parameters
1520 * @traffic: mac tfc parameter
1521 * @schedule: mac schedule parameters
1522 */
1523struct mac_ts_info {
1524 struct mac_ts_info_tfc traffic;
1525 struct mac_ts_info_sch schedule;
Govind Singhd7468a52016-03-09 14:32:57 +05301526} qdf_packed;
Govind Singhae855362016-03-07 14:24:22 +05301527
1528/**
1529 * struct mac_tspec_ie - mac ts spec
1530 * @type: type
1531 * @length: length
1532 * @tsinfo: tsinfo
1533 * @nomMsduSz: nomMsduSz
1534 * @maxMsduSz: maxMsduSz
1535 * @minSvcInterval: minSvcInterval
1536 * @maxSvcInterval: maxSvcInterval
1537 * @inactInterval: inactInterval
1538 * @suspendInterval: suspendInterval
1539 * @svcStartTime: svcStartTime
1540 * @minDataRate: minDataRate
1541 * @meanDataRate: meanDataRate
1542 * @peakDataRate: peakDataRate
1543 * @maxBurstSz: maxBurstSz
1544 * @delayBound: delayBound
1545 * @minPhyRate: minPhyRate
1546 * @surplusBw: surplusBw
1547 * @mediumTime: mediumTime
1548 */
1549struct mac_tspec_ie {
1550 uint8_t type;
1551 uint8_t length;
1552 struct mac_ts_info tsinfo;
1553 uint16_t nomMsduSz;
1554 uint16_t maxMsduSz;
1555 uint32_t minSvcInterval;
1556 uint32_t maxSvcInterval;
1557 uint32_t inactInterval;
1558 uint32_t suspendInterval;
1559 uint32_t svcStartTime;
1560 uint32_t minDataRate;
1561 uint32_t meanDataRate;
1562 uint32_t peakDataRate;
1563 uint32_t maxBurstSz;
1564 uint32_t delayBound;
1565 uint32_t minPhyRate;
1566 uint16_t surplusBw;
1567 uint16_t mediumTime;
Govind Singhd7468a52016-03-09 14:32:57 +05301568} qdf_packed;
Govind Singhae855362016-03-07 14:24:22 +05301569
1570/**
1571 * struct add_ts_param - ADDTS related parameters
1572 * @staIdx: station index
1573 * @tspecIdx: TSPEC handler uniquely identifying a TSPEC for a STA in a BSS
1574 * @tspec: tspec value
1575 * @status: CDF status
1576 * @sessionId: session id
Govind Singhd7468a52016-03-09 14:32:57 +05301577 * @tsm_interval: TSM interval period passed from UMAC to WMI
Govind Singhae855362016-03-07 14:24:22 +05301578 * @setRICparams: RIC parameters
1579 * @sme_session_id: sme session id
1580 */
1581struct add_ts_param {
1582 uint16_t staIdx;
1583 uint16_t tspecIdx;
1584 struct mac_tspec_ie tspec;
Govind Singhd7468a52016-03-09 14:32:57 +05301585 QDF_STATUS status;
Govind Singhae855362016-03-07 14:24:22 +05301586 uint8_t sessionId;
1587#ifdef FEATURE_WLAN_ESE
1588 uint16_t tsm_interval;
1589#endif /* FEATURE_WLAN_ESE */
1590#ifdef WLAN_FEATURE_ROAM_OFFLOAD
1591 uint8_t setRICparams;
1592#endif /* WLAN_FEATURE_ROAM_OFFLOAD */
1593 uint8_t sme_session_id;
1594};
1595
1596/**
1597 * struct delts_req_info - DELTS request parameter
1598 * @tsinfo: ts info
1599 * @tspec: ts spec
1600 * @wmeTspecPresent: wme ts spec flag
1601 * @wsmTspecPresent: wsm ts spec flag
1602 * @lleTspecPresent: lle ts spec flag
1603 */
1604struct delts_req_info {
1605 struct mac_ts_info tsinfo;
1606 struct mac_tspec_ie tspec;
1607 uint8_t wmeTspecPresent:1;
1608 uint8_t wsmTspecPresent:1;
1609 uint8_t lleTspecPresent:1;
1610};
1611
1612/**
1613 * struct del_ts_params - DELTS related parameters
1614 * @staIdx: station index
1615 * @tspecIdx: TSPEC identifier uniquely identifying a TSPEC for a STA in a BSS
1616 * @bssId: BSSID
1617 * @sessionId: session id
1618 * @userPrio: user priority
1619 * @delTsInfo: DELTS info
1620 * @setRICparams: RIC parameters
1621 */
1622struct del_ts_params {
1623 uint16_t staIdx;
1624 uint16_t tspecIdx;
Govind Singh8675b862016-03-28 22:09:18 +05301625 uint8_t bssId[IEEE80211_ADDR_LEN];
Govind Singhae855362016-03-07 14:24:22 +05301626 uint8_t sessionId;
1627 uint8_t userPrio;
1628#ifdef WLAN_FEATURE_ROAM_OFFLOAD
1629 struct delts_req_info delTsInfo;
1630 uint8_t setRICparams;
1631#endif /* WLAN_FEATURE_ROAM_OFFLOAD */
1632};
1633
1634/**
1635 * struct ll_stats_clear_params - ll stats clear parameter
1636 * @req_id: request id
1637 * @sta_id: sta id
1638 * @stats_clear_mask: stats clear mask
1639 * @stop_req: stop request
1640 */
1641struct ll_stats_clear_params {
1642 uint32_t req_id;
1643 uint8_t sta_id;
1644 uint32_t stats_clear_mask;
1645 uint8_t stop_req;
1646};
1647
1648/**
1649 * struct ll_stats_set_params - ll stats get parameter
1650 * @req_id: request id
1651 * @sta_id: sta id
1652 * @mpdu_size_threshold: mpdu sixe threshold
1653 * @aggressive_statistics_gathering: aggressive_statistics_gathering
1654 */
1655struct ll_stats_set_params {
1656 uint32_t req_id;
1657 uint8_t sta_id;
1658 uint32_t mpdu_size_threshold;
1659 uint32_t aggressive_statistics_gathering;
1660};
1661
1662/**
1663 * struct ll_stats_get_params - ll stats parameter
1664 * @req_id: request id
1665 * @sta_id: sta id
1666 * @param_id_mask: param is mask
1667 */
1668struct ll_stats_get_params {
1669 uint32_t req_id;
1670 uint8_t sta_id;
1671 uint32_t param_id_mask;
1672};
1673
1674/**
1675 * struct pe_stats_req - pe stats parameter
1676 * @msg_type: message type is same as the request type
1677 * @msg_len: length of the entire request
1678 * @sta_id: Per STA stats request must contain valid
1679 * @stats_mask: categories of stats requested
1680 * @session_id: wsm ts spec flag
1681 */
1682struct pe_stats_req {
1683 /* Common for all types are requests */
1684 uint16_t msg_type;
1685 uint16_t msg_len;
1686 uint32_t sta_id;
1687 /* categories of stats requested. look at ePEStatsMask */
1688 uint32_t stats_mask;
1689 uint8_t session_id;
1690};
1691
1692/**
1693 * struct link_status_params - link stats parameter
1694 * @msg_type: message type is same as the request type
1695 * @msg_len: length of the entire request
1696 * @link_status: wme ts spec flag
1697 * @session_id: wsm ts spec flag
1698 */
1699struct link_status_params {
1700 uint16_t msg_type;
1701 uint16_t msg_len;
1702 uint8_t link_status;
1703 uint8_t session_id;
1704};
1705
1706/**
1707 * struct dhcp_stop_ind_params - DHCP Stop indication message
1708 * @msgtype: message type is same as the request type
1709 * @msglen: length of the entire request
1710 * @device_mode: Mode of the device(ex:STA, AP)
1711 * @adapter_macaddr: MAC address of the adapter
1712 * @peer_macaddr: MAC address of the connected peer
1713 */
1714struct dhcp_stop_ind_params {
1715 uint16_t msgtype;
1716 uint16_t msglen;
1717 uint8_t device_mode;
Govind Singhd7468a52016-03-09 14:32:57 +05301718 struct qdf_mac_addr adapter_macaddr;
1719 struct qdf_mac_addr peer_macaddr;
Govind Singhae855362016-03-07 14:24:22 +05301720};
1721
1722/**
1723 * struct aggr_add_ts_param - ADDTS parameters
1724 * @staIdx: station index
1725 * @tspecIdx: TSPEC handler uniquely identifying a TSPEC for a STA in a BSS
1726 * @tspec: tspec value
1727 * @status: CDF status
1728 * @sessionId: session id
1729 */
1730struct aggr_add_ts_param {
1731 uint16_t staIdx;
1732 uint16_t tspecIdx;
1733 struct mac_tspec_ie tspec[WMI_QOS_NUM_AC_MAX];
Govind Singhd7468a52016-03-09 14:32:57 +05301734 QDF_STATUS status[WMI_QOS_NUM_AC_MAX];
Govind Singhae855362016-03-07 14:24:22 +05301735 uint8_t sessionId;
1736};
1737
1738#define WMI_MAX_FILTER_TEST_DATA_LEN 8
1739#define WMI_MAX_NUM_MULTICAST_ADDRESS 240
1740#define WMI_MAX_NUM_FILTERS 20
1741#define WMI_MAX_NUM_TESTS_PER_FILTER 10
1742
1743/**
1744 * enum packet_filter_type - packet filter type
1745 * @WMI_RCV_FILTER_TYPE_INVALID: invalid type
1746 * @WMI_RCV_FILTER_TYPE_FILTER_PKT: filter packet type
1747 * @WMI_RCV_FILTER_TYPE_BUFFER_PKT: buffer packet type
1748 * @WMI_RCV_FILTER_TYPE_MAX_ENUM_SIZE: max enum size
1749 */
1750enum packet_filter_type {
1751 WMI_RCV_FILTER_TYPE_INVALID,
1752 WMI_RCV_FILTER_TYPE_FILTER_PKT,
1753 WMI_RCV_FILTER_TYPE_BUFFER_PKT,
1754 WMI_RCV_FILTER_TYPE_MAX_ENUM_SIZE
1755};
1756
1757/**
1758 * enum packet_protocol_type - packet protocol type
1759 * @WMI_FILTER_HDR_TYPE_INVALID: invalid type
1760 * @WMI_FILTER_HDR_TYPE_MAC: mac type
1761 * @WMI_FILTER_HDR_TYPE_ARP: trp type
1762 * @WMI_FILTER_HDR_TYPE_IPV4: ipv4 type
1763 * @WMI_FILTER_HDR_TYPE_IPV6: ipv6 type
1764 * @WMI_FILTER_HDR_TYPE_UDP: udp type
1765 * @WMI_FILTER_HDR_TYPE_MAX: max type
1766 */
1767enum packet_protocol_type {
1768 WMI_FILTER_HDR_TYPE_INVALID,
1769 WMI_FILTER_HDR_TYPE_MAC,
1770 WMI_FILTER_HDR_TYPE_ARP,
1771 WMI_FILTER_HDR_TYPE_IPV4,
1772 WMI_FILTER_HDR_TYPE_IPV6,
1773 WMI_FILTER_HDR_TYPE_UDP,
1774 WMI_FILTER_HDR_TYPE_MAX
1775};
1776
1777/**
1778 * enum packet_filter_comp_type - packet filter comparison type
1779 * @WMI_FILTER_CMP_TYPE_INVALID: invalid type
1780 * @WMI_FILTER_CMP_TYPE_EQUAL: type equal
1781 * @WMI_FILTER_CMP_TYPE_MASK_EQUAL: mask equal
1782 * @WMI_FILTER_CMP_TYPE_NOT_EQUAL: type not equal
1783 * @WMI_FILTER_CMP_TYPE_MASK_NOT_EQUAL: mask not equal
1784 * @WMI_FILTER_CMP_TYPE_MAX: max type
1785 */
1786enum packet_filter_comp_type {
1787 WMI_FILTER_CMP_TYPE_INVALID,
1788 WMI_FILTER_CMP_TYPE_EQUAL,
1789 WMI_FILTER_CMP_TYPE_MASK_EQUAL,
1790 WMI_FILTER_CMP_TYPE_NOT_EQUAL,
1791 WMI_FILTER_CMP_TYPE_MASK_NOT_EQUAL,
1792 WMI_FILTER_CMP_TYPE_MAX
1793};
1794
1795/**
1796 * struct rcv_pkt_filter_params - recieve packet filter parameters
1797 * @protocolLayer - protocol layer
1798 * @cmpFlag - comparison flag
1799 * @dataLength - data length
1800 * @dataOffset - data offset
1801 * @reserved - resserved
1802 * @compareData - compare data
1803 * @dataMask - data mask
1804 */
1805struct rcv_pkt_filter_params {
1806 enum packet_protocol_type protocolLayer;
1807 enum packet_filter_comp_type cmpFlag;
1808 uint16_t dataLength;
1809 uint8_t dataOffset;
1810 uint8_t reserved;
1811 uint8_t compareData[WMI_MAX_FILTER_TEST_DATA_LEN];
1812 uint8_t dataMask[WMI_MAX_FILTER_TEST_DATA_LEN];
1813};
1814
1815/**
1816 * struct rcv_pkt_filter_config - recieve packet filter info
1817 * @filterId - filter id
1818 * @filterType - filter type
1819 * @numFieldParams - no of fields
1820 * @coalesceTime - reserved parameter
1821 * @self_macaddr - self mac address
1822 * @bssid - Bssid of the connected AP
1823 * @paramsData - data parameter
1824 */
1825struct rcv_pkt_filter_config {
1826 uint8_t filterId;
1827 enum packet_filter_type filterType;
1828 uint32_t numFieldParams;
1829 uint32_t coalesceTime;
Govind Singhd7468a52016-03-09 14:32:57 +05301830 struct qdf_mac_addr self_macaddr;
1831 struct qdf_mac_addr bssid;
Govind Singhae855362016-03-07 14:24:22 +05301832 struct rcv_pkt_filter_params paramsData[WMI_MAX_NUM_TESTS_PER_FILTER];
1833};
1834
1835/**
1836 * struct vdev_ie_info_param - IE info
1837 * @vdev_id - vdev for which the IE is being sent
1838 * @ie_id - ID of the IE
1839 * @length - length of the IE data
1840 * @data - IE data
1841 *
1842 * This structure is used to store the IE information.
1843 */
1844struct vdev_ie_info_param {
1845 uint32_t vdev_id;
1846 uint32_t ie_id;
1847 uint32_t length;
1848 uint8_t *data;
1849};
1850
1851#define WMI_MAX_NUM_FW_SEGMENTS 4
1852
1853/**
1854 * struct fw_dump_seg_req_param - individual segment details
1855 * @seg_id - segment id.
1856 * @seg_start_addr_lo - lower address of the segment.
1857 * @seg_start_addr_hi - higher address of the segment.
1858 * @seg_length - length of the segment.
1859 * @dst_addr_lo - lower address of the destination buffer.
1860 * @dst_addr_hi - higher address of the destination buffer.
1861 *
1862 * This structure carries the information to firmware about the
1863 * individual segments. This structure is part of firmware memory
1864 * dump request.
1865 */
1866struct fw_dump_seg_req_param {
1867 uint8_t seg_id;
1868 uint32_t seg_start_addr_lo;
1869 uint32_t seg_start_addr_hi;
1870 uint32_t seg_length;
1871 uint32_t dst_addr_lo;
1872 uint32_t dst_addr_hi;
1873};
1874
1875/**
1876 * struct fw_dump_req_param - firmware memory dump request details.
1877 * @request_id - request id.
1878 * @num_seg - requested number of segments.
1879 * @fw_dump_seg_req - individual segment information.
1880 *
1881 * This structure carries information about the firmware
1882 * memory dump request.
1883 */
1884struct fw_dump_req_param {
1885 uint32_t request_id;
1886 uint32_t num_seg;
1887 struct fw_dump_seg_req_param segment[WMI_MAX_NUM_FW_SEGMENTS];
1888};
1889
1890#define WMI_TDLS_MAX_SUPP_CHANNELS 128
1891#define WMI_TDLS_MAX_SUPP_OPER_CLASSES 32
1892#define WMI_2_4_GHZ_MAX_FREQ 3000
1893
1894/**
1895 * struct tdls_update_ch_params - channel parameters
1896 * @chanId: ID of the channel
1897 * @pwr: power level
1898 * @dfsSet: is dfs supported or not
1899 * @half_rate: is the channel operating at 10MHz
1900 * @quarter_rate: is the channel operating at 5MHz
1901 */
1902struct tdls_update_ch_params {
1903 uint8_t chanId;
1904 uint8_t pwr;
1905 bool dfsSet;
1906 bool half_rate;
1907 bool quarter_rate;
1908};
1909
1910/**
1911 * struct tdls_peer_cap_params - TDLS peer capablities parameters
1912 * @isPeerResponder: is peer responder or not
1913 * @peerUapsdQueue: peer uapsd queue
1914 * @peerMaxSp: peer max SP value
1915 * @peerBuffStaSupport: peer buffer sta supported or not
1916 * @peerOffChanSupport: peer offchannel support
1917 * @peerCurrOperClass: peer current operating class
1918 * @selfCurrOperClass: self current operating class
1919 * @peerChanLen: peer channel length
1920 * @peerChan: peer channel list
1921 * @peerOperClassLen: peer operating class length
1922 * @peerOperClass: peer operating class
1923 * @prefOffChanNum: peer offchannel number
1924 * @prefOffChanBandwidth: peer offchannel bandwidth
1925 * @opClassForPrefOffChan: operating class for offchannel
1926 */
1927struct tdls_peer_cap_params {
1928 uint8_t isPeerResponder;
1929 uint8_t peerUapsdQueue;
1930 uint8_t peerMaxSp;
1931 uint8_t peerBuffStaSupport;
1932 uint8_t peerOffChanSupport;
1933 uint8_t peerCurrOperClass;
1934 uint8_t selfCurrOperClass;
1935 uint8_t peerChanLen;
1936 struct tdls_update_ch_params peerChan[WMI_TDLS_MAX_SUPP_CHANNELS];
1937 uint8_t peerOperClassLen;
1938 uint8_t peerOperClass[WMI_TDLS_MAX_SUPP_OPER_CLASSES];
1939 uint8_t prefOffChanNum;
1940 uint8_t prefOffChanBandwidth;
1941 uint8_t opClassForPrefOffChan;
1942};
1943
1944/**
1945 * struct tdls_peer_state_params - TDLS peer state parameters
1946 * @vdevId: vdev id
1947 * @peerMacAddr: peer mac address
1948 * @peerCap: peer capabality
1949 */
1950struct tdls_peer_state_params {
1951 uint32_t vdevId;
Govind Singh8675b862016-03-28 22:09:18 +05301952 uint8_t peerMacAddr[IEEE80211_ADDR_LEN];
Govind Singhae855362016-03-07 14:24:22 +05301953 uint32_t peerState;
1954 struct tdls_peer_cap_params peerCap;
1955};
1956
1957/**
1958 * struct wmi_tdls_params - TDLS parameters
1959 * @vdev_id: vdev id
1960 * @tdls_state: TDLS state
1961 * @notification_interval_ms: notification inerval
1962 * @tx_discovery_threshold: tx discovery threshold
1963 * @tx_teardown_threshold: tx teardown threashold
1964 * @rssi_teardown_threshold: RSSI teardown threshold
1965 * @rssi_delta: RSSI delta
1966 * @tdls_options: TDLS options
1967 * @peer_traffic_ind_window: raffic indication window
1968 * @peer_traffic_response_timeout: traffic response timeout
1969 * @puapsd_mask: uapsd mask
1970 * @puapsd_inactivity_time: uapsd inactivity time
1971 * @puapsd_rx_frame_threshold: uapsd rx frame threshold
1972 * @teardown_notification_ms: tdls teardown notification interval
1973 * @tdls_peer_kickout_threshold: tdls packet threshold for
1974 * peer kickout operation
1975 */
1976struct wmi_tdls_params {
1977 uint32_t vdev_id;
1978 uint32_t tdls_state;
1979 uint32_t notification_interval_ms;
1980 uint32_t tx_discovery_threshold;
1981 uint32_t tx_teardown_threshold;
1982 int32_t rssi_teardown_threshold;
1983 int32_t rssi_delta;
1984 uint32_t tdls_options;
1985 uint32_t peer_traffic_ind_window;
1986 uint32_t peer_traffic_response_timeout;
1987 uint32_t puapsd_mask;
1988 uint32_t puapsd_inactivity_time;
1989 uint32_t puapsd_rx_frame_threshold;
1990 uint32_t teardown_notification_ms;
1991 uint32_t tdls_peer_kickout_threshold;
1992};
1993
1994/**
1995 * struct tdls_chan_switch_params - channel switch parameter structure
1996 * @vdev_id: vdev ID
1997 * @peer_mac_addr: Peer mac address
1998 * @tdls_off_ch_bw_offset: Target off-channel bandwitdh offset
1999 * @tdls_off_ch: Target Off Channel
2000 * @oper_class: Operating class for target channel
2001 * @is_responder: Responder or initiator
2002 */
2003struct tdls_channel_switch_params {
2004 uint32_t vdev_id;
Govind Singh8675b862016-03-28 22:09:18 +05302005 uint8_t peer_mac_addr[IEEE80211_ADDR_LEN];
Govind Singhae855362016-03-07 14:24:22 +05302006 uint16_t tdls_off_ch_bw_offset;
2007 uint8_t tdls_off_ch;
2008 uint8_t tdls_sw_mode;
2009 uint8_t oper_class;
2010 uint8_t is_responder;
2011};
2012
2013/**
2014 * struct dhcp_offload_info_params - dhcp offload parameters
2015 * @vdev_id: request data length
2016 * @dhcpSrvOffloadEnabled: dhcp offload enabled
2017 * @dhcpClientNum: dhcp client no
2018 * @dhcpSrvIP: dhcp server ip
2019 */
2020struct dhcp_offload_info_params {
2021 uint32_t vdev_id;
2022 uint32_t dhcpSrvOffloadEnabled;
2023 uint32_t dhcpClientNum;
2024 uint32_t dhcpSrvIP;
2025};
2026
2027/**
2028 * struct nan_req_params - NAN request params
2029 * @request_data_len: request data length
2030 * @request_data: request data
2031 */
2032struct nan_req_params {
2033 uint16_t request_data_len;
2034 uint8_t request_data[];
2035};
2036
2037
2038/**
2039 * struct app_type2_params - app type2parameter
2040 * @vdev_id: vdev id
2041 * @rc4_key: rc4 key
2042 * @rc4_key_len: rc4 key length
2043 * @ip_id: NC id
2044 * @ip_device_ip: NC IP addres
2045 * @ip_server_ip: Push server IP address
2046 * @tcp_src_port: NC TCP port
2047 * @tcp_dst_port: Push server TCP port
2048 * @tcp_seq: tcp sequence
2049 * @tcp_ack_seq: tcp ack sequence
2050 * @keepalive_init: Initial ping interval
2051 * @keepalive_min: Minimum ping interval
2052 * @keepalive_max: Maximum ping interval
2053 * @keepalive_inc: Increment of ping interval
2054 * @gateway_mac: gateway mac address
2055 * @tcp_tx_timeout_val: tcp tx timeout value
2056 * @tcp_rx_timeout_val: tcp rx timeout value
2057 */
2058struct app_type2_params {
2059 uint8_t vdev_id;
2060 uint8_t rc4_key[16];
2061 uint32_t rc4_key_len;
2062 /** ip header parameter */
2063 uint32_t ip_id;
2064 uint32_t ip_device_ip;
2065 uint32_t ip_server_ip;
2066 /** tcp header parameter */
2067 uint16_t tcp_src_port;
2068 uint16_t tcp_dst_port;
2069 uint32_t tcp_seq;
2070 uint32_t tcp_ack_seq;
2071 uint32_t keepalive_init;
2072 uint32_t keepalive_min;
2073 uint32_t keepalive_max;
2074 uint32_t keepalive_inc;
Govind Singhd7468a52016-03-09 14:32:57 +05302075 struct qdf_mac_addr gateway_mac;
Govind Singhae855362016-03-07 14:24:22 +05302076 uint32_t tcp_tx_timeout_val;
2077 uint32_t tcp_rx_timeout_val;
2078};
2079
2080/**
2081 * struct app_type1_params - app type1 parameter
2082 * @vdev_id: vdev id
2083 * @wakee_mac_addr: mac address
2084 * @identification_id: identification id
2085 * @password: password
2086 * @id_length: id length
2087 * @pass_length: password length
2088 */
2089struct app_type1_params {
2090 uint8_t vdev_id;
Govind Singhd7468a52016-03-09 14:32:57 +05302091 struct qdf_mac_addr wakee_mac_addr;
Govind Singhae855362016-03-07 14:24:22 +05302092 uint8_t identification_id[8];
2093 uint8_t password[16];
2094 uint32_t id_length;
2095 uint32_t pass_length;
2096};
2097
2098/**
2099 * enum wmi_ext_wow_type - wow type
2100 * @WMI_EXT_WOW_TYPE_APP_TYPE1: only enable wakeup for app type1
2101 * @WMI_EXT_WOW_TYPE_APP_TYPE2: only enable wakeup for app type2
2102 * @WMI_EXT_WOW_TYPE_APP_TYPE1_2: enable wakeup for app type1&2
2103 */
2104enum wmi_ext_wow_type {
2105 WMI_EXT_WOW_TYPE_APP_TYPE1,
2106 WMI_EXT_WOW_TYPE_APP_TYPE2,
2107 WMI_EXT_WOW_TYPE_APP_TYPE1_2,
2108};
2109
2110/**
2111 * struct ext_wow_params - ext wow parameters
2112 * @vdev_id: vdev id
2113 * @type: wow type
2114 * @wakeup_pin_num: wake up gpio no
2115 */
2116struct ext_wow_params {
2117 uint8_t vdev_id;
2118 enum wmi_ext_wow_type type;
2119 uint32_t wakeup_pin_num;
2120};
2121
2122/**
2123 * struct stats_ext_params - ext stats request
2124 * @vdev_id: vdev id
2125 * @request_data_len: request data length
2126 * @request_data: request data
2127 */
2128struct stats_ext_params {
2129 uint32_t vdev_id;
2130 uint32_t request_data_len;
2131 uint8_t request_data[];
2132};
2133
2134#define WMI_PERIODIC_TX_PTRN_MAX_SIZE 1536
2135/**
2136 * struct periodic_tx_pattern - periodic tx pattern
2137 * @mac_address: MAC Address for the adapter
2138 * @ucPtrnId: Pattern ID
2139 * @ucPtrnSize: Pattern size
2140 * @usPtrnIntervalMs: in ms
2141 * @ucPattern: Pattern buffer
2142 */
2143struct periodic_tx_pattern {
Govind Singhd7468a52016-03-09 14:32:57 +05302144 struct qdf_mac_addr mac_address;
Govind Singhae855362016-03-07 14:24:22 +05302145 uint8_t ucPtrnId;
2146 uint16_t ucPtrnSize;
2147 uint32_t usPtrnIntervalMs;
2148 uint8_t ucPattern[WMI_PERIODIC_TX_PTRN_MAX_SIZE];
2149};
2150
2151#define WMI_GTK_OFFLOAD_KEK_BYTES 16
2152#define WMI_GTK_OFFLOAD_KCK_BYTES 16
2153
2154/**
2155 * struct gtk_offload_params - gtk offload parameters
2156 * @ulFlags: optional flags
2157 * @aKCK: Key confirmation key
2158 * @aKEK: key encryption key
2159 * @ullKeyReplayCounter: replay counter
2160 * @bssid: bss id
2161 */
2162struct gtk_offload_params {
2163 uint32_t ulFlags;
2164 uint8_t aKCK[WMI_GTK_OFFLOAD_KCK_BYTES];
2165 uint8_t aKEK[WMI_GTK_OFFLOAD_KEK_BYTES];
2166 uint64_t ullKeyReplayCounter;
Govind Singhd7468a52016-03-09 14:32:57 +05302167 struct qdf_mac_addr bssid;
Govind Singhae855362016-03-07 14:24:22 +05302168};
2169
2170/**
2171 * struct flashing_req_params - led flashing parameter
2172 * @reqId: request id
2173 * @pattern_id: pattern identifier. 0: disconnected 1: connected
2174 * @led_x0: led flashing parameter0
2175 * @led_x1: led flashing parameter1
2176 */
2177struct flashing_req_params {
2178 uint32_t req_id;
2179 uint32_t pattern_id;
2180 uint32_t led_x0;
2181 uint32_t led_x1;
2182};
2183
2184struct wmi_host_mem_chunk {
2185 uint32_t *vaddr;
2186 uint32_t paddr;
Govind Singhd7468a52016-03-09 14:32:57 +05302187 qdf_dma_mem_context(memctx);
Govind Singhae855362016-03-07 14:24:22 +05302188 uint32_t len;
2189 uint32_t req_id;
2190};
2191
2192struct target_resource_config {
2193 uint32_t num_vdevs;
2194 uint32_t num_peers;
2195 uint32_t num_active_peers;
2196 uint32_t num_offload_peers;
2197 uint32_t num_offload_reorder_buffs;
2198 uint32_t num_peer_keys;
2199 uint32_t num_tids;
2200 uint32_t ast_skid_limit;
2201 uint32_t tx_chain_mask;
2202 uint32_t rx_chain_mask;
2203 uint32_t rx_timeout_pri[4];
2204 uint32_t rx_decap_mode;
2205 uint32_t scan_max_pending_req;
2206 uint32_t bmiss_offload_max_vdev;
2207 uint32_t roam_offload_max_vdev;
2208 uint32_t roam_offload_max_ap_profiles;
2209 uint32_t num_mcast_groups;
2210 uint32_t num_mcast_table_elems;
2211 uint32_t mcast2ucast_mode;
2212 uint32_t tx_dbg_log_size;
2213 uint32_t num_wds_entries;
2214 uint32_t dma_burst_size;
2215 uint32_t mac_aggr_delim;
2216 uint32_t rx_skip_defrag_timeout_dup_detection_check;
2217 uint32_t vow_config;
2218 uint32_t gtk_offload_max_vdev;
2219 uint32_t num_msdu_desc; /* Number of msdu desc */
2220 uint32_t max_frag_entries;
2221 /* End common */
2222
2223 /* Added in MCL */
2224 uint32_t num_tdls_vdevs;
2225 uint32_t num_tdls_conn_table_entries;
2226 uint32_t beacon_tx_offload_max_vdev;
2227 uint32_t num_multicast_filter_entries;
2228 uint32_t num_wow_filters;
2229 uint32_t num_keep_alive_pattern;
2230 uint32_t keep_alive_pattern_size;
2231 uint32_t max_tdls_concurrent_sleep_sta;
2232 uint32_t max_tdls_concurrent_buffer_sta;
2233 uint32_t wmi_send_separate;
2234 uint32_t num_ocb_vdevs;
2235 uint32_t num_ocb_channels;
2236 uint32_t num_ocb_schedules;
2237};
2238
2239/**
2240 * struct wmi_wifi_start_log - Structure to store the params sent to start/
2241 * stop logging
2242 * @name: Attribute which indicates the type of logging like per packet
2243 * statistics, connectivity etc.
2244 * @verbose_level: Verbose level which can be 0,1,2,3
2245 * @flag: Flag field for future use
2246 */
2247struct wmi_wifi_start_log {
2248 uint32_t ring_id;
2249 uint32_t verbose_level;
2250 uint32_t flag;
2251};
2252
2253/**
2254 * struct wmi_pcl_list - Format of PCL
2255 * @pcl_list: List of preferred channels
2256 * @pcl_len: Number of channels in the PCL
2257 */
2258struct wmi_pcl_list {
2259 uint8_t pcl_list[128];
2260 uint32_t pcl_len;
2261};
2262
2263/**
2264 * struct wmi_hw_mode_params - HW mode params
2265 * @mac0_tx_ss: MAC0 Tx spatial stream
2266 * @mac0_rx_ss: MAC0 Rx spatial stream
2267 * @mac1_tx_ss: MAC1 Tx spatial stream
2268 * @mac1_rx_ss: MAC1 Rx spatial stream
2269 * @mac0_bw: MAC0 bandwidth
2270 * @mac1_bw: MAC1 bandwidth
2271 * @dbs_cap: DBS capabality
2272 * @agile_dfs_cap: Agile DFS capabality
2273 */
2274struct wmi_hw_mode_params {
2275 uint8_t mac0_tx_ss;
2276 uint8_t mac0_rx_ss;
2277 uint8_t mac1_tx_ss;
2278 uint8_t mac1_rx_ss;
2279 uint8_t mac0_bw;
2280 uint8_t mac1_bw;
2281 uint8_t dbs_cap;
2282 uint8_t agile_dfs_cap;
2283};
2284
2285/**
2286 * struct wmi_dual_mac_config - Dual MAC configuration
2287 * @scan_config: Scan configuration
2288 * @fw_mode_config: FW mode configuration
2289 * @set_dual_mac_cb: Callback function to be executed on response to the command
2290 */
2291struct wmi_dual_mac_config {
2292 uint32_t scan_config;
2293 uint32_t fw_mode_config;
2294 void *set_dual_mac_cb;
2295};
2296
2297#ifdef WLAN_NS_OFFLOAD
2298/**
2299 * struct ns_offload_req_params - ns offload request paramter
2300 * @srcIPv6Addr: src ipv6 address
2301 * @selfIPv6Addr: self ipv6 address
2302 * @targetIPv6Addr: target ipv6 address
2303 * @self_macaddr: self mac address
2304 * @srcIPv6AddrValid: src ipv6 address valid flag
2305 * @targetIPv6AddrValid: target ipv6 address valid flag
2306 * @slotIdx: slot index
2307 */
2308struct ns_offload_req_params {
2309 uint8_t srcIPv6Addr[WMI_MAC_IPV6_ADDR_LEN];
2310 uint8_t selfIPv6Addr[WMI_MAC_NUM_TARGET_IPV6_NS_OFFLOAD_NA][WMI_MAC_IPV6_ADDR_LEN];
2311 uint8_t targetIPv6Addr[WMI_MAC_NUM_TARGET_IPV6_NS_OFFLOAD_NA][WMI_MAC_IPV6_ADDR_LEN];
Govind Singhd7468a52016-03-09 14:32:57 +05302312 struct qdf_mac_addr self_macaddr;
Govind Singhae855362016-03-07 14:24:22 +05302313 uint8_t srcIPv6AddrValid;
2314 uint8_t targetIPv6AddrValid[WMI_MAC_NUM_TARGET_IPV6_NS_OFFLOAD_NA];
2315 uint8_t slotIdx;
2316};
2317#endif /* WLAN_NS_OFFLOAD */
2318
2319/**
2320 * struct host_offload_req_param - arp offload parameter
2321 * @offloadType: offload type
2322 * @enableOrDisable: enable or disable
2323 * @num_ns_offload_count: offload count
2324 */
2325struct host_offload_req_param {
2326 uint8_t offloadType;
2327 uint8_t enableOrDisable;
2328 uint32_t num_ns_offload_count;
2329 union {
2330 uint8_t hostIpv4Addr[WMI_IPV4_ADDR_LEN];
2331 uint8_t hostIpv6Addr[WMI_MAC_IPV6_ADDR_LEN];
2332 } params;
2333#ifdef WLAN_NS_OFFLOAD
2334 struct ns_offload_req_params nsOffloadInfo;
2335#endif /* WLAN_NS_OFFLOAD */
Govind Singhd7468a52016-03-09 14:32:57 +05302336 struct qdf_mac_addr bssid;
Govind Singhae855362016-03-07 14:24:22 +05302337};
2338
2339/**
2340 * struct ssid_hotlist_param - param for SSID Hotlist
2341 * @ssid: SSID which is being hotlisted
2342 * @band: Band in which the given SSID should be scanned
2343 * @rssi_low: Low bound on RSSI
2344 * @rssi_high: High bound on RSSI
2345 */
2346struct ssid_hotlist_param {
2347 struct mac_ssid ssid;
2348 uint8_t band;
2349 int32_t rssi_low;
2350 int32_t rssi_high;
2351};
2352
2353/**
Himanshu Agarwal5f2d0482016-03-09 15:25:44 +05302354 * struct roam_scan_filter_params - Structure holding roaming scan
2355 * parameters
2356 * @len: length
2357 * @op_bitmap: bitmap to determine reason of roaming
2358 * @session_id: vdev id
2359 * @num_bssid_black_list: The number of BSSID's that we should
2360 * avoid connecting to. It is like a
2361 * blacklist of BSSID's.
2362 * @num_ssid_white_list: The number of SSID profiles that are
2363 * in the Whitelist. When roaming, we
2364 * consider the BSSID's with this SSID
2365 * also for roaming apart from the connected one's
2366 * @num_bssid_preferred_list: Number of BSSID's which have a preference over
2367 * others
2368 * @bssid_avoid_list: Blacklist SSID's
2369 * @ssid_allowed_list: Whitelist SSID's
2370 * @bssid_favored: Favorable BSSID's
2371 * @bssid_favored_factor: RSSI to be added to this BSSID to prefer it
2372 *
2373 * This structure holds all the key parameters related to
2374 * initial connection and roaming connections.
2375 */
2376
2377struct roam_scan_filter_params {
2378 uint32_t len;
2379 uint32_t op_bitmap;
2380 uint8_t session_id;
2381 uint32_t num_bssid_black_list;
2382 uint32_t num_ssid_white_list;
2383 uint32_t num_bssid_preferred_list;
2384 struct qdf_mac_addr bssid_avoid_list[MAX_BSSID_AVOID_LIST];
2385 struct mac_ssid ssid_allowed_list[MAX_SSID_ALLOWED_LIST];
2386 struct qdf_mac_addr bssid_favored[MAX_BSSID_FAVORED];
2387 uint8_t bssid_favored_factor[MAX_BSSID_FAVORED];
2388};
2389
2390/**
Govind Singhae855362016-03-07 14:24:22 +05302391 * struct ssid_hotlist_request_params - set SSID hotlist request struct
2392 * @request_id: ID of the request
2393 * @session_id: ID of the session
2394 * @lost_ssid_sample_size: Number of consecutive scans in which the SSID
2395 * must not be seen in order to consider the SSID "lost"
2396 * @ssid_count: Number of valid entries in the @ssids array
2397 * @ssids: Array that defines the SSIDs that are in the hotlist
2398 */
2399struct ssid_hotlist_request_params {
2400 uint32_t request_id;
2401 uint8_t session_id;
2402 uint32_t lost_ssid_sample_size;
2403 uint32_t ssid_count;
2404 struct ssid_hotlist_param ssids[WMI_EXTSCAN_MAX_HOTLIST_SSIDS];
2405};
2406
2407/**
2408 * struct wmi_unit_test_cmd - unit test command parameters
2409 * @vdev_id: vdev id
2410 * @module_id: module id
2411 * @num_args: number of arguments
2412 * @args: arguments
2413 */
2414struct wmi_unit_test_cmd {
2415 uint32_t vdev_id;
2416 WLAN_MODULE_ID module_id;
2417 uint32_t num_args;
2418 uint32_t args[WMI_MAX_NUM_ARGS];
2419};
2420
2421/**
2422 * struct wmi_roam_invoke_cmd - roam invoke command
2423 * @vdev_id: vdev id
2424 * @bssid: mac address
2425 * @channel: channel
2426 */
2427struct wmi_roam_invoke_cmd {
2428 uint32_t vdev_id;
2429 uint8_t bssid[IEEE80211_ADDR_LEN];
2430 uint32_t channel;
2431};
2432
2433/**
2434 * struct ext_scan_setbssi_hotlist_params - set hotlist request
2435 * @requestId: request identifier
2436 * @sessionId: session identifier
2437 * @lost_ap_sample_size: number of samples to confirm AP loss
2438 * @numAp: Number of hotlist APs
2439 * @ap: hotlist APs
2440 */
2441struct ext_scan_setbssi_hotlist_params {
2442 uint32_t requestId;
2443 uint8_t sessionId;
2444
2445 uint32_t lost_ap_sample_size;
2446 uint32_t numAp;
2447 struct ap_threshold_params ap[WMI_WLAN_EXTSCAN_MAX_HOTLIST_APS];
2448};
Govind Singh3ddda1f2016-03-09 11:34:12 +05302449#endif /* _WMI_UNIFIED_PARAM_H_ */
2450