blob: 85ad42992f84be540707046551c1b39abf27070d [file] [log] [blame]
Govind Singh3ddda1f2016-03-09 11:34:12 +05301/*
Nachiket Kukadee42cd4b2017-12-20 17:28:29 +05302 * Copyright (c) 2016-2018 The Linux Foundation. All rights reserved.
Govind Singh3ddda1f2016-03-09 11:34:12 +05303 *
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_
Padma, Santhosh Kumar73524052016-09-11 18:24:59 +053035
Om Prakash Tripathi91452bf2017-02-25 15:53:30 +053036#include <wlan_scan_public_structs.h>
Frank Liu0ba573b2017-03-15 17:51:43 +080037#ifdef CONVERGED_TDLS_ENABLE
38#include <wlan_tdls_public_structs.h>
39#endif
Om Prakash Tripathi91452bf2017-02-25 15:53:30 +053040
Padma, Santhosh Kumar73524052016-09-11 18:24:59 +053041#define MAC_MAX_KEY_LENGTH 32
42#define MAC_PN_LENGTH 8
43#define MAX_MAC_HEADER_LEN 32
44#define MIN_MAC_HEADER_LEN 24
45#define QOS_CONTROL_LEN 2
46
Govind Singh3ddda1f2016-03-09 11:34:12 +053047#define IEEE80211_ADDR_LEN 6 /* size of 802.11 address */
Govind Singh3ddda1f2016-03-09 11:34:12 +053048#define WMI_MAC_MAX_SSID_LENGTH 32
49#define WMI_SCAN_MAX_NUM_SSID 0x0A
50#define mgmt_tx_dl_frm_len 64
51#define WMI_SMPS_MASK_LOWER_16BITS 0xFF
52#define WMI_SMPS_MASK_UPPER_3BITS 0x7
53#define WMI_SMPS_PARAM_VALUE_S 29
Govind Singhae855362016-03-07 14:24:22 +053054#define WMI_MAX_NUM_ARGS 8
Govind Singhe7b800c2016-03-01 15:30:53 +053055/* The size of the utc time in bytes. */
56#define WMI_SIZE_UTC_TIME (10)
57/* The size of the utc time error in bytes. */
58#define WMI_SIZE_UTC_TIME_ERROR (5)
Govind Singh9bad0002016-03-01 15:54:59 +053059#define WMI_MCC_MIN_CHANNEL_QUOTA 20
60#define WMI_MCC_MAX_CHANNEL_QUOTA 80
61#define WMI_MCC_MIN_NON_ZERO_CHANNEL_LATENCY 30
62#define WMI_BEACON_TX_BUFFER_SIZE (512)
63#define WMI_WIFI_SCANNING_MAC_OUI_LENGTH 3
64#define WMI_EXTSCAN_MAX_SIGNIFICANT_CHANGE_APS 64
65#define WMI_RSSI_THOLD_DEFAULT -300
66#define WMI_NLO_FREQ_THRESH 1000
67#define WMI_SEC_TO_MSEC(sec) (sec * 1000)
68#define WMI_MSEC_TO_USEC(msec) (msec * 1000)
69#define WMI_ETH_LEN 64
70#define WMI_QOS_NUM_TSPEC_MAX 2
71#define WMI_QOS_NUM_AC_MAX 4
Govind Singhae855362016-03-07 14:24:22 +053072#define WMI_IPV4_ADDR_LEN 4
73#define WMI_KEEP_ALIVE_NULL_PKT 1
74#define WMI_KEEP_ALIVE_UNSOLICIT_ARP_RSP 2
Himanshu Agarwal9efd9bf2016-03-09 18:49:18 +053075#define WMI_MAC_MAX_KEY_LENGTH 32
Himanshu Agarwal5f2d0482016-03-09 15:25:44 +053076#define WMI_KRK_KEY_LEN 16
77#ifdef WLAN_FEATURE_ROAM_OFFLOAD
78#define WMI_BTK_KEY_LEN 32
79#define WMI_ROAM_R0KH_ID_MAX_LEN 48
80#define WMI_ROAM_SCAN_PSK_SIZE 32
81#endif
82#define WMI_NOISE_FLOOR_DBM_DEFAULT (-96)
Govind Singhae855362016-03-07 14:24:22 +053083#define WMI_EXTSCAN_MAX_HOTLIST_SSIDS 8
84#define WMI_ROAM_MAX_CHANNELS 80
Govind Singhd7468a52016-03-09 14:32:57 +053085#ifdef FEATURE_WLAN_EXTSCAN
86#define WMI_MAX_EXTSCAN_MSG_SIZE 1536
87#define WMI_EXTSCAN_REST_TIME 100
88#define WMI_EXTSCAN_MAX_SCAN_TIME 50000
89#define WMI_EXTSCAN_BURST_DURATION 150
90#endif
91#define WMI_SCAN_NPROBES_DEFAULT (2)
92#define WMI_SEC_TO_MSEC(sec) (sec * 1000) /* sec to msec */
93#define WMI_MSEC_TO_USEC(msec) (msec * 1000) /* msec to usec */
94#define WMI_NLO_FREQ_THRESH 1000 /* in MHz */
Govind Singh89727882016-04-15 13:58:27 +053095
Varun Reddy Yeturu1aa91d92017-08-20 13:41:02 -070096#define WMI_SVC_MSG_MAX_SIZE 1536
Govind Singh89727882016-04-15 13:58:27 +053097#define MAX_UTF_EVENT_LENGTH 2048
98#define MAX_WMI_UTF_LEN 252
99#define MAX_WMI_QVIT_LEN 252
100#define THERMAL_LEVELS 4
101#define WMI_HOST_BCN_FLT_MAX_SUPPORTED_IES 256
102#define WMI_HOST_BCN_FLT_MAX_ELEMS_IE_LIST \
103 (WMI_HOST_BCN_FLT_MAX_SUPPORTED_IES/32)
104#define LTEU_MAX_BINS 10
105#define ATF_ACTIVED_MAX_CLIENTS 50
106#define ATF_ACTIVED_MAX_ATFGROUPS 8
107#define CTL_5G_SIZE 1536
108#define CTL_2G_SIZE 684
109#define MAX_CTL_SIZE (CTL_5G_SIZE > CTL_2G_SIZE ? CTL_5G_SIZE : CTL_2G_SIZE)
110#define IEEE80211_MICBUF_SIZE (8+8)
111#define IEEE80211_TID_SIZE 17
112#define WME_NUM_AC 4
113#define SMART_ANT_MODE_SERIAL 0
114#define SMART_ANT_MODE_PARALLEL 1
115#define IEEE80211_WEP_NKID 4 /* number of key ids */
116#define WPI_IV_LEN 16
117#define WMI_SCAN_MAX_NUM_BSSID 10
118#define MAX_CHANS 1023
119#define TARGET_OEM_CONFIGURE_LCI 0x0A
120#define RTT_LCI_ALTITUDE_MASK 0x3FFFFFFF
121#define TARGET_OEM_CONFIGURE_LCR 0x09
122#define RTT_TIMEOUT_MS 180
123#define MAX_SUPPORTED_RATES 128
124#define WMI_HOST_MAX_BUFFER_SIZE 1712
Govind Singh41da3152016-05-06 20:20:25 +0530125#define WMI_HAL_MAX_SANTENNA 4
Sathish Kumar7e2eaed2016-11-14 17:44:29 +0530126#define WMI_HOST_PDEV_VI_PRIORITY_BIT (1<<2)
127#define WMI_HOST_PDEV_BEACON_PRIORITY_BIT (1<<4)
128#define WMI_HOST_PDEV_MGMT_PRIORITY_BIT (1<<5)
Govind Singh89727882016-04-15 13:58:27 +0530129
Govind Singhec1401a2016-07-08 19:00:56 +0530130#define FIPS_ALIGN 4
Kiran Venkatappa9f5fcc02016-12-29 22:07:14 +0530131#define FIPS_ALIGNTO(__addr, __to) \
132 ((((unsigned long int)(__addr)) + (__to) - 1) & ~((__to) - 1))
133#define FIPS_IS_ALIGNED(__addr, __to) \
134 (!(((unsigned long int)(__addr)) & ((__to)-1)))
Govind Singhec1401a2016-07-08 19:00:56 +0530135
Sathish Kumardcc75292017-03-01 14:02:36 +0530136#define WMI_HOST_MAX_SERIAL_ANTENNA 2
137#define WMI_SMART_ANT_MAX_RATE_SERIES 2
138
Govind Singh89727882016-04-15 13:58:27 +0530139#define WMI_HOST_F_MS(_v, _f) \
140 (((_v) & (_f)) >> (_f##_S))
141
142#define WMI_HOST_F_RMW(_var, _v, _f) \
143 do { \
144 (_var) &= ~(_f); \
145 (_var) |= (((_v) << (_f##_S)) & (_f)); \
146 } while (0)
147
Sathish Kumar7e2eaed2016-11-14 17:44:29 +0530148/* vdev capabilities bit mask */
149#define WMI_HOST_VDEV_BEACON_SUPPORT 0x1
150#define WMI_HOST_VDEV_WDS_LRN_ENABLED 0x2
151#define WMI_HOST_VDEV_VOW_ENABLED 0x4
152#define WMI_HOST_VDEV_IS_BEACON_SUPPORTED(param) \
153 ((param) & WMI_HOST_VDEV_BEACON_SUPPORT)
154#define WMI_HOST_VDEV_IS_WDS_LRN_ENABLED(param) \
155 ((param) & WMI_HOST_VDEV_WDS_LRN_ENABLED)
156#define WMI_HOST_VDEV_IS_VOW_ENABLED(param) \
157 ((param) & WMI_HOST_VDEV_VOW_ENABLED)
158
Govind Singh89727882016-04-15 13:58:27 +0530159/* TXBF capabilities masks */
160#define WMI_HOST_TXBF_CONF_SU_TX_BFEE_S 0
161#define WMI_HOST_TXBF_CONF_SU_TX_BFEE_M 0x1
162#define WMI_HOST_TXBF_CONF_SU_TX_BFEE \
163 (WMI_HOST_TXBF_CONF_SU_TX_BFEE_M << WMI_HOST_TXBF_CONF_SU_TX_BFEE_S)
164#define WMI_HOST_TXBF_CONF_SU_TX_BFEE_GET(x) \
165 WMI_HOST_F_MS(x, WMI_HOST_TXBF_CONF_SU_TX_BFEE)
166#define WMI_HOST_TXBF_CONF_SU_TX_BFEE_SET(x, z) \
167 WMI_HOST_F_RMW(x, z, WMI_HOST_TXBF_CONF_SU_TX_BFEE)
168
Gyanranjan Hazarika0378c0e2017-10-13 16:04:39 -0700169
Govind Singh89727882016-04-15 13:58:27 +0530170#define WMI_HOST_TXBF_CONF_MU_TX_BFEE_S 1
171#define WMI_HOST_TXBF_CONF_MU_TX_BFEE_M 0x1
172#define WMI_HOST_TXBF_CONF_MU_TX_BFEE \
173 (WMI_HOST_TXBF_CONF_MU_TX_BFEE_M << WMI_HOST_TXBF_CONF_MU_TX_BFEE_S)
174#define WMI_HOST_TXBF_CONF_MU_TX_BFEE_GET(x) \
175 WMI_HOST_F_MS(x, WMI_HOST_TXBF_CONF_MU_TX_BFEE)
176#define WMI_HOST_TXBF_CONF_MU_TX_BFEE_SET(x, z) \
177 WMI_HOST_F_RMW(x, z, WMI_HOST_TXBF_CONF_MU_TX_BFEE)
178
179#define WMI_HOST_TXBF_CONF_SU_TX_BFER_S 2
180#define WMI_HOST_TXBF_CONF_SU_TX_BFER_M 0x1
181#define WMI_HOST_TXBF_CONF_SU_TX_BFER \
182 (WMI_HOST_TXBF_CONF_SU_TX_BFER_M << WMI_HOST_TXBF_CONF_SU_TX_BFER_S)
183#define WMI_HOST_TXBF_CONF_SU_TX_BFER_GET(x) \
184 WMI_HOST_F_MS(x, WMI_HOST_TXBF_CONF_SU_TX_BFER)
185#define WMI_HOST_TXBF_CONF_SU_TX_BFER_SET(x, z) \
186 WMI_HOST_F_RMW(x, z, WMI_HOST_TXBF_CONF_SU_TX_BFER)
187
188#define WMI_HOST_TXBF_CONF_MU_TX_BFER_S 3
189#define WMI_HOST_TXBF_CONF_MU_TX_BFER_M 0x1
190#define WMI_HOST_TXBF_CONF_MU_TX_BFER \
191 (WMI_HOST_TXBF_CONF_MU_TX_BFER_M << WMI_HOST_TXBF_CONF_MU_TX_BFER_S)
192#define WMI_HOST_TXBF_CONF_MU_TX_BFER_GET(x) \
193 WMI_HOST_F_MS(x, WMI_HOST_TXBF_CONF_MU_TX_BFER)
194#define WMI_HOST_TXBF_CONF_MU_TX_BFER_SET(x, z) \
195 WMI_HOST_F_RMW(x, z, WMI_HOST_TXBF_CONF_MU_TX_BFER)
196
197#define WMI_HOST_TXBF_CONF_STS_CAP_S 4
198#define WMI_HOST_TXBF_CONF_STS_CAP_M 0x7
199#define WMI_HOST_TXBF_CONF_STS_CAP \
200 (WMI_HOST_TXBF_CONF_STS_CAP_M << WMI_HOST_TXBF_CONF_STS_CAP_S)
201#define WMI_HOST_TXBF_CONF_STS_CAP_GET(x) \
202 WMI_HOST_F_MS(x, WMI_HOST_TXBF_CONF_STS_CAP);
203#define WMI_HOST_TXBF_CONF_STS_CAP_SET(x, z) \
204 WMI_HOST_F_RMW(x, z, WMI_HOST_TXBF_CONF_STS_CAP)
205
206#define WMI_HOST_TXBF_CONF_IMPLICIT_BF_S 7
207#define WMI_HOST_TXBF_CONF_IMPLICIT_BF_M 0x1
208#define WMI_HOST_TXBF_CONF_IMPLICIT_BF \
209 (WMI_HOST_TXBF_CONF_IMPLICIT_BF_M << WMI_HOST_TXBF_CONF_IMPLICIT_BF_S)
210#define WMI_HOST_TXBF_CONF_IMPLICIT_BF_GET(x) \
211 WMI_HOST_F_MS(x, WMI_HOST_TXBF_CONF_IMPLICIT_BF)
212#define WMI_HOST_TXBF_CONF_IMPLICIT_BF_SET(x, z) \
213 WMI_HOST_F_RMW(x, z, WMI_HOST_TXBF_CONF_IMPLICIT_BF)
214
215#define WMI_HOST_TXBF_CONF_BF_SND_DIM_S 8
216#define WMI_HOST_TXBF_CONF_BF_SND_DIM_M 0x7
217#define WMI_HOST_TXBF_CONF_BF_SND_DIM \
218 (WMI_HOST_TXBF_CONF_BF_SND_DIM_M << WMI_HOST_TXBF_CONF_BF_SND_DIM_S)
219#define WMI_HOST_TXBF_CONF_BF_SND_DIM_GET(x) \
220 WMI_HOST_F_MS(x, WMI_HOST_TXBF_CONF_BF_SND_DIM)
221#define WMI_HOST_TXBF_CONF_BF_SND_DIM_SET(x, z) \
222 WMI_HOST_F_RMW(x, z, WMI_HOST_TXBF_CONF_BF_SND_DIM)
223
Gyanranjan Hazarika0378c0e2017-10-13 16:04:39 -0700224/* HE BF capabilities mask */
225#define WMI_HOST_HE_BF_CONF_SU_BFEE_S 0
226#define WMI_HOST_HE_BF_CONF_SU_BFEE_M 0x1
227#define WMI_HOST_HE_BF_CONF_SU_BFEE \
228 (WMI_HOST_HE_BF_CONF_SU_BFEE_M << WMI_HOST_HE_BF_CONF_SU_BFEE_S)
229#define WMI_HOST_HE_BF_CONF_SU_BFEE_GET(x) \
230 WMI_HOST_F_MS(x, WMI_HOST_HE_BF_CONF_SU_BFEE)
231#define WMI_HOST_HE_BF_CONF_SU_BFEE_SET(x, z) \
232 WMI_HOST_F_RMW(x, z, WMI_HOST_HE_BF_CONF_SU_BFEE)
233
234#define WMI_HOST_HE_BF_CONF_SU_BFER_S 1
235#define WMI_HOST_HE_BF_CONF_SU_BFER_M 0x1
236#define WMI_HOST_HE_BF_CONF_SU_BFER \
237 (WMI_HOST_HE_BF_CONF_SU_BFER_M << WMI_HOST_HE_BF_CONF_SU_BFER_S)
238#define WMI_HOST_HE_BF_CONF_SU_BFER_GET(x) \
239 WMI_HOST_F_MS(x, WMI_HOST_HE_BF_CONF_SU_BFER)
240#define WMI_HOST_HE_BF_CONF_SU_BFER_SET(x, z) \
241 WMI_HOST_F_RMW(x, z, WMI_HOST_HE_BF_CONF_SU_BFER)
242
243#define WMI_HOST_HE_BF_CONF_MU_BFEE_S 2
244#define WMI_HOST_HE_BF_CONF_MU_BFEE_M 0x1
245#define WMI_HOST_HE_BF_CONF_MU_BFEE \
246 (WMI_HOST_HE_BF_CONF_MU_BFEE_M << WMI_HOST_HE_BF_CONF_MU_BFEE_S)
247#define WMI_HOST_HE_BF_CONF_MU_BFEE_GET(x) \
248 WMI_HOST_F_MS(x, WMI_HOST_HE_BF_CONF_MU_BFEE)
249#define WMI_HOST_HE_BF_CONF_MU_BFEE_SET(x, z) \
250 WMI_HOST_F_RMW(x, z, WMI_HOST_HE_BF_CONF_MU_BFEE)
251
252#define WMI_HOST_HE_BF_CONF_MU_BFER_S 3
253#define WMI_HOST_HE_BF_CONF_MU_BFER_M 0x1
254#define WMI_HOST_HE_BF_CONF_MU_BFER \
255 (WMI_HOST_HE_BF_CONF_MU_BFER_M << WMI_HOST_HE_BF_CONF_MU_BFER_S)
256#define WMI_HOST_HE_BF_CONF_MU_BFER_GET(x) \
257 WMI_HOST_F_MS(x, WMI_HOST_HE_BF_CONF_MU_BFER)
258#define WMI_HOST_HE_BF_CONF_MU_BFER_SET(x, z) \
259 WMI_HOST_F_RMW(x, z, WMI_HOST_HE_BF_CONF_MU_BFER)
260
261#define WMI_HOST_HE_BF_CONF_DL_OFDMA_S 4
262#define WMI_HOST_HE_BF_CONF_DL_OFDMA_M 0x1
263#define WMI_HOST_HE_BF_CONF_DL_OFDMA \
264 (WMI_HOST_HE_BF_CONF_DL_OFDMA_M << WMI_HOST_HE_BF_CONF_DL_OFDMA_S)
265#define WMI_HOST_HE_BF_CONF_DL_OFDMA_GET(x) \
266 WMI_HOST_F_MS(x, WMI_HOST_HE_BF_CONF_DL_OFDMA)
267#define WMI_HOST_HE_BF_CONF_DL_OFDMA_SET(x, z) \
268 WMI_HOST_F_RMW(x, z, WMI_HOST_HE_BF_CONF_DL_OFDMA)
269
270#define WMI_HOST_HE_BF_CONF_UL_OFDMA_S 5
271#define WMI_HOST_HE_BF_CONF_UL_OFDMA_M 0x1
272#define WMI_HOST_HE_BF_CONF_UL_OFDMA \
273 (WMI_HOST_HE_BF_CONF_UL_OFDMA_M << WMI_HOST_HE_BF_CONF_UL_OFDMA_S)
274#define WMI_HOST_HE_BF_CONF_UL_OFDMA_GET(x) \
275 WMI_HOST_F_MS(x, WMI_HOST_HE_BF_CONF_UL_OFDMA)
276#define WMI_HOST_HE_BF_CONF_UL_OFDMA_SET(x, z) \
277 WMI_HOST_F_RMW(x, z, WMI_HOST_HE_BF_CONF_UL_OFDMA)
278
279#define WMI_HOST_HE_BF_CONF_UL_MUMIMO_S 6
280#define WMI_HOST_HE_BF_CONF_UL_MUMIMO_M 0x1
281#define WMI_HOST_HE_BF_CONF_UL_MUMIMO \
282 (WMI_HOST_HE_BF_CONF_UL_MUMIMO_M << WMI_HOST_HE_BF_CONF_UL_MUMIMO_S)
283#define WMI_HOST_HE_BF_CONF_UL_MUMIMO_GET(x) \
284 WMI_HOST_F_MS(x, WMI_HOST_HE_BF_CONF_UL_MUMIMO)
285#define WMI_HOST_HE_BF_CONF_UL_MUMIMO_SET(x, z) \
286 WMI_HOST_F_RMW(x, z, WMI_HOST_HE_BF_CONF_UL_MUMIMO)
287
Govind Singh89727882016-04-15 13:58:27 +0530288#define WMI_HOST_TPC_RATE_MAX 160
289#define WMI_HOST_TPC_TX_NUM_CHAIN 4
290#define WMI_HOST_RXG_CAL_CHAN_MAX 4
291#define WMI_HOST_MAX_NUM_CHAINS 4
Poddar, Siddarth794b9962016-04-28 15:49:11 +0530292#define WMI_MAX_NUM_OF_RATE_THRESH 4
Govind Singh89727882016-04-15 13:58:27 +0530293
Sathish Kumar907a7462017-02-27 10:35:40 +0530294#define WMI_HOST_PDEV_MAX_VDEVS 17
295
Sathish Kumardcc75292017-03-01 14:02:36 +0530296/* for QC98XX only */
297/*6 modes (A, HT20, HT40, VHT20, VHT40, VHT80) * 3 reg dommains
298 */
299#define WMI_HOST_NUM_CTLS_5G 18
300/*6 modes (B, G, HT20, HT40, VHT20, VHT40) * 3 reg domains */
301#define WMI_HOST_NUM_CTLS_2G 18
302#define WMI_HOST_NUM_BAND_EDGES_5G 8
303#define WMI_HOST_NUM_BAND_EDGES_2G 4
304
305/*Beelinier 5G*/
306#define WMI_HOST_NUM_CTLS_5G_11A 9
307#define WMI_HOST_NUM_BAND_EDGES_5G_11A 25
308#define WMI_HOST_NUM_CTLS_5G_HT20 24
309#define WMI_HOST_NUM_BAND_EDGES_5G_HT20 25
310#define WMI_HOST_NUM_CTLS_5G_HT40 18
311#define WMI_HOST_NUM_BAND_EDGES_5G_HT40 12
312#define WMI_HOST_NUM_CTLS_5G_HT80 18
313#define WMI_HOST_NUM_BAND_EDGES_5G_HT80 6
314#define WMI_HOST_NUM_CTLS_5G_HT160 9
315#define WMI_HOST_NUM_BAND_EDGES_5G_HT160 2
316
317/* Beeliner 2G */
318#define WMI_HOST_NUM_CTLS_2G_11B 6
319#define WMI_HOST_NUM_BAND_EDGES_2G_11B 9
320#define WMI_HOST_NUM_CTLS_2G_20MHZ 30
321#define WMI_HOST_NUM_BAND_EDGES_2G_20MHZ 11
322#define WMI_HOST_NUM_CTLS_2G_40MHZ 18
323#define WMI_HOST_NUM_BAND_EDGES_2G_40MHZ 6
324
325/* for QC98XX only */
326#define WMI_HOST_TX_NUM_CHAIN 0x3
327#define WMI_HOST_TPC_REGINDEX_MAX 4
328#define WMI_HOST_ARRAY_GAIN_NUM_STREAMS 2
329
Himanshu Agarwal7e4f4bc2016-03-09 16:49:38 +0530330#include "qdf_atomic.h"
Govind Singhd7468a52016-03-09 14:32:57 +0530331
Govind Singh89727882016-04-15 13:58:27 +0530332#ifdef BIG_ENDIAN_HOST
333 /* This API is used in copying in elements to WMI message,
334 since WMI message uses multilpes of 4 bytes, This API
335 converts length into multiples of 4 bytes, and performs copy
336 */
337#define WMI_HOST_IF_MSG_COPY_CHAR_ARRAY(destp, srcp, len) do { \
338 int j; \
339 u_int32_t *src, *dest; \
340 src = (u_int32_t *)srcp; \
341 dest = (u_int32_t *)destp; \
342 for (j = 0; j < roundup(len, sizeof(u_int32_t))/4; j++) { \
343 *(dest+j) = qdf_le32_to_cpu(*(src+j)); \
344 } \
345} while (0)
346#else
347
348#define WMI_HOST_IF_MSG_COPY_CHAR_ARRAY(destp, srcp, len) OS_MEMCPY(destp,\
349 srcp, len)
350
351#endif
352
353/** macro to convert MAC address from WMI word format to char array */
354#define WMI_HOST_MAC_ADDR_TO_CHAR_ARRAY(pwmi_mac_addr, c_macaddr) do { \
355 (c_macaddr)[0] = ((pwmi_mac_addr)->mac_addr31to0) & 0xff; \
356 (c_macaddr)[1] = (((pwmi_mac_addr)->mac_addr31to0) >> 8) & 0xff; \
357 (c_macaddr)[2] = (((pwmi_mac_addr)->mac_addr31to0) >> 16) & 0xff; \
358 (c_macaddr)[3] = (((pwmi_mac_addr)->mac_addr31to0) >> 24) & 0xff; \
359 (c_macaddr)[4] = ((pwmi_mac_addr)->mac_addr47to32) & 0xff; \
360 (c_macaddr)[5] = (((pwmi_mac_addr)->mac_addr47to32) >> 8) & 0xff; \
361 } while (0)
362
363#define TARGET_INIT_STATUS_SUCCESS 0x0
364#define TARGET_INIT_STATUS_GEN_FAILED 0x1
365#define TARGET_GET_INIT_STATUS_REASON(status) ((status) & 0xffff)
366#define TARGET_GET_INIT_STATUS_MODULE_ID(status) (((status) >> 16) & 0xffff)
Selvaraj, Sridhar0a1427f2016-07-04 21:40:23 +0530367
368#define MAX_ASSOC_IE_LENGTH 1024
Govind Singh89727882016-04-15 13:58:27 +0530369typedef uint32_t TARGET_INIT_STATUS;
370
Govind Singh33aab8e2017-03-21 12:49:10 +0530371/**
372 * @brief Opaque handle of wmi structure
373 */
374struct wmi_unified;
375typedef struct wmi_unified *wmi_unified_t;
376
377typedef void *ol_scn_t;
378/**
379 * @wmi_event_handler function prototype
380 */
381typedef int (*wmi_unified_event_handler)(ol_scn_t scn_handle,
382 uint8_t *event_buf, uint32_t len);
383
Govind Singh89727882016-04-15 13:58:27 +0530384typedef enum {
385 WMI_HOST_MODE_11A = 0, /* 11a Mode */
386 WMI_HOST_MODE_11G = 1, /* 11b/g Mode */
387 WMI_HOST_MODE_11B = 2, /* 11b Mode */
388 WMI_HOST_MODE_11GONLY = 3, /* 11g only Mode */
389 WMI_HOST_MODE_11NA_HT20 = 4, /* 11a HT20 mode */
390 WMI_HOST_MODE_11NG_HT20 = 5, /* 11g HT20 mode */
391 WMI_HOST_MODE_11NA_HT40 = 6, /* 11a HT40 mode */
392 WMI_HOST_MODE_11NG_HT40 = 7, /* 11g HT40 mode */
393 WMI_HOST_MODE_11AC_VHT20 = 8,
394 WMI_HOST_MODE_11AC_VHT40 = 9,
395 WMI_HOST_MODE_11AC_VHT80 = 10,
396 WMI_HOST_MODE_11AC_VHT20_2G = 11,
397 WMI_HOST_MODE_11AC_VHT40_2G = 12,
398 WMI_HOST_MODE_11AC_VHT80_2G = 13,
399 WMI_HOST_MODE_11AC_VHT80_80 = 14,
400 WMI_HOST_MODE_11AC_VHT160 = 15,
Krishna Raoc5a97ba2017-01-12 18:05:02 +0530401 WMI_HOST_MODE_11AX_HE20 = 16,
402 WMI_HOST_MODE_11AX_HE40 = 17,
403 WMI_HOST_MODE_11AX_HE80 = 18,
404 WMI_HOST_MODE_11AX_HE80_80 = 19,
405 WMI_HOST_MODE_11AX_HE160 = 20,
406 WMI_HOST_MODE_11AX_HE20_2G = 21,
407 WMI_HOST_MODE_11AX_HE40_2G = 22,
408 WMI_HOST_MODE_11AX_HE80_2G = 23,
409 WMI_HOST_MODE_UNKNOWN = 24,
410 WMI_HOST_MODE_MAX = 24
Govind Singh89727882016-04-15 13:58:27 +0530411} WMI_HOST_WLAN_PHY_MODE;
412
Sathish Kumar753eb7d2016-10-25 18:47:52 +0530413typedef enum {
414 WMI_HOST_VDEV_START_OK = 0,
415 WMI_HOST_VDEV_START_CHAN_INVALID,
416} WMI_HOST_VDEV_START_STATUS;
417
418/*
419 * Needs to be removed and use channel_param based
420 * on how it is processed
421 */
422typedef struct {
423 /** primary 20 MHz channel frequency in mhz */
424 uint32_t mhz;
425 /** Center frequency 1 in MHz*/
426 uint32_t band_center_freq1;
427 /** Center frequency 2 in MHz - valid only for 11acvht 80plus80 mode*/
428 uint32_t band_center_freq2;
429 /** channel info described below */
430 uint32_t info;
431 /** contains min power, max power, reg power and reg class id. */
432 uint32_t reg_info_1;
433 /** contains antennamax */
434 uint32_t reg_info_2;
435} wmi_host_channel;
Govind Singh89727882016-04-15 13:58:27 +0530436
Gupta, Kapil7b768002016-04-25 19:14:19 +0530437/**
Pratik Gandhi74ff2e52017-01-05 19:38:41 +0530438 * enum WMI_HOST_REGDMN_MODE:
439 * @WMI_HOST_REGDMN_MODE_11A: 11a channels
440 * @WMI_HOST_REGDMN_MODE_TURBO: 11a turbo-only channels
441 * @WMI_HOST_REGDMN_MODE_11B: 11b channels
442 * @WMI_HOST_REGDMN_MODE_PUREG: 11g channels (OFDM only)
443 * @WMI_HOST_REGDMN_MODE_11G: historical
444 * @WMI_HOST_REGDMN_MODE_108G: 11g+Turbo channels
445 * @WMI_HOST_REGDMN_MODE_108A: 11a+Turbo channels
446 * @WMI_HOST_REGDMN_MODE_XR: XR channels
447 * @WMI_HOST_REGDMN_MODE_11A_HALF_RATE: 11a half rate channels
448 * @WMI_HOST_REGDMN_MODE_11A_QUARTER_RATE: 11a quarter rate channels
449 * @WMI_HOST_REGDMN_MODE_11NG_HT20: 11ng HT20 channels
450 * @WMI_HOST_REGDMN_MODE_11NA_HT20: 11na HT20 channels
451 * @WMI_HOST_REGDMN_MODE_11NG_HT40PLUS: 11ng HT40+ channels
452 * @WMI_HOST_REGDMN_MODE_11NG_HT40MINUS: 11ng HT40- channels
453 * @WMI_HOST_REGDMN_MODE_11NA_HT40PLUS: 11na HT40+ channels
454 * @WMI_HOST_REGDMN_MODE_11NA_HT40MINUS: 11na HT40- channels
455 * @WMI_HOST_REGDMN_MODE_11AC_VHT20: 5GHz, VHT20
456 * @WMI_HOST_REGDMN_MODE_11AC_VHT40PLUS: 5GHz, VHT40+ channels
457 * @WMI_HOST_REGDMN_MODE_11AC_VHT40MINUS: 5GHz, VHT40- channels
458 * @WMI_HOST_REGDMN_MODE_11AC_VHT80: 5GHz, VHT80 channels
459 * @WMI_HOST_REGDMN_MODE_11AC_VHT160: 5GHz, VHT160 channels
460 * @WMI_HOST_REGDMN_MODE_11AC_VHT80_80: 5GHz, VHT80+80 channels
461 * @WMI_HOST_REGDMN_MODE_11AXG_HE20: 11ax 2.4GHz, HE20 channels
462 * @WMI_HOST_REGDMN_MODE_11AXA_HE20: 11ax 5GHz, HE20 channels
463 * @WMI_HOST_REGDMN_MODE_11AXG_HE40PLUS: 11ax 2.4GHz, HE40+ channels
464 * @WMI_HOST_REGDMN_MODE_11AXG_HE40MINUS: 11ax 2.4GHz, HE40- channels
465 * @WMI_HOST_REGDMN_MODE_11AXA_HE40PLUS: 11ax 5GHz, HE40+ channels
466 * @WMI_HOST_REGDMN_MODE_11AXA_HE40MINUS: 11ax 5GHz, HE40- channels
467 * @WMI_HOST_REGDMN_MODE_11AXA_HE80: 11ax 5GHz, HE80 channels
468 * @WMI_HOST_REGDMN_MODE_11AXA_HE160: 11ax 5GHz, HE160 channels
469 * @WMI_HOST_REGDMN_MODE_11AXA_HE80_80: 11ax 5GHz, HE80+80 channels
470 */
471typedef enum {
472 WMI_HOST_REGDMN_MODE_11A = 0x00000001,
473 WMI_HOST_REGDMN_MODE_TURBO = 0x00000002,
474 WMI_HOST_REGDMN_MODE_11B = 0x00000004,
475 WMI_HOST_REGDMN_MODE_PUREG = 0x00000008,
476 WMI_HOST_REGDMN_MODE_11G = 0x00000008,
477 WMI_HOST_REGDMN_MODE_108G = 0x00000020,
478 WMI_HOST_REGDMN_MODE_108A = 0x00000040,
479 WMI_HOST_REGDMN_MODE_XR = 0x00000100,
480 WMI_HOST_REGDMN_MODE_11A_HALF_RATE = 0x00000200,
481 WMI_HOST_REGDMN_MODE_11A_QUARTER_RATE = 0x00000400,
482 WMI_HOST_REGDMN_MODE_11NG_HT20 = 0x00000800,
483 WMI_HOST_REGDMN_MODE_11NA_HT20 = 0x00001000,
484 WMI_HOST_REGDMN_MODE_11NG_HT40PLUS = 0x00002000,
485 WMI_HOST_REGDMN_MODE_11NG_HT40MINUS = 0x00004000,
486 WMI_HOST_REGDMN_MODE_11NA_HT40PLUS = 0x00008000,
487 WMI_HOST_REGDMN_MODE_11NA_HT40MINUS = 0x00010000,
488 WMI_HOST_REGDMN_MODE_11AC_VHT20 = 0x00020000,
489 WMI_HOST_REGDMN_MODE_11AC_VHT40PLUS = 0x00040000,
490 WMI_HOST_REGDMN_MODE_11AC_VHT40MINUS = 0x00080000,
491 WMI_HOST_REGDMN_MODE_11AC_VHT80 = 0x00100000,
492 WMI_HOST_REGDMN_MODE_11AC_VHT160 = 0x00200000,
493 WMI_HOST_REGDMN_MODE_11AC_VHT80_80 = 0x00400000,
494 WMI_HOST_REGDMN_MODE_11AXG_HE20 = 0x00800000,
495 WMI_HOST_REGDMN_MODE_11AXA_HE20 = 0x01000000,
496 WMI_HOST_REGDMN_MODE_11AXG_HE40PLUS = 0x02000000,
497 WMI_HOST_REGDMN_MODE_11AXG_HE40MINUS = 0x04000000,
498 WMI_HOST_REGDMN_MODE_11AXA_HE40PLUS = 0x08000000,
499 WMI_HOST_REGDMN_MODE_11AXA_HE40MINUS = 0x10000000,
500 WMI_HOST_REGDMN_MODE_11AXA_HE80 = 0x20000000,
501 WMI_HOST_REGDMN_MODE_11AXA_HE160 = 0x40000000,
502 WMI_HOST_REGDMN_MODE_11AXA_HE80_80 = 0x80000000,
503 WMI_HOST_REGDMN_MODE_ALL = 0xffffffff
504} WMI_HOST_REGDMN_MODE;
505
506/**
Krishna Rao7462a8a2017-02-13 15:14:11 +0530507 * enum WMI_HOST_WLAN_BAND_CAPABILITY: Band capability (2.4 GHz, 5 GHz). Maps to
508 * WLAN_BAND_CAPABILITY used in firmware header file(s).
509 * @WMI_HOST_WLAN_2G_CAPABILITY: 2.4 GHz capable
510 * @WMI_HOST_WLAN_5G_CAPABILITY: 5 GHz capable
511 */
512typedef enum {
513 WMI_HOST_WLAN_2G_CAPABILITY = 0x1,
514 WMI_HOST_WLAN_5G_CAPABILITY = 0x2,
515} WMI_HOST_WLAN_BAND_CAPABILITY;
516
517/**
518 * enum wmi_host_channel_width: Channel operating width. Maps to
519 * wmi_channel_width used in firmware header file(s).
520 * @WMI_HOST_CHAN_WIDTH_20: 20 MHz channel operating width
521 * @WMI_HOST_CHAN_WIDTH_40: 40 MHz channel operating width
522 * @WMI_HOST_CHAN_WIDTH_80: 80 MHz channel operating width
523 * @WMI_HOST_CHAN_WIDTH_160: 160 MHz channel operating width
524 * @WMI_HOST_CHAN_WIDTH_80P80: 80+80 MHz channel operating width
525 * @WMI_HOST_CHAN_WIDTH_5: 5 MHz channel operating width
526 * @WMI_HOST_CHAN_WIDTH_10: 10 MHz channel operating width
527 */
528typedef enum {
529 WMI_HOST_CHAN_WIDTH_20 = 0,
530 WMI_HOST_CHAN_WIDTH_40 = 1,
531 WMI_HOST_CHAN_WIDTH_80 = 2,
532 WMI_HOST_CHAN_WIDTH_160 = 3,
533 WMI_HOST_CHAN_WIDTH_80P80 = 4,
534 WMI_HOST_CHAN_WIDTH_5 = 5,
535 WMI_HOST_CHAN_WIDTH_10 = 6,
536} wmi_host_channel_width;
537
538/**
Gupta, Kapil7b768002016-04-25 19:14:19 +0530539 * enum wmi_dwelltime_adaptive_mode: dwelltime_mode
540 * @WMI_DWELL_MODE_DEFAULT: Use firmware default mode
541 * @WMI_DWELL_MODE_CONSERVATIVE: Conservative adaptive mode
542 * @WMI_DWELL_MODE_MODERATE: Moderate adaptive mode
543 * @WMI_DWELL_MODE_AGGRESSIVE: Aggressive adaptive mode
544 * @WMI_DWELL_MODE_STATIC: static adaptive mode
545 */
546enum wmi_dwelltime_adaptive_mode {
547 WMI_DWELL_MODE_DEFAULT = 0,
548 WMI_DWELL_MODE_CONSERVATIVE = 1,
549 WMI_DWELL_MODE_MODERATE = 2,
550 WMI_DWELL_MODE_AGGRESSIVE = 3,
551 WMI_DWELL_MODE_STATIC = 4
552};
553
Manishekar Chandrasekaranb8c59382016-04-21 19:16:32 +0530554#define MAX_NUM_CHAN 128
555
Sathish Kumar376aebc2017-03-21 17:37:50 +0530556#define ATH_EXPONENT_TO_VALUE(v) ((1<<v)-1)
557#define ATH_TXOP_TO_US(v) (v<<5)
Govind Singhc7cd2d62016-06-21 14:33:26 +0530558/* WME stream classes */
Himanshu Agarwal56c292f2016-07-19 15:41:51 +0530559#define WMI_HOST_AC_BE 0 /* best effort */
560#define WMI_HOST_AC_BK 1 /* background */
561#define WMI_HOST_AC_VI 2 /* video */
562#define WMI_HOST_AC_VO 3 /* voice */
Govind Singhc7cd2d62016-06-21 14:33:26 +0530563#define WMI_TID_TO_AC(_tid) (\
Himanshu Agarwal56c292f2016-07-19 15:41:51 +0530564 (((_tid) == 0) || ((_tid) == 3)) ? WMI_HOST_AC_BE : \
565 (((_tid) == 1) || ((_tid) == 2)) ? WMI_HOST_AC_BK : \
566 (((_tid) == 4) || ((_tid) == 5)) ? WMI_HOST_AC_VI : \
567 WMI_HOST_AC_VO)
Govind Singhc7cd2d62016-06-21 14:33:26 +0530568
Govind Singh3ddda1f2016-03-09 11:34:12 +0530569/**
570 * struct vdev_create_params - vdev create cmd parameter
571 * @if_id: interface id
572 * @type: interface type
573 * @subtype: interface subtype
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +0530574 * @nss_2g: NSS for 2G
575 * @nss_5g: NSS for 5G
576 * @pdev_id: pdev id on pdev for this vdev
Govind Singh3ddda1f2016-03-09 11:34:12 +0530577 */
578struct vdev_create_params {
579 uint8_t if_id;
580 uint32_t type;
581 uint32_t subtype;
Kiran Kumar Lokere0ae9fb92016-05-02 12:32:27 -0700582 uint8_t nss_2g;
583 uint8_t nss_5g;
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +0530584 uint32_t pdev_id;
Govind Singh3ddda1f2016-03-09 11:34:12 +0530585};
586
587/**
588 * struct vdev_delete_params - vdev delete cmd parameter
589 * @if_id: interface id
590 */
591struct vdev_delete_params {
592 uint8_t if_id;
593};
594
595/**
Govind Singh89727882016-04-15 13:58:27 +0530596 * struct channel_param - Channel paramters with all
597 * info required by target.
598 * @chan_id: channel id
599 * @pwr: channel power
600 * @mhz: channel frequency
601 * @half_rate: is half rate
602 * @quarter_rate: is quarter rate
603 * @dfs_set: is dfs channel
604 * @dfs_set_cfreq2: is secondary freq dfs channel
605 * @is_chan_passive: is this passive channel
606 * @allow_ht: HT allowed in chan
607 * @allow_vht: VHT allowed on chan
Nandha Kishore Easwaran3f1115a2016-11-10 16:01:07 +0530608 * @set_agile: is agile mode
Govind Singh89727882016-04-15 13:58:27 +0530609 * @phy_mode: phymode (vht80 or ht40 or ...)
610 * @cfreq1: centre frequency on primary
611 * @cfreq2: centre frequency on secondary
612 * @maxpower: max power for channel
613 * @minpower: min power for channel
614 * @maxreqpower: Max regulatory power
615 * @antennamac: Max antenna
616 * @reg_class_id: Regulatory class id.
617 */
618
619struct channel_param {
620 uint8_t chan_id;
621 uint8_t pwr;
622 uint32_t mhz;
623 uint32_t half_rate:1,
624 quarter_rate:1,
625 dfs_set:1,
626 dfs_set_cfreq2:1,
627 is_chan_passive:1,
628 allow_ht:1,
Nandha Kishore Easwaran5bee1432016-10-18 10:30:14 +0530629 allow_vht:1,
Nandha Kishore Easwaran3f1115a2016-11-10 16:01:07 +0530630 set_agile:1;
Govind Singh89727882016-04-15 13:58:27 +0530631 uint32_t phy_mode;
632 uint32_t cfreq1;
633 uint32_t cfreq2;
634 int8_t maxpower;
635 int8_t minpower;
636 int8_t maxregpower;
637 uint8_t antennamax;
638 uint8_t reg_class_id;
639};
640
641/**
Govind Singh3ddda1f2016-03-09 11:34:12 +0530642 * struct vdev_stop_params - vdev stop cmd parameter
643 * @vdev_id: vdev id
644 */
645struct vdev_stop_params {
646 uint8_t vdev_id;
647};
648
649/**
650 * struct vdev_up_params - vdev up cmd parameter
651 * @vdev_id: vdev id
652 * @assoc_id: association id
653 */
654struct vdev_up_params {
655 uint8_t vdev_id;
656 uint16_t assoc_id;
657};
658
659/**
660 * struct vdev_down_params - vdev down cmd parameter
661 * @vdev_id: vdev id
662 */
663struct vdev_down_params {
664 uint8_t vdev_id;
665};
666
667/**
Himanshu Agarwal7e4f4bc2016-03-09 16:49:38 +0530668 * struct mac_ssid - mac ssid structure
669 * @length:
670 * @mac_ssid[WMI_MAC_MAX_SSID_LENGTH]:
671 */
672struct mac_ssid {
673 uint8_t length;
674 uint8_t mac_ssid[WMI_MAC_MAX_SSID_LENGTH];
675} qdf_packed;
676
677/**
Jiachao Wu40d6b112017-08-23 15:27:11 +0800678 * enum wmi_bcn_tx_rate_code - beacon tx rate code
679 */
680enum wmi_bcn_tx_rate_code {
681 WMI_BCN_TX_RATE_CODE_1_M = 0x43,
682 WMI_BCN_TX_RATE_CODE_2_M = 0x42,
683 WMI_BCN_TX_RATE_CODE_5_5_M = 0x41,
684 WMI_BCN_TX_RATE_CODE_6_M = 0x03,
685 WMI_BCN_TX_RATE_CODE_9_M = 0x07,
686 WMI_BCN_TX_RATE_CODE_11M = 0x40,
687 WMI_BCN_TX_RATE_CODE_12_M = 0x02,
688 WMI_BCN_TX_RATE_CODE_18_M = 0x06,
689 WMI_BCN_TX_RATE_CODE_24_M = 0x01,
690 WMI_BCN_TX_RATE_CODE_36_M = 0x05,
691 WMI_BCN_TX_RATE_CODE_48_M = 0x00,
692 WMI_BCN_TX_RATE_CODE_54_M = 0x04,
693};
694
695/**
Himanshu Agarwal7e4f4bc2016-03-09 16:49:38 +0530696 * struct vdev_start_params - vdev start cmd parameter
697 * @vdev_id: vdev id
698 * @chan_freq: channel frequency
699 * @chan_mode: channel mode
700 * @band_center_freq1: center freq 1
701 * @band_center_freq2: center freq 2
702 * @flags: flags to set like pmf_enabled etc.
703 * @is_dfs: flag to check if dfs enabled
704 * @beacon_intval: beacon interval
705 * @dtim_period: dtim period
706 * @max_txpow: max tx power
707 * @is_restart: flag to check if it is vdev
708 * @ssid: ssid and ssid length info
709 * @preferred_tx_streams: preferred tx streams
710 * @preferred_rx_streams: preferred rx streams
711 * @intr_update: flag to check if need to update
712 * required wma interface params
713 * @intr_ssid: pointer to wma interface ssid
714 * @intr_flags: poiter to wma interface flags
715 * @requestor_id: to update requestor id
716 * @disable_hw_ack: to update disable hw ack flag
717 * @info: to update channel info
718 * @reg_info_1: to update min power, max power,
719 * reg power and reg class id
720 * @reg_info_2: to update antennamax
Arif Hussain29b78212017-03-13 15:42:20 -0700721 * @cac_duration_ms: cac duration in milliseconds
722 * @regdomain: Regulatory domain
Govind Singh89727882016-04-15 13:58:27 +0530723 * @oper_mode: Operating mode
724 * @dfs_pri_multiplier: DFS primary multiplier
725 * allow pulse if they are within multiple of PRI for the radar type
726 * @dot11_mode: Phy mode (VHT20/VHT80...)
727 * @disable_hw_ack: Disable hw ack if chan is dfs channel for cac
728 * @channel_param: Channel params required by target.
Jiachao Wu40d6b112017-08-23 15:27:11 +0800729 * @bcn_tx_rate_code: Beacon tx rate code.
Varun Reddy Yeturu5fe013d2017-03-20 17:28:42 -0700730 * @ldpc_rx_enabled: Enable/Disable LDPC RX for this vdev
Himanshu Agarwal7e4f4bc2016-03-09 16:49:38 +0530731 */
732struct vdev_start_params {
733 uint8_t vdev_id;
734 uint32_t chan_freq;
735 uint32_t chan_mode;
736 uint32_t band_center_freq1;
737 uint32_t band_center_freq2;
738 uint32_t flags;
739 bool is_dfs;
740 uint32_t beacon_intval;
741 uint32_t dtim_period;
742 int32_t max_txpow;
743 bool is_restart;
Siddarth Poddar466963e2016-03-29 15:13:26 +0530744 bool is_half_rate;
745 bool is_quarter_rate;
746 uint32_t dis_hw_ack;
747 uint32_t flag_dfs;
748 uint8_t hidden_ssid;
749 uint8_t pmf_enabled;
Himanshu Agarwal7e4f4bc2016-03-09 16:49:38 +0530750 struct mac_ssid ssid;
Siddarth Poddar466963e2016-03-29 15:13:26 +0530751 uint32_t num_noa_descriptors;
Himanshu Agarwal7e4f4bc2016-03-09 16:49:38 +0530752 uint32_t preferred_rx_streams;
753 uint32_t preferred_tx_streams;
Arif Hussain29b78212017-03-13 15:42:20 -0700754 uint32_t cac_duration_ms;
755 uint32_t regdomain;
Krishna Kumaar Natarajan3f301ca2016-09-29 14:20:54 -0700756 uint32_t he_ops;
Kiran Venkatappa9da7e042016-08-09 22:52:35 +0530757#ifndef CONFIG_MCL
Govind Singh89727882016-04-15 13:58:27 +0530758 uint8_t oper_mode;
759 int32_t dfs_pri_multiplier;
760 uint8_t dot11_mode;
761 uint8_t disable_hw_ack;
762 struct channel_param channel;
763#endif
Jiachao Wu40d6b112017-08-23 15:27:11 +0800764 enum wmi_bcn_tx_rate_code bcn_tx_rate_code;
Varun Reddy Yeturu5fe013d2017-03-20 17:28:42 -0700765 bool ldpc_rx_enabled;
Himanshu Agarwal7e4f4bc2016-03-09 16:49:38 +0530766};
767
768/**
Chaithanya Garrepalli140a0532018-01-18 14:19:41 +0530769 * struct vdev_scan_nac_rssi_params - NAC_RSSI cmd parameter
770 * @vdev_id: vdev id
771 * @bssid_addr: BSSID address
772 * @client_addr: client address
773 * @chan_num: channel number
774 * @action:NAC_RSSI action,
775 */
776struct vdev_scan_nac_rssi_params {
777 uint32_t vdev_id;
778 uint8_t bssid_addr[IEEE80211_ADDR_LEN];
779 uint8_t client_addr[IEEE80211_ADDR_LEN];
780 uint32_t chan_num;
781 uint32_t action; /* WMI_FILTER_NAC_RSSI_ACTION */
782};
783
784/**
Himanshu Agarwal7e4f4bc2016-03-09 16:49:38 +0530785 * struct hidden_ssid_vdev_restart_params -
786 * vdev restart cmd parameter
787 * @session_id: session id
788 * @ssid_len: ssid length
789 * @ssid: ssid
790 * @flags: flags
791 * @requestor_id: requestor id
792 * @disable_hw_ack: flag to disable hw ack feature
793 * @mhz: channel frequency
794 * @band_center_freq1: center freq 1
795 * @band_center_freq2: center freq 2
796 * @info: channel info
797 * @reg_info_1: contains min power, max power,
798 * reg power and reg class id
799 * @reg_info_2: contains antennamax
800 * @hidden_ssid_restart_in_progress:
801 * flag to check if restart is in progress
802 */
803struct hidden_ssid_vdev_restart_params {
804 uint8_t session_id;
805 uint32_t ssid_len;
806 uint32_t ssid[8];
807 uint32_t flags;
808 uint32_t requestor_id;
809 uint32_t disable_hw_ack;
810 uint32_t mhz;
811 uint32_t band_center_freq1;
812 uint32_t band_center_freq2;
813 uint32_t info;
814 uint32_t reg_info_1;
815 uint32_t reg_info_2;
816 qdf_atomic_t hidden_ssid_restart_in_progress;
817};
818
819/**
Govind Singh3ddda1f2016-03-09 11:34:12 +0530820 * struct vdev_set_params - vdev set cmd parameter
821 * @if_id: vdev id
822 * @param_id: parameter id
823 * @param_value: parameter value
824 */
825struct vdev_set_params {
826 uint32_t if_id;
827 uint32_t param_id;
828 uint32_t param_value;
829};
830
Govind Singh89727882016-04-15 13:58:27 +0530831
832/**
Govind Singh3ddda1f2016-03-09 11:34:12 +0530833 * struct peer_delete_params - peer delete cmd parameter
834 * @vdev_id: vdev id
835 */
836struct peer_delete_params {
837 uint8_t vdev_id;
838};
839
840/**
841 * struct peer_flush_params - peer flush cmd parameter
842 * @peer_tid_bitmap: peer tid bitmap
843 * @vdev_id: vdev id
844 */
845struct peer_flush_params {
846 uint32_t peer_tid_bitmap;
847 uint8_t vdev_id;
848};
849
850/**
851 * struct peer_set_params - peer set cmd parameter
852 * @param_id: parameter id
853 * @param_value: parameter value
854 * @vdev_id: vdev id
855 */
856struct peer_set_params {
857 uint32_t param_id;
858 uint32_t param_value;
859 uint32_t vdev_id;
860};
861
862/**
863 * struct peer_create_params - peer create cmd parameter
864 * @peer_addr: peer mac addr
865 * @peer_type: peer type
866 * @vdev_id: vdev id
867 */
868struct peer_create_params {
869 const uint8_t *peer_addr;
870 uint32_t peer_type;
871 uint32_t vdev_id;
872};
873
874/**
875 * struct peer_remove_params - peer remove cmd parameter
876 * @bssid: bss id
877 * @vdev_id: vdev id
878 * @roam_synch_in_progress: flag to indicate if roaming is in progress
879 */
880struct peer_remove_params {
881 uint8_t *bssid;
882 uint8_t vdev_id;
883 bool roam_synch_in_progress;
884};
885
886/**
Govind Singh89727882016-04-15 13:58:27 +0530887 * Stats ID enums defined in host
888 */
889typedef enum {
890 WMI_HOST_REQUEST_PEER_STAT = 0x01,
891 WMI_HOST_REQUEST_AP_STAT = 0x02,
892 WMI_HOST_REQUEST_PDEV_STAT = 0x04,
893 WMI_HOST_REQUEST_VDEV_STAT = 0x08,
894 WMI_HOST_REQUEST_BCNFLT_STAT = 0x10,
895 WMI_HOST_REQUEST_VDEV_RATE_STAT = 0x20,
896 WMI_HOST_REQUEST_INST_STAT = 0x40,
897 WMI_HOST_REQUEST_PEER_EXTD_STAT = 0x80,
898 WMI_HOST_REQUEST_VDEV_EXTD_STAT = 0x100,
Chaithanya Garrepalli140a0532018-01-18 14:19:41 +0530899 WMI_HOST_REQUEST_NAC_RSSI = 0x200,
Gurumoorthi Gnanasambandhan18977552017-11-06 22:04:17 +0530900 WMI_HOST_REQUEST_BCN_STAT = 0x800,
Govind Singh89727882016-04-15 13:58:27 +0530901} wmi_host_stats_id;
902
Gurumoorthi Gnanasambandhan0a0e7272017-10-13 12:40:06 +0530903typedef struct {
904 uint16_t cfg_retry_count;
905 uint16_t retry_count;
906} wmi_host_inst_rssi_args;
Govind Singh89727882016-04-15 13:58:27 +0530907
908/**
Govind Singh3ddda1f2016-03-09 11:34:12 +0530909 * struct stats_request_params - stats_request cmd parameter
Gurumoorthi Gnanasambandhan7e23dd52017-08-10 22:12:36 +0530910 * @stats_id: Bit mask of all the STATS request are specified with values from wmi_host_stats_id
Govind Singh3ddda1f2016-03-09 11:34:12 +0530911 * @vdev_id: vdev id
Gurumoorthi Gnanasambandhan7e23dd52017-08-10 22:12:36 +0530912 * @pdev_id: pdev_id
Gurumoorthi Gnanasambandhan0a0e7272017-10-13 12:40:06 +0530913 * @wmi_host_inst_rssi_args: Instantaneous rssi stats args
Govind Singh3ddda1f2016-03-09 11:34:12 +0530914 */
915struct stats_request_params {
916 uint32_t stats_id;
Gurumoorthi Gnanasambandhan7e23dd52017-08-10 22:12:36 +0530917 uint8_t vdev_id;
918 uint8_t pdev_id;
Gurumoorthi Gnanasambandhan0a0e7272017-10-13 12:40:06 +0530919 wmi_host_inst_rssi_args rssi_args;
Govind Singh89727882016-04-15 13:58:27 +0530920};
921
922/**
923 * struct bss_chan_info_request_params - BSS chan info params
924 * @param: parameter value
925 */
926struct bss_chan_info_request_params {
927 uint32_t param;
Govind Singh3ddda1f2016-03-09 11:34:12 +0530928};
929
930/**
Govind Singh3ddda1f2016-03-09 11:34:12 +0530931 * struct wow_cmd_params - wow cmd parameter
932 * @enable: wow enable or disable flag
933 * @can_suspend_link: flag to indicate if link can be suspended
934 * @pause_iface_config: interface config
935 */
936struct wow_cmd_params {
937 bool enable;
938 bool can_suspend_link;
939 uint8_t pause_iface_config;
Dustin Browndee95c72016-11-10 11:25:36 -0800940 uint32_t flags;
Govind Singh3ddda1f2016-03-09 11:34:12 +0530941};
942
943/**
Govind Singh89727882016-04-15 13:58:27 +0530944 * struct wow_add_wakeup_params - wow wakeup parameter
945 * @type: param type
946 */
947struct wow_add_wakeup_params {
948 uint32_t type;
949};
950
951/**
952 * struct wow_add_wakeup_pattern_params - Add WoW pattern params
953 * @pattern_bytes: pointer to pattern bytes
954 * @mask_bytes: pointer to mask bytes
955 * @pattern_len: pattern length
956 * @pattern_id: pattern id
957 */
958struct wow_add_wakeup_pattern_params {
959 uint8_t *pattern_bytes;
960 uint8_t *mask_bytes;
961 uint32_t pattern_len;
962 uint32_t pattern_id;
963};
964
965/**
966 * struct wow_remove_wakeup_pattern params - WoW remove pattern param
967 * @pattern_bytes: pointer to pattern bytes
968 * @mask_bytes: Mask bytes
969 * @pattern_id: pattern identifier
970 */
971struct wow_remove_wakeup_pattern_params {
972 uint32_t *pattern_bytes;
973 uint32_t *mask_bytes;
974 uint32_t pattern_id;
975};
976
977
978/**
Govind Singh3ddda1f2016-03-09 11:34:12 +0530979 * struct packet_enable_params - packet enable cmd parameter
980 * @vdev_id: vdev id
981 * @enable: flag to indicate if parameter can be enabled or disabled
982 */
983struct packet_enable_params {
984 uint8_t vdev_id;
985 bool enable;
986};
987
988/**
989 * struct suspend_params - suspend cmd parameter
990 * @disable_target_intr: disable target interrupt
991 */
992struct suspend_params {
993 uint8_t disable_target_intr;
994};
995
996/**
997 * struct pdev_params - pdev set cmd parameter
998 * @param_id: parameter id
999 * @param_value: parameter value
1000 */
1001struct pdev_params {
1002 uint32_t param_id;
1003 uint32_t param_value;
1004};
1005
1006/**
Govind Singh89727882016-04-15 13:58:27 +05301007 * struct beacon_tmpl_params - beacon template cmd parameter
1008 * @vdev_id: vdev id
1009 * @tim_ie_offset: tim ie offset
1010 * @tmpl_len: beacon template length
1011 * @tmpl_len_aligned: beacon template alignment
Sathish Kumar907a7462017-02-27 10:35:40 +05301012 * @csa_switch_count_offset: CSA swith count offset in beacon frame
1013 * @ext_csa_switch_count_offset: ECSA switch count offset in beacon frame
Govind Singh89727882016-04-15 13:58:27 +05301014 * @frm: beacon template parameter
1015 */
1016struct beacon_tmpl_params {
1017 uint8_t vdev_id;
1018 uint32_t tim_ie_offset;
1019 uint32_t tmpl_len;
1020 uint32_t tmpl_len_aligned;
Sathish Kumar907a7462017-02-27 10:35:40 +05301021 uint32_t csa_switch_count_offset;
1022 uint32_t ext_csa_switch_count_offset;
Govind Singh89727882016-04-15 13:58:27 +05301023 uint8_t *frm;
1024};
1025
Govind Singh89727882016-04-15 13:58:27 +05301026/**
1027 * struct beacon_params - beacon cmd parameter
1028 * @vdev_id: vdev id
1029 * @beaconInterval: Beacon interval
1030 * @wbuf: beacon buffer
1031 * @frame_ctrl: frame control field
1032 * @bcn_txant: beacon antenna
1033 * @is_dtim_count_zero: is it dtim beacon
1034 * @is_bitctl_reqd: is Bit control required
1035 * @is_high_latency: Is this high latency target
1036 */
1037struct beacon_params {
1038 uint8_t vdev_id;
1039 uint16_t beaconInterval;
1040 qdf_nbuf_t wbuf;
1041 uint16_t frame_ctrl;
1042 uint32_t bcn_txant;
1043 bool is_dtim_count_zero;
1044 bool is_bitctl_reqd;
1045 bool is_high_latency;
1046};
Govind Singh89727882016-04-15 13:58:27 +05301047
1048/**
Subrat Mishra7c9427e2017-09-27 14:41:20 +05301049 * struct fd_params - FD cmd parameter
1050 * @vdev_id: vdev id
1051 * @wbuf: FD buffer
1052 * @frame_ctrl: frame control field
1053 */
1054struct fd_params {
1055 uint8_t vdev_id;
1056 qdf_nbuf_t wbuf;
1057 uint16_t frame_ctrl;
1058};
1059
1060/**
Govind Singh89727882016-04-15 13:58:27 +05301061 * struct bcn_prb_template_params - beacon probe template parameter
1062 * @vdev_id: vdev id
1063 * @buf_len: Template length
1064 * @caps: capabilities field
1065 * @erp: ERP field
1066 */
1067struct bcn_prb_template_params {
1068 uint8_t vdev_id;
1069 int buf_len;
1070 uint16_t caps;
1071 uint8_t erp;
1072};
1073
1074#define WMI_MAX_SUPPORTED_RATES 128
1075/**
1076 * struct target_rate_set - Rate set bitmap
1077 * @num_rate: number of rates in rates bitmap
1078 * @rates: rates (each 8bit value) packed into a 32 bit word.
1079 * the rates are filled from least significant byte to most
1080 * significant byte.
1081 */
1082typedef struct {
1083 uint32_t num_rates;
1084 uint32_t rates[(WMI_MAX_SUPPORTED_RATES / 4) + 1];
1085} target_rate_set;
Govind Singh3ddda1f2016-03-09 11:34:12 +05301086
Kris Muthusamy1499bac2017-02-20 02:35:47 -08001087
Kris Muthusamyf575e2e2017-03-28 12:03:50 -07001088#define WMI_HOST_MAX_NUM_SS 8
1089#define WMI_HOST_MAX_HECAP_PHY_SIZE 3
Gyanranjan Hazarikaef7ebfe2017-08-29 03:52:18 -07001090#define WMI_HOST_MAX_HE_RATE_SET 3
Kris Muthusamy1499bac2017-02-20 02:35:47 -08001091/**
Krishna Kumaar Natarajan3f301ca2016-09-29 14:20:54 -07001092 * struct wmi_host_ppe_threshold -PPE threshold
1093 * @numss_m1: NSS - 1
1094 * @ru_bit_mask: RU bit mask indicating the supported RU's
1095 * @ppet16_ppet8_ru3_ru0: ppet8 and ppet16 for max num ss
Kris Muthusamy1499bac2017-02-20 02:35:47 -08001096 */
1097struct wmi_host_ppe_threshold {
1098 uint32_t numss_m1;
Krishna Kumaar Natarajan3f301ca2016-09-29 14:20:54 -07001099 uint32_t ru_bit_mask;
Kris Muthusamy1499bac2017-02-20 02:35:47 -08001100 uint32_t ppet16_ppet8_ru3_ru0[WMI_HOST_MAX_NUM_SS];
1101};
1102
Govind Singh3ddda1f2016-03-09 11:34:12 +05301103/**
Himanshu Agarwal56c292f2016-07-19 15:41:51 +05301104 * struct wmi_host_mac_addr - host mac addr 2 word representation of MAC addr
1105 * @mac_addr31to0: upper 4 bytes of MAC address
1106 * @mac_addr47to32: lower 2 bytes of MAC address
1107 */
1108typedef struct {
1109 uint32_t mac_addr31to0;
1110 uint32_t mac_addr47to32;
1111} wmi_host_mac_addr;
1112
1113/**
Govind Singh3ddda1f2016-03-09 11:34:12 +05301114 * struct peer_assoc_params - peer assoc cmd parameter
1115 * @peer_macaddr: peer mac address
1116 * @vdev_id: vdev id
1117 * @peer_new_assoc: peer association type
1118 * @peer_associd: peer association id
1119 * @peer_flags: peer flags
1120 * @peer_caps: peer capabalities
1121 * @peer_listen_intval: peer listen interval
1122 * @peer_ht_caps: HT capabalities
1123 * @peer_max_mpdu: 0 : 8k , 1 : 16k, 2 : 32k, 3 : 64k
1124 * @peer_mpdu_density: 3 : 0~7 : 2^(11nAMPDUdensity -4)
1125 * @peer_rate_caps: peer rate capabalities
1126 * @peer_nss: peer nss
1127 * @peer_phymode: peer phymode
1128 * @peer_ht_info: peer HT info
1129 * @peer_legacy_rates: peer legacy rates
1130 * @peer_ht_rates: peer ht rates
Govind Singh3ddda1f2016-03-09 11:34:12 +05301131 * @rx_max_rate: max rx rates
1132 * @rx_mcs_set: rx mcs
1133 * @tx_max_rate: max tx rates
1134 * @tx_mcs_set: tx mcs
1135 * @vht_capable: VHT capabalities
Govind Singh89727882016-04-15 13:58:27 +05301136 * @tx_max_mcs_nss: max tx MCS and NSS
1137 * @peer_bw_rxnss_override: Peer BW RX NSS overriden or not.
1138 * @is_pmf_enabled: PMF enabled
1139 * @is_wme_set: WME enabled
1140 * @qos_flag: QoS Flags
1141 * @apsd_flag: APSD flags
1142 * @ht_flag: HT flags
1143 * @bw_40: 40 capabale
1144 * @bw_80: 80 capabale
1145 * @bw_160: 160 capabale
1146 * @stbc_flag: STBC flag
1147 * @ldpc_flag: LDPC flag
1148 * @static_mimops_flag: statis MIMO PS flags
1149 * @dynamic_mimops_flag: Dynamic MIMO PS flags
1150 * @spatial_mux_flag: spatial MUX flags
1151 * @vht_flag: VHT flags
1152 * @vht_ng_flag: VHT on 11N/G flags
1153 * @need_ptk_4_way: Needs 4 way handshake
1154 * @need_gtk_2_way: Needs 2 way GTK
1155 * @auth_flag: Is peer authenticated
1156 * @safe_mode_enabled: Safe enabled for this peer
1157 * @amsdu_disable: AMSDU disble
1158 * @peer_mac: Peer mac address
Kris Muthusamye66c6bf2017-02-20 20:21:04 -08001159 * @he_flag: HE flags
Kris Muthusamy1499bac2017-02-20 02:35:47 -08001160 * @peer_he_cap_macinfo: Peer HE Cap MAC info
1161 * @peer_he_ops: Peer HE operation info
1162 * @peer_he_cap_phyinfo: Peer HE Cap PHY info
Kris Muthusamyf575e2e2017-03-28 12:03:50 -07001163 * @peer_he_mcs_count: Peer HE MCS TX/RX MAP count
1164 * @peer_he_rx_mcs_set: Peer HE RX MCS MAP
1165 * @peer_he_tx_mcs_set: Peer HE TX MCS MAP
Kris Muthusamy1499bac2017-02-20 02:35:47 -08001166 * @peer_ppet: Peer HE PPET info
Govind Singh3ddda1f2016-03-09 11:34:12 +05301167 */
1168struct peer_assoc_params {
Himanshu Agarwal56c292f2016-07-19 15:41:51 +05301169 wmi_host_mac_addr peer_macaddr;
Govind Singh3ddda1f2016-03-09 11:34:12 +05301170 uint32_t vdev_id;
1171 uint32_t peer_new_assoc;
1172 uint32_t peer_associd;
1173 uint32_t peer_flags;
1174 uint32_t peer_caps;
1175 uint32_t peer_listen_intval;
1176 uint32_t peer_ht_caps;
1177 uint32_t peer_max_mpdu;
1178 uint32_t peer_mpdu_density;
1179 uint32_t peer_rate_caps;
1180 uint32_t peer_nss;
1181 uint32_t peer_vht_caps;
1182 uint32_t peer_phymode;
1183 uint32_t peer_ht_info[2];
Govind Singh89727882016-04-15 13:58:27 +05301184 target_rate_set peer_legacy_rates;
1185 target_rate_set peer_ht_rates;
Govind Singh3ddda1f2016-03-09 11:34:12 +05301186 uint32_t rx_max_rate;
1187 uint32_t rx_mcs_set;
1188 uint32_t tx_max_rate;
1189 uint32_t tx_mcs_set;
1190 uint8_t vht_capable;
Krishna Rao938daa82017-03-20 13:30:10 +05301191 uint32_t peer_bw_rxnss_override;
Kiran Venkatappa9da7e042016-08-09 22:52:35 +05301192#ifndef CONFIG_MCL
Govind Singh89727882016-04-15 13:58:27 +05301193 uint32_t tx_max_mcs_nss;
Govind Singh89727882016-04-15 13:58:27 +05301194 bool is_pmf_enabled;
1195 bool is_wme_set;
1196 bool qos_flag;
1197 bool apsd_flag;
1198 bool ht_flag;
1199 bool bw_40;
1200 bool bw_80;
1201 bool bw_160;
1202 bool stbc_flag;
1203 bool ldpc_flag;
1204 bool static_mimops_flag;
1205 bool dynamic_mimops_flag;
1206 bool spatial_mux_flag;
1207 bool vht_flag;
1208 bool vht_ng_flag;
1209 bool need_ptk_4_way;
1210 bool need_gtk_2_way;
1211 bool auth_flag;
1212 bool safe_mode_enabled;
1213 bool amsdu_disable;
1214 /* Use common structure */
1215 uint8_t peer_mac[IEEE80211_ADDR_LEN];
1216#endif
Kris Muthusamye66c6bf2017-02-20 20:21:04 -08001217 bool he_flag;
Kris Muthusamy1499bac2017-02-20 02:35:47 -08001218 uint32_t peer_he_cap_macinfo;
1219 uint32_t peer_he_ops;
Kris Muthusamye66c6bf2017-02-20 20:21:04 -08001220 uint32_t peer_he_cap_phyinfo[WMI_HOST_MAX_HECAP_PHY_SIZE];
Kris Muthusamyf575e2e2017-03-28 12:03:50 -07001221 uint32_t peer_he_mcs_count;
1222 uint32_t peer_he_rx_mcs_set[WMI_HOST_MAX_HE_RATE_SET];
1223 uint32_t peer_he_tx_mcs_set[WMI_HOST_MAX_HE_RATE_SET];
Kris Muthusamy1499bac2017-02-20 02:35:47 -08001224 struct wmi_host_ppe_threshold peer_ppet;
Govind Singh3ddda1f2016-03-09 11:34:12 +05301225};
1226
1227/**
1228 * struct sta_ps_params - sta ps cmd parameter
1229 * @vdev_id: vdev id
1230 * @param: sta ps paramter
1231 * @value: sta ps parameter value
1232 */
1233struct sta_ps_params {
1234 uint32_t vdev_id;
1235 uint32_t param;
1236 uint32_t value;
1237};
1238
1239/**
1240 * struct ap_ps_params - ap ps cmd parameter
1241 * @vdev_id: vdev id
1242 * @param: ap ps paramter
1243 * @value: ap ps paramter value
1244 */
1245struct ap_ps_params {
1246 uint32_t vdev_id;
1247 uint32_t param;
1248 uint32_t value;
1249};
1250
Govind Singh89727882016-04-15 13:58:27 +05301251#define WMI_HOST_SCAN_CHAN_FREQ_SHIFT 0
1252#define WMI_HOST_SCAN_CHAN_FREQ_MASK 0xffff
1253#define WMI_HOST_SCAN_CHAN_MODE_SHIFT 16
1254#define WMI_HOST_SCAN_CHAN_MODE_MASK 0xff
1255
Om Prakash Tripathi0d0976b2017-12-15 17:29:55 +05301256#define WMI_HOST_MAX_CHANS_PER_WMI_CMD 58
1257
Govind Singh3ddda1f2016-03-09 11:34:12 +05301258/**
Govind Singh3ddda1f2016-03-09 11:34:12 +05301259 * struct scan_chan_list_params - scan channel list cmd parameter
1260 * @num_scan_chans: no of scan channels
1261 * @chan_info: pointer to wmi channel info
1262 */
Govind Singhfa201d92016-06-08 19:40:11 +05301263#ifdef CONFIG_MCL
Himanshu Agarwal56c292f2016-07-19 15:41:51 +05301264/* TODO: This needs clean-up based on how its processed. */
1265typedef struct {
1266 /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_channel */
1267 uint32_t tlv_header;
1268 /** primary 20 MHz channel frequency in mhz */
1269 uint32_t mhz;
1270 /** Center frequency 1 in MHz*/
1271 uint32_t band_center_freq1;
1272 /** Center frequency 2 in MHz - valid only for 11acvht 80plus80 mode*/
1273 uint32_t band_center_freq2;
1274 /** channel info described below */
1275 uint32_t info;
1276 /** contains min power, max power, reg power and reg class id. */
1277 uint32_t reg_info_1;
1278 /** contains antennamax */
1279 uint32_t reg_info_2;
1280} wmi_channel_param;
1281
Govind Singh3ddda1f2016-03-09 11:34:12 +05301282struct scan_chan_list_params {
Anish Nataraj61e4f4c2017-03-20 12:49:08 +05301283 uint32_t pdev_id;
Govind Singh3ddda1f2016-03-09 11:34:12 +05301284 uint8_t num_scan_chans;
Himanshu Agarwal56c292f2016-07-19 15:41:51 +05301285 wmi_channel_param *chan_info;
Govind Singh3ddda1f2016-03-09 11:34:12 +05301286};
Govind Singh89727882016-04-15 13:58:27 +05301287#else
1288/**
1289 * struct scan_chan_list_params - scan channel list cmd parameter
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05301290 * @pdev_id: pdev_id
Govind Singh89727882016-04-15 13:58:27 +05301291 * @num_chan: no of scan channels
1292 * @nallchans: nall chans
Om Prakash Tripathi0d0976b2017-12-15 17:29:55 +05301293 * @append: append to existing chan list
Govind Singh89727882016-04-15 13:58:27 +05301294 * @ch_param: pointer to channel_paramw
1295 */
1296struct scan_chan_list_params {
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05301297 uint32_t pdev_id;
Govind Singh89727882016-04-15 13:58:27 +05301298 uint16_t nallchans;
Om Prakash Tripathi0d0976b2017-12-15 17:29:55 +05301299 bool append;
Govind Singh89727882016-04-15 13:58:27 +05301300 struct channel_param ch_param[1];
1301};
1302#endif
Govind Singh3ddda1f2016-03-09 11:34:12 +05301303
1304/**
Sathish Kumar907a7462017-02-27 10:35:40 +05301305 * struct multiple_vdev_restart_params - Multiple vdev restart cmd parameter
1306 * @pdev_id: Pdev identifier
1307 * @requestor_id: Unique id identifying the module
1308 * @disable_hw_ack: Flag to indicate disabling HW ACK during CAC
1309 * @cac_duration_ms: CAC duration on the given channel
1310 * @num_vdevs: No. of vdevs that need to be restarted
1311 * @ch_param: Pointer to channel_param
1312 * @vdev_ids: Pointer to array of vdev_ids
1313 */
1314struct multiple_vdev_restart_params {
1315 uint32_t pdev_id;
1316 uint32_t requestor_id;
1317 uint32_t disable_hw_ack;
1318 uint32_t cac_duration_ms;
1319 uint32_t num_vdevs;
1320 struct channel_param ch_param;
1321 uint32_t vdev_ids[WMI_HOST_PDEV_MAX_VDEVS];
1322};
1323/**
Govind Singh3ddda1f2016-03-09 11:34:12 +05301324 * struct fw_hang_params - fw hang command parameters
1325 * @type: 0:unused 1: ASSERT, 2:not respond detect command, 3:simulate ep-full
1326 * @delay_time_ms: 0xffffffff means the simulate will delay for random time (0 ~0xffffffff ms)
1327 */
1328struct fw_hang_params {
1329 uint32_t type;
1330 uint32_t delay_time_ms;
1331};
1332
1333/**
1334 * struct pdev_utf_params - pdev utf command parameters
1335 * @utf_payload:
1336 * @len:
Govind Singh89727882016-04-15 13:58:27 +05301337 * @is_ar900b: is it 900b target
Govind Singh3ddda1f2016-03-09 11:34:12 +05301338 */
1339struct pdev_utf_params {
1340 uint8_t *utf_payload;
1341 uint32_t len;
Kiran Venkatappa9da7e042016-08-09 22:52:35 +05301342#ifndef CONFIG_MCL
Govind Singh89727882016-04-15 13:58:27 +05301343 bool is_ar900b;
1344#endif
Govind Singh3ddda1f2016-03-09 11:34:12 +05301345};
1346
Govind Singh89727882016-04-15 13:58:27 +05301347/*Adding this due to dependency on wmi_unified.h
1348 */
1349typedef struct {
1350 uint32_t len;
1351 uint32_t msgref;
1352 uint32_t segmentInfo;
1353} QVIT_SEG_HDR_INFO_STRUCT;
1354
1355struct pdev_qvit_params {
1356 uint8_t *utf_payload;
1357 uint32_t len;
1358};
Govind Singh3ddda1f2016-03-09 11:34:12 +05301359/**
1360 * struct crash_inject - crash inject command parameters
1361 * @type: crash inject type
1362 * @delay_time_ms: time in milliseconds for FW to delay the crash
1363 */
1364struct crash_inject {
1365 uint32_t type;
1366 uint32_t delay_time_ms;
1367};
1368
1369/**
1370 * struct dbglog_params - fw deboglog command parameters
1371 * @param: command parameter
1372 * @val: parameter value
1373 * @module_id_bitmap: fixed length module id bitmap
1374 * @bitmap_len: module id bitmap length
Govind Singh89727882016-04-15 13:58:27 +05301375 * @cfgvalid: cfgvalid
Govind Singh3ddda1f2016-03-09 11:34:12 +05301376 */
1377struct dbglog_params {
1378 uint32_t param;
1379 uint32_t val;
1380 uint32_t *module_id_bitmap;
1381 uint32_t bitmap_len;
Kiran Venkatappa9da7e042016-08-09 22:52:35 +05301382#ifndef CONFIG_MCL
Govind Singh89727882016-04-15 13:58:27 +05301383 uint32_t cfgvalid[2];
1384#endif
Govind Singh3ddda1f2016-03-09 11:34:12 +05301385};
1386
1387/**
1388 * struct seg_hdr_info - header info
1389 * @len: length
1390 * @msgref: message refrence
1391 * @segmentInfo: segment info
1392 * @pad: padding
1393 */
1394struct seg_hdr_info {
1395 uint32_t len;
1396 uint32_t msgref;
1397 uint32_t segmentInfo;
1398 uint32_t pad;
1399};
1400
1401/**
Sathish Kumare10a1c52017-06-28 14:40:32 +05301402 * struct tx_send_params - TX parameters
1403 * @pwr: Tx frame transmission power
1404 * @mcs_mask: Modulation and coding index mask for transmission
1405 * bit 0 -> CCK 1 Mbps rate is allowed
1406 * bit 1 -> CCK 2 Mbps rate is allowed
1407 * bit 2 -> CCK 5.5 Mbps rate is allowed
1408 * bit 3 -> CCK 11 Mbps rate is allowed
1409 * bit 4 -> OFDM BPSK modulation, 1/2 coding rate is allowed
1410 * bit 5 -> OFDM BPSK modulation, 3/4 coding rate is allowed
1411 * bit 6 -> OFDM QPSK modulation, 1/2 coding rate is allowed
1412 * bit 7 -> OFDM QPSK modulation, 3/4 coding rate is allowed
1413 * bit 8 -> OFDM 16-QAM modulation, 1/2 coding rate is allowed
1414 * bit 9 -> OFDM 16-QAM modulation, 3/4 coding rate is allowed
1415 * bit 10 -> OFDM 64-QAM modulation, 2/3 coding rate is allowed
1416 * bit 11 -> OFDM 64-QAM modulation, 3/4 coding rate is allowed
1417 * @nss_mask: Spatial streams permitted
1418 * bit 0: if set, Nss = 1 (non-MIMO) is permitted
1419 * bit 1: if set, Nss = 2 (2x2 MIMO) is permitted
1420 * bit 2: if set, Nss = 3 (3x3 MIMO) is permitted
1421 * bit 3: if set, Nss = 4 (4x4 MIMO) is permitted
1422 * bit 4: if set, Nss = 5 (5x5 MIMO) is permitted
1423 * bit 5: if set, Nss = 6 (6x6 MIMO) is permitted
1424 * bit 6: if set, Nss = 7 (7x7 MIMO) is permitted
1425 * bit 7: if set, Nss = 8 (8x8 MIMO) is permitted
1426 * If no bits are set, target will choose what NSS type to use
1427 * @retry_limit: Maximum number of retries before ACK
1428 * @chain_mask: Chains to be used for transmission
1429 * @bw_mask: Bandwidth to be used for transmission
1430 * bit 0 -> 5MHz
1431 * bit 1 -> 10MHz
1432 * bit 2 -> 20MHz
1433 * bit 3 -> 40MHz
1434 * bit 4 -> 80MHz
1435 * bit 5 -> 160MHz
1436 * bit 6 -> 80_80MHz
1437 * @preamble_type: Preamble types for transmission
1438 * bit 0: if set, OFDM
1439 * bit 1: if set, CCK
1440 * bit 2: if set, HT
1441 * bit 3: if set, VHT
1442 * bit 4: if set, HE
1443 * @frame_type: Data or Management frame
1444 * Data:1 Mgmt:0
1445 */
1446struct tx_send_params {
1447 uint32_t pwr:8,
1448 mcs_mask:12,
1449 nss_mask:8,
1450 retry_limit:4;
1451 uint32_t chain_mask:8,
1452 bw_mask:7,
1453 preamble_type:5,
1454 frame_type:1,
1455 reserved:11;
1456};
1457
1458/**
Govind Singh3ddda1f2016-03-09 11:34:12 +05301459 * struct wmi_mgmt_params - wmi mgmt cmd paramters
1460 * @tx_frame: management tx frame
Govind Singh89727882016-04-15 13:58:27 +05301461 * @frm_len: frame length
Govind Singh3ddda1f2016-03-09 11:34:12 +05301462 * @vdev_id: vdev id
Govind Singh3ddda1f2016-03-09 11:34:12 +05301463 * @chanfreq: channel frequency
1464 * @pdata: frame data
Govind Singh89727882016-04-15 13:58:27 +05301465 * @desc_id: descriptor id relyaed back by target
Sravan Kumar Kairam290dc362017-07-19 17:38:20 +05301466 * @macaddr: macaddr of peer
Kiran Venkatappa25c47022017-03-19 22:58:09 +05301467 * @qdf_ctx: qdf context for qdf_nbuf_map
Sathish Kumare10a1c52017-06-28 14:40:32 +05301468 * @tx_param: TX send parameters
1469 * @tx_params_valid: Flag that indicates if TX params are valid
Sravan Kumar Kairam290dc362017-07-19 17:38:20 +05301470 * @use_6mbps: specify whether management frame to transmit should
1471 * use 6 Mbps rather than 1 Mbps min rate(for 5GHz band or P2P)
1472 * @tx_type: type of managment frame (determines what callback to use)
Govind Singh3ddda1f2016-03-09 11:34:12 +05301473 */
1474struct wmi_mgmt_params {
1475 void *tx_frame;
1476 uint16_t frm_len;
1477 uint8_t vdev_id;
Govind Singh3ddda1f2016-03-09 11:34:12 +05301478 uint16_t chanfreq;
1479 void *pdata;
Govind Singh89727882016-04-15 13:58:27 +05301480 uint16_t desc_id;
1481 uint8_t *macaddr;
Govind Singhd7468a52016-03-09 14:32:57 +05301482 void *qdf_ctx;
Sathish Kumare10a1c52017-06-28 14:40:32 +05301483 struct tx_send_params tx_param;
1484 bool tx_params_valid;
Sravan Kumar Kairam290dc362017-07-19 17:38:20 +05301485 uint8_t use_6mbps;
1486 uint8_t tx_type;
Govind Singh3ddda1f2016-03-09 11:34:12 +05301487};
Govind Singhbffe4de2016-02-26 17:50:39 +05301488
1489/**
Kiran Venkatappa25c47022017-03-19 22:58:09 +05301490 * struct wmi_offchan_data_tx_params - wmi offchan data tx cmd paramters
1491 * @tx_frame: management tx frame
1492 * @frm_len: frame length
1493 * @vdev_id: vdev id
1494 * @chanfreq: channel frequency
1495 * @pdata: frame data
1496 * @desc_id: descriptor id relyaed back by target
1497 * @macaddr: macaddr of peer
1498 * @qdf_ctx: qdf context for qdf_nbuf_map
Sathish Kumare10a1c52017-06-28 14:40:32 +05301499 * @tx_param: TX send parameters
1500 * @tx_params_valid: Flag that indicates if TX params are valid
Kiran Venkatappa25c47022017-03-19 22:58:09 +05301501 */
1502struct wmi_offchan_data_tx_params {
1503 void *tx_frame;
1504 uint16_t frm_len;
1505 uint8_t vdev_id;
1506 uint16_t chanfreq;
1507 void *pdata;
1508 uint16_t desc_id;
1509 uint8_t *macaddr;
1510 void *qdf_ctx;
Sathish Kumare10a1c52017-06-28 14:40:32 +05301511 struct tx_send_params tx_param;
1512 bool tx_params_valid;
Kiran Venkatappa25c47022017-03-19 22:58:09 +05301513};
1514
1515/**
Govind Singhbffe4de2016-02-26 17:50:39 +05301516 * struct p2p_ps_params - P2P powersave related params
1517 * @opp_ps: opportunistic power save
1518 * @ctwindow: CT window
1519 * @count: count
1520 * @duration: duration
1521 * @interval: interval
1522 * @single_noa_duration: single shot noa duration
1523 * @ps_selection: power save selection
1524 * @session_id: session id
1525 */
1526struct p2p_ps_params {
1527 uint8_t opp_ps;
1528 uint32_t ctwindow;
1529 uint8_t count;
1530 uint32_t duration;
1531 uint32_t interval;
1532 uint32_t single_noa_duration;
1533 uint8_t ps_selection;
1534 uint8_t session_id;
1535};
1536
Frank Liu0ba573b2017-03-15 17:51:43 +08001537#ifndef CONVERGED_TDLS_ENABLE
1538/**
1539 * struct sta_uapsd_params - uapsd auto trig params
1540 * @wmm_ac: WMM access category from 0 to 3
1541 * @user_priority: User priority to use in trigger frames
1542 * @service_interval: service interval
1543 * @suspend_interval: suspend interval
1544 * @delay_interval: delay interval
1545 */
1546struct sta_uapsd_params {
1547 uint32_t wmm_ac;
1548 uint32_t user_priority;
1549 uint32_t service_interval;
1550 uint32_t suspend_interval;
1551 uint32_t delay_interval;
1552};
Govind Singhbffe4de2016-02-26 17:50:39 +05301553
1554/**
1555 * struct ta_uapsd_trig_params - uapsd trigger parameter
1556 * @vdevid: vdev id
1557 * @peer_addr: peer address
1558 * @auto_triggerparam: trigger parameters
1559 * @num_ac: no of access category
1560 */
1561struct sta_uapsd_trig_params {
1562 uint32_t vdevid;
1563 uint8_t peer_addr[IEEE80211_ADDR_LEN];
Frank Liu0ba573b2017-03-15 17:51:43 +08001564 struct sta_uapsd_params *auto_triggerparam;
Govind Singhbffe4de2016-02-26 17:50:39 +05301565 uint32_t num_ac;
1566};
Frank Liu0ba573b2017-03-15 17:51:43 +08001567#endif
Govind Singhe7b800c2016-03-01 15:30:53 +05301568
1569/**
1570 * struct ocb_utc_param
1571 * @vdev_id: session id
1572 * @utc_time: number of nanoseconds from Jan 1st 1958
1573 * @time_error: the error in the UTC time. All 1's for unknown
1574 */
1575struct ocb_utc_param {
1576 uint32_t vdev_id;
1577 uint8_t utc_time[WMI_SIZE_UTC_TIME];
1578 uint8_t time_error[WMI_SIZE_UTC_TIME_ERROR];
1579};
1580
1581/**
1582 * struct ocb_timing_advert_param
1583 * @vdev_id: session id
1584 * @chan_freq: frequency on which to advertise
1585 * @repeat_rate: the number of times it will send TA in 5 seconds
1586 * @timestamp_offset: offset of the timestamp field in the TA frame
1587 * @time_value_offset: offset of the time_value field in the TA frame
1588 * @template_length: size in bytes of the TA frame
1589 * @template_value: the TA frame
1590 */
1591struct ocb_timing_advert_param {
1592 uint32_t vdev_id;
1593 uint32_t chan_freq;
1594 uint32_t repeat_rate;
1595 uint32_t timestamp_offset;
1596 uint32_t time_value_offset;
1597 uint32_t template_length;
1598 uint8_t *template_value;
1599};
1600
1601/**
1602 * struct dcc_get_stats_param
1603 * @vdev_id: session id
1604 * @channel_count: number of dcc channels
1605 * @request_array_len: size in bytes of the request array
1606 * @request_array: the request array
1607 */
1608struct dcc_get_stats_param {
1609 uint32_t vdev_id;
1610 uint32_t channel_count;
1611 uint32_t request_array_len;
1612 void *request_array;
1613};
1614
1615/**
1616 * struct dcc_update_ndl_param
1617 * @vdev_id: session id
1618 * @channel_count: number of channels to be updated
1619 * @dcc_ndl_chan_list_len: size in bytes of the ndl_chan array
1620 * @dcc_ndl_chan_list: the ndl_chan array
1621 * @dcc_ndl_active_state_list_len: size in bytes of the active_state array
1622 * @dcc_ndl_active_state_list: the active state array
1623 */
1624struct dcc_update_ndl_param {
1625 uint32_t vdev_id;
1626 uint32_t channel_count;
1627 uint32_t dcc_ndl_chan_list_len;
1628 void *dcc_ndl_chan_list;
1629 uint32_t dcc_ndl_active_state_list_len;
1630 void *dcc_ndl_active_state_list;
1631};
1632
1633/**
1634 * struct ocb_config_sched
1635 * @chan_freq: frequency of the channel
1636 * @total_duration: duration of the schedule
1637 * @guard_interval: guard interval on the start of the schedule
1638 */
1639struct ocb_config_sched {
1640 uint32_t chan_freq;
1641 uint32_t total_duration;
1642 uint32_t guard_interval;
1643};
1644
1645/**
1646 * OCB structures
1647 */
1648
1649#define WMI_NUM_AC (4)
1650#define WMI_OCB_CHANNEL_MAX (5)
1651#define WMI_MAX_NUM_AC 4
1652struct wmi_ocb_qos_params {
1653 uint8_t aifsn;
1654 uint8_t cwmin;
1655 uint8_t cwmax;
1656};
1657/**
1658 * struct ocb_config_channel
1659 * @chan_freq: frequency of the channel
1660 * @bandwidth: bandwidth of the channel, either 10 or 20 MHz
1661 * @mac_address: MAC address assigned to this channel
1662 * @qos_params: QoS parameters
1663 * @max_pwr: maximum transmit power of the channel (dBm)
1664 * @min_pwr: minimum transmit power of the channel (dBm)
1665 * @reg_pwr: maximum transmit power specified by the regulatory domain (dBm)
1666 * @antenna_max: maximum antenna gain specified by the regulatory domain (dB)
1667 */
1668struct ocb_config_channel {
1669 uint32_t chan_freq;
1670 uint32_t bandwidth;
Govind Singhd7468a52016-03-09 14:32:57 +05301671 struct qdf_mac_addr mac_address;
Govind Singhe7b800c2016-03-01 15:30:53 +05301672 struct wmi_ocb_qos_params qos_params[WMI_MAX_NUM_AC];
1673 uint32_t max_pwr;
1674 uint32_t min_pwr;
1675 uint8_t reg_pwr;
1676 uint8_t antenna_max;
1677 uint16_t flags;
1678};
1679
1680/**
1681 * struct ocb_config_param
1682 * @session_id: session id
1683 * @channel_count: number of channels
1684 * @schedule_size: size of the channel schedule
1685 * @flags: reserved
1686 * @channels: array of OCB channels
1687 * @schedule: array of OCB schedule elements
1688 * @dcc_ndl_chan_list_len: size of the ndl_chan array
1689 * @dcc_ndl_chan_list: array of dcc channel info
1690 * @dcc_ndl_active_state_list_len: size of the active state array
1691 * @dcc_ndl_active_state_list: array of active states
1692 * @adapter: the OCB adapter
1693 * @dcc_stats_callback: callback for the response event
1694 */
1695struct ocb_config_param {
1696 uint8_t session_id;
1697 uint32_t channel_count;
1698 uint32_t schedule_size;
1699 uint32_t flags;
1700 struct ocb_config_channel *channels;
1701 struct ocb_config_sched *schedule;
1702 uint32_t dcc_ndl_chan_list_len;
1703 void *dcc_ndl_chan_list;
1704 uint32_t dcc_ndl_active_state_list_len;
1705 void *dcc_ndl_active_state_list;
1706};
Govind Singh9bad0002016-03-01 15:54:59 +05301707
Poddar, Siddarth794b9962016-04-28 15:49:11 +05301708enum wmi_peer_rate_report_cond_phy_type {
1709 WMI_PEER_RATE_REPORT_COND_11B = 0,
1710 WMI_PEER_RATE_REPORT_COND_11A_G,
1711 WMI_PEER_RATE_REPORT_COND_11N,
1712 WMI_PEER_RATE_REPORT_COND_11AC,
1713 WMI_PEER_RATE_REPORT_COND_MAX_NUM
1714};
1715
1716/**
1717 * struct report_rate_delta - peer specific parameters
1718 * @percent: percentage
1719 * @delta_min: rate min delta
1720 */
1721struct report_rate_delta {
Himanshu Agarwal56c292f2016-07-19 15:41:51 +05301722 uint32_t percent; /* in unit of 12.5% */
1723 uint32_t delta_min; /* in unit of Mbps */
Poddar, Siddarth794b9962016-04-28 15:49:11 +05301724};
1725
1726/**
1727 * struct report_rate_per_phy - per phy report parameters
1728 * @cond_flags: condition flag val
1729 * @delta: rate delta
1730 * @report_rate_threshold: rate threshold
1731 */
1732struct report_rate_per_phy {
1733 /*
1734 * PEER_RATE_REPORT_COND_FLAG_DELTA,
1735 * PEER_RATE_REPORT_COND_FLAG_THRESHOLD
1736 * Any of these two conditions or both of
1737 * them can be set.
1738 */
Himanshu Agarwal56c292f2016-07-19 15:41:51 +05301739 uint32_t cond_flags;
Poddar, Siddarth794b9962016-04-28 15:49:11 +05301740 struct report_rate_delta delta;
1741 /*
1742 * In unit of Mbps. There are at most 4 thresholds
1743 * If the threshold count is less than 4, set zero to
1744 * the one following the last threshold
1745 */
Himanshu Agarwal56c292f2016-07-19 15:41:51 +05301746 uint32_t report_rate_threshold[WMI_MAX_NUM_OF_RATE_THRESH];
Poddar, Siddarth794b9962016-04-28 15:49:11 +05301747};
1748
1749/**
1750 * struct peer_rate_report_params - peer rate report parameters
1751 * @rate_report_enable: enable rate report param
1752 * @backoff_time: backoff time
1753 * @timer_period: timer
1754 * @report_per_phy: report per phy type
1755 */
1756struct wmi_peer_rate_report_params {
Himanshu Agarwal56c292f2016-07-19 15:41:51 +05301757 uint32_t rate_report_enable;
1758 uint32_t backoff_time; /* in unit of msecond */
1759 uint32_t timer_period; /* in unit of msecond */
Poddar, Siddarth794b9962016-04-28 15:49:11 +05301760 /*
1761 *In the following field, the array index means the phy type,
1762 * please see enum wmi_peer_rate_report_cond_phy_type for detail
1763 */
1764 struct report_rate_per_phy report_per_phy[
1765 WMI_PEER_RATE_REPORT_COND_MAX_NUM];
1766
1767};
1768
Govind Singh9bad0002016-03-01 15:54:59 +05301769/**
1770 * struct t_thermal_cmd_params - thermal command parameters
1771 * @min_temp: minimum temprature
1772 * @max_temp: maximum temprature
1773 * @thermal_enable: thermal enable
1774 */
1775struct thermal_cmd_params {
1776 uint16_t min_temp;
1777 uint16_t max_temp;
1778 uint8_t thermal_enable;
1779};
1780
1781#define WMI_LRO_IPV4_SEED_ARR_SZ 5
1782#define WMI_LRO_IPV6_SEED_ARR_SZ 11
1783
1784/**
1785 * struct wmi_lro_config_cmd_t - set LRO init parameters
1786 * @lro_enable: indicates whether lro is enabled
1787 * @tcp_flag: If the TCP flags from the packet do not match
1788 * the values in this field after masking with TCP flags mask
1789 * below, packet is not LRO eligible
1790 * @tcp_flag_mask: field for comparing the TCP values provided
1791 * above with the TCP flags field in the received packet
1792 * @toeplitz_hash_ipv4: contains seed needed to compute the flow id
1793 * 5-tuple toeplitz hash for ipv4 packets
1794 * @toeplitz_hash_ipv6: contains seed needed to compute the flow id
1795 * 5-tuple toeplitz hash for ipv6 packets
1796 */
1797struct wmi_lro_config_cmd_t {
1798 uint32_t lro_enable;
1799 uint32_t tcp_flag:9,
1800 tcp_flag_mask:9;
1801 uint32_t toeplitz_hash_ipv4[WMI_LRO_IPV4_SEED_ARR_SZ];
1802 uint32_t toeplitz_hash_ipv6[WMI_LRO_IPV6_SEED_ARR_SZ];
1803};
Govind Singhae855362016-03-07 14:24:22 +05301804
1805/**
1806 * struct gtx_config_t - GTX config
1807 * @gtx_rt_mask: for HT and VHT rate masks
1808 * @gtx_usrcfg: host request for GTX mask
1809 * @gtx_threshold: PER Threshold (default: 10%)
1810 * @gtx_margin: PER margin (default: 2%)
1811 * @gtx_tcpstep: TCP step (default: 1)
1812 * @gtx_tpcMin: TCP min (default: 5)
1813 * @gtx_bwmask: BW mask (20/40/80/160 Mhz)
1814 */
1815struct wmi_gtx_config {
1816 uint32_t gtx_rt_mask[2];
1817 uint32_t gtx_usrcfg;
1818 uint32_t gtx_threshold;
1819 uint32_t gtx_margin;
1820 uint32_t gtx_tpcstep;
1821 uint32_t gtx_tpcmin;
1822 uint32_t gtx_bwmask;
1823};
1824
1825/**
1826 * struct wmi_probe_resp_params - send probe response parameters
Krunal Soni36f17d42017-11-14 15:42:48 -08001827 * @prb_rsp_template_frm: pointer to template probe response template
1828 * @prb_rsp_template_len: length of probe response template
Govind Singhae855362016-03-07 14:24:22 +05301829 */
1830struct wmi_probe_resp_params {
Krunal Soni36f17d42017-11-14 15:42:48 -08001831 uint8_t *prb_rsp_template_frm;
1832 uint32_t prb_rsp_template_len;
Govind Singhae855362016-03-07 14:24:22 +05301833};
1834
Himanshu Agarwal9efd9bf2016-03-09 18:49:18 +05301835/* struct set_key_params: structure containing
1836 * installation key parameters
1837 * @vdev_id: vdev id
1838 * @key_len: key length
1839 * @key_idx: key index
1840 * @peer_mac: peer mac address
1841 * @key_flags: key flags, 0:pairwise key, 1:group key, 2:static key
1842 * @key_cipher: key cipher based on security mode
1843 * @key_txmic_len: tx mic length
1844 * @key_rxmic_len: rx mic length
Gurumoorthi Gnanasambandhan0d283282017-01-10 20:51:02 +05301845 * @key_tsc_counter: key tx sc counter
1846 * @key_rsc_counter: key rx sc counter
Himanshu Agarwal9efd9bf2016-03-09 18:49:18 +05301847 * @rx_iv: receive IV, applicable only in case of WAPI
1848 * @tx_iv: transmit IV, applicable only in case of WAPI
1849 * @key_data: key data
1850 */
1851struct set_key_params {
1852 uint8_t vdev_id;
1853 uint16_t key_len;
1854 uint32_t key_idx;
1855 uint8_t peer_mac[IEEE80211_ADDR_LEN];
1856 uint32_t key_flags;
1857 uint32_t key_cipher;
1858 uint32_t key_txmic_len;
1859 uint32_t key_rxmic_len;
Gurumoorthi Gnanasambandhan0d283282017-01-10 20:51:02 +05301860 uint64_t key_tsc_counter;
1861 uint64_t *key_rsc_counter;
1862#if defined(ATH_SUPPORT_WAPI) || defined(FEATURE_WLAN_WAPI)
Himanshu Agarwal9efd9bf2016-03-09 18:49:18 +05301863 uint8_t rx_iv[16];
1864 uint8_t tx_iv[16];
1865#endif
1866 uint8_t key_data[WMI_MAC_MAX_KEY_LENGTH];
1867};
1868
Govind Singhae855362016-03-07 14:24:22 +05301869/**
1870 * struct sta_params - sta keep alive parameters
1871 * @vdev_id: vdev id
1872 * @method: keep alive method
1873 * @timeperiod: time to keep alive
1874 * @hostv4addr: host ipv4 address
1875 * @destv4addr: destination ipv4 address
1876 * @destmac: destination mac address
1877 */
1878struct sta_params {
1879 uint8_t vdev_id;
1880 uint32_t method;
1881 uint32_t timeperiod;
1882 uint8_t *hostv4addr;
1883 uint8_t *destv4addr;
1884 uint8_t *destmac;
1885};
1886
1887/**
1888 * struct gateway_update_req_param - gateway parameter update request
1889 * @request_id: request id
1890 * @session_id: session id
1891 * @max_retries: Max ARP/NS retry attempts
1892 * @timeout: Retry interval
1893 * @ipv4_addr_type: on ipv4 network
1894 * @ipv6_addr_type: on ipv6 network
1895 * @gw_mac_addr: gateway mac addr
1896 * @ipv4_addr: ipv4 addr
1897 * @ipv6_addr: ipv6 addr
1898 */
1899struct gateway_update_req_param {
1900 uint32_t request_id;
1901 uint32_t session_id;
1902 uint32_t max_retries;
1903 uint32_t timeout;
1904 uint32_t ipv4_addr_type;
1905 uint32_t ipv6_addr_type;
Govind Singhd7468a52016-03-09 14:32:57 +05301906 struct qdf_mac_addr gw_mac_addr;
1907 uint8_t ipv4_addr[QDF_IPV4_ADDR_SIZE];
1908 uint8_t ipv6_addr[QDF_IPV6_ADDR_SIZE];
Govind Singhae855362016-03-07 14:24:22 +05301909};
1910
1911/**
1912 * struct rssi_monitor_param - rssi monitoring
1913 * @request_id: request id
1914 * @session_id: session id
1915 * @min_rssi: minimum rssi
1916 * @max_rssi: maximum rssi
1917 * @control: flag to indicate start or stop
1918 */
1919struct rssi_monitor_param {
1920 uint32_t request_id;
1921 uint32_t session_id;
1922 int8_t min_rssi;
1923 int8_t max_rssi;
1924 bool control;
1925};
1926
1927/**
1928 * struct scan_mac_oui - oui paramters
1929 * @oui: oui parameters
Rajeev Kumar Sirasanagandlad84e7e92017-06-08 18:12:50 +05301930 * @vdev_id: interface id
1931 * @enb_probe_req_sno_randomization: control probe req sequence no randomization
Rajeev Kumar Sirasanagandlaf3aaa332017-06-21 12:01:22 +05301932 * @ie_whitelist: probe req IE whitelist attrs
Govind Singhae855362016-03-07 14:24:22 +05301933 */
1934struct scan_mac_oui {
1935 uint8_t oui[WMI_WIFI_SCANNING_MAC_OUI_LENGTH];
Rajeev Kumar Sirasanagandlad84e7e92017-06-08 18:12:50 +05301936 uint32_t vdev_id;
1937 bool enb_probe_req_sno_randomization;
Rajeev Kumar Sirasanagandlaf3aaa332017-06-21 12:01:22 +05301938 struct probe_req_whitelist_attr ie_whitelist;
Govind Singhae855362016-03-07 14:24:22 +05301939};
1940
1941#define WMI_PASSPOINT_REALM_LEN 256
1942#define WMI_PASSPOINT_ROAMING_CONSORTIUM_ID_NUM 16
1943#define WMI_PASSPOINT_PLMN_LEN 3
1944/**
1945 * struct wifi_passpoint_network_param - passpoint network block
1946 * @id: identifier of this network block
1947 * @realm: null terminated UTF8 encoded realm, 0 if unspecified
1948 * @roaming_consortium_ids: roaming consortium ids to match, 0s if unspecified
1949 * @plmn: mcc/mnc combination as per rules, 0s if unspecified
1950 */
1951struct wifi_passpoint_network_param {
1952 uint32_t id;
1953 uint8_t realm[WMI_PASSPOINT_REALM_LEN];
1954 int64_t roaming_consortium_ids[WMI_PASSPOINT_ROAMING_CONSORTIUM_ID_NUM];
1955 uint8_t plmn[WMI_PASSPOINT_PLMN_LEN];
1956};
1957
1958/**
1959 * struct wifi_passpoint_req_param - passpoint request
1960 * @request_id: request identifier
1961 * @num_networks: number of networks
1962 * @networks: passpoint networks
1963 */
1964struct wifi_passpoint_req_param {
1965 uint32_t request_id;
1966 uint32_t session_id;
1967 uint32_t num_networks;
1968 struct wifi_passpoint_network_param networks[];
1969};
1970
Himanshu Agarwal5f2d0482016-03-09 15:25:44 +05301971/* struct mobility_domain_info - structure containing
1972 * mobility domain info
1973 * @mdie_present: mobility domain present or not
1974 * @mobility_domain: mobility domain
1975 */
1976struct mobility_domain_info {
1977 uint8_t mdie_present;
1978 uint16_t mobility_domain;
1979};
1980
Himanshu Agarwal56c292f2016-07-19 15:41:51 +05301981#define WMI_HOST_ROAM_OFFLOAD_NUM_MCS_SET (16)
1982
1983/* This TLV will be filled only in case roam offload
Deepak Dhamdherea65998e2017-02-09 19:40:26 -08001984 * for wpa2-psk/pmkid/ese/11r is enabled */
Himanshu Agarwal56c292f2016-07-19 15:41:51 +05301985typedef struct {
1986 /*
1987 * TLV tag and len; tag equals
1988 * WMITLV_TAG_STRUC_wmi_roam_offload_fixed_param
1989 */
1990 uint32_t tlv_header;
1991 uint32_t rssi_cat_gap; /* gap for every category bucket */
1992 uint32_t prefer_5g; /* prefer select 5G candidate */
1993 uint32_t select_5g_margin;
1994 uint32_t reassoc_failure_timeout; /* reassoc failure timeout */
1995 uint32_t capability;
1996 uint32_t ht_caps_info;
1997 uint32_t ampdu_param;
1998 uint32_t ht_ext_cap;
1999 uint32_t ht_txbf;
2000 uint32_t asel_cap;
2001 uint32_t qos_enabled;
2002 uint32_t qos_caps;
2003 uint32_t wmm_caps;
2004 /* since this is 4 byte aligned, we don't declare it as tlv array */
2005 uint32_t mcsset[WMI_HOST_ROAM_OFFLOAD_NUM_MCS_SET >> 2];
2006} roam_offload_param;
2007
Vignesh Viswanathan90cd7742017-09-25 14:36:38 +05302008#define WMI_FILS_MAX_RRK_LENGTH 64
2009#define WMI_FILS_MAX_RIK_LENGTH WMI_FILS_MAX_RRK_LENGTH
2010#define WMI_FILS_MAX_REALM_LENGTH 256
2011#define WMI_FILS_MAX_USERNAME_LENGTH 16
2012
2013/**
2014 * struct roam_fils_params - Roam FILS params
2015 * @username: username
2016 * @username_length: username length
2017 * @next_erp_seq_num: next ERP sequence number
2018 * @rrk: RRK
2019 * @rrk_length: length of @rrk
2020 * @rik: RIK
2021 * @rik_length: length of @rik
2022 * @realm: realm
2023 * @realm_len: length of @realm
2024 */
2025struct roam_fils_params {
2026 uint8_t username[WMI_FILS_MAX_USERNAME_LENGTH];
2027 uint32_t username_length;
2028 uint32_t next_erp_seq_num;
2029 uint8_t rrk[WMI_FILS_MAX_RRK_LENGTH];
2030 uint32_t rrk_length;
2031 uint8_t rik[WMI_FILS_MAX_RIK_LENGTH];
2032 uint32_t rik_length;
2033 uint8_t realm[WMI_FILS_MAX_REALM_LENGTH];
2034 uint32_t realm_len;
2035};
2036
Himanshu Agarwal5f2d0482016-03-09 15:25:44 +05302037/* struct roam_offload_scan_params - structure
2038 * containing roaming offload scan parameters
2039 * @is_roam_req_valid: flag to tell whether roam req
2040 * is valid or NULL
2041 * @mode: stores flags for scan
2042 * @vdev_id: vdev id
2043 * @roam_offload_enabled: flag for offload enable
2044 * @psk_pmk: pre shared key/pairwise master key
2045 * @pmk_len: length of PMK
2046 * @prefer_5ghz: prefer select 5G candidate
2047 * @roam_rssi_cat_gap: gap for every category bucket
2048 * @select_5ghz_margin: select 5 Ghz margin
2049 * @krk: KRK
2050 * @btk: BTK
2051 * @reassoc_failure_timeout: reassoc failure timeout
2052 * @rokh_id_length: r0kh id length
2053 * @rokh_id: r0kh id
2054 * @roam_key_mgmt_offload_enabled: roam offload flag
2055 * @auth_mode: authentication mode
Deepak Dhamdherea65998e2017-02-09 19:40:26 -08002056 * @fw_okc: use OKC in firmware
2057 * @fw_pmksa_cache: use PMKSA cache in firmware
Himanshu Agarwal5f2d0482016-03-09 15:25:44 +05302058 * @is_ese_assoc: flag to determine ese assoc
2059 * @mdid: mobility domain info
2060 * @roam_offload_params: roam offload tlv params
Vignesh Viswanathan90cd7742017-09-25 14:36:38 +05302061 * @assoc_ie_length: Assoc IE length
2062 * @assoc_ie: Assoc IE buffer
2063 * @add_fils_tlv: add FILS TLV boolean
2064 * @roam_fils_params: roam fils params
Himanshu Agarwal5f2d0482016-03-09 15:25:44 +05302065 */
2066struct roam_offload_scan_params {
2067 uint8_t is_roam_req_valid;
2068 uint32_t mode;
2069 uint32_t vdev_id;
2070#ifdef WLAN_FEATURE_ROAM_OFFLOAD
2071 uint8_t roam_offload_enabled;
2072 uint8_t psk_pmk[WMI_ROAM_SCAN_PSK_SIZE];
2073 uint32_t pmk_len;
2074 uint8_t prefer_5ghz;
2075 uint8_t roam_rssi_cat_gap;
2076 uint8_t select_5ghz_margin;
2077 uint8_t krk[WMI_KRK_KEY_LEN];
2078 uint8_t btk[WMI_BTK_KEY_LEN];
2079 uint32_t reassoc_failure_timeout;
2080 uint32_t rokh_id_length;
2081 uint8_t rokh_id[WMI_ROAM_R0KH_ID_MAX_LEN];
2082 uint8_t roam_key_mgmt_offload_enabled;
2083 int auth_mode;
Deepak Dhamdherea65998e2017-02-09 19:40:26 -08002084 bool fw_okc;
2085 bool fw_pmksa_cache;
Himanshu Agarwal5f2d0482016-03-09 15:25:44 +05302086#endif
2087 bool is_ese_assoc;
2088 struct mobility_domain_info mdid;
Kiran Venkatappa9da7e042016-08-09 22:52:35 +05302089#ifdef CONFIG_MCL
Govind Singh89727882016-04-15 13:58:27 +05302090 /* THis is not available in non tlv target.
2091 * please remove this and replace with a host based
2092 * structure */
Himanshu Agarwal56c292f2016-07-19 15:41:51 +05302093 roam_offload_param roam_offload_params;
Govind Singh89727882016-04-15 13:58:27 +05302094#endif
Selvaraj, Sridhar0a1427f2016-07-04 21:40:23 +05302095 uint32_t assoc_ie_length;
2096 uint8_t assoc_ie[MAX_ASSOC_IE_LENGTH];
Vignesh Viswanathan90cd7742017-09-25 14:36:38 +05302097 bool add_fils_tlv;
2098#ifdef WLAN_FEATURE_FILS_SK
2099 struct roam_fils_params roam_fils_params;
2100#endif
Himanshu Agarwal5f2d0482016-03-09 15:25:44 +05302101};
2102
2103/* struct roam_offload_scan_rssi_params - structure containing
2104 * parameters for roam offload scan based on RSSI
2105 * @rssi_thresh: rssi threshold
2106 * @rssi_thresh_diff: difference in rssi threshold
2107 * @hi_rssi_scan_max_count: 5G scan max count
2108 * @hi_rssi_scan_rssi_delta: 5G scan rssi change threshold value
2109 * @hi_rssi_scan_rssi_ub: 5G scan upper bound
2110 * @raise_rssi_thresh_5g: flag to determine penalty and boost thresholds
2111 * @session_id: vdev id
2112 * @penalty_threshold_5g: RSSI threshold below which 5GHz RSSI is penalized
2113 * @boost_threshold_5g: RSSI threshold above which 5GHz RSSI is favored
2114 * @raise_factor_5g: factor by which 5GHz RSSI is boosted
2115 * @drop_factor_5g: factor by which 5GHz RSSI is penalized
2116 * @max_raise_rssi_5g: maximum boost that can be applied to a 5GHz RSSI
2117 * @max_drop_rssi_5g: maximum penalty that can be applied to a 5GHz RSSI
2118 * @good_rssi_threshold: RSSI below which roam is kicked in by background
2119 * scan although rssi is still good
2120 * @roam_earlystop_thres_min: Minimum RSSI threshold value for early stop,
2121 * unit is dB above NF
2122 * @roam_earlystop_thres_max: Maximum RSSI threshold value for early stop,
2123 * unit is dB above NF
Gupta, Kapil1f4a4c32016-04-12 15:02:00 +05302124 * @dense_rssi_thresh_offset: dense roam RSSI threshold difference
2125 * @dense_min_aps_cnt: dense roam minimum APs
2126 * @initial_dense_status: dense status detected by host
2127 * @traffic_threshold: dense roam RSSI threshold
Varun Reddy Yeturu05c775b2017-07-26 10:59:39 -07002128 * @bg_scan_bad_rssi_thresh: Bad RSSI threshold to perform bg scan
Vignesh Viswanathan1384bb02017-09-07 18:58:08 +05302129 * @roam_bad_rssi_thresh_offset_2g: Offset from Bad RSSI threshold for 2G to 5G Roam
Varun Reddy Yeturu05c775b2017-07-26 10:59:39 -07002130 * @bg_scan_client_bitmap: Bitmap used to identify the client scans to snoop
Vignesh Viswanathan1384bb02017-09-07 18:58:08 +05302131 * @flags: Flags for Background Roaming
2132 * Bit 0 : BG roaming enabled when we connect to 2G AP only and roaming to 5G AP only.
2133 * Bit 1-31: Reserved
Himanshu Agarwal5f2d0482016-03-09 15:25:44 +05302134 */
2135struct roam_offload_scan_rssi_params {
2136 int8_t rssi_thresh;
2137 uint8_t rssi_thresh_diff;
2138 uint32_t hi_rssi_scan_max_count;
2139 uint32_t hi_rssi_scan_rssi_delta;
2140 int32_t hi_rssi_scan_rssi_ub;
2141 int raise_rssi_thresh_5g;
2142 uint8_t session_id;
2143 uint32_t penalty_threshold_5g;
2144 uint32_t boost_threshold_5g;
2145 uint8_t raise_factor_5g;
2146 uint8_t drop_factor_5g;
2147 int max_raise_rssi_5g;
2148 int max_drop_rssi_5g;
2149 uint32_t good_rssi_threshold;
2150 uint32_t roam_earlystop_thres_min;
2151 uint32_t roam_earlystop_thres_max;
Gupta, Kapil1f4a4c32016-04-12 15:02:00 +05302152 int dense_rssi_thresh_offset;
2153 int dense_min_aps_cnt;
2154 int initial_dense_status;
2155 int traffic_threshold;
Varun Reddy Yeturu51d211b2017-06-26 13:53:17 -07002156 int32_t rssi_thresh_offset_5g;
Varun Reddy Yeturu05c775b2017-07-26 10:59:39 -07002157 int8_t bg_scan_bad_rssi_thresh;
Vignesh Viswanathan1384bb02017-09-07 18:58:08 +05302158 uint8_t roam_bad_rssi_thresh_offset_2g;
Varun Reddy Yeturu05c775b2017-07-26 10:59:39 -07002159 uint32_t bg_scan_client_bitmap;
Vignesh Viswanathan1384bb02017-09-07 18:58:08 +05302160 uint32_t flags;
Himanshu Agarwal5f2d0482016-03-09 15:25:44 +05302161};
2162
Govind Singhae855362016-03-07 14:24:22 +05302163/**
Himanshu Agarwalf9524e12017-09-28 11:51:35 +05302164 * struct ap_profile - Structure ap profile to match candidate
2165 * @flags: flags
2166 * @rssi_threshold: the value of the the candidate AP should higher by this
2167 * threshold than the rssi of the currrently associated AP
2168 * @ssid: ssid vlaue to be matched
2169 * @rsn_authmode: security params to be matched
2170 * @rsn_ucastcipherset: unicast cipher set
2171 * @rsn_mcastcipherset: mcast/group cipher set
2172 * @rsn_mcastmgmtcipherset: mcast/group management frames cipher set
2173 * @rssi_abs_thresh: the value of the candidate AP should higher than this
2174 * absolute RSSI threshold. Zero means no absolute minimum
2175 * RSSI is required. units are the offset from the noise
2176 * floor in dB
2177 */
2178struct ap_profile {
2179 uint32_t flags;
2180 uint32_t rssi_threshold;
2181 struct mac_ssid ssid;
2182 uint32_t rsn_authmode;
2183 uint32_t rsn_ucastcipherset;
2184 uint32_t rsn_mcastcipherset;
2185 uint32_t rsn_mcastmgmtcipherset;
2186 uint32_t rssi_abs_thresh;
2187};
2188
2189/**
2190 * struct rssi_scoring - rssi scoring param to sortlist selected AP
2191 * @best_rssi_threshold: Roamable AP RSSI equal or better than this threshold,
2192 * full rssi score 100. Units in dBm.
2193 * @good_rssi_threshold: Below threshold, scoring linear percentage between
2194 * rssi_good_pnt and 100. Units in dBm.
2195 * @bad_rssi_threshold: Between good and bad rssi threshold, scoring linear
2196 * % between rssi_bad_pcnt and rssi_good_pct in dBm.
2197 * @good_rssi_pcnt: Used to assigned scoring percentage of each slot between
2198 * best to good rssi threshold. Units in percentage.
2199 * @bad_rssi_pcnt: Used to assigned scoring percentage of each slot between good
2200 * to bad rssi threshold. Unites in percentage.
2201 * @good_bucket_size : bucket size of slot in good zone
2202 * @bad_bucket_size : bucket size of slot in bad zone
2203 * @rssi_pref_5g_rssi_thresh: Below rssi threshold, 5G AP have given preference
2204 * of band percentage. Units in dBm.
2205 */
2206struct rssi_scoring {
2207 int32_t best_rssi_threshold;
2208 int32_t good_rssi_threshold;
2209 int32_t bad_rssi_threshold;
2210 uint32_t good_rssi_pcnt;
2211 uint32_t bad_rssi_pcnt;
2212 uint32_t good_bucket_size;
2213 uint32_t bad_bucket_size;
2214 int32_t rssi_pref_5g_rssi_thresh;
2215};
2216
2217/**
2218 * struct param_slot_scoring - define % score for differents slots for a
2219 * scoring param.
2220 * @num_slot: number of slots in which the param will be divided.
2221 * Max 15. index 0 is used for 'not_present. Num_slot will
2222 * equally divide 100. e.g, if num_slot = 4 slot 0 = 0-25%, slot
2223 * 1 = 26-50% slot 2 = 51-75%, slot 3 = 76-100%
2224 * @score_pcnt3_to_0: Conatins score percentage for slot 0-3
2225 * BITS 0-7 :- the scoring pcnt when not present
2226 * BITS 8-15 :- SLOT_1
2227 * BITS 16-23 :- SLOT_2
2228 * BITS 24-31 :- SLOT_3
2229 * @score_pcnt7_to_4: Conatins score percentage for slot 4-7
2230 * BITS 0-7 :- SLOT_4
2231 * BITS 8-15 :- SLOT_5
2232 * BITS 16-23 :- SLOT_6
2233 * BITS 24-31 :- SLOT_7
2234 * @score_pcnt11_to_8: Conatins score percentage for slot 8-11
2235 * BITS 0-7 :- SLOT_8
2236 * BITS 8-15 :- SLOT_9
2237 * BITS 16-23 :- SLOT_10
2238 * BITS 24-31 :- SLOT_11
2239 * @score_pcnt15_to_12: Conatins score percentage for slot 12-15
2240 * BITS 0-7 :- SLOT_12
2241 * BITS 8-15 :- SLOT_13
2242 * BITS 16-23 :- SLOT_14
2243 * BITS 24-31 :- SLOT_15
2244 */
2245struct param_slot_scoring {
2246 uint32_t num_slot;
2247 uint32_t score_pcnt3_to_0;
2248 uint32_t score_pcnt7_to_4;
2249 uint32_t score_pcnt11_to_8;
2250 uint32_t score_pcnt15_to_12;
2251};
2252
2253/**
2254 * struct scoring_param - scoring param to sortlist selected AP
2255 * @disable_bitmap: Each bit will be either allow(0)/disallow(1) to
2256 * considered the roam score param.
2257 * @rssi_weightage: RSSI weightage out of total score in %
2258 * @ht_weightage: HT weightage out of total score in %.
2259 * @vht_weightage: VHT weightage out of total score in %.
2260 * @he_weightaget: 11ax weightage out of total score in %.
2261 * @bw_weightage: Bandwidth weightage out of total score in %.
2262 * @band_weightage: Band(2G/5G) weightage out of total score in %.
2263 * @nss_weightage: NSS(1x1 / 2x2)weightage out of total score in %.
2264 * @esp_qbss_weightage: ESP/QBSS weightage out of total score in %.
2265 * @beamforming_weightage: Beamforming weightage out of total score in %.
2266 * @pcl_weightage: PCL weightage out of total score in %.
2267 * @oce_wan_weightage OCE WAN metrics weightage out of total score in %.
2268 * @bw_index_score: channel BW scoring percentage information.
2269 * BITS 0-7 :- It contains scoring percentage of 20MHz BW
2270 * BITS 8-15 :- It contains scoring percentage of 40MHz BW
2271 * BITS 16-23 :- It contains scoring percentage of 80MHz BW
2272 * BITS 24-31 :- It contains scoring percentage of 1600MHz BW
2273 * The value of each index must be 0-100
2274 * @band_index_score: band scording percentage information.
2275 * BITS 0-7 :- It contains scoring percentage of 2G
2276 * BITS 8-15 :- It contains scoring percentage of 5G
2277 * BITS 16-23 :- reserved
2278 * BITS 24-31 :- reserved
2279 * The value of each index must be 0-100
2280 * @nss_index_score: NSS scoring percentage information.
2281 * BITS 0-7 :- It contains scoring percentage of 1x1
2282 * BITS 8-15 :- It contains scoring percentage of 2x2
2283 * BITS 16-23 :- It contains scoring percentage of 3x3
2284 * BITS 24-31 :- It contains scoring percentage of 4x4
2285 * The value of each index must be 0-100
2286 * @rssi_scoring: RSSI scoring information.
2287 * @esp_qbss_scoring: ESP/QBSS scoring percentage information
2288 * @oce_wan_scoring: OCE WAN metrics percentage information
2289*/
2290struct scoring_param {
2291 uint32_t disable_bitmap;
2292 int32_t rssi_weightage;
2293 int32_t ht_weightage;
2294 int32_t vht_weightage;
2295 int32_t he_weightage;
2296 int32_t bw_weightage;
2297 int32_t band_weightage;
2298 int32_t nss_weightage;
2299 int32_t esp_qbss_weightage;
2300 int32_t beamforming_weightage;
2301 int32_t pcl_weightage;
2302 int32_t oce_wan_weightage;
2303 uint32_t bw_index_score;
2304 uint32_t band_index_score;
2305 uint32_t nss_index_score;
2306 struct rssi_scoring rssi_scoring;
2307 struct param_slot_scoring esp_qbss_scoring;
2308 struct param_slot_scoring oce_wan_scoring;
2309};
2310
2311/**
2312 * struct ap_profile_params - ap profile params
2313 * @vdev_id: vdev id
2314 * @profile: ap profile to match candidate
2315 * @param: scoring params to short candidate
2316 */
2317struct ap_profile_params {
2318 uint8_t vdev_id;
2319 struct ap_profile profile;
2320 struct scoring_param param;
2321};
2322
2323/**
Govind Singhae855362016-03-07 14:24:22 +05302324 * struct wifi_epno_network - enhanced pno network block
2325 * @ssid: ssid
2326 * @rssi_threshold: threshold for considering this SSID as found, required
2327 * granularity for this threshold is 4dBm to 8dBm
2328 * @flags: WIFI_PNO_FLAG_XXX
2329 * @auth_bit_field: auth bit field for matching WPA IE
2330 */
2331struct wifi_epno_network_params {
2332 struct mac_ssid ssid;
2333 int8_t rssi_threshold;
2334 uint8_t flags;
2335 uint8_t auth_bit_field;
2336};
2337
2338/**
2339 * struct wifi_enhanched_pno_params - enhanced pno network params
Mukul Sharma90bc73b2016-10-03 15:04:20 +05302340 * @request_id: request id number
2341 * @session_id: session_id number
2342 * @min_5ghz_rssi: minimum 5GHz RSSI for a BSSID to be considered
2343 * @min_24ghz_rssi: minimum 2.4GHz RSSI for a BSSID to be considered
2344 * @initial_score_max: maximum score that a network can have before bonuses
2345 * @current_connection_bonus: only report when there is a network's score this
2346 * much higher than the current connection
2347 * @same_network_bonus: score bonus for all n/w with the same network flag
2348 * @secure_bonus: score bonus for networks that are not open
2349 * @band_5ghz_bonus: 5GHz RSSI score bonus (applied to all 5GHz networks)
Govind Singhae855362016-03-07 14:24:22 +05302350 * @num_networks: number of ssids
Mukul Sharma90bc73b2016-10-03 15:04:20 +05302351 * @networks: EPNO networks
Govind Singhae855362016-03-07 14:24:22 +05302352 */
2353struct wifi_enhanched_pno_params {
2354 uint32_t request_id;
2355 uint32_t session_id;
Mukul Sharma90bc73b2016-10-03 15:04:20 +05302356 uint32_t min_5ghz_rssi;
2357 uint32_t min_24ghz_rssi;
2358 uint32_t initial_score_max;
2359 uint32_t current_connection_bonus;
2360 uint32_t same_network_bonus;
2361 uint32_t secure_bonus;
2362 uint32_t band_5ghz_bonus;
Govind Singhae855362016-03-07 14:24:22 +05302363 uint32_t num_networks;
2364 struct wifi_epno_network_params networks[];
2365};
2366
2367enum {
2368 WMI_AP_RX_DATA_OFFLOAD = 0x00,
2369 WMI_STA_RX_DATA_OFFLOAD = 0x01,
2370};
2371
2372/**
Govind Singhc7cd2d62016-06-21 14:33:26 +05302373 * enum extscan_configuration_flags - extscan config flags
2374 * @WMI_EXTSCAN_LP_EXTENDED_BATCHING: extended batching
2375 */
2376enum wmi_extscan_configuration_flags {
2377 WMI_EXTSCAN_LP_EXTENDED_BATCHING = 0x00000001,
2378};
2379
2380/**
Govind Singhae855362016-03-07 14:24:22 +05302381 * enum extscan_report_events_type - extscan report events type
2382 * @EXTSCAN_REPORT_EVENTS_BUFFER_FULL: report only when scan history is % full
2383 * @EXTSCAN_REPORT_EVENTS_EACH_SCAN: report a scan completion event after scan
2384 * @EXTSCAN_REPORT_EVENTS_FULL_RESULTS: forward scan results
2385 * (beacons/probe responses + IEs)
2386 * in real time to HAL, in addition to completion events.
2387 * Note: To keep backward compatibility,
2388 * fire completion events regardless of REPORT_EVENTS_EACH_SCAN.
2389 * @EXTSCAN_REPORT_EVENTS_NO_BATCH: controls batching,
2390 * 0 => batching, 1 => no batching
2391 */
2392enum wmi_extscan_report_events_type {
2393 WMI_EXTSCAN_REPORT_EVENTS_BUFFER_FULL = 0x00,
2394 WMI_EXTSCAN_REPORT_EVENTS_EACH_SCAN = 0x01,
2395 WMI_EXTSCAN_REPORT_EVENTS_FULL_RESULTS = 0x02,
2396 WMI_EXTSCAN_REPORT_EVENTS_NO_BATCH = 0x04,
2397};
2398
2399/**
2400 * struct ipa_offload_control_params - ipa offload parameters
2401 * @offload_type: ipa offload type
2402 * @vdev_id: vdev id
2403 * @enable: ipa offload enable/disable
2404 */
2405struct ipa_offload_control_params {
2406 uint32_t offload_type;
2407 uint32_t vdev_id;
2408 uint32_t enable;
2409};
2410
2411/**
2412 * struct extscan_capabilities_params - ext scan capablities
2413 * @request_id: request_id
2414 * @session_id: session_id
2415 */
2416struct extscan_capabilities_params {
2417 uint32_t request_id;
2418 uint8_t session_id;
2419};
2420
2421/**
2422 * struct extscan_capabilities_reset_params - ext scan capablities reset parameter
2423 * @request_id: request_id
2424 * @session_id: session_id
2425 */
2426struct extscan_capabilities_reset_params {
2427 uint32_t request_id;
2428 uint8_t session_id;
2429};
2430
2431/**
2432 * struct extscan_bssid_hotlist_reset_params - ext scan hotlist reset parameter
2433 * @request_id: request_id
2434 * @session_id: session_id
2435 */
2436struct extscan_bssid_hotlist_reset_params {
2437 uint32_t request_id;
2438 uint8_t session_id;
2439};
2440
2441/**
2442 * struct extscan_stop_req_params - ext scan stop parameter
2443 * @request_id: request_id
2444 * @session_id: session_id
2445 */
2446struct extscan_stop_req_params {
2447 uint32_t request_id;
2448 uint8_t session_id;
2449};
2450
2451/**
2452 * struct ap_threshold_params - ap threshold parameter
2453 * @bssid: mac address
2454 * @low: low threshold
2455 * @high: high threshold
2456 */
2457struct ap_threshold_params {
Govind Singhd7468a52016-03-09 14:32:57 +05302458 struct qdf_mac_addr bssid;
Govind Singhae855362016-03-07 14:24:22 +05302459 int32_t low;
2460 int32_t high;
2461};
2462
2463/**
2464 * struct extscan_set_sig_changereq_params - ext scan channel parameter
2465 * @request_id: mac address
2466 * @session_id: low threshold
2467 * @rssi_sample_size: Number of samples for averaging RSSI
2468 * @lostap_sample_size: Number of missed samples to confirm AP loss
2469 * @min_breaching: Number of APs breaching threshold required for firmware
2470 * @num_ap: no of scanned ap
2471 * @ap: ap threshold parameter
2472 */
2473struct extscan_set_sig_changereq_params {
2474 uint32_t request_id;
2475 uint8_t session_id;
2476 uint32_t rssi_sample_size;
2477 uint32_t lostap_sample_size;
2478 uint32_t min_breaching;
2479 uint32_t num_ap;
2480 struct ap_threshold_params ap[WMI_EXTSCAN_MAX_SIGNIFICANT_CHANGE_APS];
2481};
2482
2483/**
2484 * struct extscan_cached_result_params - ext scan cached parameter
2485 * @request_id: mac address
2486 * @session_id: low threshold
2487 * @flush: cached results flush
2488 */
2489struct extscan_cached_result_params {
2490 uint32_t request_id;
2491 uint8_t session_id;
2492 bool flush;
2493};
2494
Govind Singhae855362016-03-07 14:24:22 +05302495#define WMI_WLAN_EXTSCAN_MAX_CHANNELS 36
2496#define WMI_WLAN_EXTSCAN_MAX_BUCKETS 16
2497#define WMI_WLAN_EXTSCAN_MAX_HOTLIST_APS 128
2498#define WMI_WLAN_EXTSCAN_MAX_SIGNIFICANT_CHANGE_APS 64
2499#define WMI_EXTSCAN_MAX_HOTLIST_SSIDS 8
2500
2501/**
2502 * struct wifi_scan_channelspec_params - wifi scan channel parameter
2503 * @channel: Frequency in MHz
2504 * @dwellTimeMs: dwell time
2505 * @flush: cached results flush
2506 * @passive: passive scan
2507 * @chnlClass: channel class
2508 */
2509struct wifi_scan_channelspec_params {
2510 uint32_t channel;
2511 uint32_t dwellTimeMs;
2512 bool passive;
2513 uint8_t chnlClass;
2514};
2515
2516/**
2517 * enum wmi_wifi_band - wifi band
2518 * @WMI_WIFI_BAND_UNSPECIFIED: unspecified band
2519 * @WMI_WIFI_BAND_BG: 2.4 GHz
2520 * @WMI_WIFI_BAND_A: 5 GHz without DFS
2521 * @WMI_WIFI_BAND_ABG: 2.4 GHz + 5 GHz; no DFS
2522 * @WMI_WIFI_BAND_A_DFS_ONLY: 5 GHz DFS only
2523 * @WMI_WIFI_BAND_A_WITH_DFS: 5 GHz with DFS
2524 * @WMI_WIFI_BAND_ABG_WITH_DFS: 2.4 GHz + 5 GHz with DFS
2525 * @WMI_WIFI_BAND_MAX: max range
2526 */
2527enum wmi_wifi_band {
2528 WMI_WIFI_BAND_UNSPECIFIED,
2529 WMI_WIFI_BAND_BG = 1,
2530 WMI_WIFI_BAND_A = 2,
2531 WMI_WIFI_BAND_ABG = 3,
2532 WMI_WIFI_BAND_A_DFS_ONLY = 4,
2533 /* 5 is reserved */
2534 WMI_WIFI_BAND_A_WITH_DFS = 6,
2535 WMI_WIFI_BAND_ABG_WITH_DFS = 7,
2536 /* Keep it last */
2537 WMI_WIFI_BAND_MAX
2538};
2539
2540/**
2541 * struct wifi_scan_bucket_params - wifi scan bucket spec
2542 * @bucket: bucket identifier
2543 * @band: wifi band
2544 * @period: Desired period, in millisecond; if this is too
2545 * low, the firmware should choose to generate results as fast as
2546 * it can instead of failing the command byte
2547 * for exponential backoff bucket this is the min_period
2548 * @reportEvents: 0 => normal reporting (reporting rssi history
2549 * only, when rssi history buffer is % full)
2550 * 1 => same as 0 + report a scan completion event after scanning
2551 * this bucket
2552 * 2 => same as 1 + forward scan results
2553 * (beacons/probe responses + IEs) in real time to HAL
2554 * @max_period: if max_period is non zero or different than period,
2555 * then this bucket is an exponential backoff bucket and
2556 * the scan period will grow exponentially as per formula:
2557 * actual_period(N) = period ^ (N/(step_count+1)) to a
2558 * maximum period of max_period
2559 * @exponent: for exponential back off bucket: multiplier:
2560 * new_period = old_period * exponent
2561 * @step_count: for exponential back off bucket, number of scans performed
2562 * at a given period and until the exponent is applied
2563 * @numChannels: channels to scan; these may include DFS channels
2564 * Note that a given channel may appear in multiple buckets
2565 * @min_dwell_time_active: per bucket minimum active dwell time
2566 * @max_dwell_time_active: per bucket maximum active dwell time
2567 * @min_dwell_time_passive: per bucket minimum passive dwell time
2568 * @max_dwell_time_passive: per bucket maximum passive dwell time
2569 * @channels: Channel list
2570 */
2571struct wifi_scan_bucket_params {
2572 uint8_t bucket;
2573 enum wmi_wifi_band band;
2574 uint32_t period;
2575 uint32_t reportEvents;
2576 uint32_t max_period;
2577 uint32_t exponent;
2578 uint32_t step_count;
2579 uint32_t numChannels;
2580 uint32_t min_dwell_time_active;
2581 uint32_t max_dwell_time_active;
2582 uint32_t min_dwell_time_passive;
2583 uint32_t max_dwell_time_passive;
2584 struct wifi_scan_channelspec_params channels[WMI_WLAN_EXTSCAN_MAX_CHANNELS];
2585};
2586
2587/**
2588 * struct wifi_scan_cmd_req_params - wifi scan command request params
2589 * @basePeriod: base timer period
2590 * @maxAPperScan: max ap per scan
2591 * @report_threshold_percent: report threshold
2592 * in %, when buffer is this much full, wake up host
2593 * @report_threshold_num_scans: report threshold number of scans
2594 * in number of scans, wake up host after these many scans
2595 * @requestId: request id
2596 * @sessionId: session id
2597 * @numBuckets: number of buckets
2598 * @min_dwell_time_active: per bucket minimum active dwell time
2599 * @max_dwell_time_active: per bucket maximum active dwell time
2600 * @min_dwell_time_passive: per bucket minimum passive dwell time
2601 * @max_dwell_time_passive: per bucket maximum passive dwell time
2602 * @configuration_flags: configuration flags
Gupta, Kapil7b768002016-04-25 19:14:19 +05302603 * @extscan_adaptive_dwell_mode: adaptive dwelltime mode for extscan
Govind Singhae855362016-03-07 14:24:22 +05302604 * @buckets: buckets array
2605 */
2606struct wifi_scan_cmd_req_params {
2607 uint32_t basePeriod;
2608 uint32_t maxAPperScan;
2609
2610 uint32_t report_threshold_percent;
2611 uint32_t report_threshold_num_scans;
2612
2613 uint32_t requestId;
2614 uint8_t sessionId;
2615 uint32_t numBuckets;
2616
2617 uint32_t min_dwell_time_active;
2618 uint32_t max_dwell_time_active;
2619 uint32_t min_dwell_time_passive;
2620 uint32_t max_dwell_time_passive;
2621 uint32_t configuration_flags;
Gupta, Kapil7b768002016-04-25 19:14:19 +05302622 enum wmi_dwelltime_adaptive_mode extscan_adaptive_dwell_mode;
Govind Singhae855362016-03-07 14:24:22 +05302623 struct wifi_scan_bucket_params buckets[WMI_WLAN_EXTSCAN_MAX_BUCKETS];
2624};
2625
Govind Singhae855362016-03-07 14:24:22 +05302626#define WMI_CFG_VALID_CHANNEL_LIST_LEN 100
Govind Singhc7cd2d62016-06-21 14:33:26 +05302627/* Occupied channel list remains static */
2628#define WMI_CHANNEL_LIST_STATIC 1
2629/* Occupied channel list can be learnt after init */
2630#define WMI_CHANNEL_LIST_DYNAMIC_INIT 2
2631/* Occupied channel list can be learnt after flush */
2632#define WMI_CHANNEL_LIST_DYNAMIC_FLUSH 3
2633/* Occupied channel list can be learnt after update */
2634#define WMI_CHANNEL_LIST_DYNAMIC_UPDATE 4
Govind Singhae855362016-03-07 14:24:22 +05302635
2636/**
2637 * struct plm_req_params - plm req parameter
2638 * @diag_token: Dialog token
2639 * @meas_token: measurement token
2640 * @num_bursts: total number of bursts
2641 * @burst_int: burst interval in seconds
2642 * @meas_duration:in TU's,STA goes off-ch
2643 * @burst_len: no of times the STA should cycle through PLM ch list
2644 * @desired_tx_pwr: desired tx power
2645 * @mac_addr: MC dest addr
2646 * @plm_num_ch: channel numbers
2647 * @plm_ch_list: channel list
2648 * @session_id: session id
2649 * @enable: enable/disable
2650 */
2651struct plm_req_params {
2652 uint16_t diag_token;
2653 uint16_t meas_token;
2654 uint16_t num_bursts;
2655 uint16_t burst_int;
2656 uint16_t meas_duration;
2657 /* no of times the STA should cycle through PLM ch list */
2658 uint8_t burst_len;
2659 int8_t desired_tx_pwr;
Govind Singhd7468a52016-03-09 14:32:57 +05302660 struct qdf_mac_addr mac_addr;
Govind Singhae855362016-03-07 14:24:22 +05302661 /* no of channels */
2662 uint8_t plm_num_ch;
2663 /* channel numbers */
2664 uint8_t plm_ch_list[WMI_CFG_VALID_CHANNEL_LIST_LEN];
2665 uint8_t session_id;
2666 bool enable;
2667};
Naveen Rawatd5ffe152016-04-14 23:42:46 -07002668
Himanshu Agarwal5f2d0482016-03-09 15:25:44 +05302669#define MAX_SSID_ALLOWED_LIST 4
2670#define MAX_BSSID_AVOID_LIST 16
2671#define MAX_BSSID_FAVORED 16
Abhishek Singh5fa02552017-07-05 11:21:32 +05302672#define MAX_RSSI_AVOID_BSSID_LIST 10
Govind Singhae855362016-03-07 14:24:22 +05302673
2674/**
2675 * struct mac_ts_info_tfc - mac ts info parameters
2676 * @burstSizeDefn: burst size
2677 * @reserved: reserved
2678 * @ackPolicy: ack policy
2679 * @psb: psb
2680 * @aggregation: aggregation
2681 * @accessPolicy: access policy
2682 * @direction: direction
2683 * @tsid: direction
2684 * @trafficType: traffic type
2685 */
2686struct mac_ts_info_tfc {
2687#ifndef ANI_LITTLE_BIT_ENDIAN
2688 uint8_t burstSizeDefn:1;
2689 uint8_t reserved:7;
2690#else
2691 uint8_t reserved:7;
2692 uint8_t burstSizeDefn:1;
2693#endif
2694
2695#ifndef ANI_LITTLE_BIT_ENDIAN
2696 uint16_t ackPolicy:2;
2697 uint16_t userPrio:3;
2698 uint16_t psb:1;
2699 uint16_t aggregation:1;
2700 uint16_t accessPolicy:2;
2701 uint16_t direction:2;
2702 uint16_t tsid:4;
2703 uint16_t trafficType:1;
2704#else
2705 uint16_t trafficType:1;
2706 uint16_t tsid:4;
2707 uint16_t direction:2;
2708 uint16_t accessPolicy:2;
2709 uint16_t aggregation:1;
2710 uint16_t psb:1;
2711 uint16_t userPrio:3;
2712 uint16_t ackPolicy:2;
2713#endif
Govind Singhd7468a52016-03-09 14:32:57 +05302714} qdf_packed;
Govind Singhae855362016-03-07 14:24:22 +05302715
2716/**
2717 * struct mac_ts_info_sch - mac ts info schedule parameters
2718 * @rsvd: reserved
2719 * @schedule: schedule bit
2720 */
2721struct mac_ts_info_sch {
2722#ifndef ANI_LITTLE_BIT_ENDIAN
2723 uint8_t rsvd:7;
2724 uint8_t schedule:1;
2725#else
2726 uint8_t schedule:1;
2727 uint8_t rsvd:7;
2728#endif
Govind Singhd7468a52016-03-09 14:32:57 +05302729} qdf_packed;
Govind Singhae855362016-03-07 14:24:22 +05302730
2731/**
2732 * struct mac_ts_info_sch - mac ts info schedule parameters
2733 * @traffic: mac tfc parameter
2734 * @schedule: mac schedule parameters
2735 */
2736struct mac_ts_info {
2737 struct mac_ts_info_tfc traffic;
2738 struct mac_ts_info_sch schedule;
Govind Singhd7468a52016-03-09 14:32:57 +05302739} qdf_packed;
Govind Singhae855362016-03-07 14:24:22 +05302740
2741/**
2742 * struct mac_tspec_ie - mac ts spec
2743 * @type: type
2744 * @length: length
2745 * @tsinfo: tsinfo
2746 * @nomMsduSz: nomMsduSz
2747 * @maxMsduSz: maxMsduSz
2748 * @minSvcInterval: minSvcInterval
2749 * @maxSvcInterval: maxSvcInterval
2750 * @inactInterval: inactInterval
2751 * @suspendInterval: suspendInterval
2752 * @svcStartTime: svcStartTime
2753 * @minDataRate: minDataRate
2754 * @meanDataRate: meanDataRate
2755 * @peakDataRate: peakDataRate
2756 * @maxBurstSz: maxBurstSz
2757 * @delayBound: delayBound
2758 * @minPhyRate: minPhyRate
2759 * @surplusBw: surplusBw
2760 * @mediumTime: mediumTime
2761 */
2762struct mac_tspec_ie {
2763 uint8_t type;
2764 uint8_t length;
2765 struct mac_ts_info tsinfo;
2766 uint16_t nomMsduSz;
2767 uint16_t maxMsduSz;
2768 uint32_t minSvcInterval;
2769 uint32_t maxSvcInterval;
2770 uint32_t inactInterval;
2771 uint32_t suspendInterval;
2772 uint32_t svcStartTime;
2773 uint32_t minDataRate;
2774 uint32_t meanDataRate;
2775 uint32_t peakDataRate;
2776 uint32_t maxBurstSz;
2777 uint32_t delayBound;
2778 uint32_t minPhyRate;
2779 uint16_t surplusBw;
2780 uint16_t mediumTime;
Govind Singhd7468a52016-03-09 14:32:57 +05302781} qdf_packed;
Govind Singhae855362016-03-07 14:24:22 +05302782
2783/**
2784 * struct add_ts_param - ADDTS related parameters
2785 * @staIdx: station index
2786 * @tspecIdx: TSPEC handler uniquely identifying a TSPEC for a STA in a BSS
2787 * @tspec: tspec value
2788 * @status: CDF status
2789 * @sessionId: session id
Govind Singhd7468a52016-03-09 14:32:57 +05302790 * @tsm_interval: TSM interval period passed from UMAC to WMI
Govind Singhae855362016-03-07 14:24:22 +05302791 * @setRICparams: RIC parameters
2792 * @sme_session_id: sme session id
2793 */
2794struct add_ts_param {
2795 uint16_t staIdx;
2796 uint16_t tspecIdx;
2797 struct mac_tspec_ie tspec;
Govind Singhd7468a52016-03-09 14:32:57 +05302798 QDF_STATUS status;
Govind Singhae855362016-03-07 14:24:22 +05302799 uint8_t sessionId;
2800#ifdef FEATURE_WLAN_ESE
2801 uint16_t tsm_interval;
2802#endif /* FEATURE_WLAN_ESE */
2803#ifdef WLAN_FEATURE_ROAM_OFFLOAD
2804 uint8_t setRICparams;
2805#endif /* WLAN_FEATURE_ROAM_OFFLOAD */
2806 uint8_t sme_session_id;
2807};
2808
2809/**
2810 * struct delts_req_info - DELTS request parameter
2811 * @tsinfo: ts info
2812 * @tspec: ts spec
2813 * @wmeTspecPresent: wme ts spec flag
2814 * @wsmTspecPresent: wsm ts spec flag
2815 * @lleTspecPresent: lle ts spec flag
2816 */
2817struct delts_req_info {
2818 struct mac_ts_info tsinfo;
2819 struct mac_tspec_ie tspec;
2820 uint8_t wmeTspecPresent:1;
2821 uint8_t wsmTspecPresent:1;
2822 uint8_t lleTspecPresent:1;
2823};
2824
2825/**
2826 * struct del_ts_params - DELTS related parameters
2827 * @staIdx: station index
2828 * @tspecIdx: TSPEC identifier uniquely identifying a TSPEC for a STA in a BSS
2829 * @bssId: BSSID
2830 * @sessionId: session id
2831 * @userPrio: user priority
2832 * @delTsInfo: DELTS info
2833 * @setRICparams: RIC parameters
2834 */
2835struct del_ts_params {
2836 uint16_t staIdx;
2837 uint16_t tspecIdx;
Govind Singh8675b862016-03-28 22:09:18 +05302838 uint8_t bssId[IEEE80211_ADDR_LEN];
Govind Singhae855362016-03-07 14:24:22 +05302839 uint8_t sessionId;
2840 uint8_t userPrio;
2841#ifdef WLAN_FEATURE_ROAM_OFFLOAD
2842 struct delts_req_info delTsInfo;
2843 uint8_t setRICparams;
2844#endif /* WLAN_FEATURE_ROAM_OFFLOAD */
2845};
2846
2847/**
2848 * struct ll_stats_clear_params - ll stats clear parameter
2849 * @req_id: request id
2850 * @sta_id: sta id
2851 * @stats_clear_mask: stats clear mask
2852 * @stop_req: stop request
2853 */
2854struct ll_stats_clear_params {
2855 uint32_t req_id;
2856 uint8_t sta_id;
2857 uint32_t stats_clear_mask;
2858 uint8_t stop_req;
2859};
2860
2861/**
2862 * struct ll_stats_set_params - ll stats get parameter
2863 * @req_id: request id
2864 * @sta_id: sta id
2865 * @mpdu_size_threshold: mpdu sixe threshold
2866 * @aggressive_statistics_gathering: aggressive_statistics_gathering
2867 */
2868struct ll_stats_set_params {
2869 uint32_t req_id;
2870 uint8_t sta_id;
2871 uint32_t mpdu_size_threshold;
2872 uint32_t aggressive_statistics_gathering;
2873};
2874
2875/**
2876 * struct ll_stats_get_params - ll stats parameter
2877 * @req_id: request id
2878 * @sta_id: sta id
2879 * @param_id_mask: param is mask
2880 */
2881struct ll_stats_get_params {
2882 uint32_t req_id;
2883 uint8_t sta_id;
2884 uint32_t param_id_mask;
2885};
2886
Govind Singhae855362016-03-07 14:24:22 +05302887
2888/**
2889 * struct link_status_params - link stats parameter
2890 * @msg_type: message type is same as the request type
2891 * @msg_len: length of the entire request
2892 * @link_status: wme ts spec flag
2893 * @session_id: wsm ts spec flag
2894 */
2895struct link_status_params {
2896 uint16_t msg_type;
2897 uint16_t msg_len;
2898 uint8_t link_status;
2899 uint8_t session_id;
2900};
2901
2902/**
2903 * struct dhcp_stop_ind_params - DHCP Stop indication message
2904 * @msgtype: message type is same as the request type
2905 * @msglen: length of the entire request
2906 * @device_mode: Mode of the device(ex:STA, AP)
2907 * @adapter_macaddr: MAC address of the adapter
2908 * @peer_macaddr: MAC address of the connected peer
2909 */
2910struct dhcp_stop_ind_params {
2911 uint16_t msgtype;
2912 uint16_t msglen;
2913 uint8_t device_mode;
Govind Singhd7468a52016-03-09 14:32:57 +05302914 struct qdf_mac_addr adapter_macaddr;
2915 struct qdf_mac_addr peer_macaddr;
Govind Singhae855362016-03-07 14:24:22 +05302916};
2917
2918/**
2919 * struct aggr_add_ts_param - ADDTS parameters
2920 * @staIdx: station index
2921 * @tspecIdx: TSPEC handler uniquely identifying a TSPEC for a STA in a BSS
2922 * @tspec: tspec value
2923 * @status: CDF status
2924 * @sessionId: session id
2925 */
2926struct aggr_add_ts_param {
2927 uint16_t staIdx;
2928 uint16_t tspecIdx;
2929 struct mac_tspec_ie tspec[WMI_QOS_NUM_AC_MAX];
Govind Singhd7468a52016-03-09 14:32:57 +05302930 QDF_STATUS status[WMI_QOS_NUM_AC_MAX];
Govind Singhae855362016-03-07 14:24:22 +05302931 uint8_t sessionId;
2932};
2933
Paul Zhang6a857a92017-12-08 16:08:00 +08002934
2935/**
2936 * struct wlm_latency_level_param - WLM parameters
2937 * @wlm_latency_level: wlm latency level to set
2938 * 0 - normal, 1 - moderate, 2 - low, 3 - ultralow
2939 * @wlm_latency_flags: wlm latency flags to set
2940 * |31 12| 11 | 10 |9 8|7 6|5 4|3 2| 1 | 0 |
2941 * +------+------+------+------+------+------+------+-----+-----+
2942 * | RSVD | SSLP | CSLP | RSVD | Roam | RSVD | DWLT | DFS | SUP |
2943 * +------+-------------+-------------+-------------------------+
2944 * | WAL | PS | Roam | Scan |
2945 *
2946 * bit 0: Avoid scan request from HLOS if setting
2947 * bit 1: Skip DFS channel SCAN if setting
2948 * bit 2-3: Define policy of dwell time/duration for each foreign channel
2949 * (b2 b3)
2950 * (0 0 ): Default scan dwell time
2951 * (0 1 ): Reserve
2952 * (1 0 ): Shrink off channel dwell time
2953 * (1 1 ): Reserve
2954 * bit 4-5: Reserve for scan
2955 * bit 6-7: Define roaming policy
2956 * (b6 b7)
2957 * (0 0 ): Default roaming behavior, allow roaming in all scenarios
2958 * (0 1 ): Disallow all roaming
2959 * (1 0 ): Allow roaming when final bmissed
2960 * (1 1 ): Reserve
2961 * bit 8-9: Reserve for roaming
2962 * bit 10: Disable css power collapse if setting
2963 * bit 11: Disable sys sleep if setting
2964 * bit 12-31: Reserve for future useage
2965 * @vdev_id: vdev id
2966 */
2967struct wlm_latency_level_param {
2968 uint16_t wlm_latency_level;
2969 uint32_t wlm_latency_flags;
2970 uint16_t vdev_id;
2971};
2972
Govind Singhae855362016-03-07 14:24:22 +05302973#define WMI_MAX_FILTER_TEST_DATA_LEN 8
2974#define WMI_MAX_NUM_MULTICAST_ADDRESS 240
2975#define WMI_MAX_NUM_FILTERS 20
2976#define WMI_MAX_NUM_TESTS_PER_FILTER 10
2977
2978/**
2979 * enum packet_filter_type - packet filter type
2980 * @WMI_RCV_FILTER_TYPE_INVALID: invalid type
2981 * @WMI_RCV_FILTER_TYPE_FILTER_PKT: filter packet type
2982 * @WMI_RCV_FILTER_TYPE_BUFFER_PKT: buffer packet type
2983 * @WMI_RCV_FILTER_TYPE_MAX_ENUM_SIZE: max enum size
2984 */
2985enum packet_filter_type {
2986 WMI_RCV_FILTER_TYPE_INVALID,
2987 WMI_RCV_FILTER_TYPE_FILTER_PKT,
2988 WMI_RCV_FILTER_TYPE_BUFFER_PKT,
2989 WMI_RCV_FILTER_TYPE_MAX_ENUM_SIZE
2990};
2991
2992/**
2993 * enum packet_protocol_type - packet protocol type
2994 * @WMI_FILTER_HDR_TYPE_INVALID: invalid type
2995 * @WMI_FILTER_HDR_TYPE_MAC: mac type
2996 * @WMI_FILTER_HDR_TYPE_ARP: trp type
2997 * @WMI_FILTER_HDR_TYPE_IPV4: ipv4 type
2998 * @WMI_FILTER_HDR_TYPE_IPV6: ipv6 type
2999 * @WMI_FILTER_HDR_TYPE_UDP: udp type
3000 * @WMI_FILTER_HDR_TYPE_MAX: max type
3001 */
3002enum packet_protocol_type {
3003 WMI_FILTER_HDR_TYPE_INVALID,
3004 WMI_FILTER_HDR_TYPE_MAC,
3005 WMI_FILTER_HDR_TYPE_ARP,
3006 WMI_FILTER_HDR_TYPE_IPV4,
3007 WMI_FILTER_HDR_TYPE_IPV6,
3008 WMI_FILTER_HDR_TYPE_UDP,
3009 WMI_FILTER_HDR_TYPE_MAX
3010};
3011
3012/**
3013 * enum packet_filter_comp_type - packet filter comparison type
3014 * @WMI_FILTER_CMP_TYPE_INVALID: invalid type
3015 * @WMI_FILTER_CMP_TYPE_EQUAL: type equal
3016 * @WMI_FILTER_CMP_TYPE_MASK_EQUAL: mask equal
3017 * @WMI_FILTER_CMP_TYPE_NOT_EQUAL: type not equal
3018 * @WMI_FILTER_CMP_TYPE_MASK_NOT_EQUAL: mask not equal
3019 * @WMI_FILTER_CMP_TYPE_MAX: max type
3020 */
3021enum packet_filter_comp_type {
3022 WMI_FILTER_CMP_TYPE_INVALID,
3023 WMI_FILTER_CMP_TYPE_EQUAL,
3024 WMI_FILTER_CMP_TYPE_MASK_EQUAL,
3025 WMI_FILTER_CMP_TYPE_NOT_EQUAL,
3026 WMI_FILTER_CMP_TYPE_MASK_NOT_EQUAL,
3027 WMI_FILTER_CMP_TYPE_MAX
3028};
3029
3030/**
3031 * struct rcv_pkt_filter_params - recieve packet filter parameters
3032 * @protocolLayer - protocol layer
3033 * @cmpFlag - comparison flag
3034 * @dataLength - data length
3035 * @dataOffset - data offset
3036 * @reserved - resserved
3037 * @compareData - compare data
3038 * @dataMask - data mask
3039 */
3040struct rcv_pkt_filter_params {
3041 enum packet_protocol_type protocolLayer;
3042 enum packet_filter_comp_type cmpFlag;
3043 uint16_t dataLength;
3044 uint8_t dataOffset;
3045 uint8_t reserved;
3046 uint8_t compareData[WMI_MAX_FILTER_TEST_DATA_LEN];
3047 uint8_t dataMask[WMI_MAX_FILTER_TEST_DATA_LEN];
3048};
3049
3050/**
3051 * struct rcv_pkt_filter_config - recieve packet filter info
3052 * @filterId - filter id
3053 * @filterType - filter type
3054 * @numFieldParams - no of fields
3055 * @coalesceTime - reserved parameter
3056 * @self_macaddr - self mac address
3057 * @bssid - Bssid of the connected AP
3058 * @paramsData - data parameter
3059 */
3060struct rcv_pkt_filter_config {
3061 uint8_t filterId;
3062 enum packet_filter_type filterType;
3063 uint32_t numFieldParams;
3064 uint32_t coalesceTime;
Govind Singhd7468a52016-03-09 14:32:57 +05303065 struct qdf_mac_addr self_macaddr;
3066 struct qdf_mac_addr bssid;
Govind Singhae855362016-03-07 14:24:22 +05303067 struct rcv_pkt_filter_params paramsData[WMI_MAX_NUM_TESTS_PER_FILTER];
3068};
3069
3070/**
3071 * struct vdev_ie_info_param - IE info
3072 * @vdev_id - vdev for which the IE is being sent
3073 * @ie_id - ID of the IE
3074 * @length - length of the IE data
3075 * @data - IE data
3076 *
3077 * This structure is used to store the IE information.
3078 */
3079struct vdev_ie_info_param {
3080 uint32_t vdev_id;
3081 uint32_t ie_id;
3082 uint32_t length;
Selvaraj, Sridharce064292016-07-25 16:25:14 +05303083 uint32_t ie_source;
Naveen Rawat71268882016-08-03 16:41:33 -07003084 uint32_t band;
Govind Singhae855362016-03-07 14:24:22 +05303085 uint8_t *data;
3086};
3087
3088#define WMI_MAX_NUM_FW_SEGMENTS 4
3089
3090/**
3091 * struct fw_dump_seg_req_param - individual segment details
3092 * @seg_id - segment id.
3093 * @seg_start_addr_lo - lower address of the segment.
3094 * @seg_start_addr_hi - higher address of the segment.
3095 * @seg_length - length of the segment.
3096 * @dst_addr_lo - lower address of the destination buffer.
3097 * @dst_addr_hi - higher address of the destination buffer.
3098 *
3099 * This structure carries the information to firmware about the
3100 * individual segments. This structure is part of firmware memory
3101 * dump request.
3102 */
3103struct fw_dump_seg_req_param {
3104 uint8_t seg_id;
3105 uint32_t seg_start_addr_lo;
3106 uint32_t seg_start_addr_hi;
3107 uint32_t seg_length;
3108 uint32_t dst_addr_lo;
3109 uint32_t dst_addr_hi;
3110};
3111
3112/**
3113 * struct fw_dump_req_param - firmware memory dump request details.
3114 * @request_id - request id.
3115 * @num_seg - requested number of segments.
3116 * @fw_dump_seg_req - individual segment information.
3117 *
3118 * This structure carries information about the firmware
3119 * memory dump request.
3120 */
3121struct fw_dump_req_param {
3122 uint32_t request_id;
3123 uint32_t num_seg;
3124 struct fw_dump_seg_req_param segment[WMI_MAX_NUM_FW_SEGMENTS];
3125};
3126
3127#define WMI_TDLS_MAX_SUPP_CHANNELS 128
3128#define WMI_TDLS_MAX_SUPP_OPER_CLASSES 32
3129#define WMI_2_4_GHZ_MAX_FREQ 3000
3130
3131/**
3132 * struct tdls_update_ch_params - channel parameters
3133 * @chanId: ID of the channel
3134 * @pwr: power level
3135 * @dfsSet: is dfs supported or not
3136 * @half_rate: is the channel operating at 10MHz
3137 * @quarter_rate: is the channel operating at 5MHz
3138 */
3139struct tdls_update_ch_params {
3140 uint8_t chanId;
3141 uint8_t pwr;
3142 bool dfsSet;
3143 bool half_rate;
3144 bool quarter_rate;
3145};
3146
3147/**
3148 * struct tdls_peer_cap_params - TDLS peer capablities parameters
3149 * @isPeerResponder: is peer responder or not
3150 * @peerUapsdQueue: peer uapsd queue
3151 * @peerMaxSp: peer max SP value
3152 * @peerBuffStaSupport: peer buffer sta supported or not
3153 * @peerOffChanSupport: peer offchannel support
3154 * @peerCurrOperClass: peer current operating class
3155 * @selfCurrOperClass: self current operating class
3156 * @peerChanLen: peer channel length
3157 * @peerChan: peer channel list
3158 * @peerOperClassLen: peer operating class length
3159 * @peerOperClass: peer operating class
3160 * @prefOffChanNum: peer offchannel number
3161 * @prefOffChanBandwidth: peer offchannel bandwidth
3162 * @opClassForPrefOffChan: operating class for offchannel
3163 */
3164struct tdls_peer_cap_params {
3165 uint8_t isPeerResponder;
3166 uint8_t peerUapsdQueue;
3167 uint8_t peerMaxSp;
3168 uint8_t peerBuffStaSupport;
3169 uint8_t peerOffChanSupport;
3170 uint8_t peerCurrOperClass;
3171 uint8_t selfCurrOperClass;
3172 uint8_t peerChanLen;
3173 struct tdls_update_ch_params peerChan[WMI_TDLS_MAX_SUPP_CHANNELS];
3174 uint8_t peerOperClassLen;
3175 uint8_t peerOperClass[WMI_TDLS_MAX_SUPP_OPER_CLASSES];
3176 uint8_t prefOffChanNum;
3177 uint8_t prefOffChanBandwidth;
3178 uint8_t opClassForPrefOffChan;
3179};
3180
3181/**
3182 * struct tdls_peer_state_params - TDLS peer state parameters
3183 * @vdevId: vdev id
3184 * @peerMacAddr: peer mac address
3185 * @peerCap: peer capabality
3186 */
3187struct tdls_peer_state_params {
3188 uint32_t vdevId;
Govind Singh8675b862016-03-28 22:09:18 +05303189 uint8_t peerMacAddr[IEEE80211_ADDR_LEN];
Govind Singhae855362016-03-07 14:24:22 +05303190 uint32_t peerState;
3191 struct tdls_peer_cap_params peerCap;
3192};
3193
3194/**
3195 * struct wmi_tdls_params - TDLS parameters
3196 * @vdev_id: vdev id
3197 * @tdls_state: TDLS state
3198 * @notification_interval_ms: notification inerval
3199 * @tx_discovery_threshold: tx discovery threshold
3200 * @tx_teardown_threshold: tx teardown threashold
3201 * @rssi_teardown_threshold: RSSI teardown threshold
3202 * @rssi_delta: RSSI delta
3203 * @tdls_options: TDLS options
3204 * @peer_traffic_ind_window: raffic indication window
3205 * @peer_traffic_response_timeout: traffic response timeout
3206 * @puapsd_mask: uapsd mask
3207 * @puapsd_inactivity_time: uapsd inactivity time
3208 * @puapsd_rx_frame_threshold: uapsd rx frame threshold
3209 * @teardown_notification_ms: tdls teardown notification interval
3210 * @tdls_peer_kickout_threshold: tdls packet threshold for
3211 * peer kickout operation
3212 */
3213struct wmi_tdls_params {
3214 uint32_t vdev_id;
3215 uint32_t tdls_state;
3216 uint32_t notification_interval_ms;
3217 uint32_t tx_discovery_threshold;
3218 uint32_t tx_teardown_threshold;
3219 int32_t rssi_teardown_threshold;
3220 int32_t rssi_delta;
3221 uint32_t tdls_options;
3222 uint32_t peer_traffic_ind_window;
3223 uint32_t peer_traffic_response_timeout;
3224 uint32_t puapsd_mask;
3225 uint32_t puapsd_inactivity_time;
3226 uint32_t puapsd_rx_frame_threshold;
3227 uint32_t teardown_notification_ms;
3228 uint32_t tdls_peer_kickout_threshold;
3229};
3230
Frank Liu0ba573b2017-03-15 17:51:43 +08003231#ifndef CONVERGED_TDLS_ENABLE
Govind Singhae855362016-03-07 14:24:22 +05303232/**
3233 * struct tdls_chan_switch_params - channel switch parameter structure
3234 * @vdev_id: vdev ID
3235 * @peer_mac_addr: Peer mac address
3236 * @tdls_off_ch_bw_offset: Target off-channel bandwitdh offset
3237 * @tdls_off_ch: Target Off Channel
3238 * @oper_class: Operating class for target channel
3239 * @is_responder: Responder or initiator
3240 */
3241struct tdls_channel_switch_params {
3242 uint32_t vdev_id;
Govind Singh8675b862016-03-28 22:09:18 +05303243 uint8_t peer_mac_addr[IEEE80211_ADDR_LEN];
Govind Singhae855362016-03-07 14:24:22 +05303244 uint16_t tdls_off_ch_bw_offset;
3245 uint8_t tdls_off_ch;
3246 uint8_t tdls_sw_mode;
3247 uint8_t oper_class;
3248 uint8_t is_responder;
3249};
Frank Liu0ba573b2017-03-15 17:51:43 +08003250#endif
Govind Singhae855362016-03-07 14:24:22 +05303251
3252/**
3253 * struct dhcp_offload_info_params - dhcp offload parameters
3254 * @vdev_id: request data length
Jeff Johnson645f7a12017-10-04 19:19:20 -07003255 * @dhcp_offload_enabled: dhcp offload enabled
3256 * @dhcp_client_num: dhcp client no
3257 * @dhcp_srv_addr: dhcp server ip
Govind Singhae855362016-03-07 14:24:22 +05303258 */
3259struct dhcp_offload_info_params {
3260 uint32_t vdev_id;
Jeff Johnson645f7a12017-10-04 19:19:20 -07003261 bool dhcp_offload_enabled;
3262 uint32_t dhcp_client_num;
3263 uint32_t dhcp_srv_addr;
Govind Singhae855362016-03-07 14:24:22 +05303264};
3265
3266/**
3267 * struct nan_req_params - NAN request params
3268 * @request_data_len: request data length
3269 * @request_data: request data
3270 */
3271struct nan_req_params {
3272 uint16_t request_data_len;
3273 uint8_t request_data[];
3274};
3275
3276
3277/**
3278 * struct app_type2_params - app type2parameter
3279 * @vdev_id: vdev id
3280 * @rc4_key: rc4 key
3281 * @rc4_key_len: rc4 key length
3282 * @ip_id: NC id
3283 * @ip_device_ip: NC IP addres
3284 * @ip_server_ip: Push server IP address
3285 * @tcp_src_port: NC TCP port
3286 * @tcp_dst_port: Push server TCP port
3287 * @tcp_seq: tcp sequence
3288 * @tcp_ack_seq: tcp ack sequence
3289 * @keepalive_init: Initial ping interval
3290 * @keepalive_min: Minimum ping interval
3291 * @keepalive_max: Maximum ping interval
3292 * @keepalive_inc: Increment of ping interval
3293 * @gateway_mac: gateway mac address
3294 * @tcp_tx_timeout_val: tcp tx timeout value
3295 * @tcp_rx_timeout_val: tcp rx timeout value
3296 */
3297struct app_type2_params {
3298 uint8_t vdev_id;
3299 uint8_t rc4_key[16];
3300 uint32_t rc4_key_len;
3301 /** ip header parameter */
3302 uint32_t ip_id;
3303 uint32_t ip_device_ip;
3304 uint32_t ip_server_ip;
3305 /** tcp header parameter */
3306 uint16_t tcp_src_port;
3307 uint16_t tcp_dst_port;
3308 uint32_t tcp_seq;
3309 uint32_t tcp_ack_seq;
3310 uint32_t keepalive_init;
3311 uint32_t keepalive_min;
3312 uint32_t keepalive_max;
3313 uint32_t keepalive_inc;
Govind Singhd7468a52016-03-09 14:32:57 +05303314 struct qdf_mac_addr gateway_mac;
Govind Singhae855362016-03-07 14:24:22 +05303315 uint32_t tcp_tx_timeout_val;
3316 uint32_t tcp_rx_timeout_val;
3317};
3318
3319/**
3320 * struct app_type1_params - app type1 parameter
3321 * @vdev_id: vdev id
3322 * @wakee_mac_addr: mac address
3323 * @identification_id: identification id
3324 * @password: password
3325 * @id_length: id length
3326 * @pass_length: password length
3327 */
3328struct app_type1_params {
3329 uint8_t vdev_id;
Govind Singhd7468a52016-03-09 14:32:57 +05303330 struct qdf_mac_addr wakee_mac_addr;
Govind Singhae855362016-03-07 14:24:22 +05303331 uint8_t identification_id[8];
3332 uint8_t password[16];
3333 uint32_t id_length;
3334 uint32_t pass_length;
3335};
3336
3337/**
3338 * enum wmi_ext_wow_type - wow type
3339 * @WMI_EXT_WOW_TYPE_APP_TYPE1: only enable wakeup for app type1
3340 * @WMI_EXT_WOW_TYPE_APP_TYPE2: only enable wakeup for app type2
3341 * @WMI_EXT_WOW_TYPE_APP_TYPE1_2: enable wakeup for app type1&2
3342 */
3343enum wmi_ext_wow_type {
3344 WMI_EXT_WOW_TYPE_APP_TYPE1,
3345 WMI_EXT_WOW_TYPE_APP_TYPE2,
3346 WMI_EXT_WOW_TYPE_APP_TYPE1_2,
3347};
3348
3349/**
3350 * struct ext_wow_params - ext wow parameters
3351 * @vdev_id: vdev id
3352 * @type: wow type
3353 * @wakeup_pin_num: wake up gpio no
3354 */
3355struct ext_wow_params {
3356 uint8_t vdev_id;
3357 enum wmi_ext_wow_type type;
3358 uint32_t wakeup_pin_num;
3359};
3360
3361/**
3362 * struct stats_ext_params - ext stats request
3363 * @vdev_id: vdev id
3364 * @request_data_len: request data length
3365 * @request_data: request data
3366 */
3367struct stats_ext_params {
3368 uint32_t vdev_id;
3369 uint32_t request_data_len;
3370 uint8_t request_data[];
3371};
3372
3373#define WMI_PERIODIC_TX_PTRN_MAX_SIZE 1536
3374/**
3375 * struct periodic_tx_pattern - periodic tx pattern
3376 * @mac_address: MAC Address for the adapter
3377 * @ucPtrnId: Pattern ID
3378 * @ucPtrnSize: Pattern size
3379 * @usPtrnIntervalMs: in ms
3380 * @ucPattern: Pattern buffer
3381 */
3382struct periodic_tx_pattern {
Govind Singhd7468a52016-03-09 14:32:57 +05303383 struct qdf_mac_addr mac_address;
Govind Singhae855362016-03-07 14:24:22 +05303384 uint8_t ucPtrnId;
3385 uint16_t ucPtrnSize;
3386 uint32_t usPtrnIntervalMs;
3387 uint8_t ucPattern[WMI_PERIODIC_TX_PTRN_MAX_SIZE];
3388};
3389
Vignesh Viswanathan90cd7742017-09-25 14:36:38 +05303390#define WMI_GTK_OFFLOAD_KEK_BYTES 64
3391#define WMI_GTK_OFFLOAD_KCK_BYTES 16
3392#define WMI_GTK_OFFLOAD_ENABLE 0
3393#define WMI_GTK_OFFLOAD_DISABLE 1
3394
Govind Singhae855362016-03-07 14:24:22 +05303395/**
3396 * struct flashing_req_params - led flashing parameter
3397 * @reqId: request id
3398 * @pattern_id: pattern identifier. 0: disconnected 1: connected
3399 * @led_x0: led flashing parameter0
3400 * @led_x1: led flashing parameter1
3401 */
3402struct flashing_req_params {
3403 uint32_t req_id;
3404 uint32_t pattern_id;
3405 uint32_t led_x0;
3406 uint32_t led_x1;
3407};
3408
Govind Singh89727882016-04-15 13:58:27 +05303409#define MAX_MEM_CHUNKS 32
3410/**
3411 * struct wmi_host_mem_chunk - host memory chunk structure
3412 * @vaddr: Pointer to virtual address
3413 * @paddr: Physical address
3414 * @memctx: qdf memory context for mapped address.
3415 * @len: length of chunk
3416 * @req_id: request id from target
3417 */
Govind Singhae855362016-03-07 14:24:22 +05303418struct wmi_host_mem_chunk {
3419 uint32_t *vaddr;
3420 uint32_t paddr;
Govind Singhd7468a52016-03-09 14:32:57 +05303421 qdf_dma_mem_context(memctx);
Govind Singhae855362016-03-07 14:24:22 +05303422 uint32_t len;
3423 uint32_t req_id;
3424};
3425
Govind Singh89727882016-04-15 13:58:27 +05303426/**
3427 * struct target_resource_config - Resource config given to target
3428 * This structure is union of wmi_resource_config defined
3429 * by both TLV and non-TLV target.
3430 */
Govind Singhae855362016-03-07 14:24:22 +05303431struct target_resource_config {
3432 uint32_t num_vdevs;
3433 uint32_t num_peers;
3434 uint32_t num_active_peers;
3435 uint32_t num_offload_peers;
3436 uint32_t num_offload_reorder_buffs;
3437 uint32_t num_peer_keys;
3438 uint32_t num_tids;
3439 uint32_t ast_skid_limit;
3440 uint32_t tx_chain_mask;
3441 uint32_t rx_chain_mask;
3442 uint32_t rx_timeout_pri[4];
3443 uint32_t rx_decap_mode;
3444 uint32_t scan_max_pending_req;
3445 uint32_t bmiss_offload_max_vdev;
3446 uint32_t roam_offload_max_vdev;
3447 uint32_t roam_offload_max_ap_profiles;
3448 uint32_t num_mcast_groups;
3449 uint32_t num_mcast_table_elems;
3450 uint32_t mcast2ucast_mode;
3451 uint32_t tx_dbg_log_size;
3452 uint32_t num_wds_entries;
3453 uint32_t dma_burst_size;
3454 uint32_t mac_aggr_delim;
3455 uint32_t rx_skip_defrag_timeout_dup_detection_check;
3456 uint32_t vow_config;
3457 uint32_t gtk_offload_max_vdev;
3458 uint32_t num_msdu_desc; /* Number of msdu desc */
3459 uint32_t max_frag_entries;
3460 /* End common */
3461
3462 /* Added in MCL */
3463 uint32_t num_tdls_vdevs;
3464 uint32_t num_tdls_conn_table_entries;
3465 uint32_t beacon_tx_offload_max_vdev;
3466 uint32_t num_multicast_filter_entries;
3467 uint32_t num_wow_filters;
3468 uint32_t num_keep_alive_pattern;
3469 uint32_t keep_alive_pattern_size;
3470 uint32_t max_tdls_concurrent_sleep_sta;
3471 uint32_t max_tdls_concurrent_buffer_sta;
3472 uint32_t wmi_send_separate;
3473 uint32_t num_ocb_vdevs;
3474 uint32_t num_ocb_channels;
3475 uint32_t num_ocb_schedules;
3476};
3477
3478/**
3479 * struct wmi_wifi_start_log - Structure to store the params sent to start/
3480 * stop logging
3481 * @name: Attribute which indicates the type of logging like per packet
3482 * statistics, connectivity etc.
3483 * @verbose_level: Verbose level which can be 0,1,2,3
3484 * @flag: Flag field for future use
3485 */
3486struct wmi_wifi_start_log {
3487 uint32_t ring_id;
3488 uint32_t verbose_level;
3489 uint32_t flag;
3490};
3491
3492/**
3493 * struct wmi_pcl_list - Format of PCL
3494 * @pcl_list: List of preferred channels
Manishekar Chandrasekaranb8c59382016-04-21 19:16:32 +05303495 * @weight_list: Weights of the PCL
Govind Singhae855362016-03-07 14:24:22 +05303496 * @pcl_len: Number of channels in the PCL
3497 */
3498struct wmi_pcl_list {
3499 uint8_t pcl_list[128];
Manishekar Chandrasekaranb8c59382016-04-21 19:16:32 +05303500 uint8_t weight_list[128];
Govind Singhae855362016-03-07 14:24:22 +05303501 uint32_t pcl_len;
3502};
3503
3504/**
Manishekar Chandrasekaranb8c59382016-04-21 19:16:32 +05303505 * struct wmi_pcl_chan_weights - Params to get the valid weighed list
3506 * @pcl_list: Preferred channel list already sorted in the order of preference
3507 * @pcl_len: Length of the PCL
3508 * @saved_chan_list: Valid channel list updated as part of
3509 * WMA_UPDATE_CHAN_LIST_REQ
3510 * @saved_num_chan: Length of the valid channel list
3511 * @weighed_valid_list: Weights of the valid channel list. This will have one
3512 * to one mapping with valid_chan_list. FW expects channel order and size to be
3513 * as per the list provided in WMI_SCAN_CHAN_LIST_CMDID.
3514 * @weight_list: Weights assigned by policy manager
3515 */
3516struct wmi_pcl_chan_weights {
3517 uint8_t pcl_list[MAX_NUM_CHAN];
3518 uint32_t pcl_len;
3519 uint8_t saved_chan_list[MAX_NUM_CHAN];
3520 uint32_t saved_num_chan;
3521 uint8_t weighed_valid_list[MAX_NUM_CHAN];
3522 uint8_t weight_list[MAX_NUM_CHAN];
3523};
3524
3525/**
Govind Singhae855362016-03-07 14:24:22 +05303526 * struct wmi_hw_mode_params - HW mode params
3527 * @mac0_tx_ss: MAC0 Tx spatial stream
3528 * @mac0_rx_ss: MAC0 Rx spatial stream
3529 * @mac1_tx_ss: MAC1 Tx spatial stream
3530 * @mac1_rx_ss: MAC1 Rx spatial stream
3531 * @mac0_bw: MAC0 bandwidth
3532 * @mac1_bw: MAC1 bandwidth
3533 * @dbs_cap: DBS capabality
3534 * @agile_dfs_cap: Agile DFS capabality
3535 */
3536struct wmi_hw_mode_params {
3537 uint8_t mac0_tx_ss;
3538 uint8_t mac0_rx_ss;
3539 uint8_t mac1_tx_ss;
3540 uint8_t mac1_rx_ss;
3541 uint8_t mac0_bw;
3542 uint8_t mac1_bw;
3543 uint8_t dbs_cap;
3544 uint8_t agile_dfs_cap;
3545};
3546
3547/**
3548 * struct wmi_dual_mac_config - Dual MAC configuration
3549 * @scan_config: Scan configuration
3550 * @fw_mode_config: FW mode configuration
3551 * @set_dual_mac_cb: Callback function to be executed on response to the command
3552 */
3553struct wmi_dual_mac_config {
3554 uint32_t scan_config;
3555 uint32_t fw_mode_config;
3556 void *set_dual_mac_cb;
3557};
3558
Govind Singhae855362016-03-07 14:24:22 +05303559/**
3560 * struct ssid_hotlist_param - param for SSID Hotlist
3561 * @ssid: SSID which is being hotlisted
3562 * @band: Band in which the given SSID should be scanned
3563 * @rssi_low: Low bound on RSSI
3564 * @rssi_high: High bound on RSSI
3565 */
3566struct ssid_hotlist_param {
3567 struct mac_ssid ssid;
3568 uint8_t band;
3569 int32_t rssi_low;
3570 int32_t rssi_high;
3571};
3572
3573/**
Abhishek Singh5fa02552017-07-05 11:21:32 +05303574 * struct rssi_disallow_bssid - Structure holding Rssi based avoid candidate
3575 * @bssid: BSSID of the AP
3576 * @remaining_duration: remaining disallow duration in ms
3577 * @expected_rssi: RSSI at which STA can initate in dBm
3578 */
3579struct rssi_disallow_bssid {
3580 struct qdf_mac_addr bssid;
3581 uint32_t remaining_duration;
3582 int8_t expected_rssi;
3583};
3584
3585
3586/**
Himanshu Agarwal5f2d0482016-03-09 15:25:44 +05303587 * struct roam_scan_filter_params - Structure holding roaming scan
3588 * parameters
Himanshu Agarwal5f2d0482016-03-09 15:25:44 +05303589 * @op_bitmap: bitmap to determine reason of roaming
3590 * @session_id: vdev id
3591 * @num_bssid_black_list: The number of BSSID's that we should
3592 * avoid connecting to. It is like a
3593 * blacklist of BSSID's.
3594 * @num_ssid_white_list: The number of SSID profiles that are
3595 * in the Whitelist. When roaming, we
3596 * consider the BSSID's with this SSID
3597 * also for roaming apart from the connected one's
3598 * @num_bssid_preferred_list: Number of BSSID's which have a preference over
3599 * others
3600 * @bssid_avoid_list: Blacklist SSID's
3601 * @ssid_allowed_list: Whitelist SSID's
3602 * @bssid_favored: Favorable BSSID's
3603 * @bssid_favored_factor: RSSI to be added to this BSSID to prefer it
Selvaraj, Sridhar6edc08b2017-05-29 18:38:52 +05303604 * @lca_disallow_config_present: LCA [Last Connected AP] disallow config present
3605 * @disallow_duration: How long LCA AP will be disallowed before it
3606 * can be a roaming candidate again, in seconds
3607 * @rssi_channel_penalization:How much RSSI will be penalized if candidate(s)
3608 * are found in the same channel as disallowed AP's,
3609 * in units of db
3610 * @num_disallowed_aps: How many APs the target should maintain in its
3611 * LCA list
Himanshu Agarwal5f2d0482016-03-09 15:25:44 +05303612 *
3613 * This structure holds all the key parameters related to
3614 * initial connection and roaming connections.
3615 */
3616
3617struct roam_scan_filter_params {
Himanshu Agarwal5f2d0482016-03-09 15:25:44 +05303618 uint32_t op_bitmap;
3619 uint8_t session_id;
3620 uint32_t num_bssid_black_list;
3621 uint32_t num_ssid_white_list;
3622 uint32_t num_bssid_preferred_list;
3623 struct qdf_mac_addr bssid_avoid_list[MAX_BSSID_AVOID_LIST];
3624 struct mac_ssid ssid_allowed_list[MAX_SSID_ALLOWED_LIST];
3625 struct qdf_mac_addr bssid_favored[MAX_BSSID_FAVORED];
3626 uint8_t bssid_favored_factor[MAX_BSSID_FAVORED];
Selvaraj, Sridhar6edc08b2017-05-29 18:38:52 +05303627 uint8_t lca_disallow_config_present;
3628 uint32_t disallow_duration;
3629 uint32_t rssi_channel_penalization;
3630 uint32_t num_disallowed_aps;
Abhishek Singh5fa02552017-07-05 11:21:32 +05303631 uint32_t num_rssi_rejection_ap;
3632 struct rssi_disallow_bssid rssi_rejection_ap[MAX_RSSI_AVOID_BSSID_LIST];
Himanshu Agarwal5f2d0482016-03-09 15:25:44 +05303633};
3634
Vignesh Viswanathan90cd7742017-09-25 14:36:38 +05303635#define WMI_MAX_HLP_IE_LEN 2048
3636/**
3637 * struct hlp_params - HLP info params
3638 * @vdev_id: vdev id
3639 * @hlp_ie_len: HLP IE length
3640 * @hlp_ie: HLP IE
3641 */
3642struct hlp_params {
3643 uint8_t vdev_id;
3644 uint32_t hlp_ie_len;
3645 uint8_t hlp_ie[WMI_MAX_HLP_IE_LEN];
3646};
3647
3648#define WMI_UNIFIED_MAX_PMKID_LEN 16
3649#define WMI_UNIFIED_MAX_PMK_LEN 64
3650
3651/**
3652 * struct wmi_unified_pmk_cache - used to set del pmkid cache
3653 * @tlv_header: TLV header, TLV tag and len; tag equals WMITLV_TAG_ARRAY_UINT32
3654 * @pmk_len: PMK len
3655 * for big-endian hosts, manual endian conversion will be needed to keep
3656 * the array values in their original order in spite of the automatic
3657 * byte-swap applied to WMI messages during download
3658 * @pmk: PMK array
3659 * @pmkid_len: PMK ID Len
3660 * @pmkid: PMK ID Array
3661 * @bssid: BSSID
3662 * @ssid: SSID
3663 * @cache_id: PMK Cache ID
3664 * @cat_flag: whether (bssid) or (ssid,cache_id) is valid
3665 * @action_flag: add/delete the entry
3666 */
3667struct wmi_unified_pmk_cache {
3668 A_UINT32 tlv_header;
3669 A_UINT32 pmk_len;
3670 A_UINT8 session_id;
3671 A_UINT8 pmk[WMI_UNIFIED_MAX_PMK_LEN];
3672 A_UINT32 pmkid_len;
3673 A_UINT8 pmkid[WMI_UNIFIED_MAX_PMKID_LEN];
3674 wmi_host_mac_addr bssid;
3675 struct mac_ssid ssid;
3676 A_UINT32 cache_id;
3677 A_UINT32 cat_flag;
3678 A_UINT32 action_flag;
3679};
3680
3681
Himanshu Agarwal5f2d0482016-03-09 15:25:44 +05303682/**
Govind Singhae855362016-03-07 14:24:22 +05303683 * struct ssid_hotlist_request_params - set SSID hotlist request struct
3684 * @request_id: ID of the request
3685 * @session_id: ID of the session
3686 * @lost_ssid_sample_size: Number of consecutive scans in which the SSID
3687 * must not be seen in order to consider the SSID "lost"
3688 * @ssid_count: Number of valid entries in the @ssids array
3689 * @ssids: Array that defines the SSIDs that are in the hotlist
3690 */
3691struct ssid_hotlist_request_params {
3692 uint32_t request_id;
3693 uint8_t session_id;
3694 uint32_t lost_ssid_sample_size;
3695 uint32_t ssid_count;
3696 struct ssid_hotlist_param ssids[WMI_EXTSCAN_MAX_HOTLIST_SSIDS];
3697};
3698
3699/**
3700 * struct wmi_unit_test_cmd - unit test command parameters
3701 * @vdev_id: vdev id
3702 * @module_id: module id
3703 * @num_args: number of arguments
Adil Saeed Musthafa0b6c7602017-08-23 17:32:11 -07003704 * @diag_token: dialog token, which identifies the transaction.
3705 * this number is generated by wifitool and may be used to
3706 * identify the transaction in the event path
Govind Singhae855362016-03-07 14:24:22 +05303707 * @args: arguments
3708 */
3709struct wmi_unit_test_cmd {
3710 uint32_t vdev_id;
Govind Singh89727882016-04-15 13:58:27 +05303711 uint32_t module_id;
Govind Singhae855362016-03-07 14:24:22 +05303712 uint32_t num_args;
Adil Saeed Musthafa0b6c7602017-08-23 17:32:11 -07003713 uint32_t diag_token;
Govind Singhae855362016-03-07 14:24:22 +05303714 uint32_t args[WMI_MAX_NUM_ARGS];
3715};
3716
3717/**
3718 * struct wmi_roam_invoke_cmd - roam invoke command
3719 * @vdev_id: vdev id
3720 * @bssid: mac address
3721 * @channel: channel
Naveen Rawatccc1b072017-01-20 17:00:07 -08003722 * @frame_len: frame length, includs mac header, fixed params and ies
3723 * @frame_buf: buffer contaning probe response or beacon
Krunal Sonib46f48b2017-07-25 11:23:44 -07003724 * @is_same_bssid: flag to indicate if roaming is requested for same bssid
Govind Singhae855362016-03-07 14:24:22 +05303725 */
3726struct wmi_roam_invoke_cmd {
3727 uint32_t vdev_id;
3728 uint8_t bssid[IEEE80211_ADDR_LEN];
3729 uint32_t channel;
Naveen Rawatccc1b072017-01-20 17:00:07 -08003730 uint32_t frame_len;
3731 uint8_t *frame_buf;
Krunal Sonib46f48b2017-07-25 11:23:44 -07003732 uint8_t is_same_bssid;
Govind Singhae855362016-03-07 14:24:22 +05303733};
3734
3735/**
3736 * struct ext_scan_setbssi_hotlist_params - set hotlist request
3737 * @requestId: request identifier
3738 * @sessionId: session identifier
3739 * @lost_ap_sample_size: number of samples to confirm AP loss
3740 * @numAp: Number of hotlist APs
3741 * @ap: hotlist APs
3742 */
3743struct ext_scan_setbssi_hotlist_params {
3744 uint32_t requestId;
3745 uint8_t sessionId;
3746
3747 uint32_t lost_ap_sample_size;
3748 uint32_t numAp;
3749 struct ap_threshold_params ap[WMI_WLAN_EXTSCAN_MAX_HOTLIST_APS];
3750};
Govind Singh89727882016-04-15 13:58:27 +05303751
3752/**
Govind Singh89727882016-04-15 13:58:27 +05303753 * struct host_mem_req - Host memory request paramseters request by target
3754 * @req_id: Request id to identify the request.
3755 * @unit_size: Size of single unit requested.
3756 * @num_unit_info: Memory chunk info
3757 * @num_units: number of units requested.
3758 */
3759typedef struct {
3760 uint32_t req_id;
3761 uint32_t unit_size;
3762 uint32_t num_unit_info;
3763 uint32_t num_units;
3764} host_mem_req;
3765
3766#define WMI_HOST_DSCP_MAP_MAX (64)
3767
3768/**
3769 * struct wmi_host_ext_resource_config - Extended resource config
3770 * @host_platform_config: Host plaform configuration.
3771 * @fw_featuew_bitmap: FW feature requested bitmap.
3772 */
3773typedef struct {
3774 uint32_t host_platform_config;
3775
3776#define WMI_HOST_FW_FEATURE_LTEU_SUPPORT 0x0001
3777#define WMI_HOST_FW_FEATURE_COEX_GPIO_SUPPORT 0x0002
3778#define WMI_HOST_FW_FEATURE_AUX_RADIO_SPECTRAL_INTF 0x0004
3779#define WMI_HOST_FW_FEATURE_AUX_RADIO_CHAN_LOAD_INTF 0x0008
3780#define WMI_HOST_FW_FEATURE_BSS_CHANNEL_INFO_64 0x0010
3781#define WMI_HOST_FW_FEATURE_PEER_STATS 0x0020
3782#define WMI_HOST_FW_FEATURE_VDEV_STATS 0x0040
3783 /**
3784 * @brief fw_feature_bitmask - Enable/Disable features in FW
3785 * @details
3786 * The bits in fw_feature_bitmask are used as shown by the masks below:
3787 * 0x0001 - LTEU Config enable/disable
3788 * 0x0002 - COEX GPIO Config enable/disable
3789 * 0x0004 - Aux Radio enhancement for spectral scan enable/disable
3790 * 0x0008 - Aux Radio enhancement for chan load scan enable/disable
3791 * 0x0010 - BSS channel info stats enable/disable
3792 * The features in question are enabled by setting
3793 * the feature's bit to 1,
3794 * or disabled by setting the feature's bit to 0.
3795 */
3796 uint32_t fw_feature_bitmap;
3797
Sathish Kumar7e2eaed2016-11-14 17:44:29 +05303798 /* WLAN priority GPIO number
3799 * The target uses a GPIO pin to indicate when it is transmitting
3800 * high-priority traffic (e.g. beacon, management, or AC_VI) or
3801 * low-priority traffic (e.g. AC_BE, AC_BK). The HW uses this
3802 * WLAN GPIO pin to determine whether to abort WLAN tx in favor of
3803 * BT activity.
3804 * Which GPIO is used for this WLAN tx traffic priority specification
3805 * varies between platforms, so the host needs to indicate to the
3806 * target which GPIO to use.
3807 */
3808 uint32_t wlan_priority_gpio;
3809
Sathish Kumar612d0c22017-01-19 14:57:37 +05303810 /* Host will notify target which coex algorithm has to be
3811 * enabled based on HW, FW capability and device tree config.
3812 * Till now the coex algorithms were target specific. Now the
3813 * same target can choose between multiple coex algorithms
3814 * depending on device tree config on host. For backward
3815 * compatibility, version support will have option 0 and will
3816 * rely on FW compile time flags to decide the coex version
3817 * between VERSION_1, VERSION_2 and VERSION_3. Version info is
3818 * mandatory from VERSION_4 onwards for any new coex algorithms.
3819 *
3820 * 0 = no version support
3821 * 1 = COEX_VERSION_1 (3 wire coex)
3822 * 2 = COEX_VERSION_2 (2.5 wire coex)
3823 * 3 = COEX_VERSION_3 (2.5 wire coex+duty cycle)
3824 * 4 = COEX_VERSION_4 (4 wire coex)
3825 */
3826 uint32_t coex_version;
3827
3828 /* There are multiple coex implementations on FW to support different
3829 * hardwares. Since the coex algos are mutually exclusive, host will
3830 * use below fields to send GPIO info to FW and these GPIO pins will
3831 * have different usages depending on the feature enabled. This is to
3832 * avoid adding multiple GPIO fields here for different features.
3833 *
3834 * COEX VERSION_4 (4 wire coex) :
3835 * 4 wire coex feature uses 1 common input request line from BT/ZB/
3836 * Thread which interrupts the WLAN target processor directly, 1 input
3837 * priority line from BT and ZB each, 1 output line to grant access to
3838 * requesting IOT subsystem. WLAN uses the input priority line to
3839 * identify the requesting IOT subsystem. Request is granted based on
3840 * IOT interface priority and WLAN traffic. GPIO pin usage is as below:
3841 * coex_gpio_pin_1 = BT PRIORITY INPUT GPIO
3842 * coex_gpio_pin_2 = ZIGBEE PRIORITY INPUT GPIO
3843 * coex_gpio_pin_3 = GRANT OUTPUT GPIO
3844 * when a BT active interrupt is raised, WLAN reads
3845 * BT and ZB priority input GPIO pins to compare against the coex
3846 * priority table and accordingly sets the grant output GPIO to give
3847 * access to requesting IOT subsystem.
3848 */
3849 uint32_t coex_gpio_pin_1;
3850 uint32_t coex_gpio_pin_2;
3851 uint32_t coex_gpio_pin_3;
3852
Govind Singh89727882016-04-15 13:58:27 +05303853 /* add new members here */
3854} wmi_host_ext_resource_config;
3855
3856/**
3857 * struct set_neighbour_rx_params - Neighbour RX params
3858 * @vdev_id: vdev id
3859 * @idx: index of param
3860 * @action: action
3861 * @type: Type of param
3862 */
3863struct set_neighbour_rx_params {
3864 uint8_t vdev_id;
3865 uint32_t idx;
3866 uint32_t action;
3867 uint32_t type;
3868};
3869
3870/**
3871 * struct set_fwtest_params - FW test params
3872 * @arg: FW param id
3873 * @value: value
3874 */
3875struct set_fwtest_params {
3876 uint32_t arg;
3877 uint32_t value;
3878};
3879
3880/**
Sathish Kumar6190e772017-11-08 14:49:58 +05303881 * struct set_custom_aggr_size_params - custom aggr size params
3882 * @vdev_id : vdev id
3883 * @tx_aggr_size : TX aggr size
3884 * @rx_aggr_size : RX aggr size
3885 * @enable_bitmap: Bitmap for aggr size check
3886 */
3887struct set_custom_aggr_size_params {
3888 uint32_t vdev_id;
3889 uint32_t tx_aggr_size;
3890 uint32_t rx_aggr_size;
3891 uint32_t ac:2,
3892 aggr_type:1,
3893 tx_aggr_size_disable:1,
3894 rx_aggr_size_disable:1,
3895 tx_ac_enable:1,
3896 reserved:26;
3897};
3898
3899/**
3900 * enum wmi_host_custom_aggr_type_t: custon aggregate type
3901 * @WMI_HOST_CUSTOM_AGGR_TYPE_AMPDU: A-MPDU aggregation
3902 * @WMI_HOST_CUSTOM_AGGR_TYPE_AMSDU: A-MSDU aggregation
3903 * @WMI_HOST_CUSTOM_AGGR_TYPE_MAX: Max type
3904 */
3905enum wmi_host_custom_aggr_type_t {
3906 WMI_HOST_CUSTOM_AGGR_TYPE_AMPDU = 0,
3907 WMI_HOST_CUSTOM_AGGR_TYPE_AMSDU = 1,
3908 WMI_HOST_CUSTOM_AGGR_TYPE_MAX,
3909};
3910
Venkateswara Swamy Bandaru81f40dc2017-12-22 17:16:19 +05303911/*
3912 * msduq_update_params - MSDUQ update param structure
3913 * @tid_num: TID number
3914 * @msduq_update_mask: update bit mask
3915 * @qdepth_thresh_value: threshold value for the queue depth
3916 */
3917
3918#define QDEPTH_THRESH_MAX_UPDATES 1
3919
3920typedef struct {
3921 uint32_t tid_num;
3922 uint32_t msduq_update_mask;
3923 uint32_t qdepth_thresh_value;
3924} msduq_update_params;
3925
3926/**
3927 * struct set_qdepth_thresh_params - MSDU Queue Depth Threshold Params
3928 * @vdev_id: vdev id
3929 * @pdev_id: pdev id
3930 * @mac_addr: MAC address
3931 * @num_of_msduq_updates: holds the number of tid updates
3932 */
3933
3934struct set_qdepth_thresh_params {
3935 uint32_t pdev_id;
3936 uint32_t vdev_id;
3937 uint8_t mac_addr[IEEE80211_ADDR_LEN];
3938 uint32_t num_of_msduq_updates;
3939 msduq_update_params update_params[QDEPTH_THRESH_MAX_UPDATES];
3940};
3941
3942
3943
Sathish Kumar6190e772017-11-08 14:49:58 +05303944/**
Govind Singh89727882016-04-15 13:58:27 +05303945 * struct config_ratemask_params - ratemask config parameters
3946 * @vdev_id: vdev id
3947 * @type: Type
3948 * @lower32: Lower 32 bits
3949 * @higher32: Hogher 32 bits
3950 */
3951struct config_ratemask_params {
3952 uint8_t vdev_id;
3953 uint8_t type;
3954 uint32_t lower32;
3955 uint32_t higher32;
3956};
3957
3958/**
Subrat Mishra7c9427e2017-09-27 14:41:20 +05303959 * struct config_fils_params - FILS config params
3960 * @vdev_id: vdev id
3961 * @fd_period: 0 - Disabled, non-zero - Period in ms (mili seconds)
3962 */
3963struct config_fils_params {
3964 uint8_t vdev_id;
3965 uint32_t fd_period;
3966};
3967
3968/**
Govind Singh89727882016-04-15 13:58:27 +05303969 * struct peer_add_wds_entry_params - WDS peer entry add params
3970 * @dest_addr: Pointer to destination macaddr
3971 * @peer_addr: Pointer to peer mac addr
3972 * @flags: flags
Sathish Kumar79fdae42017-02-22 17:28:28 +05303973 * @vdev_id: Vdev id
Govind Singh89727882016-04-15 13:58:27 +05303974 */
3975struct peer_add_wds_entry_params {
3976 const uint8_t *dest_addr;
3977 uint8_t *peer_addr;
3978 uint32_t flags;
Sathish Kumar79fdae42017-02-22 17:28:28 +05303979 uint32_t vdev_id;
Govind Singh89727882016-04-15 13:58:27 +05303980};
3981
3982/**
3983 * struct peer_del_wds_entry_params - WDS peer entry del params
3984 * @dest_addr: Pointer to destination macaddr
Sathish Kumar79fdae42017-02-22 17:28:28 +05303985 * @vdev_id: Vdev id
Govind Singh89727882016-04-15 13:58:27 +05303986 */
3987struct peer_del_wds_entry_params {
3988 uint8_t *dest_addr;
Sathish Kumar79fdae42017-02-22 17:28:28 +05303989 uint32_t vdev_id;
Govind Singh89727882016-04-15 13:58:27 +05303990};
3991
3992/**
Jeevan Kukkalli28e8a162017-06-16 18:07:28 +05303993 * struct set_bridge_mac_addr_params - set bridge MAC addr params
3994 * @dest_addr: Pointer to bridge macaddr
3995 */
3996struct set_bridge_mac_addr_params {
3997 uint8_t *bridge_addr;
3998};
3999
4000/**
Govind Singh89727882016-04-15 13:58:27 +05304001 * struct peer_updatewds_entry_params - WDS peer entry update params
4002 * @wds_macaddr: Pointer to destination macaddr
4003 * @peer_add: Pointer to peer mac addr
4004 * @flags: flags
Sathish Kumar79fdae42017-02-22 17:28:28 +05304005 * @vdev_id: Vdev id
Govind Singh89727882016-04-15 13:58:27 +05304006 */
4007struct peer_update_wds_entry_params {
4008 uint8_t *wds_macaddr;
4009 uint8_t *peer_macaddr;
4010 uint32_t flags;
Sathish Kumardcc75292017-03-01 14:02:36 +05304011 uint32_t vdev_id;
Govind Singh89727882016-04-15 13:58:27 +05304012};
4013
4014/**
4015 * struct set_ps_mode_params - PS mode params
4016 * @vdev_id: vdev id
4017 * @psmode: PS mode
4018 */
4019struct set_ps_mode_params {
4020 uint8_t vdev_id;
4021 uint8_t psmode;
4022};
4023
4024/**
4025 * @struct tt_level_config - Set Thermal throttlling config
4026 * @tmplwm: Temperature low water mark
4027 * @tmphwm: Temperature high water mark
4028 * @dcoffpercent: dc off percentage
4029 * @priority: priority
4030 */
4031typedef struct {
4032 uint32_t tmplwm;
4033 uint32_t tmphwm;
4034 uint32_t dcoffpercent;
4035 uint32_t priority;
4036} tt_level_config;
4037
4038/**
4039 * struct thermal_mitigation_params - Thermal mitigation params
4040 * @enable: Enable/Disable Thermal mitigation
4041 * @dc: DC
4042 * @dc_per_event: DC per event
4043 * @tt_level_config: TT level config params
4044 */
4045struct thermal_mitigation_params {
Om Prakash Tripathi2f54fbb2017-04-19 16:57:31 +05304046 uint32_t pdev_id;
Govind Singh89727882016-04-15 13:58:27 +05304047 uint32_t enable;
4048 uint32_t dc;
4049 uint32_t dc_per_event;
4050 tt_level_config levelconf[THERMAL_LEVELS];
4051};
4052
4053/**
4054 * struct smart_ant_enable_params - Smart antenna params
4055 * @enable: Enable/Disable
4056 * @mode: SA mode
4057 * @rx_antenna: RX antenna config
Govind Singh41da3152016-05-06 20:20:25 +05304058 * @gpio_pin : GPIO pin config
4059 * @gpio_func : GPIO function config
Govind Singh89727882016-04-15 13:58:27 +05304060 */
4061struct smart_ant_enable_params {
4062 uint32_t enable;
4063 uint32_t mode;
4064 uint32_t rx_antenna;
Govind Singh41da3152016-05-06 20:20:25 +05304065 uint32_t gpio_pin[WMI_HAL_MAX_SANTENNA];
4066 uint32_t gpio_func[WMI_HAL_MAX_SANTENNA];
Sathish Kumardcc75292017-03-01 14:02:36 +05304067 uint32_t pdev_id;
Govind Singh89727882016-04-15 13:58:27 +05304068};
4069
4070/**
4071 * struct smart_ant_rx_ant_params - RX antenna params
4072 * @antenna: RX antenna
4073 */
4074struct smart_ant_rx_ant_params {
4075 uint32_t antenna;
Sathish Kumardcc75292017-03-01 14:02:36 +05304076 uint32_t pdev_id;
Govind Singh89727882016-04-15 13:58:27 +05304077};
4078
4079/**
4080 * struct smart_ant_tx_ant_params - TX antenna param
4081 * @antenna_array: Antenna arry
4082 * @vdev_id: VDEV id
4083 */
4084struct smart_ant_tx_ant_params {
4085 uint32_t *antenna_array;
4086 uint8_t vdev_id;
4087};
4088
4089/**
4090 * struct smart_ant_training_info_params - SA training params
4091 * @vdev_id: VDEV id
4092 * @rate_array: Rates array
4093 * @antenna_array: Antenna array
4094 * @numpkts: num packets for training
4095 */
4096struct smart_ant_training_info_params {
4097 uint8_t vdev_id;
4098 uint32_t *rate_array;
4099 uint32_t *antenna_array;
4100 uint32_t numpkts;
4101};
4102
4103/**
4104 * struct smart_ant_node_config_params - SA node config params
4105 * @vdev_id: VDEV id
4106 * @cmd_id: Command id
4107 * @args_count: Arguments count
4108 */
4109struct smart_ant_node_config_params {
4110 uint8_t vdev_id;
4111 uint32_t cmd_id;
4112 uint16_t args_count;
4113 uint32_t *args_arr;
4114};
4115/**
4116 * struct smart_ant_enable_tx_feedback_params - SA tx feeback params
4117 * @enable: Enable TX feedback for SA
4118 */
4119struct smart_ant_enable_tx_feedback_params {
4120 int enable;
4121};
4122
4123/**
4124 * struct vdev_spectral_configure_params - SPectral config params
4125 * @vdev_id: VDEV id
4126 * @count: count
4127 * @period: period
4128 * @spectral_pri: Spectral priority
4129 * @fft_size: FFT size
4130 * @gc_enable: GC enable
4131 * @restart_enable: restart enabled
4132 * @noise_floor_ref: Noise floor reference
4133 * @init_delay: Init delays
4134 * @nb_tone_thr: NB tone threshold
4135 * @str_bin_thr: STR BIN threshold
4136 * @wb_rpt_mode: WB BIN threshold
4137 * @rssi_rpt_mode: RSSI report mode
4138 * @rssi_thr: RSSI threshold
4139 * @pwr_format: Power format
4140 * @rpt_mode: Report mdoe
4141 * @bin_scale: BIN scale
4142 * @dBm_adj: DBM adjust
4143 * @chn_mask: chain mask
4144 */
4145struct vdev_spectral_configure_params {
4146 uint8_t vdev_id;
4147 uint16_t count;
4148 uint16_t period;
4149 uint16_t spectral_pri;
4150 uint16_t fft_size;
4151 uint16_t gc_enable;
4152 uint16_t restart_enable;
4153 uint16_t noise_floor_ref;
4154 uint16_t init_delay;
4155 uint16_t nb_tone_thr;
4156 uint16_t str_bin_thr;
4157 uint16_t wb_rpt_mode;
4158 uint16_t rssi_rpt_mode;
4159 uint16_t rssi_thr;
4160 uint16_t pwr_format;
4161 uint16_t rpt_mode;
4162 uint16_t bin_scale;
4163 uint16_t dBm_adj;
4164 uint16_t chn_mask;
4165};
4166
4167/**
4168 * struct vdev_spectral_enable_params - Spectral enabled params
4169 * @vdev_id: VDEV id
4170 * @active_valid: Active valid
4171 * @active: active
4172 * @enabled_valid: Enabled valid
4173 * @enabled: enabled
4174 */
4175struct vdev_spectral_enable_params {
4176 uint8_t vdev_id;
4177 uint8_t active_valid;
4178 uint8_t active;
4179 uint8_t enabled_valid;
4180 uint8_t enabled;
4181};
4182
4183/**
4184 * struct pdev_set_regdomain_params - PDEV set reg domain params
4185 * @currentRDinuse: Current Reg domain
4186 * @currentRD2G: Current Reg domain 2G
4187 * @currentRD5G: Current Reg domain 5G
4188 * @ctl_2G: CTL 2G
4189 * @ctl_5G: CTL 5G
4190 * @dfsDomain: DFS domain
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05304191 * @pdev_id: pdev_id
Govind Singh89727882016-04-15 13:58:27 +05304192 */
4193struct pdev_set_regdomain_params {
4194 uint16_t currentRDinuse;
4195 uint16_t currentRD2G;
4196 uint16_t currentRD5G;
4197 uint32_t ctl_2G;
4198 uint32_t ctl_5G;
4199 uint8_t dfsDomain;
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05304200 uint32_t pdev_id;
Govind Singh89727882016-04-15 13:58:27 +05304201};
4202
4203/**
4204 * struct set_quiet_mode_params - Set quiet mode params
4205 * @enabled: Enabled
4206 * @period: Quite period
4207 * @intval: Quite interval
4208 * @duration: Quite duration
4209 * @offset: offset
4210 */
4211struct set_quiet_mode_params {
4212 uint8_t enabled;
4213 uint8_t period;
4214 uint16_t intval;
4215 uint16_t duration;
4216 uint16_t offset;
4217};
4218
4219/**
4220 * struct set_beacon_filter_params - Set beacon filter params
4221 * @vdev_id: VDEV id
4222 * @ie: Pointer to IE fields
4223 */
4224struct set_beacon_filter_params {
4225 uint8_t vdev_id;
4226 uint32_t *ie;
4227};
4228
4229/**
4230 * struct remove_beacon_filter_params - Remove beacon filter params
4231 * @vdev_id: VDEV id
4232 */
4233struct remove_beacon_filter_params {
4234 uint8_t vdev_id;
4235};
4236
4237/**
4238 * struct mgmt_params - Mgmt params
4239 * @vdev_id: vdev id
4240 * @buf_len: lenght of frame buffer
4241 * @wbuf: frame buffer
4242 */
4243struct mgmt_params {
4244 int vdev_id;
4245 uint32_t buf_len;
4246 qdf_nbuf_t wbuf;
4247};
4248
4249/**
4250 * struct addba_clearresponse_params - Addba clear response params
4251 * @vdev_id: VDEV id
4252 */
4253struct addba_clearresponse_params {
4254 uint8_t vdev_id;
4255};
4256
4257/**
4258 * struct addba_send_params - ADDBA send params
4259 * @vdev_id: vdev id
4260 * @tidno: TID
4261 * @buffersize: buffer size
4262 */
4263struct addba_send_params {
4264 uint8_t vdev_id;
4265 uint8_t tidno;
4266 uint16_t buffersize;
4267};
4268
4269/**
4270 * struct delba_send_params - DELBA send params
4271 * @vdev_id: vdev id
4272 * @tidno: TID
4273 * @initiator: initiator
4274 * @reasoncode: reason code
4275 */
4276struct delba_send_params {
4277 uint8_t vdev_id;
4278 uint8_t tidno;
4279 uint8_t initiator;
4280 uint16_t reasoncode;
4281};
4282/**
4283 * struct addba_setresponse_arams - Set ADDBA response params
4284 * @vdev_id: vdev id
4285 * @tidno: TID
4286 * @statuscode: status code in response
4287 */
4288struct addba_setresponse_params {
4289 uint8_t vdev_id;
4290 uint8_t tidno;
4291 uint16_t statuscode;
4292};
4293
4294/**
4295 * struct singleamsdu_params - Single AMSDU params
4296 * @vdev_id: vdev is
4297 * @tidno: TID
4298 */
4299struct singleamsdu_params {
4300 uint8_t vdev_id;
4301 uint8_t tidno;
4302};
4303
4304/**
4305 * struct set_qbosst_params - Set QBOOST params
4306 * @vdev_id: vdev id
4307 * @value: value
4308 */
4309struct set_qboost_params {
4310 uint8_t vdev_id;
4311 uint32_t value;
4312};
4313
4314/**
4315 * struct mu_scan_params - MU scan params
4316 * @id: id
4317 * @type: type
4318 * @duration: Duration
4319 * @lteu_tx_power: LTEU tx power
4320 */
4321struct mu_scan_params {
4322 uint8_t id;
4323 uint8_t type;
4324 uint32_t duration;
4325 uint32_t lteu_tx_power;
Sathish Kumar7e2eaed2016-11-14 17:44:29 +05304326 uint32_t rssi_thr_bssid;
4327 uint32_t rssi_thr_sta;
4328 uint32_t rssi_thr_sc;
4329 uint32_t plmn_id;
4330 uint32_t alpha_num_bssid;
Govind Singh89727882016-04-15 13:58:27 +05304331};
4332
4333/**
4334 * struct lteu_config_params - LTEU config params
4335 * @lteu_gpio_start: start MU/AP scan after GPIO toggle
4336 * @lteu_num_bins: no. of elements in the following arrays
4337 * @use_actual_nf: whether to use the actual NF obtained or a hardcoded one
4338 * @lteu_weight: weights for MU algo
4339 * @lteu_thresh: thresholds for MU algo
4340 * @lteu_gamma: gamma's for MU algo
4341 * @lteu_scan_timeout: timeout in ms to gpio toggle
4342 * @alpha_num_ssid: alpha for num active bssid calculation
4343 * @wifi_tx_power: Wifi Tx power
4344 */
4345struct lteu_config_params {
4346 uint8_t lteu_gpio_start;
4347 uint8_t lteu_num_bins;
4348 uint8_t use_actual_nf;
4349 uint32_t lteu_weight[LTEU_MAX_BINS];
4350 uint32_t lteu_thresh[LTEU_MAX_BINS];
4351 uint32_t lteu_gamma[LTEU_MAX_BINS];
4352 uint32_t lteu_scan_timeout;
4353 uint32_t alpha_num_bssid;
4354 uint32_t wifi_tx_power;
Sathish Kumar7e2eaed2016-11-14 17:44:29 +05304355 uint32_t allow_err_packets;
Govind Singh89727882016-04-15 13:58:27 +05304356};
4357
4358struct wmi_macaddr_t {
4359 /** upper 4 bytes of MAC address */
4360 uint32_t mac_addr31to0;
4361 /** lower 2 bytes of MAC address */
4362 uint32_t mac_addr47to32;
4363};
4364
4365/**
4366 * struct atf_peer_info - ATF peer info params
4367 * @peer_macaddr: peer mac addr
4368 * @percentage_peer: percentage of air time for this peer
Subrat Mishraf02ed8b2017-04-03 12:32:42 +05304369 * @vdev_id: Associated vdev id
4370 * @pdev_id: Associated pdev id
Govind Singh89727882016-04-15 13:58:27 +05304371 */
4372typedef struct {
4373 struct wmi_macaddr_t peer_macaddr;
4374 uint32_t percentage_peer;
Subrat Mishraf02ed8b2017-04-03 12:32:42 +05304375 uint32_t vdev_id;
4376 uint32_t pdev_id;
Govind Singh89727882016-04-15 13:58:27 +05304377} atf_peer_info;
4378
4379/**
Sathish Kumar50232d72016-08-09 16:50:46 +05304380 * struct bwf_peer_info_t - BWF peer info params
4381 * @peer_macaddr: peer mac addr
4382 * @throughput: Throughput
4383 * @max_airtime: Max airtime
4384 * @priority: Priority level
4385 * @reserved: Reserved array
Subrat Mishraf02ed8b2017-04-03 12:32:42 +05304386 * @vdev_id: Associated vdev id
4387 * @pdev_id: Associated pdev id
Sathish Kumar50232d72016-08-09 16:50:46 +05304388 */
4389typedef struct {
4390 struct wmi_macaddr_t peer_macaddr;
4391 uint32_t throughput;
4392 uint32_t max_airtime;
4393 uint32_t priority;
4394 uint32_t reserved[4];
Subrat Mishraf02ed8b2017-04-03 12:32:42 +05304395 uint32_t vdev_id;
4396 uint32_t pdev_id;
Sathish Kumar50232d72016-08-09 16:50:46 +05304397} bwf_peer_info;
4398
4399/**
4400 * struct set_bwf_params - BWF params
4401 * @num_peers: number of peers
4402 * @atf_peer_info: BWF peer info
4403 */
4404struct set_bwf_params {
4405 uint32_t num_peers;
4406 bwf_peer_info peer_info[1];
4407};
4408
4409/**
Govind Singh89727882016-04-15 13:58:27 +05304410 * struct atf_peer_ext_info - ATF peer ext info params
4411 * @peer_macaddr: peer mac address
4412 * @group_index: group index
4413 * @atf_index_reserved: ATF index rsvd
Subrat Mishraf02ed8b2017-04-03 12:32:42 +05304414 * @vdev_id: Associated vdev id
4415 * @pdev_id: Associated pdev id
Govind Singh89727882016-04-15 13:58:27 +05304416 */
4417typedef struct {
4418 struct wmi_macaddr_t peer_macaddr;
4419 uint32_t group_index;
4420 uint32_t atf_index_reserved;
Subrat Mishraf02ed8b2017-04-03 12:32:42 +05304421 uint16_t vdev_id;
4422 uint16_t pdev_id;
Govind Singh89727882016-04-15 13:58:27 +05304423} atf_peer_ext_info;
4424
4425/**
Sathish Kumarb597ba42017-02-22 17:24:45 +05304426 * struct set_atf_params - ATF params
4427 * @num_peers: number of peers
4428 * @atf_peer_info: ATF peer info
4429 */
4430struct set_atf_params {
4431 uint32_t num_peers;
4432 atf_peer_info peer_info[ATF_ACTIVED_MAX_CLIENTS];
4433};
4434
4435/**
Govind Singh89727882016-04-15 13:58:27 +05304436 * struct atf_peer_request_params - ATF peer req params
4437 * @num_peers: number of peers
4438 * @atf_peer_ext_info: ATF peer ext info
4439 */
4440struct atf_peer_request_params {
4441 uint32_t num_peers;
4442 atf_peer_ext_info peer_ext_info[ATF_ACTIVED_MAX_CLIENTS];
4443};
4444
4445/**
4446 * struct atf_group_info - ATF group info params
4447 * @percentage_group: Percentage AT for group
4448 * @atf_group_units_reserved: ATF group information
Subrat Mishraf02ed8b2017-04-03 12:32:42 +05304449 * @pdev_id: Associated pdev id
Govind Singh89727882016-04-15 13:58:27 +05304450 */
4451typedef struct {
4452 uint32_t percentage_group;
4453 uint32_t atf_group_units_reserved;
Subrat Mishraf02ed8b2017-04-03 12:32:42 +05304454 uint32_t pdev_id;
Govind Singh89727882016-04-15 13:58:27 +05304455} atf_group_info;
4456
4457/**
4458 * struct atf_grouping_params - ATF grouping params
4459 * @num_groups: number of groups
4460 * @group_inf: Group informaition
4461 */
4462struct atf_grouping_params {
4463 uint32_t num_groups;
4464 atf_group_info group_info[ATF_ACTIVED_MAX_ATFGROUPS];
4465};
4466
4467/**
4468 * struct wlan_profile_params - WLAN profile params
4469 * @param_id: param id
4470 * @profile_id: profile id
4471 * @enable: enable
4472 */
4473struct wlan_profile_params {
4474 uint32_t param_id;
4475 uint32_t profile_id;
4476 uint32_t enable;
4477};
4478
4479/* struct ht_ie_params - HT IE params
4480 * @ie_len: IE length
4481 * @ie_data: pointer to IE data
Sathish Kumar79fdae42017-02-22 17:28:28 +05304482 * @tx_streams: Tx streams supported for this HT IE
4483 * @rx_streams: Rx streams supported for this HT IE
Govind Singh89727882016-04-15 13:58:27 +05304484 */
4485struct ht_ie_params {
4486 uint32_t ie_len;
4487 uint8_t *ie_data;
Sathish Kumar79fdae42017-02-22 17:28:28 +05304488 uint32_t tx_streams;
4489 uint32_t rx_streams;
Govind Singh89727882016-04-15 13:58:27 +05304490};
4491
4492/* struct vht_ie_params - VHT IE params
4493 * @ie_len: IE length
4494 * @ie_data: pointer to IE data
Sathish Kumar79fdae42017-02-22 17:28:28 +05304495 * @tx_streams: Tx streams supported for this VHT IE
4496 * @rx_streams: Rx streams supported for this VHT IE
Govind Singh89727882016-04-15 13:58:27 +05304497 */
4498struct vht_ie_params {
4499 uint32_t ie_len;
4500 uint8_t *ie_data;
Sathish Kumar79fdae42017-02-22 17:28:28 +05304501 uint32_t tx_streams;
4502 uint32_t rx_streams;
Govind Singh89727882016-04-15 13:58:27 +05304503};
4504
4505/**
4506 * struct wmi_host_wmeParams - WME params
4507 * @wmep_acm: ACM paramete
4508 * @wmep_aifsn: AIFSN parameters
4509 * @wmep_logcwmin: cwmin in exponential form
4510 * @wmep_logcwmax: cwmax in exponential form
4511 * @wmep_txopLimit: txopLimit
4512 * @wmep_noackPolicy: No-Ack Policy: 0=ack, 1=no-ack
4513 */
4514struct wmi_host_wmeParams {
4515 u_int8_t wmep_acm;
4516 u_int8_t wmep_aifsn;
4517 u_int8_t wmep_logcwmin;
4518 u_int8_t wmep_logcwmax;
4519 u_int16_t wmep_txopLimit;
4520 u_int8_t wmep_noackPolicy;
4521};
4522
4523/**
4524 * struct wmm_update_params - WMM update params
4525 * @wmep_array: WME params for each AC
4526 */
4527struct wmm_update_params {
4528 struct wmi_host_wmeParams *wmep_array;
4529};
4530
4531/**
Vikram Kandukurid2e75802017-06-01 16:47:51 +05304532 * struct wmi_host_wmevParams - WME params
4533 * @wmep_acm: ACM paramete
4534 * @wmep_aifsn: AIFSN parameters
4535 * @wmep_logcwmin: cwmin in exponential form
4536 * @wmep_logcwmax: cwmax in exponential form
4537 * @wmep_txopLimit: txopLimit
4538 * @wmep_noackPolicy: No-Ack Policy: 0=ack, 1=no-ack
4539 */
4540struct wmi_host_wme_vparams {
4541 u_int32_t acm;
4542 u_int32_t aifs;
4543 u_int32_t cwmin;
4544 u_int32_t cwmax;
4545 union {
4546 u_int32_t txoplimit;
4547 u_int32_t mu_edca_timer;
4548 };
4549 u_int32_t noackpolicy;
4550};
4551
4552/**
Govind Singh89727882016-04-15 13:58:27 +05304553 * struct ant_switch_tbl_params - Antenna switch table params
4554 * @ant_ctrl_common1: ANtenna control common param 1
4555 * @ant_ctrl_common2: Antenna control commn param 2
4556 */
4557struct ant_switch_tbl_params {
4558 uint32_t ant_ctrl_common1;
4559 uint32_t ant_ctrl_common2;
Sathish Kumarb597ba42017-02-22 17:24:45 +05304560 uint32_t pdev_id;
4561 uint32_t antCtrlChain;
Govind Singh89727882016-04-15 13:58:27 +05304562};
4563
4564/**
4565 * struct ratepwr_table_params - Rate power table params
4566 * @ratepwr_tbl: pointer to rate power table
4567 * @ratepwr_len: rate power table len
4568 */
4569struct ratepwr_table_params {
4570 uint8_t *ratepwr_tbl;
4571 uint16_t ratepwr_len;
4572};
4573
4574/**
4575 * struct ctl_table_params - Ctl table params
4576 * @ctl_array: pointer to ctl array
Sathish Kumar990089f2016-11-09 11:44:50 +05304577 * @ctl_cmd_len: ctl command length
Govind Singh89727882016-04-15 13:58:27 +05304578 * @is_acfg_ctl: is acfg_ctl table
4579 */
4580struct ctl_table_params {
4581 uint8_t *ctl_array;
Sathish Kumar990089f2016-11-09 11:44:50 +05304582 uint16_t ctl_cmd_len;
Nandha Kishore Easwaranda8e13c2016-10-14 15:22:05 +05304583 uint32_t target_type;
4584 bool is_2g;
Sathish Kumar990089f2016-11-09 11:44:50 +05304585 uint32_t ctl_band;
Sathish Kumardcc75292017-03-01 14:02:36 +05304586 uint32_t pdev_id;
Govind Singh89727882016-04-15 13:58:27 +05304587};
4588
4589/**
4590 * struct mimogain_table_params - MIMO gain table params
4591 * @array_gain: pointer to array gain table
4592 * @tbl_len: table length
4593 * @multichain_gain_bypass: bypass multichain gain
4594 */
4595struct mimogain_table_params {
4596 uint8_t *array_gain;
4597 uint16_t tbl_len;
4598 bool multichain_gain_bypass;
Sathish Kumardcc75292017-03-01 14:02:36 +05304599 uint32_t pdev_id;
Govind Singh89727882016-04-15 13:58:27 +05304600};
4601
4602/**
4603 * struct ratepwr_chainmask_params - Rate power chainmask params
4604 * @ratepwr_chain_tbl: pointer to ratepwr chain table
4605 * @num_rate: number of rate in table
4606 * @pream_type: preamble type
4607 * @ops: ops
4608 */
4609struct ratepwr_chainmsk_params {
4610 uint32_t *ratepwr_chain_tbl;
4611 uint16_t num_rate;
4612 uint8_t pream_type;
4613 uint8_t ops;
4614};
4615
4616struct macaddr_params {
4617 uint8_t *macaddr;
4618};
4619
4620/**
4621 * struct acparams_params - acparams config structure
4622 * @ac: AC to configure
4623 * @use_rts: Use rts for this AC
4624 * @aggrsize_scaling: Aggregrate size scaling for the AC
4625 * @min_kbps: min kbps req
4626 */
4627struct acparams_params {
4628 uint8_t ac;
4629 uint8_t use_rts;
4630 uint8_t aggrsize_scaling;
4631 uint32_t min_kbps;
4632};
4633
4634/**
4635 * struct vap_dscp_tid_map_params - DSCP tid map params
4636 * @vdev_id: vdev id
4637 * @dscp_to_tid_map: pointer to arry of tid to dscp map table
4638 */
4639struct vap_dscp_tid_map_params {
4640 uint8_t vdev_id;
4641 uint32_t *dscp_to_tid_map;
4642};
4643
4644/**
4645 * struct proxy_ast_reserve_params - Proxy AST reserve params
4646 * @macaddr: macaddr for proxy ast entry
4647 */
4648struct proxy_ast_reserve_params {
4649 uint8_t *macaddr;
4650};
4651
4652/**
4653 * struct fips_params - FIPS params config
4654 * @key: pointer to key
4655 * @key_len: length of key
4656 * @data: pointer data buf
Nandha Kishore Easwaran2ccd4242017-01-09 21:33:00 +05304657 * @data_len: lenght of data buf
Govind Singh89727882016-04-15 13:58:27 +05304658 * @mode: mode
4659 * @op: operation
Nandha Kishore Easwaran2ccd4242017-01-09 21:33:00 +05304660 * @pdev_id: pdev_id for identifying the MAC
Govind Singh89727882016-04-15 13:58:27 +05304661 */
4662struct fips_params {
4663 uint8_t *key;
4664 uint32_t key_len;
4665 uint8_t *data;
4666 uint32_t data_len;
4667 uint32_t mode;
4668 uint32_t op;
Nandha Kishore Easwaran2ccd4242017-01-09 21:33:00 +05304669 uint32_t pdev_id;
Govind Singh89727882016-04-15 13:58:27 +05304670};
4671
4672/**
4673 * struct mcast_group_update_param - Mcast group table update to target
4674 * @action: Addition/deletion
4675 * @wildcard: iwldcard table entry?
4676 * @mcast_ip_addr: mcast ip address to be updated
4677 * @mcast_ip_addr_bytes: mcast ip addr bytes
4678 * @ucast_mac_addr: ucast peer mac subscribed to mcast ip
4679 * @filter_mode: filter mode
4680 * @nsrcs: number of entries in source list
4681 * @srcs: source mac accpted
4682 * @mask: mask
4683 * @vap_id: vdev id
4684 * @is_action_delete: is delete
4685 * @is_filter_mode_snoop:
4686 * @is_mcast_addr_len:
4687 */
4688struct mcast_group_update_params {
4689 int action;
4690 int wildcard;
4691 uint8_t *mcast_ip_addr;
4692 int mcast_ip_addr_bytes;
4693 uint8_t *ucast_mac_addr;
4694 uint8_t filter_mode;
4695 uint8_t nsrcs;
4696 uint8_t *srcs;
4697 uint8_t *mask;
4698 uint8_t vap_id;
4699 bool is_action_delete;
4700 bool is_filter_mode_snoop;
4701 bool is_mcast_addr_len;
4702};
4703
4704/**
4705 * struct periodic_chan_stats_param - periodic channel stats req param
4706 * @stats_period: stats period update
4707 * @enable: enable/disable
4708 */
4709struct periodic_chan_stats_params {
4710 uint32_t stats_period;
4711 bool enable;
Sathish Kumard1bb0202017-11-02 10:44:39 +05304712 uint32_t pdev_id;
Govind Singh89727882016-04-15 13:58:27 +05304713};
4714
4715/**
Om Prakash Tripathi4331e422017-09-06 15:22:04 +05304716 * enum wmi_host_packet_power_rate_flags: packer power rate flags
4717 * @WMI_HOST_FLAG_RTSENA: RTS enabled
4718 * @WMI_HOST_FLAG_CTSENA: CTS enabled
4719 * @WMI_HOST_FLAG_STBC: STBC is set
4720 * @WMI_HOST_FLAG_LDPC: LDPC is set
4721 * @WMI_HOST_FLAG_TXBF: Tx Bf enabled
4722 * @WMI_HOST_FLAG_MU2: MU2 data
4723 * @WMI_HOST_FLAG_MU3: MU3 data
4724 * @WMI_HOST_FLAG_SERIES1: Rate series 1
4725 * @WMI_HOST_FLAG_SGI: Short gaurd interval
4726 */
4727enum wmi_host_packet_power_rate_flags {
4728 WMI_HOST_FLAG_RTSENA = 0x0001,
4729 WMI_HOST_FLAG_CTSENA = 0x0002,
4730 WMI_HOST_FLAG_STBC = 0x0004,
4731 WMI_HOST_FLAG_LDPC = 0x0008,
4732 WMI_HOST_FLAG_TXBF = 0x0010,
4733 WMI_HOST_FLAG_MU2 = 0x0020,
4734 WMI_HOST_FLAG_MU3 = 0x0040,
4735 WMI_HOST_FLAG_SERIES1 = 0x0080,
4736 WMI_HOST_FLAG_SGI = 0x0100,
4737};
4738
4739/**
4740 * enum wmi_host_su_mu_ofdma_flags: packer power su mu ofdma flags
4741 * @WMI_HOST_FLAG_SU: SU Data
4742 * @WMI_HOST_FLAG_DL_MU_MIMO_AC: DL AC MU data
4743 * @WMI_HOST_FLAG_DL_MU_MIMO_AX: DL AX MU data
4744 * @WMI_HOST_FLAG_DL_OFDMA: DL OFDMA data
4745 * @WMI_HOST_FLAG_UL_OFDMA: UL OFDMA data
4746 * @WMI_HOST_FLAG_UL_MU_MIMO: UL MU data
4747 */
4748enum wmi_host_su_mu_ofdma_flags {
4749 WMI_HOST_FLAG_SU = 0x0001,
4750 WMI_HOST_FLAG_DL_MU_MIMO_AC = 0x0002,
4751 WMI_HOST_FLAG_DL_MU_MIMO_AX = 0x0003,
4752 WMI_HOST_FLAG_DL_OFDMA = 0x0004,
4753 WMI_HOST_FLAG_UL_OFDMA = 0x0005,
4754 WMI_HOST_FLAG_UL_MU_MIMO = 0x0006,
4755};
4756
4757/**
4758 * enum wmi_host_preamble_type: preamble type
4759 * @WMI_HOST_PREAMBLE_OFDM: ofdm rate
4760 * @WMI_HOST_PREAMBLE_CCK: cck rate
4761 * @WMI_HOST_PREAMBLE_HT: ht rate
4762 * @WMI_HOST_PREAMBLE_VHT: vht rate
4763 * @WMI_HOST_PREAMBLE_HE: 11ax he rate
4764 */
4765enum wmi_host_preamble_type {
4766 WMI_HOST_PREAMBLE_OFDM = 0,
4767 WMI_HOST_PREAMBLE_CCK = 1,
4768 WMI_HOST_PREAMBLE_HT = 2,
4769 WMI_HOST_PREAMBLE_VHT = 3,
4770 WMI_HOST_PREAMBLE_HE = 4,
4771};
4772
4773/**
Govind Singh89727882016-04-15 13:58:27 +05304774 * struct packet_power_info_params - packet power info params
Om Prakash Tripathi4331e422017-09-06 15:22:04 +05304775 * @chainmask: chain mask
4776 * @chan_width: channel bandwidth
Govind Singh89727882016-04-15 13:58:27 +05304777 * @rate_flags: rate flags
Om Prakash Tripathi4331e422017-09-06 15:22:04 +05304778 * @su_mu_ofdma: su/mu/ofdma flags
Govind Singh89727882016-04-15 13:58:27 +05304779 * @nss: number of spatial streams
4780 * @preamble: preamble
4781 * @hw_rate:
4782 */
4783struct packet_power_info_params {
Om Prakash Tripathi4331e422017-09-06 15:22:04 +05304784 uint16_t chainmask;
4785 uint16_t chan_width;
Govind Singh89727882016-04-15 13:58:27 +05304786 uint16_t rate_flags;
Om Prakash Tripathi4331e422017-09-06 15:22:04 +05304787 uint16_t su_mu_ofdma;
Govind Singh89727882016-04-15 13:58:27 +05304788 uint16_t nss;
4789 uint16_t preamble;
4790 uint16_t hw_rate;
Sathish Kumardcc75292017-03-01 14:02:36 +05304791 uint32_t pdev_id;
Govind Singh89727882016-04-15 13:58:27 +05304792};
4793
4794/**
4795 * WMI_GPIO_CONFIG_CMDID
4796 */
4797enum {
4798 WMI_HOST_GPIO_PULL_NONE,
4799 WMI_HOST_GPIO_PULL_UP,
4800 WMI_HOST_GPIO_PULL_DOWN,
4801};
4802
4803/**
4804 * WMI_GPIO_INTTYPE
4805 */
4806enum {
4807 WMI_HOST_GPIO_INTTYPE_DISABLE,
4808 WMI_HOST_GPIO_INTTYPE_RISING_EDGE,
4809 WMI_HOST_GPIO_INTTYPE_FALLING_EDGE,
4810 WMI_HOST_GPIO_INTTYPE_BOTH_EDGE,
4811 WMI_HOST_GPIO_INTTYPE_LEVEL_LOW,
4812 WMI_HOST_GPIO_INTTYPE_LEVEL_HIGH
4813};
4814
4815/**
4816 * struct wmi_host_gpio_input_event - GPIO input event structure
4817 * @gpio_num: GPIO number which changed state
4818 */
4819typedef struct {
4820 uint32_t gpio_num; /* GPIO number which changed state */
4821} wmi_host_gpio_input_event;
4822
4823/**
4824 * struct gpio_config_params - GPIO config params
4825 * @gpio_num: GPIO number to config
4826 * @input: input/output
4827 * @pull_type: pull type
4828 * @intr_mode: int mode
4829 */
4830struct gpio_config_params {
4831 uint32_t gpio_num;
4832 uint32_t input;
4833 uint32_t pull_type;
4834 uint32_t intr_mode;
4835};
4836
4837/**
4838 * struct gpio_output_params - GPIO output params
4839 * @gpio_num: GPIO number to configure
4840 * @set: set/reset
4841 */
4842struct gpio_output_params {
4843 uint32_t gpio_num;
4844 uint32_t set;
4845};
4846
Sathish Kumar7e566c52016-11-10 15:30:22 +05304847/* flags bit 0: to configure wlan priority bitmap */
4848#define WMI_HOST_BTCOEX_PARAM_FLAGS_WLAN_PRIORITY_BITMAP_BIT (1<<0)
4849/* flags bit 1: to configure both period and wlan duration */
4850#define WMI_HOST_BTCOEX_PARAM_FLAGS_DUTY_CYCLE_BIT (1<<1)
4851struct btcoex_cfg_params {
4852 /* WLAN priority bitmask for different frame types */
4853 uint32_t btcoex_wlan_priority_bitmap;
4854 /* This command is used to configure different btcoex params
4855 * in different situations.The host sets the appropriate bit(s)
4856 * in btcoex_param_flags to indicate which configuration parameters
4857 * are valid within a particular BT coex config message, so that one
4858 * BT configuration parameter can be configured without affecting
4859 * other BT configuration parameters.E.g. if the host wants to
4860 * configure only btcoex_wlan_priority_bitmap it sets only
4861 * WMI_BTCOEX_PARAM_FLAGS_WLAN_PRIORITY_BITMAP_BIT in
4862 * btcoex_param_flags so that firmware will not overwrite
4863 * other params with default value passed in the command.
4864 * Host can also set multiple bits in btcoex_param_flags
4865 * to configure more than one param in single message.
4866 */
4867 uint32_t btcoex_param_flags;
4868 /* period denotes the total time in milliseconds which WLAN and BT share
4869 * configured percentage for transmission and reception.
4870 */
4871 uint32_t period;
4872 /* wlan duration is the time in milliseconds given for wlan
4873 * in above period.
4874 */
4875 uint32_t wlan_duration;
4876};
4877
Sathish Kumar612d0c22017-01-19 14:57:37 +05304878#define WMI_HOST_COEX_CONFIG_BUF_MAX_LEN 32 /* 128 bytes */
4879/**
4880 * coex_ver_cfg_t
4881 * @coex_version: Version for 4 wire coex
4882 * @length: Length of payload buffer based on version
4883 * @config_buf: Payload Buffer
4884 */
4885typedef struct {
4886 /* VERSION_4 (4 wire coex) */
4887 uint32_t coex_version;
4888
4889 /* No. of A_UINT32 elements in payload buffer. Will depend on the coex
4890 * version
4891 */
4892 uint32_t length;
4893
4894 /* Payload buffer */
4895 uint32_t config_buf[WMI_HOST_COEX_CONFIG_BUF_MAX_LEN];
4896} coex_ver_cfg_t;
Sathish Kumar7e566c52016-11-10 15:30:22 +05304897
Govind Singh89727882016-04-15 13:58:27 +05304898#define WMI_HOST_RTT_REPORT_CFR 0
4899#define WMI_HOST_RTT_NO_REPORT_CFR 1
4900#define WMI_HOST_RTT_AGGREGATE_REPORT_NON_CFR 2
4901/**
4902 * struct rtt_meas_req_test_params
4903 * @peer: peer mac address
4904 * @req_frame_type: RTT request frame type
4905 * @req_bw: requested bandwidth
4906 * @req_preamble: Preamble
4907 * @req_num_req: num of requests
4908 * @req_report_type: report type
4909 * @num_measurements: number of measurements
4910 * @asap_mode: priority
4911 * @lci_requested: LCI requested
4912 * @loc_civ_requested:
4913 * @channel_param: channel param
4914 * @req_id: requested id
4915 */
4916struct rtt_meas_req_test_params {
4917 uint8_t peer[IEEE80211_ADDR_LEN];
4918 int req_frame_type;
4919 int req_bw;
4920 int req_preamble;
4921 int req_num_req;
4922 int req_report_type;
4923 uint32_t num_measurements;
4924 uint32_t asap_mode;
4925 uint32_t lci_requested;
4926 uint32_t loc_civ_requested;
4927 struct channel_param channel;
4928 uint8_t req_id;
4929};
4930
4931/**
4932 * struct rtt_meas_req_params - RTT measurement request params
4933 * @req_id: Request id
4934 * @vdev_id: vdev id
4935 * @sta_mac_addr: pointer to station mac address
4936 * @spoof_mac_addr: pointer to spoof mac address
4937 * @is_mode_na: 11NA
4938 * @is_mode_ac: AC
4939 * @is_bw_20: 20
4940 * @is_bw_40: 40
4941 * @is_bw_80: 80
4942 * @num_probe_rqst: number of probe request
4943 * @channel_param: channel param
4944 */
4945struct rtt_meas_req_params {
4946 uint8_t req_id;
4947 uint8_t vdev_id;
4948 uint8_t *sta_mac_addr;
4949 uint8_t *spoof_mac_addr;
4950 bool is_mode_na;
4951 bool is_mode_ac;
4952 bool is_bw_20;
4953 bool is_bw_40;
4954 bool is_bw_80;
4955 uint32_t num_probe_rqst;
4956 struct channel_param channel;
4957};
4958
4959/**
4960 * struct lci_set_params - LCI params
4961 * @lci_data: pointer to LCI data
4962 * @latitude_unc: latitude
4963 * @latitude_0_12: bits 0 to 1 of latitude
4964 * @latitude_2_33: bits 2 to 33 of latitude
4965 * @longitude_unc: longitude
4966 * @longitude_0_1: bits 0 to 1 of longitude
4967 * @longitude_2_33: bits 2 to 33 of longitude
4968 * @altitude_type: altitude type
4969 * @altitude_unc_0_3: altitude bits 0 - 3
4970 * @altitude_unc_4_5: altitude bits 4 - 5
4971 * @altitude: altitude
4972 * @datum: dataum
4973 * @reg_loc_agmt:
4974 * @reg_loc_dse:
4975 * @dep_sta:
4976 * @version: version
4977 */
4978struct lci_set_params {
4979 void *lci_data;
4980 uint8_t latitude_unc:6,
4981 latitude_0_1:2;
4982 uint32_t latitude_2_33;
4983 uint8_t longitude_unc:6,
4984 longitude_0_1:2;
4985 uint32_t longitude_2_33;
4986 uint8_t altitude_type:4,
4987 altitude_unc_0_3:4;
4988 uint32_t altitude_unc_4_5:2,
4989 altitude:30;
4990 uint8_t datum:3,
4991 reg_loc_agmt:1,
4992 reg_loc_dse:1,
4993 dep_sta:1,
4994 version:2;
Sathish Kumar38bf0d82016-10-20 14:07:21 +05304995 uint8_t *colocated_bss;
4996 int msg_len;
Govind Singh89727882016-04-15 13:58:27 +05304997};
4998
4999/**
5000 * struct lcr_set_params - LCR params
5001 * @lcr_data: pointer to lcr data
5002 */
5003struct lcr_set_params {
5004 void *lcr_data;
Sathish Kumar38bf0d82016-10-20 14:07:21 +05305005 int msg_len;
Govind Singh89727882016-04-15 13:58:27 +05305006};
5007
5008/**
5009 * struct rtt_keepalive_req_params - RTT keepalive params
5010 * @macaddr: pointer to macaddress
5011 * @req_id: Request id
5012 * @vdev_id: vdev id
5013 * @stop: start/stop
5014 */
5015struct rtt_keepalive_req_params {
5016 uint8_t *macaddr;
5017 uint8_t req_id;
5018 uint8_t vdev_id;
5019 bool stop;
5020};
5021
5022/**
Leo Chang8184e9c2016-09-28 13:43:36 -07005023 * struct rx_reorder_queue_setup_params - Reorder queue setup params
5024 * @peer_mac_addr: Peer mac address
5025 * @tid: TID
5026 * @vdev_id: vdev id
5027 * @hw_qdesc_paddr_lo: lower 32 bits of queue desc adddress
5028 * @hw_qdesc_paddr_hi: upper 32 bits of queue desc adddress
5029 * @queue_no: 16-bit number assigned by host for queue
5030 */
5031struct rx_reorder_queue_setup_params {
5032 uint8_t *peer_macaddr;
5033 uint16_t tid;
5034 uint16_t vdev_id;
5035 uint32_t hw_qdesc_paddr_lo;
5036 uint32_t hw_qdesc_paddr_hi;
5037 uint16_t queue_no;
5038};
5039
5040/**
5041 * struct rx_reorder_queue_remove_params - Reorder queue setup params
5042 * @peer_mac_addr: Peer mac address
5043 * @vdev_id: vdev id
5044 * @peer_tid_bitmap: peer tid bitmap
5045 */
5046struct rx_reorder_queue_remove_params {
5047 uint8_t *peer_macaddr;
5048 uint16_t vdev_id;
5049 uint32_t peer_tid_bitmap;
5050};
5051
5052/**
Govind Singh89727882016-04-15 13:58:27 +05305053 * struct wmi_host_stats_event - Stats event params
5054 * @stats_id: stats id of type wmi_host_stats_event
5055 * @num_pdev_stats: number of pdev stats event structures 0 or 1
5056 * @num_pdev_ext_stats: number of pdev ext stats event structures
5057 * @num_vdev_stats: number of vdev stats
5058 * @num_peer_stats: number of peer stats event structures 0 or max peers
5059 * @num_bcnflt_stats: number of beacon filter stats
5060 * @num_chan_stats: number of channel stats
Gurumoorthi Gnanasambandhan18977552017-11-06 22:04:17 +05305061 * @pdev_id: device id for the radio
5062 * @num_bcn_stats: number of beacon stats
Govind Singh89727882016-04-15 13:58:27 +05305063 */
5064typedef struct {
5065 wmi_host_stats_id stats_id;
5066 uint32_t num_pdev_stats;
5067 uint32_t num_pdev_ext_stats;
5068 uint32_t num_vdev_stats;
5069 uint32_t num_peer_stats;
5070 uint32_t num_bcnflt_stats;
5071 uint32_t num_chan_stats;
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05305072 uint32_t pdev_id;
Gurumoorthi Gnanasambandhan18977552017-11-06 22:04:17 +05305073 uint32_t num_bcn_stats;
Govind Singh89727882016-04-15 13:58:27 +05305074} wmi_host_stats_event;
5075
5076/**
Govind Singh89727882016-04-15 13:58:27 +05305077 * struct wmi_host_peer_extd_stats - peer extd stats event structure
5078 * @peer_macaddr: Peer mac address
5079 * @inactive_time: inactive time in secs
5080 * @peer_chain_rssi: peer rssi
5081 * @rx_duration: RX duration
5082 * @peer_tx_bytes: TX bytes
5083 * @peer_rx_bytes: RX bytes
5084 * @last_tx_rate_code: Tx rate code of last frame
5085 * @last_tx_power: Tx power latest
5086 * @atf_tokens_allocated: atf tokens allocated
5087 * @atf_tokens_utilized: atf tokens utilized
5088 * @reserved: for future use
5089 */
5090typedef struct {
5091 wmi_host_mac_addr peer_macaddr;
5092 uint32_t inactive_time;
5093 uint32_t peer_chain_rssi;
5094 uint32_t rx_duration;
5095 uint32_t peer_tx_bytes;
5096 uint32_t peer_rx_bytes;
5097 uint32_t last_tx_rate_code;
5098 uint32_t last_tx_power;
5099 uint32_t atf_tokens_allocated;
5100 uint32_t atf_tokens_utilized;
5101 uint32_t reserved[4];
5102} wmi_host_peer_extd_stats;
5103
5104/**
5105 * struct wmi_host_pdev_ext_stats - peer ext stats structure
5106 * @rx_rssi_comb: RX rssi
5107 * @rx_rssi_chain0: RX rssi chain 0
5108 * @rx_rssi_chain1: RX rssi chain 1
5109 * @rx_rssi_chain2: RX rssi chain 2
5110 * @rx_rssi_chain3: RX rssi chain 3
5111 * @rx_mcs: RX MCS array
5112 * @tx_mcs: TX MCS array
5113 * @ack_rssi: Ack rssi
5114 */
5115typedef struct {
5116 uint32_t rx_rssi_comb;
5117 uint32_t rx_rssi_chain0;
5118 uint32_t rx_rssi_chain1;
5119 uint32_t rx_rssi_chain2;
5120 uint32_t rx_rssi_chain3;
5121 uint32_t rx_mcs[10];
5122 uint32_t tx_mcs[10];
5123 uint32_t ack_rssi;
5124} wmi_host_pdev_ext_stats;
5125
5126/**
5127 * struct wmi_host_dbg_tx_stats - Debug stats
5128 * @comp_queued: Num HTT cookies queued to dispatch list
5129 * @comp_delivered: Num HTT cookies dispatched
5130 * @msdu_enqued: Num MSDU queued to WAL
5131 * @mpdu_enqued: Num MPDU queue to WAL
5132 * @wmm_drop: Num MSDUs dropped by WMM limit
5133 * @local_enqued: Num Local frames queued
5134 * @local_freed: Num Local frames done
5135 * @hw_queued: Num queued to HW
5136 * @hw_reaped: Num PPDU reaped from HW
5137 * @underrun: Num underruns
5138 * @hw_paused: HW Paused.
5139 * @tx_abort: Num PPDUs cleaned up in TX abort
5140 * @mpdus_requed: Num MPDUs requed by SW
5141 * @tx_ko: excessive retries
5142 * @tx_xretry:
5143 * @data_rc: data hw rate code
5144 * @self_triggers: Scheduler self triggers
5145 * @sw_retry_failure: frames dropped due to excessive sw retries
5146 * @illgl_rate_phy_err: illegal rate phy errors
5147 * @pdev_cont_xretry: wal pdev continous xretry
5148 * @pdev_tx_timeout: wal pdev continous xretry
5149 * @pdev_resets: wal pdev resets
5150 * @stateless_tid_alloc_failure: frames dropped due to non-availability of
5151 * stateless TIDs
5152 * @phy_underrun: PhY/BB underrun
5153 * @txop_ovf: MPDU is more than txop limit
5154 * @seq_posted: Number of Sequences posted
5155 * @seq_failed_queueing: Number of Sequences failed queueing
5156 * @seq_completed: Number of Sequences completed
5157 * @seq_restarted: Number of Sequences restarted
5158 * @mu_seq_posted: Number of MU Sequences posted
5159 * @mpdus_sw_flush: Num MPDUs flushed by SW, HWPAUSED, SW TXABORT
5160 * (Reset,channel change)
5161 * @mpdus_hw_filter: Num MPDUs filtered by HW, all filter condition
5162 * (TTL expired)
5163 * @mpdus_truncated: Num MPDUs truncated by PDG (TXOP, TBTT,
5164 * PPDU_duration based on rate, dyn_bw)
5165 * @mpdus_ack_failed: Num MPDUs that was tried but didn't receive ACK or BA
5166 * @mpdus_expired: Num MPDUs that was dropped du to expiry.
5167 * @mc_dropr: Num mc drops
5168 */
5169typedef struct {
5170 int32_t comp_queued;
5171 int32_t comp_delivered;
5172 int32_t msdu_enqued;
5173 int32_t mpdu_enqued;
5174 int32_t wmm_drop;
5175 int32_t local_enqued;
5176 int32_t local_freed;
5177 int32_t hw_queued;
5178 int32_t hw_reaped;
5179 int32_t underrun;
5180 uint32_t hw_paused;
5181 int32_t tx_abort;
5182 int32_t mpdus_requed;
5183 uint32_t tx_ko;
5184 uint32_t tx_xretry;
5185 uint32_t data_rc;
5186 uint32_t self_triggers;
5187 uint32_t sw_retry_failure;
5188 uint32_t illgl_rate_phy_err;
5189 uint32_t pdev_cont_xretry;
5190 uint32_t pdev_tx_timeout;
5191 uint32_t pdev_resets;
5192 uint32_t stateless_tid_alloc_failure;
5193 uint32_t phy_underrun;
5194 uint32_t txop_ovf;
5195 uint32_t seq_posted;
5196 uint32_t seq_failed_queueing;
5197 uint32_t seq_completed;
5198 uint32_t seq_restarted;
5199 uint32_t mu_seq_posted;
5200 int32_t mpdus_sw_flush;
5201 int32_t mpdus_hw_filter;
5202 int32_t mpdus_truncated;
5203 int32_t mpdus_ack_failed;
5204 int32_t mpdus_expired;
5205 uint32_t mc_drop;
5206} wmi_host_dbg_tx_stats;
5207
5208/**
5209 * struct wmi_host_dbg_rx_stats - RX Debug stats
5210 * @mid_ppdu_route_change: Cnts any change in ring routing mid-ppdu
5211 * @status_rcvd: Total number of statuses processed
5212 * @r0_frags: Extra frags on rings 0
5213 * @r1_frags: Extra frags on rings 1
5214 * @r2_frags: Extra frags on rings 2
5215 * @r3_frags: Extra frags on rings 3
5216 * @htt_msdus: MSDUs delivered to HTT
5217 * @htt_mpdus: MPDUs delivered to HTT
5218 * @loc_msdus: MSDUs delivered to local stack
5219 * @loc_mpdus: MPDUS delivered to local stack
5220 * @oversize_amsdu: AMSDUs that have more MSDUs than the status ring size
5221 * @phy_errs: Number of PHY errors
5222 * @phy_err_drop: Number of PHY errors drops
5223 * @mpdu_errs: Number of mpdu errors - FCS, MIC, ENC etc.
5224 * @pdev_rx_timeout: Number of rx inactivity timeouts
5225 * @rx_ovfl_errs: Number of rx overflow errors.
5226 */
5227typedef struct {
5228 int32_t mid_ppdu_route_change;
5229 int32_t status_rcvd;
5230 int32_t r0_frags;
5231 int32_t r1_frags;
5232 int32_t r2_frags;
5233 int32_t r3_frags;
5234 int32_t htt_msdus;
5235 int32_t htt_mpdus;
5236 int32_t loc_msdus;
5237 int32_t loc_mpdus;
5238 int32_t oversize_amsdu;
5239 int32_t phy_errs;
5240 int32_t phy_err_drop;
5241 int32_t mpdu_errs;
5242 uint32_t pdev_rx_timeout;
5243 int32_t rx_ovfl_errs;
5244} wmi_host_dbg_rx_stats;
5245
5246/** struct wmi_host_dbg_mem_stats - memory stats
5247 * @iram_free_size: IRAM free size on target
5248 * @dram_free_size: DRAM free size on target
5249 * @sram_free_size: SRAM free size on target
5250 */
5251typedef struct {
5252 uint32_t iram_free_size;
5253 uint32_t dram_free_size;
5254 /* Only Non-TLV */
5255 uint32_t sram_free_size;
5256} wmi_host_dbg_mem_stats;
5257
5258typedef struct {
5259 /* Only TLV */
5260 int32_t dummy;/* REMOVE THIS ONCE REAL PEER STAT COUNTERS ARE ADDED */
5261} wmi_host_dbg_peer_stats;
5262
5263/**
5264 * struct wmi_host_dbg_stats - host debug stats
5265 * @tx: TX stats of type wmi_host_dbg_tx_stats
5266 * @rx: RX stats of type wmi_host_dbg_rx_stats
5267 * @mem: Memory stats of type wmi_host_dbg_mem_stats
5268 * @peer: peer stats of type wmi_host_dbg_peer_stats
5269 */
5270typedef struct {
5271 wmi_host_dbg_tx_stats tx;
5272 wmi_host_dbg_rx_stats rx;
5273 wmi_host_dbg_mem_stats mem;
5274 wmi_host_dbg_peer_stats peer;
5275} wmi_host_dbg_stats;
5276
5277/**
5278 * struct wmi_host_pdev_stats - PDEV stats
5279 * @chan_nf: Channel noise floor
5280 * @tx_frame_count: TX frame count
5281 * @rx_frame_count: RX frame count
5282 * @rx_clear_count: rx clear count
5283 * @cycle_count: cycle count
5284 * @phy_err_count: Phy error count
5285 * @chan_tx_pwr: Channel Tx Power
5286 * @pdev_stats: WAL dbg stats
5287 * @ackRcvBad:
5288 * @rtsBad:
5289 * @rtsGood:
5290 * @fcsBad:
5291 * @noBeacons:
5292 * @mib_int_count:
5293 */
5294typedef struct {
5295 int32_t chan_nf;
5296 uint32_t tx_frame_count;
5297 uint32_t rx_frame_count;
5298 uint32_t rx_clear_count;
5299 uint32_t cycle_count;
5300 uint32_t phy_err_count;
5301 uint32_t chan_tx_pwr;
5302 wmi_host_dbg_stats pdev_stats;
5303 uint32_t ackRcvBad;
5304 uint32_t rtsBad;
5305 uint32_t rtsGood;
5306 uint32_t fcsBad;
5307 uint32_t noBeacons;
5308 uint32_t mib_int_count;
5309} wmi_host_pdev_stats;
5310
Adil Saeed Musthafa0b6c7602017-08-23 17:32:11 -07005311
5312/**
5313 * struct wmi_unit_test_event - Structure corresponding to WMI Unit test event
5314 * @vdev_id: VDEV ID
5315 * @module_id: MODULE ID
5316 * @diag_token: Diag Token (the number that was generated in the unit-test cmd)
5317 * @flag: flag has 2 bits 0x1 indicates status, and 0x2 indicates done-bit
5318 * @payload_len: payload_len (blindly copied from payload_len field in WMI)
5319 * @buffer_len: actual number of data bytes in the variable data size TLV
5320 * buffer_len is likely to be the nearest multiple of 4 (from
5321 * payload_len). both buffer_len and payload_len need to be
5322 * passed to wifitool so that the driver can be agnostic
5323 * regarding these differences.
5324 * @buffer: data buffer
5325 */
5326typedef struct {
5327 uint32_t vdev_id;
5328 uint32_t module_id;
5329 uint32_t diag_token;
5330 uint32_t flag;
5331 uint32_t payload_len;
5332 uint32_t buffer_len;
5333 uint8_t buffer[1];
5334} wmi_unit_test_event;
5335
5336
Govind Singh89727882016-04-15 13:58:27 +05305337/**
5338 * struct wmi_host_snr_info - WMI host Signal to noise ration info
5339 * @bcn_snr: beacon SNR
5340 * @dat_snr: Data frames SNR
5341 */
5342typedef struct {
5343 int32_t bcn_snr;
5344 int32_t dat_snr;
5345} wmi_host_snr_info;
5346
5347#define WMI_HOST_MAX_TX_RATE_VALUES 10 /*Max Tx Rates */
5348#define WMI_HOST_MAX_RSSI_VALUES 10 /*Max Rssi values */
5349
5350/* The WLAN_MAX_AC macro cannot be changed without breaking
5351 * * WMI compatibility.
5352 * * The maximum value of access category
5353 * */
5354#define WMI_HOST_WLAN_MAX_AC 4
5355
5356/**
5357 * struct wmi_host_vdev_stats - vdev stats structure
5358 * @vdev_id: unique id identifying the VDEV, generated by the caller
5359 * Rest all Only TLV
5360 * @vdev_snr: wmi_host_snr_info
5361 * @tx_frm_cnt: Total number of packets(per AC) that were successfully
5362 * transmitted (with and without retries,
5363 * including multi-cast, broadcast)
5364 * @rx_frm_cnt: Total number of packets that were successfully received
5365 * (after appropriate filter rules including multi-cast, broadcast)
5366 * @multiple_retry_cnt: The number of MSDU packets and MMPDU frames per AC
5367 * that the 802.11 station successfully transmitted after
5368 * more than one retransmission attempt
5369 * @fail_cnt: Total number packets(per AC) failed to transmit
5370 * @rts_fail_cnt: Total number of RTS/CTS sequence failures for transmission
5371 * of a packet
5372 * @rts_succ_cnt: Total number of RTS/CTS sequence success for transmission
5373 * of a packet
5374 * @rx_err_cnt: The receive error count. HAL will provide the
5375 * RxP FCS error global
5376 * @rx_discard_cnt: The sum of the receive error count and
5377 * dropped-receive-buffer error count (FCS error)
5378 * @ack_fail_cnt: Total number packets failed transmit because of no
5379 * ACK from the remote entity
5380 * @tx_rate_history:History of last ten transmit rate, in units of 500 kbit/sec
5381 * @bcn_rssi_history: History of last ten Beacon rssi of the connected Bss
5382 */
5383typedef struct {
5384 uint32_t vdev_id;
5385 /* Rest all Only TLV */
5386 wmi_host_snr_info vdev_snr;
5387 uint32_t tx_frm_cnt[WMI_HOST_WLAN_MAX_AC];
5388 uint32_t rx_frm_cnt;
5389 uint32_t multiple_retry_cnt[WMI_HOST_WLAN_MAX_AC];
5390 uint32_t fail_cnt[WMI_HOST_WLAN_MAX_AC];
5391 uint32_t rts_fail_cnt;
5392 uint32_t rts_succ_cnt;
5393 uint32_t rx_err_cnt;
5394 uint32_t rx_discard_cnt;
5395 uint32_t ack_fail_cnt;
5396 uint32_t tx_rate_history[WMI_HOST_MAX_TX_RATE_VALUES];
5397 uint32_t bcn_rssi_history[WMI_HOST_MAX_RSSI_VALUES];
5398} wmi_host_vdev_stats;
5399
5400/**
Gurumoorthi Gnanasambandhan18977552017-11-06 22:04:17 +05305401 * struct wmi_host_vdev_stats - vdev stats structure
5402 * @vdev_id: unique id identifying the VDEV, generated by the caller
5403 * @tx_bcn_succ_cnt: Total number of beacon frame transmitted successfully
5404 * @tx_bcn_outage_cnt: Total number of failed beacons
5405 */
5406typedef struct {
5407 uint32_t vdev_id;
5408 uint32_t tx_bcn_succ_cnt;
5409 uint32_t tx_bcn_outage_cnt;
5410} wmi_host_bcn_stats;
5411
5412/**
Govind Singh89727882016-04-15 13:58:27 +05305413 * struct wmi_host_vdev_extd_stats - VDEV extended stats
5414 * @vdev_id: unique id identifying the VDEV, generated by the caller
5415 * @ppdu_aggr_cnt: No of Aggrs Queued to HW
5416 * @ppdu_noack: No of PPDU's not Acked includes both aggr and nonaggr's
5417 * @mpdu_queued: No of MPDU/Subframes's queued to HW in Aggregates
5418 * @ppdu_nonaggr_cnt: No of NonAggr/MPDU/Subframes's queued to HW
5419 * in Legacy NonAggregates
5420 * @mpdu_sw_requed: No of MPDU/Subframes's SW requeued includes
5421 * both Aggr and NonAggr
5422 * @mpdu_suc_retry: No of MPDU/Subframes's transmitted Successfully
5423 * after Single/mul HW retry
5424 * @mpdu_suc_multitry: No of MPDU/Subframes's transmitted Success
5425 * after Multiple HW retry
5426 * @mpdu_fail_retry: No of MPDU/Subframes's failed transmission
5427 * after Multiple HW retry
5428 * @reserved[13]: for future extensions set to 0x0
5429 */
5430typedef struct {
5431 uint32_t vdev_id;
5432 uint32_t ppdu_aggr_cnt;
5433 uint32_t ppdu_noack;
5434 uint32_t mpdu_queued;
5435 uint32_t ppdu_nonaggr_cnt;
5436 uint32_t mpdu_sw_requed;
5437 uint32_t mpdu_suc_retry;
5438 uint32_t mpdu_suc_multitry;
5439 uint32_t mpdu_fail_retry;
5440 uint32_t reserved[13];
5441} wmi_host_vdev_extd_stats;
5442
5443/**
Chaithanya Garrepalli140a0532018-01-18 14:19:41 +05305444 * struct wmi_host_vdev_nac_rssi_event - VDEV nac rssi stats
5445 * @vdev_id: unique id identifying the VDEV, generated by the caller
5446 * @last_rssi: rssi
5447 * @avg_rssi: averge rssi
5448 * @rssi_seq_num: rssi sequence number
5449 */
5450struct wmi_host_vdev_nac_rssi_event {
5451 uint32_t vdev_id;
5452 uint32_t last_rssi;
5453 uint32_t avg_rssi;
5454 uint32_t rssi_seq_num;
5455};
5456
5457/**
Govind Singh89727882016-04-15 13:58:27 +05305458 * struct wmi_host_peer_stats - peer stats
5459 * @peer_macaddr: peer MAC address
5460 * @peer_rssi: rssi
5461 * @peer_rssi_seq_num: rssi sequence number
5462 * @peer_tx_rate: last tx data rate used for peer
5463 * @peer_rx_rate: last rx data rate used for peer
5464 * @currentper: Current PER
5465 * @retries: Retries happend during transmission
5466 * @txratecount: Maximum Aggregation Size
5467 * @max4msframelen: Max4msframelen of tx rates used
5468 * @totalsubframes: Total no of subframes
5469 * @txbytes: No of bytes transmitted to the client
5470 * @nobuffs[4]: Packet Loss due to buffer overflows
5471 * @excretries[4]: Packet Loss due to excessive retries
5472 * @peer_rssi_changed: how many times peer's RSSI changed by a
5473 * non-negligible amount
5474 */
5475typedef struct {
5476 wmi_host_mac_addr peer_macaddr;
5477 uint32_t peer_rssi;
5478 uint32_t peer_rssi_seq_num;
5479 uint32_t peer_tx_rate;
5480 uint32_t peer_rx_rate;
5481 uint32_t currentper;
5482 uint32_t retries;
5483 uint32_t txratecount;
5484 uint32_t max4msframelen;
5485 uint32_t totalsubframes;
5486 uint32_t txbytes;
5487 uint32_t nobuffs[4];
5488 uint32_t excretries[4];
5489 uint32_t peer_rssi_changed;
5490} wmi_host_peer_stats;
5491
5492typedef struct {
5493 uint32_t dummy;
5494} wmi_host_bcnflt_stats;
5495
5496/**
5497 * struct wmi_host_chan_stats - WMI chan stats
5498 * @chan_mhz: Primary channel freq of the channel for which stats are sent
5499 * @sampling_period_us: Time spent on the channel
5500 * @rx_clear_count: Aggregate duration over a sampling period for
5501 * which channel activity was observed
5502 * @tx_duration_us: Accumalation of the TX PPDU duration over a sampling period
5503 * @rx_duration_us: Accumalation of the RX PPDU duration over a sampling period
5504 */
5505typedef struct {
5506 uint32_t chan_mhz;
5507 uint32_t sampling_period_us;
5508 uint32_t rx_clear_count;
5509 uint32_t tx_duration_us;
5510 uint32_t rx_duration_us;
5511} wmi_host_chan_stats;
5512
5513#define WMI_EVENT_ID_INVALID 0
5514/**
5515 * Host based ENUM IDs for events to abstract target enums for event_id
5516 */
5517typedef enum {
5518 wmi_service_ready_event_id = 0,
5519 wmi_ready_event_id,
5520 wmi_dbg_msg_event_id,
5521 wmi_scan_event_id,
5522 wmi_echo_event_id,
5523 wmi_update_stats_event_id,
5524 wmi_inst_rssi_stats_event_id,
5525 wmi_vdev_start_resp_event_id,
5526 wmi_vdev_standby_req_event_id,
5527 wmi_vdev_resume_req_event_id,
5528 wmi_vdev_stopped_event_id,
5529 wmi_peer_sta_kickout_event_id,
5530 wmi_host_swba_event_id,
5531 wmi_tbttoffset_update_event_id,
5532 wmi_mgmt_rx_event_id,
5533 wmi_chan_info_event_id,
5534 wmi_phyerr_event_id,
5535 wmi_roam_event_id,
5536 wmi_profile_match,
5537 wmi_debug_print_event_id,
5538 wmi_pdev_qvit_event_id,
5539 wmi_wlan_profile_data_event_id,
5540 wmi_rtt_meas_report_event_id,
5541 wmi_tsf_meas_report_event_id,
5542 wmi_rtt_error_report_event_id,
5543 wmi_rtt_keepalive_event_id,
5544 wmi_oem_cap_event_id,
5545 wmi_oem_meas_report_event_id,
5546 wmi_oem_report_event_id,
5547 wmi_nan_event_id,
5548 wmi_wow_wakeup_host_event_id,
5549 wmi_gtk_offload_status_event_id,
5550 wmi_gtk_rekey_fail_event_id,
5551 wmi_dcs_interference_event_id,
5552 wmi_pdev_tpc_config_event_id,
5553 wmi_csa_handling_event_id,
5554 wmi_gpio_input_event_id,
5555 wmi_peer_ratecode_list_event_id,
5556 wmi_generic_buffer_event_id,
5557 wmi_mcast_buf_release_event_id,
5558 wmi_mcast_list_ageout_event_id,
5559 wmi_vdev_get_keepalive_event_id,
5560 wmi_wds_peer_event_id,
5561 wmi_peer_sta_ps_statechg_event_id,
5562 wmi_pdev_fips_event_id,
5563 wmi_tt_stats_event_id,
5564 wmi_pdev_channel_hopping_event_id,
5565 wmi_pdev_ani_cck_level_event_id,
5566 wmi_pdev_ani_ofdm_level_event_id,
5567 wmi_pdev_reserve_ast_entry_event_id,
5568 wmi_pdev_nfcal_power_event_id,
5569 wmi_pdev_tpc_event_id,
5570 wmi_pdev_get_ast_info_event_id,
5571 wmi_pdev_temperature_event_id,
5572 wmi_pdev_nfcal_power_all_channels_event_id,
5573 wmi_pdev_bss_chan_info_event_id,
5574 wmi_mu_report_event_id,
5575 wmi_pdev_utf_event_id,
5576 wmi_pdev_dump_event_id,
5577 wmi_tx_pause_event_id,
5578 wmi_dfs_radar_event_id,
5579 wmi_pdev_l1ss_track_event_id,
5580 wmi_service_ready_ext_event_id,
5581 wmi_vdev_install_key_complete_event_id,
5582 wmi_vdev_mcc_bcn_intvl_change_req_event_id,
5583 wmi_vdev_tsf_report_event_id,
5584 wmi_peer_info_event_id,
5585 wmi_peer_tx_fail_cnt_thr_event_id,
5586 wmi_peer_estimated_linkspeed_event_id,
5587 wmi_peer_state_event_id,
5588 wmi_offload_bcn_tx_status_event_id,
5589 wmi_offload_prob_resp_tx_status_event_id,
5590 wmi_mgmt_tx_completion_event_id,
5591 wmi_tx_delba_complete_event_id,
5592 wmi_tx_addba_complete_event_id,
5593 wmi_ba_rsp_ssn_event_id,
5594 wmi_aggr_state_trig_event_id,
5595 wmi_roam_synch_event_id,
Padma, Santhosh Kumare0784da2017-10-06 15:42:00 +05305596 wmi_roam_synch_frame_event_id,
Govind Singh89727882016-04-15 13:58:27 +05305597 wmi_p2p_disc_event_id,
5598 wmi_p2p_noa_event_id,
Wu Gaoaf2196b2017-03-15 19:12:20 +08005599 wmi_p2p_lo_stop_event_id,
Govind Singh89727882016-04-15 13:58:27 +05305600 wmi_pdev_resume_event_id,
Will Huang5e78f762017-12-19 10:10:05 +08005601 wmi_d0_wow_disable_ack_event_id,
Govind Singh89727882016-04-15 13:58:27 +05305602 wmi_wow_initial_wakeup_event_id,
5603 wmi_stats_ext_event_id,
5604 wmi_iface_link_stats_event_id,
5605 wmi_peer_link_stats_event_id,
5606 wmi_radio_link_stats_link,
5607 wmi_update_fw_mem_dump_event_id,
5608 wmi_diag_event_id_log_supported_event_id,
5609 wmi_nlo_match_event_id,
5610 wmi_nlo_scan_complete_event_id,
5611 wmi_apfind_event_id,
5612 wmi_passpoint_match_event_id,
5613 wmi_chatter_pc_query_event_id,
5614 wmi_pdev_ftm_intg_event_id,
5615 wmi_wlan_freq_avoid_event_id,
5616 wmi_thermal_mgmt_event_id,
5617 wmi_diag_container_event_id,
5618 wmi_host_auto_shutdown_event_id,
5619 wmi_update_whal_mib_stats_event_id,
5620 wmi_update_vdev_rate_stats_event_id,
5621 wmi_diag_event_id,
Adil Saeed Musthafa0b6c7602017-08-23 17:32:11 -07005622 wmi_unit_test_event_id,
Govind Singh89727882016-04-15 13:58:27 +05305623 wmi_ocb_set_sched_event_id,
5624 wmi_dbg_mesg_flush_complete_event_id,
5625 wmi_rssi_breach_event_id,
5626 wmi_uploadh_event_id,
5627 wmi_captureh_event_id,
5628 wmi_rfkill_state_change_event_id,
5629 wmi_tdls_peer_event_id,
5630 wmi_batch_scan_enabled_event_id,
5631 wmi_batch_scan_result_event_id,
5632 wmi_lpi_result_event_id,
5633 wmi_lpi_status_event_id,
5634 wmi_lpi_handoff_event_id,
5635 wmi_extscan_start_stop_event_id,
5636 wmi_extscan_operation_event_id,
5637 wmi_extscan_table_usage_event_id,
5638 wmi_extscan_cached_results_event_id,
5639 wmi_extscan_wlan_change_results_event_id,
5640 wmi_extscan_hotlist_match_event_id,
5641 wmi_extscan_capabilities_event_id,
5642 wmi_extscan_hotlist_ssid_match_event_id,
5643 wmi_mdns_stats_event_id,
5644 wmi_sap_ofl_add_sta_event_id,
5645 wmi_sap_ofl_del_sta_event_id,
5646 wmi_ocb_set_config_resp_event_id,
5647 wmi_ocb_get_tsf_timer_resp_event_id,
5648 wmi_dcc_get_stats_resp_event_id,
5649 wmi_dcc_update_ndl_resp_event_id,
5650 wmi_dcc_stats_event_id,
5651 wmi_soc_set_hw_mode_resp_event_id,
5652 wmi_soc_hw_mode_transition_event_id,
5653 wmi_soc_set_dual_mac_config_resp_event_id,
5654 wmi_tx_data_traffic_ctrl_event_id,
Sathish Kumar7e2eaed2016-11-14 17:44:29 +05305655 wmi_peer_tx_mu_txmit_count_event_id,
5656 wmi_peer_gid_userpos_list_event_id,
5657 wmi_pdev_check_cal_version_event_id,
5658 wmi_atf_peer_stats_event_id,
Vijay Pamidipatiadd0ba72017-01-17 12:53:05 +05305659 wmi_peer_delete_response_event_id,
Sathish Kumar907a7462017-02-27 10:35:40 +05305660 wmi_pdev_csa_switch_count_status_event_id,
Baila, Shashikala Prabhu6bad1972017-03-17 10:21:14 +05305661 wmi_reg_chan_list_cc_event_id,
Kiran Venkatappa25c47022017-03-19 22:58:09 +05305662 wmi_offchan_data_tx_completion_event,
Arif Hussaine542fe12017-04-09 01:03:19 -07005663 wmi_dfs_cac_complete_id,
5664 wmi_dfs_radar_detection_event_id,
Sathish Kumar744fbf72017-05-17 18:05:15 +05305665 wmi_ext_tbttoffset_update_event_id,
Amar Singhal1efb08e2017-05-19 16:39:34 -07005666 wmi_11d_new_country_event_id,
Anurag Chouhanc1705422017-09-11 14:56:30 +05305667 wmi_get_arp_stats_req_id,
Kiran Venkatappa34bea522017-09-01 17:02:34 +05305668 wmi_service_available_event_id,
Rajeev Kumar Sirasanagandlacddf6fe2016-11-22 21:28:54 +05305669 wmi_update_rcpi_event_id,
Rathees kumar Chinannanaff64b02017-11-22 17:03:57 +05305670 wmi_pdev_wds_entry_list_event_id,
Mukul Sharma6faf5a82017-11-03 19:26:54 +05305671 wmi_ndp_initiator_rsp_event_id,
5672 wmi_ndp_indication_event_id,
5673 wmi_ndp_confirm_event_id,
5674 wmi_ndp_responder_rsp_event_id,
5675 wmi_ndp_end_indication_event_id,
5676 wmi_ndp_end_rsp_event_id,
5677 wmi_oem_response_event_id,
5678 wmi_peer_stats_info_event_id,
5679 wmi_pdev_chip_power_stats_event_id,
5680 wmi_ap_ps_egap_info_event_id,
5681 wmi_peer_assoc_conf_event_id,
5682 wmi_vdev_delete_resp_event_id,
5683 wmi_bpf_capability_info_event_id,
5684 wmi_vdev_encrypt_decrypt_data_rsp_event_id,
5685 wmi_report_rx_aggr_failure_event_id,
5686 wmi_pdev_chip_pwr_save_failure_detect_event_id,
5687 wmi_peer_antdiv_info_event_id,
5688 wmi_pdev_set_hw_mode_rsp_event_id,
5689 wmi_pdev_hw_mode_transition_event_id,
5690 wmi_pdev_set_mac_config_resp_event_id,
5691 wmi_coex_bt_activity_event_id,
5692 wmi_mgmt_tx_bundle_completion_event_id,
5693 wmi_radio_tx_power_level_stats_event_id,
5694 wmi_report_stats_event_id,
Sathish Kumar3d3cf4f2017-11-17 17:30:41 +05305695 wmi_dma_buf_release_event_id,
Arif Hussain2cfde1d2017-12-27 16:23:45 -08005696 wmi_sap_obss_detection_report_event_id,
Subrat Mishra7c9427e2017-09-27 14:41:20 +05305697 wmi_host_swfda_event_id,
Jeff Johnsonefb43392017-12-14 15:50:16 -08005698 wmi_sar_get_limits_event_id,
Govind Singh89727882016-04-15 13:58:27 +05305699
5700 wmi_events_max,
5701} wmi_conv_event_id;
5702
5703#define WMI_UNAVAILABLE_PARAM 0
5704/**
5705 * Host based ENUM IDs for PDEV params to abstract target enums
5706 */
5707typedef enum {
5708 wmi_pdev_param_tx_chain_mask = 0,
5709 wmi_pdev_param_rx_chain_mask,
5710 wmi_pdev_param_txpower_limit2g,
5711 wmi_pdev_param_txpower_limit5g,
5712 wmi_pdev_param_txpower_scale,
5713 wmi_pdev_param_beacon_gen_mode,
5714 wmi_pdev_param_beacon_tx_mode,
5715 wmi_pdev_param_resmgr_offchan_mode,
5716 wmi_pdev_param_protection_mode,
5717 wmi_pdev_param_dynamic_bw,
5718 wmi_pdev_param_non_agg_sw_retry_th,
5719 wmi_pdev_param_agg_sw_retry_th,
5720 wmi_pdev_param_sta_kickout_th,
5721 wmi_pdev_param_ac_aggrsize_scaling,
5722 wmi_pdev_param_ltr_enable,
5723 wmi_pdev_param_ltr_ac_latency_be,
5724 wmi_pdev_param_ltr_ac_latency_bk,
5725 wmi_pdev_param_ltr_ac_latency_vi,
5726 wmi_pdev_param_ltr_ac_latency_vo,
5727 wmi_pdev_param_ltr_ac_latency_timeout,
5728 wmi_pdev_param_ltr_sleep_override,
5729 wmi_pdev_param_ltr_rx_override,
5730 wmi_pdev_param_ltr_tx_activity_timeout,
5731 wmi_pdev_param_l1ss_enable,
5732 wmi_pdev_param_dsleep_enable,
5733 wmi_pdev_param_pcielp_txbuf_flush,
5734 wmi_pdev_param_pcielp_txbuf_watermark,
5735 wmi_pdev_param_pcielp_txbuf_tmo_en,
5736 wmi_pdev_param_pcielp_txbuf_tmo_value,
5737 wmi_pdev_param_pdev_stats_update_period,
5738 wmi_pdev_param_vdev_stats_update_period,
5739 wmi_pdev_param_peer_stats_update_period,
5740 wmi_pdev_param_bcnflt_stats_update_period,
5741 wmi_pdev_param_pmf_qos,
5742 wmi_pdev_param_arp_ac_override,
5743 wmi_pdev_param_dcs,
5744 wmi_pdev_param_ani_enable,
5745 wmi_pdev_param_ani_poll_period,
5746 wmi_pdev_param_ani_listen_period,
5747 wmi_pdev_param_ani_ofdm_level,
5748 wmi_pdev_param_ani_cck_level,
5749 wmi_pdev_param_dyntxchain,
5750 wmi_pdev_param_proxy_sta,
5751 wmi_pdev_param_idle_ps_config,
5752 wmi_pdev_param_power_gating_sleep,
5753 wmi_pdev_param_aggr_burst,
5754 wmi_pdev_param_rx_decap_mode,
5755 wmi_pdev_param_fast_channel_reset,
5756 wmi_pdev_param_burst_dur,
5757 wmi_pdev_param_burst_enable,
5758 wmi_pdev_param_smart_antenna_default_antenna,
5759 wmi_pdev_param_igmpmld_override,
5760 wmi_pdev_param_igmpmld_tid,
5761 wmi_pdev_param_antenna_gain,
5762 wmi_pdev_param_rx_filter,
5763 wmi_pdev_set_mcast_to_ucast_tid,
5764 wmi_pdev_param_proxy_sta_mode,
5765 wmi_pdev_param_set_mcast2ucast_mode,
5766 wmi_pdev_param_set_mcast2ucast_buffer,
5767 wmi_pdev_param_remove_mcast2ucast_buffer,
5768 wmi_pdev_peer_sta_ps_statechg_enable,
5769 wmi_pdev_param_igmpmld_ac_override,
5770 wmi_pdev_param_block_interbss,
5771 wmi_pdev_param_set_disable_reset_cmdid,
5772 wmi_pdev_param_set_msdu_ttl_cmdid,
5773 wmi_pdev_param_set_ppdu_duration_cmdid,
5774 wmi_pdev_param_txbf_sound_period_cmdid,
5775 wmi_pdev_param_set_promisc_mode_cmdid,
5776 wmi_pdev_param_set_burst_mode_cmdid,
5777 wmi_pdev_param_en_stats,
5778 wmi_pdev_param_mu_group_policy,
5779 wmi_pdev_param_noise_detection,
5780 wmi_pdev_param_noise_threshold,
5781 wmi_pdev_param_dpd_enable,
5782 wmi_pdev_param_set_mcast_bcast_echo,
5783 wmi_pdev_param_atf_strict_sch,
5784 wmi_pdev_param_atf_sched_duration,
5785 wmi_pdev_param_ant_plzn,
5786 wmi_pdev_param_mgmt_retry_limit,
5787 wmi_pdev_param_sensitivity_level,
5788 wmi_pdev_param_signed_txpower_2g,
5789 wmi_pdev_param_signed_txpower_5g,
5790 wmi_pdev_param_enable_per_tid_amsdu,
5791 wmi_pdev_param_enable_per_tid_ampdu,
5792 wmi_pdev_param_cca_threshold,
5793 wmi_pdev_param_rts_fixed_rate,
5794 wmi_pdev_param_cal_period,
5795 wmi_pdev_param_pdev_reset,
5796 wmi_pdev_param_wapi_mbssid_offset,
5797 wmi_pdev_param_arp_srcaddr,
5798 wmi_pdev_param_arp_dstaddr,
5799 wmi_pdev_param_txpower_decr_db,
5800 wmi_pdev_param_rx_batchmode,
5801 wmi_pdev_param_packet_aggr_delay,
5802 wmi_pdev_param_atf_obss_noise_sch,
5803 wmi_pdev_param_atf_obss_noise_scaling_factor,
5804 wmi_pdev_param_cust_txpower_scale,
5805 wmi_pdev_param_atf_dynamic_enable,
5806 wmi_pdev_param_atf_ssid_group_policy,
5807 wmi_pdev_param_rfkill_enable,
5808 wmi_pdev_param_hw_rfkill_config,
5809 wmi_pdev_param_low_power_rf_enable,
5810 wmi_pdev_param_l1ss_track,
5811 wmi_pdev_param_hyst_en,
5812 wmi_pdev_param_power_collapse_enable,
5813 wmi_pdev_param_led_sys_state,
5814 wmi_pdev_param_led_enable,
5815 wmi_pdev_param_audio_over_wlan_latency,
5816 wmi_pdev_param_audio_over_wlan_enable,
5817 wmi_pdev_param_whal_mib_stats_update_enable,
5818 wmi_pdev_param_vdev_rate_stats_update_period,
5819 wmi_pdev_param_cts_cbw,
5820 wmi_pdev_param_wnts_config,
5821 wmi_pdev_param_adaptive_early_rx_enable,
5822 wmi_pdev_param_adaptive_early_rx_min_sleep_slop,
5823 wmi_pdev_param_adaptive_early_rx_inc_dec_step,
5824 wmi_pdev_param_early_rx_fix_sleep_slop,
5825 wmi_pdev_param_bmiss_based_adaptive_bto_enable,
5826 wmi_pdev_param_bmiss_bto_min_bcn_timeout,
5827 wmi_pdev_param_bmiss_bto_inc_dec_step,
5828 wmi_pdev_param_bto_fix_bcn_timeout,
5829 wmi_pdev_param_ce_based_adaptive_bto_enable,
5830 wmi_pdev_param_ce_bto_combo_ce_value,
5831 wmi_pdev_param_tx_chain_mask_2g,
5832 wmi_pdev_param_rx_chain_mask_2g,
5833 wmi_pdev_param_tx_chain_mask_5g,
5834 wmi_pdev_param_rx_chain_mask_5g,
5835 wmi_pdev_param_tx_chain_mask_cck,
5836 wmi_pdev_param_tx_chain_mask_1ss,
Sathish Kumar7e2eaed2016-11-14 17:44:29 +05305837 wmi_pdev_param_enable_btcoex,
5838 wmi_pdev_param_atf_peer_stats,
Sathish Kumar612d0c22017-01-19 14:57:37 +05305839 wmi_pdev_param_btcoex_cfg,
Venkateswara Swamy Bandarud8ac3e72017-02-24 17:09:46 +05305840 wmi_pdev_param_mesh_mcast_enable,
Sathish Kumar262d54a2017-10-04 09:58:00 +05305841 wmi_pdev_param_tx_ack_timeout,
Anirban Sirkhelld40d18f2017-09-26 18:43:06 +05305842 wmi_pdev_param_soft_tx_chain_mask,
Govind Singh89727882016-04-15 13:58:27 +05305843
5844 wmi_pdev_param_max,
5845} wmi_conv_pdev_params_id;
5846
5847
5848/**
5849 * Host based ENUM IDs for VDEV params to abstract target enums
5850 */
5851typedef enum {
5852 wmi_vdev_param_rts_threshold = 0,
5853 wmi_vdev_param_fragmentation_threshold,
5854 wmi_vdev_param_beacon_interval,
5855 wmi_vdev_param_listen_interval,
5856 wmi_vdev_param_multicast_rate,
5857 wmi_vdev_param_mgmt_tx_rate,
5858 wmi_vdev_param_slot_time,
5859 wmi_vdev_param_preamble,
5860 wmi_vdev_param_swba_time,
5861 wmi_vdev_stats_update_period,
5862 wmi_vdev_pwrsave_ageout_time,
5863 wmi_vdev_host_swba_interval,
5864 wmi_vdev_param_dtim_period,
5865 wmi_vdev_oc_scheduler_air_time_limit,
5866 wmi_vdev_param_wds,
5867 wmi_vdev_param_atim_window,
5868 wmi_vdev_param_bmiss_count_max,
5869 wmi_vdev_param_bmiss_first_bcnt,
5870 wmi_vdev_param_bmiss_final_bcnt,
5871 wmi_vdev_param_feature_wmm,
5872 wmi_vdev_param_chwidth,
5873 wmi_vdev_param_chextoffset,
5874 wmi_vdev_param_disable_htprotection,
5875 wmi_vdev_param_sta_quickkickout,
5876 wmi_vdev_param_mgmt_rate,
5877 wmi_vdev_param_protection_mode,
5878 wmi_vdev_param_fixed_rate,
5879 wmi_vdev_param_sgi,
5880 wmi_vdev_param_ldpc,
5881 wmi_vdev_param_tx_stbc,
5882 wmi_vdev_param_rx_stbc,
5883 wmi_vdev_param_intra_bss_fwd,
5884 wmi_vdev_param_def_keyid,
5885 wmi_vdev_param_nss,
5886 wmi_vdev_param_bcast_data_rate,
5887 wmi_vdev_param_mcast_data_rate,
5888 wmi_vdev_param_mcast_indicate,
5889 wmi_vdev_param_dhcp_indicate,
5890 wmi_vdev_param_unknown_dest_indicate,
5891 wmi_vdev_param_ap_keepalive_min_idle_inactive_time_secs,
5892 wmi_vdev_param_ap_keepalive_max_idle_inactive_time_secs,
5893 wmi_vdev_param_ap_keepalive_max_unresponsive_time_secs,
5894 wmi_vdev_param_ap_enable_nawds,
5895 wmi_vdev_param_mcast2ucast_set,
5896 wmi_vdev_param_enable_rtscts,
5897 wmi_vdev_param_rc_num_retries,
5898 wmi_vdev_param_txbf,
5899 wmi_vdev_param_packet_powersave,
5900 wmi_vdev_param_drop_unencry,
5901 wmi_vdev_param_tx_encap_type,
5902 wmi_vdev_param_ap_detect_out_of_sync_sleeping_sta_time_secs,
5903 wmi_vdev_param_cabq_maxdur,
5904 wmi_vdev_param_mfptest_set,
5905 wmi_vdev_param_rts_fixed_rate,
5906 wmi_vdev_param_vht_sgimask,
5907 wmi_vdev_param_vht80_ratemask,
5908 wmi_vdev_param_early_rx_adjust_enable,
5909 wmi_vdev_param_early_rx_tgt_bmiss_num,
5910 wmi_vdev_param_early_rx_bmiss_sample_cycle,
5911 wmi_vdev_param_early_rx_slop_step,
5912 wmi_vdev_param_early_rx_init_slop,
5913 wmi_vdev_param_early_rx_adjust_pause,
5914 wmi_vdev_param_proxy_sta,
5915 wmi_vdev_param_meru_vc,
5916 wmi_vdev_param_rx_decap_type,
5917 wmi_vdev_param_bw_nss_ratemask,
5918 wmi_vdev_param_sensor_ap,
5919 wmi_vdev_param_beacon_rate,
5920 wmi_vdev_param_dtim_enable_cts,
5921 wmi_vdev_param_sta_kickout,
5922 wmi_vdev_param_tx_pwrlimit,
5923 wmi_vdev_param_snr_num_for_cal,
5924 wmi_vdev_param_roam_fw_offload,
5925 wmi_vdev_param_enable_rmc,
5926 wmi_vdev_param_ibss_max_bcn_lost_ms,
5927 wmi_vdev_param_max_rate,
5928 wmi_vdev_param_early_rx_drift_sample,
5929 wmi_vdev_param_set_ibss_tx_fail_cnt_thr,
5930 wmi_vdev_param_ebt_resync_timeout,
5931 wmi_vdev_param_aggr_trig_event_enable,
5932 wmi_vdev_param_is_ibss_power_save_allowed,
5933 wmi_vdev_param_is_power_collapse_allowed,
5934 wmi_vdev_param_is_awake_on_txrx_enabled,
5935 wmi_vdev_param_inactivity_cnt,
5936 wmi_vdev_param_txsp_end_inactivity_time_ms,
5937 wmi_vdev_param_dtim_policy,
5938 wmi_vdev_param_ibss_ps_warmup_time_secs,
5939 wmi_vdev_param_ibss_ps_1rx_chain_in_atim_window_enable,
5940 wmi_vdev_param_rx_leak_window,
5941 wmi_vdev_param_stats_avg_factor,
5942 wmi_vdev_param_disconnect_th,
5943 wmi_vdev_param_rtscts_rate,
5944 wmi_vdev_param_mcc_rtscts_protection_enable,
5945 wmi_vdev_param_mcc_broadcast_probe_enable,
Himanshu Agarwal56c292f2016-07-19 15:41:51 +05305946 wmi_vdev_param_capabilities,
Sathish Kumar7e2eaed2016-11-14 17:44:29 +05305947 wmi_vdev_param_mgmt_tx_power,
5948 wmi_vdev_param_atf_ssid_sched_policy,
5949 wmi_vdev_param_disable_dyn_bw_rts,
Nandha Kishore Easwaranb3da4222017-02-01 10:59:00 +05305950 wmi_vdev_param_ampdu_subframe_size_per_ac,
Kris Muthusamye66c6bf2017-02-20 20:21:04 -08005951 wmi_vdev_param_he_dcm_enable,
5952 wmi_vdev_param_he_bss_color,
5953 wmi_vdev_param_he_range_ext_enable,
5954 wmi_vdev_param_set_hemu_mode,
Gyanranjan Hazarika9ecfb552017-09-18 15:59:34 -07005955 wmi_vdev_param_set_he_ltf,
Gyanranjan Hazarika9e893852017-10-13 12:36:24 -07005956 wmi_vdev_param_set_heop,
Anirban Sirkhell3c299ba2017-03-01 10:32:33 +08005957 wmi_vdev_param_disable_cabq,
Govind Singh89727882016-04-15 13:58:27 +05305958
Sathish Kumar6190e772017-11-08 14:49:58 +05305959 wmi_vdev_param_rate_dropdown_bmap,
Govind Singh89727882016-04-15 13:58:27 +05305960 wmi_vdev_param_max,
5961} wmi_conv_vdev_param_id;
5962
5963/**
5964 * Host based ENUM IDs for service bits to abstract target enums
5965 */
5966typedef enum {
5967 wmi_service_beacon_offload = 0,
5968 wmi_service_scan_offload,
5969 wmi_service_roam_offload,
5970 wmi_service_bcn_miss_offload,
5971 wmi_service_sta_pwrsave,
5972 wmi_service_sta_advanced_pwrsave,
5973 wmi_service_ap_uapsd,
5974 wmi_service_ap_dfs,
5975 wmi_service_11ac,
5976 wmi_service_blockack,
5977 wmi_service_phyerr,
5978 wmi_service_bcn_filter,
5979 wmi_service_rtt,
5980 wmi_service_ratectrl,
5981 wmi_service_wow,
5982 wmi_service_ratectrl_cache,
5983 wmi_service_iram_tids,
5984 wmi_service_burst,
5985 wmi_service_smart_antenna_sw_support,
5986 wmi_service_gtk_offload,
5987 wmi_service_scan_sch,
5988 wmi_service_csa_offload,
5989 wmi_service_chatter,
5990 wmi_service_coex_freqavoid,
5991 wmi_service_packet_power_save,
5992 wmi_service_force_fw_hang,
5993 wmi_service_smart_antenna_hw_support,
5994 wmi_service_gpio,
5995 wmi_sta_uapsd_basic_auto_trig,
5996 wmi_sta_uapsd_var_auto_trig,
5997 wmi_service_sta_keep_alive,
5998 wmi_service_tx_encap,
5999 wmi_service_ap_ps_detect_out_of_sync,
6000 wmi_service_early_rx,
6001 wmi_service_enhanced_proxy_sta,
6002 wmi_service_tt,
6003 wmi_service_atf,
6004 wmi_service_peer_caching,
6005 wmi_service_coex_gpio,
6006 wmi_service_aux_spectral_intf,
6007 wmi_service_aux_chan_load_intf,
6008 wmi_service_bss_channel_info_64,
6009 wmi_service_ext_res_cfg_support,
6010 wmi_service_mesh,
6011 wmi_service_restrt_chnl_support,
6012 wmi_service_roam_scan_offload,
6013 wmi_service_arpns_offload,
6014 wmi_service_nlo,
6015 wmi_service_sta_dtim_ps_modulated_dtim,
6016 wmi_service_sta_smps,
6017 wmi_service_fwtest,
6018 wmi_service_sta_wmmac,
6019 wmi_service_tdls,
6020 wmi_service_mcc_bcn_interval_change,
6021 wmi_service_adaptive_ocs,
6022 wmi_service_ba_ssn_support,
6023 wmi_service_filter_ipsec_natkeepalive,
6024 wmi_service_wlan_hb,
6025 wmi_service_lte_ant_share_support,
6026 wmi_service_batch_scan,
6027 wmi_service_qpower,
6028 wmi_service_plmreq,
6029 wmi_service_thermal_mgmt,
6030 wmi_service_rmc,
6031 wmi_service_mhf_offload,
6032 wmi_service_coex_sar,
6033 wmi_service_bcn_txrate_override,
6034 wmi_service_nan,
6035 wmi_service_l1ss_stat,
6036 wmi_service_estimate_linkspeed,
6037 wmi_service_obss_scan,
6038 wmi_service_tdls_offchan,
6039 wmi_service_tdls_uapsd_buffer_sta,
6040 wmi_service_tdls_uapsd_sleep_sta,
6041 wmi_service_ibss_pwrsave,
6042 wmi_service_lpass,
6043 wmi_service_extscan,
6044 wmi_service_d0wow,
6045 wmi_service_hsoffload,
6046 wmi_service_roam_ho_offload,
6047 wmi_service_rx_full_reorder,
6048 wmi_service_dhcp_offload,
6049 wmi_service_sta_rx_ipa_offload_support,
6050 wmi_service_mdns_offload,
6051 wmi_service_sap_auth_offload,
6052 wmi_service_dual_band_simultaneous_support,
6053 wmi_service_ocb,
6054 wmi_service_ap_arpns_offload,
6055 wmi_service_per_band_chainmask_support,
6056 wmi_service_packet_filter_offload,
6057 wmi_service_mgmt_tx_htt,
6058 wmi_service_mgmt_tx_wmi,
6059 wmi_service_ext_msg,
6060 wmi_service_mawc,
6061
6062 wmi_service_peer_stats,
6063 wmi_service_mesh_11s,
6064 wmi_service_periodic_chan_stat_support,
6065 wmi_service_tx_mode_push_only,
6066 wmi_service_tx_mode_push_pull,
6067 wmi_service_tx_mode_dynamic,
Sathish Kumar7e2eaed2016-11-14 17:44:29 +05306068 wmi_service_check_cal_version,
Sathish Kumar7e566c52016-11-10 15:30:22 +05306069 wmi_service_btcoex_duty_cycle,
Sathish Kumar612d0c22017-01-19 14:57:37 +05306070 wmi_service_4_wire_coex_support,
Sathish Kumar907a7462017-02-27 10:35:40 +05306071 wmi_service_multiple_vdev_restart,
Kiran Venkatappa4a56b462017-05-10 14:34:17 +05306072 wmi_service_peer_assoc_conf,
6073 wmi_service_egap,
6074 wmi_service_sta_pmf_offload,
6075 wmi_service_unified_wow_capability,
6076 wmi_service_enterprise_mesh,
6077 wmi_service_bpf_offload,
6078 wmi_service_sync_delete_cmds,
6079 wmi_service_ratectrl_limit_max_min_rates,
6080 wmi_service_nan_data,
6081 wmi_service_nan_rtt,
6082 wmi_service_11ax,
6083 wmi_service_deprecated_replace,
6084 wmi_service_tdls_conn_tracker_in_host_mode,
6085 wmi_service_enhanced_mcast_filter,
6086 wmi_service_half_rate_quarter_rate_support,
6087 wmi_service_vdev_rx_filter,
6088 wmi_service_p2p_listen_offload_support,
6089 wmi_service_mark_first_wakeup_packet,
6090 wmi_service_multiple_mcast_filter_set,
6091 wmi_service_host_managed_rx_reorder,
6092 wmi_service_flash_rdwr_support,
6093 wmi_service_wlan_stats_report,
6094 wmi_service_tx_msdu_id_new_partition_support,
6095 wmi_service_dfs_phyerr_offload,
6096 wmi_service_rcpi_support,
6097 wmi_service_fw_mem_dump_support,
6098 wmi_service_peer_stats_info,
6099 wmi_service_regulatory_db,
6100 wmi_service_11d_offload,
6101 wmi_service_hw_data_filtering,
6102 wmi_service_pkt_routing,
6103 wmi_service_offchan_tx_wmi,
Venkateswara Swamy Bandarufdf80262017-06-07 20:57:28 +05306104 wmi_service_chan_load_info,
Soumya Bhatd2759c62017-08-29 18:49:13 +05306105 wmi_service_extended_nss_support,
Sathish Kumar262d54a2017-10-04 09:58:00 +05306106 wmi_service_ack_timeout,
Om Prakash Tripathi4a4242b2017-11-03 16:11:11 +05306107 wmi_service_widebw_scan,
Kiran Venkatappaf9b1de32017-11-08 19:32:23 +05306108 wmi_service_bcn_offload_start_stop_support,
Kiran Venkatappa24d38452017-11-17 17:08:02 +05306109 wmi_service_offchan_data_tid_support,
Sathish Kumar3d3cf4f2017-11-17 17:30:41 +05306110 wmi_service_support_dma,
Govind Singh89727882016-04-15 13:58:27 +05306111
6112 wmi_services_max,
6113} wmi_conv_service_ids;
6114#define WMI_SERVICE_UNAVAILABLE 0xFFFF
6115
6116/**
Sandeep Puligilla82b95ca2017-01-04 16:45:45 -08006117 * enum WMI_DBG_PARAM - Debug params
6118 * @WMI_DBGLOG_LOG_LEVEL: Set the loglevel
6119 * @WMI_DBGLOG_VAP_ENABLE: Enable VAP level debug
6120 * @WMI_DBGLOG_VAP_DISABLE: Disable VAP level debug
6121 * @WMI_DBGLOG_MODULE_ENABLE: Enable MODULE level debug
6122 * @WMI_DBGLOG_MODULE_DISABLE: Disable MODULE level debug
6123 * @WMI_DBGLOG_MOD_LOG_LEVEL: Enable MODULE level debug
6124 * @WMI_DBGLOG_TYPE: set type of the debug output
6125 * @WMI_DBGLOG_REPORT_ENABLE: Enable Disable debug
6126 */
6127typedef enum {
6128 WMI_DBGLOG_LOG_LEVEL = 0x1,
6129 WMI_DBGLOG_VAP_ENABLE,
6130 WMI_DBGLOG_VAP_DISABLE,
6131 WMI_DBGLOG_MODULE_ENABLE,
6132 WMI_DBGLOG_MODULE_DISABLE,
6133 WMI_DBGLOG_MOD_LOG_LEVEL,
6134 WMI_DBGLOG_TYPE,
6135 WMI_DBGLOG_REPORT_ENABLE
6136} WMI_DBG_PARAM;
6137
6138/**
Govind Singh89727882016-04-15 13:58:27 +05306139 * struct wmi_host_fw_ver - FW version in non-tlv target
6140 * @sw_version: Versin info
6141 * @sw_version_1: Second dword of version
6142 */
6143struct wmi_host_fw_ver {
6144 uint32_t sw_version;
6145 uint32_t sw_version_1;
6146};
6147
6148/**
6149 * struct wmi_host_fw_abi_ver - FW version in non-tlv target
6150 * @sw_version: Versin info
6151 * @abi_version: ABI version
6152 */
6153struct wmi_host_fw_abi_ver {
6154 uint32_t sw_version;
6155 uint32_t abi_version;
6156};
6157
6158/**
6159 * struct target_resource_config - Resource config sent from host to target
6160 * abstracted out to include union of both configs
6161 * @num_vdevs: Number vdevs configured
6162 * @num_peers: Number of peers
6163 * @num_active_peers: Number of active peers for peer cache
6164 * @num_offload_peers: Number of offload peers
6165 * @num_offload_reorder_buffs: number of offload reorder buffs
6166 * @num_peer_keys: number of peer keys
6167 * @num_tids: number of tids
6168 * @ast_skid_limit: AST skid limit
6169 * @tx_chain_mask: TX chain mask
6170 * @rx_chain_mask: RX chain mask
6171 * @rx_timeout_pri: RX reorder timeout per AC
6172 * @rx_decap_mode: RX decap mode
6173 * @scan_max_pending_req: Scan mac pending req
6174 * @bmiss_offload_max_vdev: Beacom miss offload max vdevs
6175 * @roam_offload_max_vdev: Roam offload max vdevs
6176 * @roam_offload_max_ap_profiles: roam offload max ap profiles
6177 * @num_mcast_groups: num mcast groups
6178 * @num_mcast_table_elems: number of macst table elems
6179 * @mcast2ucast_mode: mcast enhance mode
6180 * @tx_dbg_log_size: DBG log buf size
6181 * @num_wds_entries: number of WDS entries
6182 * @dma_burst_size: DMA burst size.
6183 * @mac_aggr_delim: Mac aggr delim
6184 * @rx_skip_defrag_timeout_dup_detection_check: Defrag dup check in host?
6185 * @vow_config: vow configuration
6186 * @gtk_offload_max_vdev: Max vdevs for GTK offload
6187 * @num_msdu_desc: Number of msdu desc
6188 * @max_frag_entries: Max frag entries
6189 * End common
6190 * @max_peer_ext_stats: Max peer EXT stats
6191 * @smart_ant_cap: Smart antenna capabilities
6192 * @BK_Minfree: BIN configuration for BK traffic
6193 * @BE_Minfree: BIN configuration for BE traffic
6194 * @VI_Minfree: BIN configuration for VI traffic
6195 * @VO_Minfree: BIN configuration for VO traffic
6196 * @rx_batchmode: RX batch mode
6197 * @tt_support: Thermal throttling support
6198 * @atf_config: ATF config
Mukul Sharma7b7b15e2017-11-02 17:42:36 +05306199 * @mgmt_comp_evt_bundle_support: bundle support required for mgmt complete evt
6200 * @tx_msdu_new_partition_id_support: new partiition id support for tx msdu
Govind Singh89727882016-04-15 13:58:27 +05306201 * @iphdr_pad_config: ipheader pad config
6202 * @qwrap_config: Qwrap configuration
6203 * @alloc_frag_desc_for_data_pkt: Frag desc for data
6204 * Added in MCL
6205 * @num_tdls_vdevs:
6206 * @num_tdls_conn_table_entries:
6207 * @beacon_tx_offload_max_vdev:
6208 * @num_multicast_filter_entries:
6209 * @num_wow_filters:
6210 * @num_keep_alive_pattern:
6211 * @keep_alive_pattern_size:
6212 * @max_tdls_concurrent_sleep_sta:
6213 * @max_tdls_concurrent_buffer_sta:
6214 * @wmi_send_separate:
6215 * @num_ocb_vdevs:
6216 * @num_ocb_channels:
6217 * @num_ocb_schedules:
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05306218 * @num_ns_ext_tuples_cfg:
6219 * @bpf_instruction_size:
6220 * @max_bssid_rx_filters:
6221 * @use_pdev_id:
Mukul Sharma7b7b15e2017-11-02 17:42:36 +05306222 * @max_num_dbs_scan_duty_cycle: max dbs can duty cycle value
Ruchi, Agrawalbd55f8e2017-11-21 14:39:02 +05306223 * @cce_disable: disable cce component
Govind Singh89727882016-04-15 13:58:27 +05306224 */
6225typedef struct {
6226 uint32_t num_vdevs;
6227 uint32_t num_peers;
6228 uint32_t num_active_peers;
6229 uint32_t num_offload_peers;
6230 uint32_t num_offload_reorder_buffs;
6231 uint32_t num_peer_keys;
6232 uint32_t num_tids;
6233 uint32_t ast_skid_limit;
6234 uint32_t tx_chain_mask;
6235 uint32_t rx_chain_mask;
6236 uint32_t rx_timeout_pri[4];
6237 uint32_t rx_decap_mode;
6238 uint32_t scan_max_pending_req;
6239 uint32_t bmiss_offload_max_vdev;
6240 uint32_t roam_offload_max_vdev;
6241 uint32_t roam_offload_max_ap_profiles;
6242 uint32_t num_mcast_groups;
6243 uint32_t num_mcast_table_elems;
6244 uint32_t mcast2ucast_mode;
6245 uint32_t tx_dbg_log_size;
6246 uint32_t num_wds_entries;
6247 uint32_t dma_burst_size;
6248 uint32_t mac_aggr_delim;
6249 uint32_t rx_skip_defrag_timeout_dup_detection_check;
6250 uint32_t vow_config;
6251 uint32_t gtk_offload_max_vdev;
6252 uint32_t num_msdu_desc; /* Number of msdu desc */
6253 uint32_t max_frag_entries;
Kris Muthusamya34dfff2017-11-30 01:40:46 -08006254 uint32_t scheduler_params;
Govind Singh89727882016-04-15 13:58:27 +05306255 /* End common */
6256
6257 /* Added for Beeliner */
6258 uint32_t max_peer_ext_stats;
6259 uint32_t smart_ant_cap;
6260 uint32_t BK_Minfree;
6261 uint32_t BE_Minfree;
6262 uint32_t VI_Minfree;
6263 uint32_t VO_Minfree;
6264 uint32_t rx_batchmode;
6265 uint32_t tt_support;
Mukul Sharma7b7b15e2017-11-02 17:42:36 +05306266 uint32_t atf_config:1,
6267 mgmt_comp_evt_bundle_support:1,
6268 tx_msdu_new_partition_id_support:1;
Govind Singh89727882016-04-15 13:58:27 +05306269 uint32_t iphdr_pad_config;
6270 uint32_t
6271 qwrap_config:16,
6272 alloc_frag_desc_for_data_pkt:16;
6273
6274 /* Added in MCL */
6275 uint32_t num_tdls_vdevs;
6276 uint32_t num_tdls_conn_table_entries;
6277 uint32_t beacon_tx_offload_max_vdev;
6278 uint32_t num_multicast_filter_entries;
6279 uint32_t num_wow_filters;
6280 uint32_t num_keep_alive_pattern;
6281 uint32_t keep_alive_pattern_size;
6282 uint32_t max_tdls_concurrent_sleep_sta;
6283 uint32_t max_tdls_concurrent_buffer_sta;
6284 uint32_t wmi_send_separate;
6285 uint32_t num_ocb_vdevs;
6286 uint32_t num_ocb_channels;
6287 uint32_t num_ocb_schedules;
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05306288 uint32_t num_ns_ext_tuples_cfg;
6289 uint32_t bpf_instruction_size;
6290 uint32_t max_bssid_rx_filters;
6291 uint32_t use_pdev_id;
Mukul Sharma7b7b15e2017-11-02 17:42:36 +05306292 uint32_t max_num_dbs_scan_duty_cycle;
Ruchi, Agrawalbd55f8e2017-11-21 14:39:02 +05306293 bool cce_disable;
Govind Singh89727882016-04-15 13:58:27 +05306294} target_resource_config;
6295
6296/**
6297 * struct wds_addr_event - WDS addr event structure
6298 * @event_type: event type add/delete
6299 * @peer_mac: peer mac
6300 * @dest_mac: destination mac address
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05306301 * @vdev_id: vdev id
Govind Singh89727882016-04-15 13:58:27 +05306302 */
6303typedef struct {
6304 uint32_t event_type[4];
6305 u_int8_t peer_mac[IEEE80211_ADDR_LEN];
6306 u_int8_t dest_mac[IEEE80211_ADDR_LEN];
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05306307 uint32_t vdev_id;
Govind Singh89727882016-04-15 13:58:27 +05306308} wds_addr_event_t;
6309/**
6310 * Enum replicated for host abstraction with FW
6311 */
6312typedef enum {
6313 /* Event respose of START CMD */
6314 WMI_HOST_VDEV_START_RESP_EVENT = 0,
6315 /* Event respose of RESTART CMD */
6316 WMI_HOST_VDEV_RESTART_RESP_EVENT,
6317} WMI_HOST_START_EVENT_PARAM;
6318
6319/**
6320 * struct wmi_host_vdev_start_resp - VDEV start response
6321 * @vdev_id: vdev id
6322 * @requestor_id: requestor id that requested the VDEV start request
6323 * @resp_type: Respose of Event type START/RESTART
6324 * @status: status of the response
6325 * @chain_mask: Vdev chain mask
6326 * @smps_mode: Vdev mimo power save mode
6327 * @mac_id: mac_id field contains the MAC identifier that the
6328 * VDEV is bound to. The valid range is 0 to (num_macs-1).
6329 * @cfgd_tx_streams: Configured Transmit Streams
6330 * @cfgd_rx_streams: Configured Receive Streams
6331 */
6332typedef struct {
6333 uint32_t vdev_id;
6334 uint32_t requestor_id;
6335 WMI_HOST_START_EVENT_PARAM resp_type;
6336 uint32_t status;
6337 uint32_t chain_mask;
6338 uint32_t smps_mode;
6339 uint32_t mac_id;
6340 uint32_t cfgd_tx_streams;
6341 uint32_t cfgd_rx_streams;
6342} wmi_host_vdev_start_resp;
6343
Govind Singh89727882016-04-15 13:58:27 +05306344/**
Om Prakash Tripathi105b04b2017-11-24 16:53:07 +05306345 * struct wmi_host_vdev_delete_resp - VDEV delete response
6346 * @vdev_id: vdev id
6347 */
6348struct wmi_host_vdev_delete_resp {
6349 uint32_t vdev_id;
6350};
6351
6352/**
Govind Singh89727882016-04-15 13:58:27 +05306353 * struct wmi_host_roam_event - host roam event param
6354 * @vdev_id: vdev id
6355 * @reason: roam reason
6356 * @rssi: RSSI
6357 */
6358typedef struct {
6359 uint32_t vdev_id;
6360 uint32_t reason;
6361 uint32_t rssi;
6362} wmi_host_roam_event;
6363
6364/**
6365 * ENUM wmi_host_scan_event_type - Scan event type
6366 */
6367enum wmi_host_scan_event_type {
6368 WMI_HOST_SCAN_EVENT_STARTED = 0x1,
6369 WMI_HOST_SCAN_EVENT_COMPLETED = 0x2,
6370 WMI_HOST_SCAN_EVENT_BSS_CHANNEL = 0x4,
6371 WMI_HOST_SCAN_EVENT_FOREIGN_CHANNEL = 0x8,
6372 WMI_HOST_SCAN_EVENT_DEQUEUED = 0x10,
6373 WMI_HOST_SCAN_EVENT_PREEMPTED = 0x20,
6374 WMI_HOST_SCAN_EVENT_START_FAILED = 0x40,
6375 WMI_HOST_SCAN_EVENT_RESTARTED = 0x80,
6376 WMI_HOST_SCAN_EVENT_FOREIGN_CHANNEL_EXIT = 0x100,
6377 WMI_HOST_SCAN_EVENT_INVALID = 0x200,
Sathish Kumar753eb7d2016-10-25 18:47:52 +05306378 WMI_HOST_SCAN_EVENT_GPIO_TIMEOUT = 0x400,
Govind Singh89727882016-04-15 13:58:27 +05306379 WMI_HOST_SCAN_EVENT_MAX = 0x8000
6380};
6381
6382/**
6383 * ENUM wmi_host_scan_completion_reason - Scan completion event type
6384 */
6385enum wmi_host_scan_completion_reason {
6386 /** scan related events */
6387 WMI_HOST_SCAN_REASON_NONE = 0xFF,
6388 WMI_HOST_SCAN_REASON_COMPLETED = 0,
6389 WMI_HOST_SCAN_REASON_CANCELLED = 1,
6390 WMI_HOST_SCAN_REASON_PREEMPTED = 2,
6391 WMI_HOST_SCAN_REASON_TIMEDOUT = 3,
6392 WMI_HOST_SCAN_REASON_INTERNAL_FAILURE = 4,
6393 WMI_HOST_SCAN_REASON_MAX,
6394};
6395
6396/**
6397 * struct wmi_host_scan_event - Scan event response from target
6398 * @event: event type
6399 * @reason: Reason for event
6400 * @channel_freq: channel frequency
6401 * @requestor: requestor id
6402 * @scan_id: scan id
6403 * @vdev_id: vdev id
6404 */
6405typedef struct {
6406 uint32_t event;
6407 uint32_t reason;
6408 uint32_t channel_freq;
6409 uint32_t requestor;
6410 uint32_t scan_id;
6411 uint32_t vdev_id;
6412} wmi_host_scan_event;
6413
6414/**
6415 * struct wmi_host_pdev_reserve_ast_entry_event - Reserve AST entry
6416 * @result: result
6417 */
6418typedef struct {
6419 uint32_t result;
6420} wmi_host_pdev_reserve_ast_entry_event;
6421
6422/**
6423 * struct wmi_host_mcast_ageout_entry - mcast aged-out entry
6424 * @grp_addr: IPv4/6 mcast group addr
6425 * @vdev_id: vdev id
6426 */
6427typedef struct {
6428 uint8_t grp_addr[16];
6429 uint32_t vdev_id;
6430} wmi_host_mcast_ageout_entry;
6431
6432/**
6433 * struct wmi_host_mcast_list_ageout_event - List of mcast entry aged-out
6434 * @num_entry: Number of mcast entries timed-out
6435 * @entry: List of wmi_host_mcast_ageout_entry
6436 */
6437typedef struct {
6438 uint32_t num_entry;
6439 wmi_host_mcast_ageout_entry entry[1];
6440} wmi_host_mcast_list_ageout_event;
6441
6442/**
6443 * struct wmi_host_pdev_nfcal_power_all_channels_event - NF cal event data
6444 * @nfdBr:
6445 * chan0: {NFCalPower_chain0, NFCalPower_chain1,
6446 * NFCalPower_chain2, NFCalPower_chain3},
6447 * chan1: {NFCalPower_chain0, NFCalPower_chain1,
6448 * NFCalPower_chain2, NFCalPower_chain3},
6449 * chan2: {NFCalPower_chain0, NFCalPower_chain1,
6450 * NFCalPower_chain2, NFCalPower_chain3},
6451 * chan3: {NFCalPower_chain0, NFCalPower_chain1,
6452 * NFCalPower_chain2, NFCalPower_chain3},
6453 * @nfdBr:
6454 * chan0: {NFCalPower_chain0, NFCalPower_chain1,
6455 * NFCalPower_chain2, NFCalPower_chain3},
6456 * chan1: {NFCalPower_chain0, NFCalPower_chain1,
6457 * NFCalPower_chain2, NFCalPower_chain3},
6458 * chan2: {NFCalPower_chain0, NFCalPower_chain1,
6459 * NFCalPower_chain2, NFCalPower_chain3},
6460 * chan3: {NFCalPower_chain0, NFCalPower_chain1,
6461 * NFCalPower_chain2, NFCalPower_chain3},
6462 * @freqNum: frequency number
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05306463 * @pdev_id: pdev_id
Govind Singh89727882016-04-15 13:58:27 +05306464 */
6465typedef struct {
6466 int8_t nfdBr[WMI_HOST_RXG_CAL_CHAN_MAX * WMI_HOST_MAX_NUM_CHAINS];
6467 int8_t nfdBm[WMI_HOST_RXG_CAL_CHAN_MAX * WMI_HOST_MAX_NUM_CHAINS];
6468 uint32_t freqNum[WMI_HOST_RXG_CAL_CHAN_MAX];
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05306469 uint32_t pdev_id;
Govind Singh89727882016-04-15 13:58:27 +05306470} wmi_host_pdev_nfcal_power_all_channels_event;
6471
6472/**
Om Prakash Tripathi4331e422017-09-06 15:22:04 +05306473 * enum wmi_host_pdev_tpc_event_offset: offsets of TPC events
6474 * @WMI_HOST_TX_POWER_MAX: offset of max tx power
6475 * @WMI_HOST_TX_POWER_MIN: offset of min tx power
6476 * @WMI_HOST_TX_POWER_LEN: size of tpc values
6477 */
6478enum wmi_host_pdev_tpc_event_offset {
6479 WMI_HOST_TX_POWER_MAX,
6480 WMI_HOST_TX_POWER_MIN,
6481 WMI_HOST_TX_POWER_LEN,
6482};
6483
6484/**
Govind Singh89727882016-04-15 13:58:27 +05306485 * struct wmi_host_pdev_tpc_event - WMI host pdev TPC event
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05306486 * @pdev_id: pdev_id
Govind Singh89727882016-04-15 13:58:27 +05306487 * @tpc:
6488 */
6489typedef struct {
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05306490 uint32_t pdev_id;
Om Prakash Tripathi4331e422017-09-06 15:22:04 +05306491 int32_t tpc[WMI_HOST_TX_POWER_LEN];
Govind Singh89727882016-04-15 13:58:27 +05306492} wmi_host_pdev_tpc_event;
6493
6494/**
6495 * struct wmi_host_pdev_generic_buffer_event
6496 * @buf_type: Buffer type
6497 * @frag_id: Frag id
6498 * @more_frag: more frags pending
6499 * @buf_len: buffer length
6500 * @buf_info: variable length buffer
6501 */
6502typedef struct {
6503 uint32_t buf_type;
6504 uint32_t frag_id;
6505 uint32_t more_frag;
6506 uint32_t buf_len;
6507 uint32_t buf_info[1];
6508} wmi_host_pdev_generic_buffer_event;
6509/**
6510 * Enum for host buffer event
6511 */
6512enum {
6513 WMI_HOST_BUFFER_TYPE_RATEPWR_TABLE,
6514 WMI_HOST_BUFFER_TYPE_CTL_TABLE,
6515};
6516
6517/**
6518 * struct wmi_host_pdev_tpc_config_event - host pdev tpc config event
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05306519 * @pdev_id: pdev_id
Govind Singh89727882016-04-15 13:58:27 +05306520 * @regDomain:
6521 * @chanFreq:
6522 * @phyMode:
6523 * @twiceAntennaReduction:
6524 * @twiceMaxRDPower:
6525 * @twiceAntennaGain:
6526 * @powerLimit:
6527 * @rateMax:
6528 * @numTxChain:
6529 * @ctl:
6530 * @flags:
6531 * @maxRegAllowedPower:
6532 * @maxRegAllowedPowerAGCDD:
6533 * @maxRegAllowedPowerAGSTBC:
6534 * @maxRegAllowedPowerAGTXBF:
6535 * @ratesArray:
6536 */
6537typedef struct {
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05306538 uint32_t pdev_id;
Govind Singh89727882016-04-15 13:58:27 +05306539 uint32_t regDomain;
6540 uint32_t chanFreq;
6541 uint32_t phyMode;
6542 uint32_t twiceAntennaReduction;
6543 uint32_t twiceMaxRDPower;
6544 int32_t twiceAntennaGain;
6545 uint32_t powerLimit;
6546 uint32_t rateMax;
6547 uint32_t numTxChain;
6548 uint32_t ctl;
6549 uint32_t flags;
6550 int8_t maxRegAllowedPower[WMI_HOST_TPC_TX_NUM_CHAIN];
6551 int8_t maxRegAllowedPowerAGCDD[WMI_HOST_TPC_TX_NUM_CHAIN][WMI_HOST_TPC_TX_NUM_CHAIN];
6552 int8_t maxRegAllowedPowerAGSTBC[WMI_HOST_TPC_TX_NUM_CHAIN][WMI_HOST_TPC_TX_NUM_CHAIN];
6553 int8_t maxRegAllowedPowerAGTXBF[WMI_HOST_TPC_TX_NUM_CHAIN][WMI_HOST_TPC_TX_NUM_CHAIN];
6554 uint8_t ratesArray[WMI_HOST_TPC_RATE_MAX];
6555} wmi_host_pdev_tpc_config_event;
6556/**
6557 * Enums for TPC event
6558 */
6559typedef enum {
6560 WMI_HOST_TPC_CONFIG_EVENT_FLAG_TABLE_CDD = 0x1,
6561 WMI_HOST_TPC_CONFIG_EVENT_FLAG_TABLE_STBC = 0x2,
6562 WMI_HOST_TPC_CONFIG_EVENT_FLAG_TABLE_TXBF = 0x4,
6563} WMI_HOST_TPC_CONFIG_EVENT_FLAG;
6564
6565/**
6566 * Medium Utilization evaluation algorithms
6567 * These algorithms can be complementary rather than exclusive.
6568 */
6569typedef enum {
6570 WMI_HOST_MU_BASIC_ALGO = 0x1,
6571 WMI_HOST_MU_PER_BSSID_ALGO = 0x2,
6572 WMI_HOST_MU_HIDDEN_NODE_ALGO = 0x4,
6573} WMI_HOST_MU_ALGO_TYPE;
6574/* max MU alg combinations supported by target */
6575#define WMI_HOST_MU_MAX_ALGO_TYPE 3
6576
6577/**
Sathish Kumar7e2eaed2016-11-14 17:44:29 +05306578 * struct wmi_host_mu_db_entry
6579 * @event_type: 0=AP, 1=STA, 2=Small Cell(SC)
6580 * @bssid_mac_addr: Transmitter MAC if entry is WiFi node. PLMNID if SC
6581 * @tx_addr: Transmitter MAC if entry is WiFi node. PLMNID if SC
6582 * @avg_duration_us: Avg. duration for which node was transmitting
6583 * @avg_rssi: Avg. RSSI of all TX packets by node. Unit dBm
6584 * @mu_percent: % medium utilization by node
6585 */
6586typedef struct {
6587 uint32_t entry_type;
6588 wmi_host_mac_addr bssid_mac_addr;
6589 wmi_host_mac_addr tx_addr;
6590 uint32_t avg_duration_us;
6591 uint32_t avg_rssi;
6592 uint32_t mu_percent;
6593} wmi_host_mu_db_entry;
6594
6595/**
Govind Singh89727882016-04-15 13:58:27 +05306596 * struct wmi_host_mu_report_event - WMI_MU_REPORT_EVENTID
6597 * @mu_request_id: request id
6598 * @status_reason: MU_STATUS_REASON
6599 * @total_mu: MU_ALG_TYPE combinations
6600 * @num_active_bssid: number of active bssid
Sathish Kumar7e2eaed2016-11-14 17:44:29 +05306601 * @hidden_node_mu : hidden node algo MU per bin
6602 * @num_TA_entries : No. of entries found in MU db report
Govind Singh89727882016-04-15 13:58:27 +05306603 */
6604typedef struct {
6605 uint32_t mu_request_id;
6606 uint32_t status_reason;
6607 uint32_t total_mu[WMI_HOST_MU_MAX_ALGO_TYPE];
6608 uint32_t num_active_bssid;
Sathish Kumar7e2eaed2016-11-14 17:44:29 +05306609 uint32_t hidden_node_mu[LTEU_MAX_BINS];
6610 uint32_t num_TA_entries;
Govind Singh89727882016-04-15 13:58:27 +05306611} wmi_host_mu_report_event;
6612
6613/**
6614 * struct wmi_host_mgmt_tx_compl_event - TX completion event
6615 * @desc_id: from tx_send_cmd
6616 * @status: WMI_MGMT_TX_COMP_STATUS_TYPE
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05306617 * @pdev_id: pdev_id
Govind Singh89727882016-04-15 13:58:27 +05306618 */
6619typedef struct {
6620 uint32_t desc_id;
6621 uint32_t status;
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05306622 uint32_t pdev_id;
Govind Singh89727882016-04-15 13:58:27 +05306623} wmi_host_mgmt_tx_compl_event;
6624
Kiran Venkatappa25c47022017-03-19 22:58:09 +05306625/**
6626 * struct wmi_host_offchan_data_tx_compl_event - TX completion event
6627 * @desc_id: from tx_send_cmd
6628 * @status: VWMI_MGMT_TX_COMP_STATUS_TYPE
6629 * @pdev_id: pdev_id
6630 */
6631struct wmi_host_offchan_data_tx_compl_event {
6632 uint32_t desc_id;
6633 uint32_t status;
6634 uint32_t pdev_id;
6635};
6636
Govind Singh89727882016-04-15 13:58:27 +05306637#define WMI_HOST_TIM_BITMAP_ARRAY_SIZE 17
6638
6639/**
6640 * struct wmi_host_tim_info - TIM info in SWBA event
6641 * @tim_len: TIM length
6642 * @tim_mcast:
6643 * @tim_bitmap: TIM bitmap
6644 * @tim_changed: TIM changed
6645 * @tim_num_ps_pending: TIM num PS sta pending
Sathish Kumar744fbf72017-05-17 18:05:15 +05306646 * @vdev_id: Vdev id
Govind Singh89727882016-04-15 13:58:27 +05306647 */
6648typedef struct {
6649 uint32_t tim_len;
6650 uint32_t tim_mcast;
6651 uint32_t tim_bitmap[WMI_HOST_TIM_BITMAP_ARRAY_SIZE];
6652 uint32_t tim_changed;
6653 uint32_t tim_num_ps_pending;
Sathish Kumar744fbf72017-05-17 18:05:15 +05306654 uint32_t vdev_id;
Govind Singh89727882016-04-15 13:58:27 +05306655} wmi_host_tim_info;
6656
6657/**
6658 * struct wmi_host_p2p_noa_descriptor - NoA desc in SWBA event
6659 * @type_count: Absence count
6660 * @duration: NoA duration
6661 * @interval: NoA interval
6662 * @start_time: start time
6663 */
6664typedef struct {
6665 uint32_t type_count;
6666 uint32_t duration;
6667 uint32_t interval;
6668 uint32_t start_time;
6669} wmi_host_p2p_noa_descriptor;
6670/* Maximum number of NOA Descriptors supported */
6671#define WMI_HOST_P2P_MAX_NOA_DESCRIPTORS 4
6672/**
6673 * struct wmi_host_p2p_noa_info - p2p noa information
6674 * @modified: NoA modified
6675 * @index: Index
6676 * @oppPS: Oppurtunstic ps
6677 * @ctwindow: CT window
6678 * @num_descriptors: number of descriptors
6679 * @noa_descriptors: noa descriptors
Sathish Kumar744fbf72017-05-17 18:05:15 +05306680 * @vdev_id: Vdev id
Govind Singh89727882016-04-15 13:58:27 +05306681 */
6682typedef struct {
6683 uint8_t modified;
6684 uint8_t index;
6685 uint8_t oppPS;
6686 uint8_t ctwindow;
6687 uint8_t num_descriptors;
6688 wmi_host_p2p_noa_descriptor
6689 noa_descriptors[WMI_HOST_P2P_MAX_NOA_DESCRIPTORS];
Sathish Kumar744fbf72017-05-17 18:05:15 +05306690 uint32_t vdev_id;
Govind Singh89727882016-04-15 13:58:27 +05306691} wmi_host_p2p_noa_info;
6692
6693/**
6694 * struct wmi_host_peer_sta_kickout_event
6695 * @peer_macaddr: peer mac address
6696 * @reason: kickout reason
6697 * @rssi: rssi
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05306698 * @pdev_id: pdev_id
Govind Singh89727882016-04-15 13:58:27 +05306699 */
6700typedef struct {
6701 uint8_t peer_macaddr[IEEE80211_ADDR_LEN];
6702 uint32_t reason;
6703 uint32_t rssi;
6704} wmi_host_peer_sta_kickout_event;
6705
6706/**
6707 * struct wmi_host_peer_sta_ps_statechange_event - ST ps state change event
6708 * @peer_macaddr: peer mac address
6709 * @peer_ps_stats: peer PS state
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05306710 * @pdev_id: pdev_id
Govind Singh89727882016-04-15 13:58:27 +05306711 */
6712typedef struct {
6713 uint8_t peer_macaddr[IEEE80211_ADDR_LEN];
6714 uint32_t peer_ps_state;
6715} wmi_host_peer_sta_ps_statechange_event;
6716
6717/* Maximum CCK, OFDM rates supported */
6718#define WMI_SA_MAX_CCK_OFDM_RATES 12
6719/* Maximum MCS rates supported; 4 rates in each dword */
6720#define WMI_SA_MAX_MCS_RATES 40
6721#define WMI_SA_MAX_RATE_COUNTERS 4
6722/* Maximum rate series used for transmission */
6723#define SA_MAX_RATE_SERIES 2
6724
6725#define SA_MAX_LEGACY_RATE_DWORDS 3
6726#define SA_MAX_HT_RATE_DWORDS 10
6727#define SA_BYTES_IN_DWORD 4
6728#define SA_MASK_BYTE 0xff
6729/* TODO: ratecode_160 needs to add for future chips */
6730/**
6731 * struct wmi_sa_rate_cap - smart antenna rat capabilities
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05306732 * @pdev_id: pdev_id
Govind Singh89727882016-04-15 13:58:27 +05306733 * @ratecode_legacy: Rate code array for CCK OFDM
6734 * @ratecode_20: Rate code array for 20MHz BW
6735 * @ratecode_40: Rate code array for 40MHz BW
6736 * @ratecode_80: Rate code array for 80MHz BW
6737 * @ratecount: Max Rate count for each mode
6738 */
6739typedef struct {
6740 uint8_t ratecode_legacy[WMI_SA_MAX_CCK_OFDM_RATES];
6741 uint8_t ratecode_20[WMI_SA_MAX_MCS_RATES];
6742 uint8_t ratecode_40[WMI_SA_MAX_MCS_RATES];
6743 uint8_t ratecode_80[WMI_SA_MAX_MCS_RATES];
6744 uint8_t ratecount[WMI_SA_MAX_RATE_COUNTERS];
6745} wmi_sa_rate_cap;
6746
6747/** Preamble types to be used with VDEV fixed rate configuration */
6748typedef enum {
6749 WMI_HOST_RATE_PREAMBLE_OFDM,
6750 WMI_HOST_RATE_PREAMBLE_CCK,
6751 WMI_HOST_RATE_PREAMBLE_HT,
6752 WMI_HOST_RATE_PREAMBLE_VHT,
Kris Muthusamye66c6bf2017-02-20 20:21:04 -08006753 WMI_HOST_RATE_PREAMBLE_HE,
Govind Singh89727882016-04-15 13:58:27 +05306754} WMI_HOST_RATE_PREAMBLE;
6755
6756#define WMI_HOST_FIXED_RATE_NONE (0xff)
6757
6758/** slot time long */
6759#define WMI_HOST_VDEV_SLOT_TIME_LONG 0x1
6760/** slot time short */
6761#define WMI_HOST_VDEV_SLOT_TIME_SHORT 0x2
6762/** preablbe long */
6763#define WMI_HOST_VDEV_PREAMBLE_LONG 0x1
6764/** preablbe short */
6765#define WMI_HOST_VDEV_PREAMBLE_SHORT 0x2
6766/** found a better AP */
6767#define WMI_HOST_ROAM_REASON_BETTER_AP 0x1
6768/** beacon miss detected */
6769#define WMI_HOST_ROAM_REASON_BMISS 0x2
6770/** deauth/disassoc received */
6771#define WMI_HOST_ROAM_REASON_DEAUTH 0x2
6772/** connected AP's low rssi condition detected */
6773#define WMI_HOST_ROAM_REASON_LOW_RSSI 0x3
6774/** found another AP that matches SSID and Security profile in
6775 * WMI_ROAM_AP_PROFILE, found during scan triggered upon FINAL_BMISS
6776 */
6777#define WMI_HOST_ROAM_REASON_SUITABLE_AP 0x4
6778/** LFR3.0 roaming failed, indicate the disconnection to host */
6779#define WMI_HOST_ROAM_REASON_HO_FAILED 0x5
6780
6781/** values for vdev_type */
6782#define WMI_HOST_VDEV_TYPE_AP 0x1
6783#define WMI_HOST_VDEV_TYPE_STA 0x2
6784#define WMI_HOST_VDEV_TYPE_IBSS 0x3
6785#define WMI_HOST_VDEV_TYPE_MONITOR 0x4
6786
6787/** values for vdev_subtype */
6788#define WMI_HOST_VDEV_SUBTYPE_P2P_DEVICE 0x1
6789#define WMI_HOST_VDEV_SUBTYPE_P2P_CLIENT 0x2
6790#define WMI_HOST_VDEV_SUBTYPE_P2P_GO 0x3
6791#define WMI_HOST_VDEV_SUBTYPE_PROXY_STA 0x4
6792#define WMI_HOST_VDEV_SUBTYPE_MESH 0x5
6793
6794#define WMI_HOST_MGMT_TID 17
6795/* Disable aging & learning */
6796#define WMI_HOST_WDS_FLAG_STATIC 0x1
6797
6798/**
6799 * Peer param enum abstracted from target
6800 */
6801typedef enum {
6802 /** mimo powersave state */
6803 WMI_HOST_PEER_MIMO_PS_STATE = 0x1,
6804 /** enable/disable AMPDU . initial value (enabled) */
6805 WMI_HOST_PEER_AMPDU = 0x2,
6806 /** authorize/unauthorize peer. initial value is unauthorized (0) */
6807 WMI_HOST_PEER_AUTHORIZE = 0x3,
6808 /** peer channel bandwidth */
6809 WMI_HOST_PEER_CHWIDTH = 0x4,
6810 /** peer NSS */
6811 WMI_HOST_PEER_NSS = 0x5,
6812 /** USE 4 ADDR */
6813 WMI_HOST_PEER_USE_4ADDR = 0x6,
6814 /** Enable extended peer stats */
6815 WMI_HOST_PEER_EXT_STATS_ENABLE = 0x7,
6816 /*Use FIXED Pwr */
6817 WMI_HOST_PEER_USE_FIXED_PWR = 0x8,
6818 /* Set peer fixed rate */
6819 WMI_HOST_PEER_PARAM_FIXED_RATE = 0x9,
6820 /* Whitelist peer TIDs */
6821 WMI_HOST_PEER_SET_MU_WHITELIST = 0xa,
6822 /* set group membership status */
6823 WMI_HOST_PEER_MEMBERSHIP = 0xb,
6824 WMI_HOST_PEER_USERPOS = 0xc,
Kiran Venkatappa9da7e042016-08-09 22:52:35 +05306825 WMI_HOST_PEER_CRIT_PROTO_HINT_ENABLED = 0xd,
6826 WMI_HOST_PEER_TX_FAIL_CNT_THR = 0xe,
6827 WMI_HOST_PEER_SET_HW_RETRY_CTS2S = 0xf,
6828 WMI_HOST_PEER_IBSS_ATIM_WINDOW_LENGTH = 0x10,
6829 WMI_HOST_PEER_PHYMODE = 0x11,
6830 WMI_HOST_PEER_SET_MAC_TX_RATE = 0x12,
6831 /* Set default Rx routing */
6832 WMI_HOST_PEER_SET_DEFAULT_ROUTING = 0x13,
6833 WMI_HOST_PEER_SET_MIN_TX_RATE = 0x14,
Soumya Bhatd2759c62017-08-29 18:49:13 +05306834 /* peer NSS for 160Mhx */
6835 WMI_HOST_PEER_NSS_VHT160 = 0x15,
6836 /* peer NSS for 160Mhx */
6837 WMI_HOST_PEER_NSS_VHT80_80 = 0x16,
Govind Singh89727882016-04-15 13:58:27 +05306838} PEER_PARAM_ENUM;
6839#define WMI_HOST_PEER_MIMO_PS_NONE 0x0
6840#define WMI_HOST_PEER_MIMO_PS_STATIC 0x1
6841#define WMI_HOST_PEER_MIMO_PS_DYNAMIC 0x2
6842typedef enum {
6843 HOST_PLATFORM_HIGH_PERF,
6844 HOST_PLATFORM_LOW_PERF,
Sathish Kumar41eca492016-09-16 16:55:35 +05306845 HOST_PLATFORM_LOW_PERF_NO_FETCH,
Govind Singh89727882016-04-15 13:58:27 +05306846} HOST_PLATFORM_TYPE;
6847
6848enum wmi_host_sta_ps_mode {
6849 /** enable power save for the given STA VDEV */
6850 WMI_HOST_STA_PS_MODE_DISABLED = 0,
6851 /** disable power save for a given STA VDEV */
6852 WMI_HOST_STA_PS_MODE_ENABLED = 1,
6853};
6854enum wmi_host_sta_powersave_param {
6855 /**
6856 * Controls how frames are retrievd from AP while STA is sleeping
6857 *
6858 * (see enum wmi_sta_ps_param_rx_wake_policy)
6859 */
6860 WMI_HOST_STA_PS_PARAM_RX_WAKE_POLICY = 0,
6861
6862 /**
6863 * The STA will go active after this many TX
6864 *
6865 * (see enum wmi_sta_ps_param_tx_wake_threshold)
6866 */
6867 WMI_HOST_STA_PS_PARAM_TX_WAKE_THRESHOLD = 1,
6868
6869 /**
6870 * Number of PS-Poll to send before STA wakes up
6871 *
6872 * (see enum wmi_sta_ps_param_pspoll_count)
6873 *
6874 */
6875 WMI_HOST_STA_PS_PARAM_PSPOLL_COUNT = 2,
6876
6877 /**
6878 * TX/RX inactivity time in msec before going to sleep.
6879 *
6880 * The power save SM will monitor tx/rx activity on the VDEV, if no
6881 * activity for the specified msec of the parameter
6882 * the Power save SM will go to sleep.
6883 */
6884 WMI_HOST_STA_PS_PARAM_INACTIVITY_TIME = 3,
6885
6886 /**
6887 * Set uapsd configuration.
6888 *
6889 * (see enum wmi_sta_ps_param_uapsd)
6890 */
6891 WMI_HOST_STA_PS_PARAM_UAPSD = 4,
6892};
6893/* prefix used by scan requestor ids on the host
6894 * replicated here form wmi_unified.h*/
6895#define WMI_HOST_P_SCAN_REQUESTOR_ID_PREFIX 0xA000
6896/* prefix used by scan request ids generated on the host */
6897/* host cycles through the lower 12 bits to generate ids */
6898#define WMI_HOST_P_SCAN_REQ_ID_PREFIX 0xA000
6899
6900#define WMI_HOST_RC_DS_FLAG 0x01 /* Dual stream flag */
6901#define WMI_HOST_RC_CW40_FLAG 0x02 /* CW 40 */
6902#define WMI_HOST_RC_SGI_FLAG 0x04 /* Short Guard Interval */
6903#define WMI_HOST_RC_HT_FLAG 0x08 /* HT */
6904#define WMI_HOST_RC_RTSCTS_FLAG 0x10 /* RTS-CTS */
6905#define WMI_HOST_RC_TX_STBC_FLAG 0x20 /* TX STBC */
6906#define WMI_HOST_RC_RX_STBC_FLAG 0xC0 /* RX STBC ,2 bits */
6907#define WMI_HOST_RC_RX_STBC_FLAG_S 6 /* RX STBC ,2 bits */
6908#define WMI_HOST_RC_WEP_TKIP_FLAG 0x100 /* WEP/TKIP encryption */
6909#define WMI_HOST_RC_TS_FLAG 0x200 /* Three stream flag */
6910#define WMI_HOST_RC_UAPSD_FLAG 0x400 /* UAPSD Rate Control */
6911
6912/** HT Capabilities*/
6913#define WMI_HOST_HT_CAP_ENABLED 0x0001 /* HT Enabled/ disabled */
6914/* Short Guard Interval with HT20 */
6915#define WMI_HOST_HT_CAP_HT20_SGI 0x0002
6916#define WMI_HOST_HT_CAP_DYNAMIC_SMPS 0x0004 /* Dynamic MIMO powersave */
6917#define WMI_HOST_HT_CAP_TX_STBC 0x0008 /* B3 TX STBC */
6918#define WMI_HOST_HT_CAP_TX_STBC_MASK_SHIFT 3
6919#define WMI_HOST_HT_CAP_RX_STBC 0x0030 /* B4-B5 RX STBC */
6920#define WMI_HOST_HT_CAP_RX_STBC_MASK_SHIFT 4
6921#define WMI_HOST_HT_CAP_LDPC 0x0040 /* LDPC supported */
6922#define WMI_HOST_HT_CAP_L_SIG_TXOP_PROT 0x0080 /* L-SIG TXOP Protection */
6923#define WMI_HOST_HT_CAP_MPDU_DENSITY 0x0700 /* MPDU Density */
6924#define WMI_HOST_HT_CAP_MPDU_DENSITY_MASK_SHIFT 8
6925#define WMI_HOST_HT_CAP_HT40_SGI 0x0800
Nandha Kishore Easwaran903b5542017-06-15 10:29:29 +05306926#define WMI_HOST_HT_CAP_RX_LDPC 0x1000
6927#define WMI_HOST_HT_CAP_TX_LDPC 0x2000
6928#define WMI_HOST_HT_CAP_IBF_BFER 0x4000
Govind Singh89727882016-04-15 13:58:27 +05306929
6930/* These macros should be used when we wish to advertise STBC support for
6931 * only 1SS or 2SS or 3SS. */
6932#define WMI_HOST_HT_CAP_RX_STBC_1SS 0x0010 /* B4-B5 RX STBC */
6933#define WMI_HOST_HT_CAP_RX_STBC_2SS 0x0020 /* B4-B5 RX STBC */
6934#define WMI_HOST_HT_CAP_RX_STBC_3SS 0x0030 /* B4-B5 RX STBC */
6935
6936
6937#define WMI_HOST_HT_CAP_DEFAULT_ALL (WMI_HOST_HT_CAP_ENABLED | \
6938 WMI_HOST_HT_CAP_HT20_SGI | \
6939 WMI_HOST_HT_CAP_HT40_SGI | \
6940 WMI_HOST_HT_CAP_TX_STBC | \
6941 WMI_HOST_HT_CAP_RX_STBC | \
6942 WMI_HOST_HT_CAP_LDPC)
6943
6944/* WMI_HOST_VHT_CAP_* these maps to ieee 802.11ac vht capability information
6945 field. The fields not defined here are not supported, or reserved.
6946 Do not change these masks and if you have to add new one follow the
6947 bitmask as specified by 802.11ac draft.
6948*/
6949
6950#define WMI_HOST_VHT_CAP_MAX_MPDU_LEN_MASK 0x00000003
6951#define WMI_HOST_VHT_CAP_RX_LDPC 0x00000010
6952#define WMI_HOST_VHT_CAP_SGI_80MHZ 0x00000020
6953#define WMI_HOST_VHT_CAP_SGI_160MHZ 0x00000040
6954#define WMI_HOST_VHT_CAP_TX_STBC 0x00000080
6955#define WMI_HOST_VHT_CAP_RX_STBC_MASK 0x00000300
6956#define WMI_HOST_VHT_CAP_RX_STBC_MASK_SHIFT 8
6957#define WMI_HOST_VHT_CAP_SU_BFER 0x00000800
6958#define WMI_HOST_VHT_CAP_SU_BFEE 0x00001000
6959#define WMI_HOST_VHT_CAP_MAX_CS_ANT_MASK 0x0000E000
6960#define WMI_HOST_VHT_CAP_MAX_CS_ANT_MASK_SHIFT 13
6961#define WMI_HOST_VHT_CAP_MAX_SND_DIM_MASK 0x00070000
6962#define WMI_HOST_VHT_CAP_MAX_SND_DIM_MASK_SHIFT 16
6963#define WMI_HOST_VHT_CAP_MU_BFER 0x00080000
6964#define WMI_HOST_VHT_CAP_MU_BFEE 0x00100000
6965#define WMI_HOST_VHT_CAP_MAX_AMPDU_LEN_EXP 0x03800000
6966#define WMI_HOST_VHT_CAP_MAX_AMPDU_LEN_EXP_SHIT 23
6967#define WMI_HOST_VHT_CAP_RX_FIXED_ANT 0x10000000
6968#define WMI_HOST_VHT_CAP_TX_FIXED_ANT 0x20000000
6969
6970#define WMI_HOST_VHT_CAP_MAX_MPDU_LEN_11454 0x00000002
6971
6972/* These macros should be used when we wish to advertise STBC support for
6973 * only 1SS or 2SS or 3SS. */
6974#define WMI_HOST_VHT_CAP_RX_STBC_1SS 0x00000100
6975#define WMI_HOST_VHT_CAP_RX_STBC_2SS 0x00000200
6976#define WMI_HOST_VHT_CAP_RX_STBC_3SS 0x00000300
6977
6978#define WMI_HOST_VHT_CAP_DEFAULT_ALL (WMI_HOST_VHT_CAP_MAX_MPDU_LEN_11454 | \
6979 WMI_HOST_VHT_CAP_SGI_80MHZ | \
6980 WMI_HOST_VHT_CAP_TX_STBC | \
6981 WMI_HOST_VHT_CAP_RX_STBC_MASK | \
6982 WMI_HOST_VHT_CAP_RX_LDPC | \
6983 WMI_HOST_VHT_CAP_MAX_AMPDU_LEN_EXP | \
6984 WMI_HOST_VHT_CAP_RX_FIXED_ANT | \
6985 WMI_HOST_VHT_CAP_TX_FIXED_ANT)
6986
6987/* Interested readers refer to Rx/Tx MCS Map definition as defined in
6988 802.11ac
6989*/
6990#define WMI_HOST_VHT_MAX_MCS_4_SS_MASK(r, ss) ((3 & (r)) << (((ss) - 1) << 1))
6991#define WMI_HOST_VHT_MAX_SUPP_RATE_MASK 0x1fff0000
6992#define WMI_HOST_VHT_MAX_SUPP_RATE_MASK_SHIFT 16
6993
6994/** U-APSD configuration of peer station from (re)assoc request and TSPECs */
6995enum wmi_host_ap_ps_param_uapsd {
6996 WMI_HOST_AP_PS_UAPSD_AC0_DELIVERY_EN = (1 << 0),
6997 WMI_HOST_AP_PS_UAPSD_AC0_TRIGGER_EN = (1 << 1),
6998 WMI_HOST_AP_PS_UAPSD_AC1_DELIVERY_EN = (1 << 2),
6999 WMI_HOST_AP_PS_UAPSD_AC1_TRIGGER_EN = (1 << 3),
7000 WMI_HOST_AP_PS_UAPSD_AC2_DELIVERY_EN = (1 << 4),
7001 WMI_HOST_AP_PS_UAPSD_AC2_TRIGGER_EN = (1 << 5),
7002 WMI_HOST_AP_PS_UAPSD_AC3_DELIVERY_EN = (1 << 6),
7003 WMI_HOST_AP_PS_UAPSD_AC3_TRIGGER_EN = (1 << 7),
7004};
7005/** U-APSD maximum service period of peer station */
7006enum wmi_host_ap_ps_peer_param_max_sp {
7007 WMI_HOST_AP_PS_PEER_PARAM_MAX_SP_UNLIMITED = 0,
7008 WMI_HOST_AP_PS_PEER_PARAM_MAX_SP_2 = 1,
7009 WMI_HOST_AP_PS_PEER_PARAM_MAX_SP_4 = 2,
7010 WMI_HOST_AP_PS_PEER_PARAM_MAX_SP_6 = 3,
7011
7012 /* keep last! */
7013 MAX_HOST_WMI_AP_PS_PEER_PARAM_MAX_SP,
7014};
7015
7016#define WMI_HOST_UAPSD_AC_TYPE_DELI 0
7017#define WMI_HOST_UAPSD_AC_TYPE_TRIG 1
7018
7019#define WMI_HOST_UAPSD_AC_BIT_MASK(ac, type) \
7020 ((type == WMI_HOST_UAPSD_AC_TYPE_DELI) ? (1<<(ac<<1)) :\
7021 (1<<((ac<<1)+1)))
7022
7023enum wmi_host_ap_ps_peer_param_wnm_sleep {
7024 WMI_HOST_AP_PS_PEER_PARAM_WNM_SLEEP_ENABLE,
7025 WMI_HOST_AP_PS_PEER_PARAM_WNM_SLEEP_DISABLE,
7026};
7027
7028enum wmi_host_ap_ps_peer_param {
7029 /** Set uapsd configuration for a given peer.
7030 *
7031 * This will include the delivery and trigger enabled state for every AC.
7032 * The host MLME needs to set this based on AP capability and stations
7033 * request Set in the association request received from the station.
7034 *
7035 * Lower 8 bits of the value specify the UAPSD configuration.
7036 *
7037 * (see enum wmi_ap_ps_param_uapsd)
7038 * The default value is 0.
7039 */
7040 WMI_HOST_AP_PS_PEER_PARAM_UAPSD = 0,
7041
7042 /**
7043 * Set the service period for a UAPSD capable station
7044 *
7045 * The service period from wme ie in the (re)assoc request frame.
7046 *
7047 * (see enum wmi_ap_ps_peer_param_max_sp)
7048 */
7049 WMI_HOST_AP_PS_PEER_PARAM_MAX_SP = 1,
7050
7051 /** Time in seconds for aging out buffered frames
7052 * for STA in power save */
7053 WMI_HOST_AP_PS_PEER_PARAM_AGEOUT_TIME = 2,
7054
7055 /** Specify frame types that are considered SIFS
7056 * RESP trigger frame */
7057 WMI_HOST_AP_PS_PEER_PARAM_SIFS_RESP_FRMTYPE = 3,
7058
7059 /** Specifies the trigger state of TID.
7060 * Valid only for UAPSD frame type */
7061 WMI_HOST_AP_PS_PEER_PARAM_SIFS_RESP_UAPSD = 4,
7062
7063 /** Specifies the WNM sleep state of a STA */
7064 WMI_HOST_AP_PS_PEER_PARAM_WNM_SLEEP = 5,
7065};
7066#define WMI_HOST_RXERR_CRC 0x01 /* CRC error on frame */
7067#define WMI_HOST_RXERR_DECRYPT 0x08 /* non-Michael decrypt error */
7068#define WMI_HOST_RXERR_MIC 0x10 /* Michael MIC decrypt error */
7069#define WMI_HOST_RXERR_KEY_CACHE_MISS 0x20 /* No/incorrect key matter in h/w */
7070
7071enum wmi_host_sta_ps_param_uapsd {
7072 WMI_HOST_STA_PS_UAPSD_AC0_DELIVERY_EN = (1 << 0),
7073 WMI_HOST_STA_PS_UAPSD_AC0_TRIGGER_EN = (1 << 1),
7074 WMI_HOST_STA_PS_UAPSD_AC1_DELIVERY_EN = (1 << 2),
7075 WMI_HOST_STA_PS_UAPSD_AC1_TRIGGER_EN = (1 << 3),
7076 WMI_HOST_STA_PS_UAPSD_AC2_DELIVERY_EN = (1 << 4),
7077 WMI_HOST_STA_PS_UAPSD_AC2_TRIGGER_EN = (1 << 5),
7078 WMI_HOST_STA_PS_UAPSD_AC3_DELIVERY_EN = (1 << 6),
7079 WMI_HOST_STA_PS_UAPSD_AC3_TRIGGER_EN = (1 << 7),
7080};
7081
7082enum wmi_host_sta_ps_param_rx_wake_policy {
7083 /* Wake up when ever there is an RX activity on the VDEV. In this mode
7084 * the Power save SM(state machine) will come out of sleep by either
7085 * sending null frame (or) a data frame (with PS==0) in response to TIM
7086 * bit set in the received beacon frame from AP.
7087 */
7088 WMI_HOST_STA_PS_RX_WAKE_POLICY_WAKE = 0,
7089
7090 /* Here the power save state machine will not wakeup in response to TIM
7091 * bit, instead it will send a PSPOLL (or) UASPD trigger based on UAPSD
7092 * configuration setup by WMISET_PS_SET_UAPSD WMI command. When all
7093 * access categories are delivery-enabled, the station will send a UAPSD
7094 * trigger frame, otherwise it will send a PS-Poll.
7095 */
7096 WMI_HOST_STA_PS_RX_WAKE_POLICY_POLL_UAPSD = 1,
7097};
7098enum wmi_host_sta_ps_param_pspoll_count {
7099 WMI_HOST_STA_PS_PSPOLL_COUNT_NO_MAX = 0,
7100 /* Values greater than 0 indicate the maximum numer of PS-Poll frames FW
7101 * will send before waking up.
7102 */
7103};
7104/** Number of tx frames/beacon that cause the power save SM to wake up.
7105 *
7106 * Value 1 causes the SM to wake up for every TX. Value 0 has a special
7107 * meaning, It will cause the SM to never wake up. This is useful if you want
7108 * to keep the system to sleep all the time for some kind of test mode . host
7109 * can change this parameter any time. It will affect at the next tx frame.
7110 */
7111enum wmi_host_sta_ps_param_tx_wake_threshold {
7112 WMI_HOST_STA_PS_TX_WAKE_THRESHOLD_NEVER = 0,
7113 WMI_HOST_STA_PS_TX_WAKE_THRESHOLD_ALWAYS = 1,
7114
7115 /* Values greater than one indicate that many TX attempts per beacon
7116 * interval before the STA will wake up
7117 */
7118};
7119/*
7120 * Transmit power scale factor.
7121 *
7122 */
7123typedef enum {
7124 WMI_HOST_TP_SCALE_MAX = 0, /* no scaling (default) */
7125 WMI_HOST_TP_SCALE_50 = 1, /* 50% of max (-3 dBm) */
7126 WMI_HOST_TP_SCALE_25 = 2, /* 25% of max (-6 dBm) */
7127 WMI_HOST_TP_SCALE_12 = 3, /* 12% of max (-9 dBm) */
7128 WMI_HOST_TP_SCALE_MIN = 4, /* min, but still on */
7129 WMI_HOST_TP_SCALE_SIZE = 5, /* max num of enum */
7130} WMI_HOST_TP_SCALE;
7131enum {
7132 WMI_HOST_RATEPWR_TABLE_OPS_SET,
7133 WMI_HOST_RATEPWR_TABLE_OPS_GET,
7134};
7135/* reserved up through 0xF */
7136/**
7137 * struct wmi_host_dcs_mib_stats - WLAN IM stats from target to host
7138 * Below statistics are sent from target to host periodically.
7139 * These are collected at target as long as target is running
7140 * and target chip is not in sleep.
7141 * @listen_time:
7142 * @reg_tx_frame_cnt:
7143 * @reg_rx_frame_cnt:
7144 * @reg_rxclr_cnt:
7145 * @reg_cycle_cnt: delta cycle count
7146 * @reg_rxclr_ext_cnt:
7147 * @reg_ofdm_phyerr_cnt:
7148 * @reg_cck_phyerr_cnt: CCK err count since last reset, read from register
7149 */
7150typedef struct _hp_dcs_mib_stats {
7151 int32_t listen_time;
7152 uint32_t reg_tx_frame_cnt;
7153 uint32_t reg_rx_frame_cnt;
7154 uint32_t reg_rxclr_cnt;
7155 uint32_t reg_cycle_cnt;
7156 uint32_t reg_rxclr_ext_cnt;
7157 uint32_t reg_ofdm_phyerr_cnt;
7158 uint32_t reg_cck_phyerr_cnt;
7159} wmi_host_dcs_mib_stats_t;
7160
7161/**
7162 * struct wmi_host_dcs_im_tgt_stats - DCS IM target stats
7163 * @reg_tsf32: current running TSF from the TSF-1
7164 * @last_ack_rssi: Known last frame rssi, in case of multiple stations, if
7165 * and at different ranges, this would not gaurantee that
7166 * this is the least rssi.
7167 * @tx_waste_time: Sum of all the failed durations in the last
7168 * one second interval.
7169 * @rx_time: count how many times the hal_rxerr_phy is marked, in this
7170 * time period
7171 * @phyerr_cnt:
7172 * @mib_stats: wmi_host_dcs_mib_stats_t - collected mib stats as explained
7173 * in mib structure
Sathish Kumarba2b5da2016-11-08 14:58:29 +05307174 * @chan_nf: Channel noise floor (Units are in dBm)
7175 * @my_bss_rx_cycle_count: BSS rx cycle count
Govind Singh89727882016-04-15 13:58:27 +05307176 */
7177typedef struct _wmi_host_dcs_im_tgt_stats {
7178 uint32_t reg_tsf32;
7179 uint32_t last_ack_rssi;
7180 uint32_t tx_waste_time;
7181 uint32_t rx_time;
7182 uint32_t phyerr_cnt;
7183 wmi_host_dcs_mib_stats_t mib_stats;
Sathish Kumarba2b5da2016-11-08 14:58:29 +05307184 uint32_t chan_nf;
7185 uint32_t my_bss_rx_cycle_count;
Govind Singh89727882016-04-15 13:58:27 +05307186} wmi_host_dcs_im_tgt_stats_t;
7187
7188/**
7189 * Enum for pktlog req
7190 */
7191typedef enum {
7192 WMI_HOST_PKTLOG_EVENT_RX = 0x1,
7193 WMI_HOST_PKTLOG_EVENT_TX = 0x2,
7194 WMI_HOST_PKTLOG_EVENT_RCF = 0x4, /* Rate Control Find */
7195 WMI_HOST_PKTLOG_EVENT_RCU = 0x8, /* Rate Control Update */
7196 WMI_HOST_PKTLOG_EVENT_DBG_PRINT = 0x10, /* DEBUG prints */
7197 /* To support Smart Antenna */
7198 WMI_HOST_PKTLOG_EVENT_SMART_ANTENNA = 0x20,
7199 WMI_HOST_PKTLOG_EVENT_H_INFO = 0x40,
7200 WMI_HOST_PKTLOG_EVENT_STEERING = 0x80,
Sathish Kumar657402a2016-09-26 14:48:09 +05307201 /* To support Tx data Capture */
7202 WMI_HOST_PKTLOG_EVENT_TX_DATA_CAPTURE = 0x100,
Govind Singh89727882016-04-15 13:58:27 +05307203} WMI_HOST_PKTLOG_EVENT;
7204
7205/**
7206 * wmi_host_phyerr
7207 *
7208 */
7209#define WMI_HOST_PHY_ERROR_SPECTRAL_SCAN 0x26
7210#define WMI_HOST_PHY_ERROR_FALSE_RADAR_EXT 0x24
7211
7212#define WMI_HOST_AR900B_DFS_PHYERR_MASK 0x4
7213#define WMI_HOST_AR900B_SPECTRAL_PHYERR_MASK 0x4000000
7214
7215/**
7216 * struct wmi_host_perchain_rssi_info - per chain RSSI info
7217 * @rssi_pri20: RSSI on primary 20
7218 * @rssi_sec20: RSSI on secomdary 20
7219 * @rssi_sec40: RSSI secondary 40
7220 * @rssi_sec80: RSSI secondary 80
7221 */
7222typedef struct wmi_host_perchain_rssi_info {
7223 int8_t rssi_pri20;
7224 int8_t rssi_sec20;
7225 int8_t rssi_sec40;
7226 int8_t rssi_sec80;
7227} wmi_host_perchain_rssi_info_t;
7228
7229/**
7230 * struct _wmi_host_rf_info - RF measurement information
7231 * @rssi_comb: RSSI Information
7232 * @pc_rssi_info[4]: For now, we know we are getting information
7233 * for only 4 chains at max. For future extensions
7234 * use a define
7235 * @noise_floor: Noise floor information
7236 */
7237typedef struct _wmi_host_rf_info {
7238 int8_t rssi_comb;
7239 wmi_host_perchain_rssi_info_t pc_rssi_info[4];
7240 int16_t noise_floor[4];
7241} wmi_host_rf_info_t;
7242
7243/**
7244 * struct _wmi_host_chan_info
7245 * @center_freq1: center frequency 1 in MHz
7246 * @center_freq2: center frequency 2 in MHz -valid only for
7247 * 11ACVHT 80PLUS80 mode
7248 * @chan_width: channel width in MHz
7249 */
7250typedef struct _wmi_host_chan_info {
7251 u_int16_t center_freq1;
7252 u_int16_t center_freq2;
7253 u_int8_t chan_width;
7254} wmi_host_chan_info_t;
7255
7256/**
7257 * struct wmi_host_phyerr
7258 * @rf_info:
7259 * @chan_info:
7260 * @tsf64:
7261 * @phy_err_code:
7262 * @tsf_timestamp:
7263 * @bufp:
7264 * @buf_len:
7265 * @phy_err_mask0:
7266 * @phy_err_mask1:
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05307267 * @pdev_id: pdev_id
Govind Singh89727882016-04-15 13:58:27 +05307268 */
7269typedef struct _wmi_host_phyerr {
7270 wmi_host_rf_info_t rf_info;
7271 wmi_host_chan_info_t chan_info;
7272 uint64_t tsf64;
7273 int32_t phy_err_code;
7274 uint32_t tsf_timestamp;
7275 uint8_t *bufp;
7276 uint32_t buf_len;
7277 uint32_t phy_err_mask0;
7278 uint32_t phy_err_mask1;
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05307279 uint32_t pdev_id;
Govind Singh89727882016-04-15 13:58:27 +05307280} wmi_host_phyerr_t;
7281
7282/**
7283 * struct wmi_host_rtt_event_hdr
7284 * @req_id: request id
7285 * @status: status
7286 * @meas_done: measurement done flag
7287 * @meas_type: measurement type
7288 * @report_type: report type
7289 * @v3_status: v2 status
7290 * @v3_finish:
7291 * @v3_tm_start:
7292 * @num_ap: number of AP
7293 * @result: resuult
7294 * @dest_mac: destination mac
7295 */
7296typedef struct {
7297 uint16_t req_id;
7298 uint16_t status:1,
7299 meas_done:1,
7300 meas_type:3,
7301 report_type:3,
7302 v3_status:2,
7303 v3_finish:1,
7304 v3_tm_start:1,
7305 num_ap:4;
7306 uint16_t result;
7307 uint8_t dest_mac[IEEE80211_ADDR_LEN];
7308} wmi_host_rtt_event_hdr;
7309
7310/**
7311 * struct wmi_host_rtt_meas_event - RTT measurement event
7312 * @chain_mask:
7313 * @bw:
7314 * @rsvd:
7315 * @txrxchain_mask: Bit:0-3:chain mask
7316 * Bit 4-5: band width info
7317 * 00 --Legacy 20, 01 --HT/VHT20
7318 * 10 --HT/VHT40, 11 -- VHT80
7319 * @tod: resolution of 0.1ns
7320 * @toa: resolution of 0.1ns
7321 * @t3:
7322 * @t4:
7323 * @rssi0:
7324 * @rssi1:
7325 * @rssi2:
7326 * @rssi3:
7327 */
7328typedef struct {
7329 uint32_t chain_mask:3,
7330 bw:2,
7331 rsvd:27;
7332 uint32_t txrxchain_mask;
7333 uint64_t tod;
7334 uint64_t toa;
7335 uint64_t t3;
7336 uint64_t t4;
7337 uint32_t rssi0;
7338 uint32_t rssi1;
7339 uint32_t rssi2;
7340 uint32_t rssi3;
7341} wmi_host_rtt_meas_event;
7342
7343/*----RTT Report event definition ----*/
7344typedef enum {
7345 /* rtt cmd header parsing error --terminate */
7346 WMI_HOST_RTT_COMMAND_HEADER_ERROR = 0,
7347 /* rtt body parsing error -- skip current STA REQ */
7348 WMI_HOST_RTT_COMMAND_ERROR,
7349 /* rtt no resource -- terminate */
7350 WMI_HOST_RTT_MODULE_BUSY,
7351 /* STA exceed the support limit -- only server the first n STA */
7352 WMI_HOST_RTT_TOO_MANY_STA,
7353 /* any allocate failure */
7354 WMI_HOST_RTT_NO_RESOURCE,
7355 /* can not find vdev with vdev ID - skip current STA REQ */
7356 WMI_HOST_RTT_VDEV_ERROR,
7357 /* Tx failure -- continiue and measure number */
7358 WMI_HOST_RTT_TRANSIMISSION_ERROR,
7359 /* wait for first TM timer expire-terminate current STA measurement */
7360 WMI_HOST_RTT_TM_TIMER_EXPIRE,
7361 /* we do not support RTT measurement with this type of frame */
7362 WMI_HOST_RTT_FRAME_TYPE_NOSUPPORT,
7363 /* whole RTT measurement timer expire-terminate
7364 ** current STA measurement */
7365 WMI_HOST_RTT_TIMER_EXPIRE,
7366 /* channel swicth failed */
7367 WMI_HOST_RTT_CHAN_SWITCH_ERROR,
7368 /* TMR trans error, this dest peer will be skipped */
7369 WMI_HOST_RTT_TMR_TRANS_ERROR,
7370 /* V3 only. If both CFR and Token mismatch, do not report */
7371 WMI_HOST_RTT_NO_REPORT_BAD_CFR_TOKEN,
7372 /* For First TM, if CFR is bad, then do not report */
7373 WMI_HOST_RTT_NO_REPORT_FIRST_TM_BAD_CFR,
7374 /* do not allow report type2 mix with type 0, 1 */
7375 WMI_HOST_RTT_REPORT_TYPE2_MIX,
7376 /* LCI Configuration OK. - Responder only */
7377 WMI_HOST_RTT_LCI_CFG_OK,
7378 /* LCR configuration OK. - Responder only */
7379 WMI_HOST_RTT_LCR_CFG_OK,
7380 /* Bad configuration LCI (or) LCR request - Responder only */
7381 WMI_HOST_RTT_CFG_ERROR,
7382 WMI_HOST_WMI_RTT_REJECT_MAX,
7383} WMI_HOST_RTT_ERROR_INDICATOR;
7384typedef struct {
7385 wmi_host_rtt_event_hdr hdr;
7386 WMI_HOST_RTT_ERROR_INDICATOR reject_reason;
7387} wmi_host_rtt_error_report_event;
7388
7389#if defined(AR9888)
7390typedef enum {
7391 WMI_HOST_PROF_CPU_IDLE,
7392 WMI_HOST_PROF_PPDU_PROC,
7393 WMI_HOST_PROF_PPDU_POST,
7394 WMI_HOST_PROF_HTT_TX_INPUT,
7395 WMI_HOST_PROF_MSDU_ENQ,
7396 WMI_HOST_PROF_PPDU_POST_HAL,
7397 WMI_HOST_PROF_COMPUTE_TX_TIME,
7398
7399 /* Add new ID's above this. */
7400 WMI_HOST_PROF_MAX_ID,
7401} wmi_host_profile_id_t;
7402#endif
7403
7404#define WMI_HOST_WLAN_PROFILE_MAX_HIST 3
7405#define WMI_HOST_WLAN_PROFILE_MAX_BIN_CNT 32
7406
7407#if defined(AR9888)
7408#define WMI_HOST_MAX_PROFILE WMI_HOST_PROF_MAX_ID
7409#else
7410#define WMI_HOST_MAX_PROFILE WMI_HOST_WLAN_PROFILE_MAX_BIN_CNT
7411#endif
7412
7413/**
7414 * struct wmi_host_wlan_profile - Host profile param
7415 * @id: profile id
7416 * @cnt: Count
7417 * @tot:
7418 * @min: minimum
7419 * @max: Mac
7420 * @hist_intvl: history interval
7421 * @hist: profile data history
7422 */
7423typedef struct {
7424 uint32_t id;
7425 uint32_t cnt;
7426 uint32_t tot;
7427 uint32_t min;
7428 uint32_t max;
7429 uint32_t hist_intvl;
7430 uint32_t hist[WMI_HOST_WLAN_PROFILE_MAX_HIST];
7431} wmi_host_wlan_profile_t;
7432
7433/**
7434 * struct wmi_host_wlan_profile_ctx_t - profile context
7435 * @tot: time in us
7436 * @tx_msdu_cnt: MSDU TX count
7437 * @tx_mpdu_cnt: MPDU tx count
7438 * @tx_ppdu_cnt: PPDU tx count
7439 * @rx_msdu_cnt: MSDU RX count
7440 * @rx_mpdu_cnt: MPDU RXcount
7441 * @bin_count: Bin count
7442 */
7443typedef struct {
7444 uint32_t tot;
7445 uint32_t tx_msdu_cnt;
7446 uint32_t tx_mpdu_cnt;
7447 uint32_t tx_ppdu_cnt;
7448 uint32_t rx_msdu_cnt;
7449 uint32_t rx_mpdu_cnt;
7450 uint32_t bin_count;
7451} wmi_host_wlan_profile_ctx_t;
7452
7453/**
Govind Singh89727882016-04-15 13:58:27 +05307454 * struct wmi_host_chan_info_event - Channel info WMI event
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05307455 * @pdev_id: pdev_id
Govind Singh89727882016-04-15 13:58:27 +05307456 * @err_code: Error code
7457 * @freq: Channel freq
7458 * @cmd_flags: Read flags
7459 * @noise_floor: Noise Floor value
7460 * @rx_clear_count: rx clear count
7461 * @cycle_count: cycle count
7462 * @chan_tx_pwr_range: channel tx power per range
7463 * @chan_tx_pwr_tp: channel tx power per throughput
7464 * @rx_frame_count: rx frame count
7465 * @rx_11b_mode_data_duration: 11b mode data duration
Kiran Venkatappa8747f622017-08-10 17:48:37 +05307466 * @my_bss_rx_cycle_count: BSS rx cycle count
7467 * @tx_frame_cnt: tx frame count
7468 * @mac_clk_mhz: mac clock
7469 * @vdev_id: unique id identifying the VDEV
Govind Singh89727882016-04-15 13:58:27 +05307470 */
7471typedef struct {
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05307472 uint32_t pdev_id;
Govind Singh89727882016-04-15 13:58:27 +05307473 uint32_t err_code;
7474 uint32_t freq;
7475 uint32_t cmd_flags;
7476 uint32_t noise_floor;
7477 uint32_t rx_clear_count;
7478 uint32_t cycle_count;
7479 uint32_t chan_tx_pwr_range;
7480 uint32_t chan_tx_pwr_tp;
7481 uint32_t rx_frame_count;
7482 uint32_t rx_11b_mode_data_duration;
Kiran Venkatappa8747f622017-08-10 17:48:37 +05307483 uint32_t my_bss_rx_cycle_count;
7484 uint32_t tx_frame_cnt;
7485 uint32_t mac_clk_mhz;
7486 uint32_t vdev_id;
Govind Singh89727882016-04-15 13:58:27 +05307487} wmi_host_chan_info_event;
7488
7489/**
7490 * struct wmi_host_pdev_channel_hopping_event
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05307491 * @pdev_id: pdev_id
Govind Singh89727882016-04-15 13:58:27 +05307492 * @noise_floor_report_iter: Noise threshold iterations with high values
7493 * @noise_floor_total_iter: Total noise threshold iterations
7494 */
7495typedef struct {
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05307496 uint32_t pdev_id;
Govind Singh89727882016-04-15 13:58:27 +05307497 uint32_t noise_floor_report_iter;
7498 uint32_t noise_floor_total_iter;
7499} wmi_host_pdev_channel_hopping_event;
7500
7501/**
7502 * struct wmi_host_pdev_bss_chan_info_event
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05307503 * @pdev_id: pdev_id
Govind Singh89727882016-04-15 13:58:27 +05307504 * @freq: Units in MHz
7505 * @noise_floor: units are dBm
7506 * @rx_clear_count_low:
7507 * @rx_clear_count_high:
7508 * @cycle_count_low:
7509 * @cycle_count_high:
7510 * @tx_cycle_count_low:
7511 * @tx_cycle_count_high:
7512 * @rx_cycle_count_low:
7513 * @rx_cycle_count_high:
7514 * @rx_bss_cycle_count_low:
7515 * @rx_bss_cycle_count_high:
7516 * @reserved:
7517 */
7518typedef struct {
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05307519 uint32_t pdev_id;
Govind Singh89727882016-04-15 13:58:27 +05307520 uint32_t freq;
7521 uint32_t noise_floor;
7522 uint32_t rx_clear_count_low;
7523 uint32_t rx_clear_count_high;
7524 uint32_t cycle_count_low;
7525 uint32_t cycle_count_high;
7526 uint32_t tx_cycle_count_low;
7527 uint32_t tx_cycle_count_high;
7528 uint32_t rx_cycle_count_low;
7529 uint32_t rx_cycle_count_high;
7530 uint32_t rx_bss_cycle_count_low;
7531 uint32_t rx_bss_cycle_count_high;
7532 uint32_t reserved;
7533} wmi_host_pdev_bss_chan_info_event;
7534
7535#define WMI_HOST_INST_STATS_INVALID_RSSI 0
7536/**
7537 * struct wmi_host_inst_stats_resp
7538 * @iRSSI: Instantaneous RSSI
7539 * @peer_macaddr: peer mac address
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05307540 * @pdev_id: pdev_id
Govind Singh89727882016-04-15 13:58:27 +05307541 */
7542typedef struct {
7543 uint32_t iRSSI;
7544 wmi_host_mac_addr peer_macaddr;
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05307545 uint32_t pdev_id;
Govind Singh89727882016-04-15 13:58:27 +05307546} wmi_host_inst_stats_resp;
7547
7548/* Event definition and new structure addition to send event
7549 * to host to block/unblock tx data traffic based on peer_ast_idx or vdev id
7550 */
7551#define WMI_HOST_INVALID_PEER_AST_INDEX 0xffff
7552#define WMI_HOST_TX_DATA_TRAFFIC_CTRL_BLOCK 0x1
7553#define WMI_HOST_TX_DATA_TRAFFIC_CTRL_UNBLOCK 0x2
7554/**
7555 * struct wmi_host_tx_data_traffic_ctrl_event
7556 * @peer_ast_idx: For vdev based control, peer_ast_idx will be
7557 * WMI_INVALID_PEER_AST_INDEX
7558 * @vdev_id: only applies if peer_ast_idx == INVALID
7559 * @ctrl_cmd: WMI_TX_DATA_TRAFFIC_CTRL_BLOCK or
7560 * WMI_TX_DATA_TRAFFIC_CTRL_UNBLOCK
7561 */
7562typedef struct {
7563 uint32_t peer_ast_idx;
7564 uint32_t vdev_id;
7565 uint32_t ctrl_cmd;
7566} wmi_host_tx_data_traffic_ctrl_event;
7567
Sathish Kumar7e2eaed2016-11-14 17:44:29 +05307568enum {
7569 WMI_HOST_ATF_PEER_STATS_DISABLED = 0,
7570 WMI_HOST_ATF_PEER_STATS_ENABLED = 1,
7571};
7572
7573#define WMI_HOST_ATF_PEER_STATS_GET_PEER_AST_IDX(token_info) \
7574 (token_info.field1 & 0xffff)
7575
7576#define WMI_HOST_ATF_PEER_STATS_GET_USED_TOKENS(token_info) \
7577 ((token_info.field2 & 0xffff0000) >> 16)
7578
7579#define WMI_HOST_ATF_PEER_STATS_GET_UNUSED_TOKENS(token_info) \
7580 (token_info.field2 & 0xffff)
7581
7582#define WMI_HOST_ATF_PEER_STATS_SET_PEER_AST_IDX(token_info, peer_ast_idx) \
7583 do { \
7584 token_info.field1 &= 0xffff0000; \
7585 token_info.field1 |= ((peer_ast_idx) & 0xffff); \
7586 } while (0)
7587
7588#define WMI_HOST_ATF_PEER_STATS_SET_USED_TOKENS(token_info, used_token) \
7589 do { \
7590 token_info.field2 &= 0x0000ffff; \
7591 token_info.field2 |= (((used_token) & 0xffff) << 16); \
7592 } while (0)
7593
7594#define WMI_HOST_ATF_PEER_STATS_SET_UNUSED_TOKENS(token_info, unused_token) \
7595 do { \
7596 token_info.field2 &= 0xffff0000; \
7597 token_info.field2 |= ((unused_token) & 0xffff); \
7598 } while (0)
7599
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05307600/**
7601 * struct wmi_host_atf_peer_stats_info
7602 * @field1: bits 15:0 peer_ast_index WMI_ATF_PEER_STATS_GET_PEER_AST_IDX
7603 * bits 31:16 reserved
7604 * @field2: bits 15:0 used tokens WMI_ATF_PEER_STATS_GET_USED_TOKENS
7605 * bits 31:16 unused tokens WMI_ATF_PEER_STATS_GET_UNUSED_TOKENS
7606 * @field3: for future use
7607 */
Sathish Kumar7e2eaed2016-11-14 17:44:29 +05307608typedef struct {
Sathish Kumar7e2eaed2016-11-14 17:44:29 +05307609 uint32_t field1;
7610 uint32_t field2;
7611 uint32_t field3;
7612} wmi_host_atf_peer_stats_info;
7613
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05307614/**
7615 * struct wmi_host_atf_peer_stats_event
7616 * @pdev_id: pdev_id
7617 * @num_atf_peers: number of peers in token_info_list
7618 * @comp_usable_airtime: computed usable airtime in tokens
7619 * @reserved[4]: reserved for future use
7620 * @wmi_host_atf_peer_stats_info token_info_list: list of num_atf_peers
7621 */
Sathish Kumar7e2eaed2016-11-14 17:44:29 +05307622typedef struct {
Kiran Venkatappa6e7bb5e2017-02-08 14:51:13 +05307623 uint32_t pdev_id;
7624 uint32_t num_atf_peers;
7625 uint32_t comp_usable_airtime;
7626 uint32_t reserved[4];
7627 wmi_host_atf_peer_stats_info token_info_list[1];
Sathish Kumar7e2eaed2016-11-14 17:44:29 +05307628} wmi_host_atf_peer_stats_event;
7629
Govind Singh89727882016-04-15 13:58:27 +05307630/**
7631 * struct wmi_host_ath_dcs_cw_int
7632 * @channel: either number or freq in mhz
7633 */
7634typedef struct {
7635 uint32_t channel;
7636} wmi_host_ath_dcs_cw_int;
Govind Singhc10bde82016-05-02 17:59:24 +05307637
7638#define WMI_MAX_POWER_DBG_ARGS 8
7639
7640/**
7641 * struct wmi_power_dbg_params - power debug command parameter
7642 * @pdev_id: subsystem identifier
7643 * @module_id: parameter id
7644 * @num_arg: no of arguments
7645 * @args: arguments
7646 */
7647struct wmi_power_dbg_params {
7648 uint32_t pdev_id;
7649 uint32_t module_id;
7650 uint32_t num_args;
7651 uint32_t args[WMI_MAX_POWER_DBG_ARGS];
7652};
7653
Gupta, Kapil7b768002016-04-25 19:14:19 +05307654/**
7655 * struct wmi_adaptive_dwelltime_params - the adaptive dwelltime params
7656 * @vdev_id: vdev id
7657 * @is_enabled: Adaptive dwell time is enabled/disabled
7658 * @dwelltime_mode: global default adaptive dwell mode
7659 * @lpf_weight: weight to calculate the average low pass
7660 * filter for channel congestion
7661 * @passive_mon_intval: intval to monitor wifi activity in passive scan in msec
7662 * @wifi_act_threshold: % of wifi activity used in passive scan 0-100
7663 *
7664 */
7665struct wmi_adaptive_dwelltime_params {
7666 uint32_t vdev_id;
7667 bool is_enabled;
7668 enum wmi_dwelltime_adaptive_mode dwelltime_mode;
7669 uint8_t lpf_weight;
7670 uint8_t passive_mon_intval;
7671 uint8_t wifi_act_threshold;
7672};
Govind Singhc7cd2d62016-06-21 14:33:26 +05307673
7674/**
Kapil Guptaf6eb7312017-02-24 15:50:03 +05307675 * struct wmi_per_roam_config - per based roaming parameters
7676 * @enable: if PER based roaming is enabled/disabled
7677 * @tx_high_rate_thresh: high rate threshold at which PER based
7678 * roam will stop in tx path
7679 * @rx_high_rate_thresh: high rate threshold at which PER based
7680 * roam will stop in rx path
7681 * @tx_low_rate_thresh: rate below which traffic will be considered
7682 * for PER based roaming in Tx path
7683 * @rx_low_rate_thresh: rate below which traffic will be considered
7684 * for PER based roaming in Tx path
7685 * @tx_rate_thresh_percnt: % above which when traffic is below low_rate_thresh
7686 * will be considered for PER based scan in tx path
7687 * @rx_rate_thresh_percnt: % above which when traffic is below low_rate_thresh
7688 * will be considered for PER based scan in rx path
7689 * @per_rest_time: time for which PER based roam will wait once it
7690 * issues a roam scan.
Kapil Gupta7dae4262017-02-13 15:51:52 +05307691 * @tx_per_mon_time: Minimum time required to be considered as valid scenario
7692 * for PER based roam in tx path
7693 * @rx_per_mon_time: Minimum time required to be considered as valid scenario
7694 * for PER based roam in rx path
Selvaraj, Sridharc1a80d02017-05-17 16:05:15 +05307695 * @min_candidate_rssi: Minimum RSSI threshold for candidate AP to be used for
7696 * PER based roaming
Kapil Guptaf6eb7312017-02-24 15:50:03 +05307697 */
7698struct wmi_per_roam_config {
7699 uint32_t enable;
7700 uint32_t tx_high_rate_thresh;
7701 uint32_t rx_high_rate_thresh;
7702 uint32_t tx_low_rate_thresh;
7703 uint32_t rx_low_rate_thresh;
7704 uint32_t tx_rate_thresh_percnt;
7705 uint32_t rx_rate_thresh_percnt;
7706 uint32_t per_rest_time;
Kapil Gupta7dae4262017-02-13 15:51:52 +05307707 uint32_t tx_per_mon_time;
7708 uint32_t rx_per_mon_time;
Selvaraj, Sridharc1a80d02017-05-17 16:05:15 +05307709 uint32_t min_candidate_rssi;
Kapil Guptaf6eb7312017-02-24 15:50:03 +05307710};
7711
7712/**
7713 * struct wmi_per_roam_config_req: PER based roaming config request
7714 * @vdev_id: vdev id on which config needs to be set
7715 * @per_config: PER config
7716 */
7717struct wmi_per_roam_config_req {
7718 uint8_t vdev_id;
7719 struct wmi_per_roam_config per_config;
7720};
7721
7722/**
Govind Singhc7cd2d62016-06-21 14:33:26 +05307723 * struct wmi_fw_dump_seg_req - individual segment details
7724 * @seg_id - segment id.
7725 * @seg_start_addr_lo - lower address of the segment.
7726 * @seg_start_addr_hi - higher address of the segment.
7727 * @seg_length - length of the segment.
7728 * @dst_addr_lo - lower address of the destination buffer.
7729 * @dst_addr_hi - higher address of the destination buffer.
7730 *
7731 * This structure carries the information to firmware about the
7732 * individual segments. This structure is part of firmware memory
7733 * dump request.
7734 */
7735struct wmi_fw_dump_seg_req {
7736 uint8_t seg_id;
7737 uint32_t seg_start_addr_lo;
7738 uint32_t seg_start_addr_hi;
7739 uint32_t seg_length;
7740 uint32_t dst_addr_lo;
7741 uint32_t dst_addr_hi;
7742};
7743
7744/**
7745 * enum wmi_userspace_log_level - Log level at userspace
7746 * @WMI_LOG_LEVEL_NO_COLLECTION: verbose_level 0 corresponds to no collection
7747 * @WMI_LOG_LEVEL_NORMAL_COLLECT: verbose_level 1 correspond to normal log
7748 * level with minimal user impact. This is the default value.
7749 * @WMI_LOG_LEVEL_ISSUE_REPRO: verbose_level 2 are enabled when user is lazily
7750 * trying to reproduce a problem, wifi performances and power can be impacted
7751 * but device should not otherwise be significantly impacted
7752 * @WMI_LOG_LEVEL_ACTIVE: verbose_level 3+ are used when trying to
7753 * actively debug a problem
7754 *
7755 * Various log levels defined in the userspace for logging applications
7756 */
7757enum wmi_userspace_log_level {
7758 WMI_LOG_LEVEL_NO_COLLECTION,
7759 WMI_LOG_LEVEL_NORMAL_COLLECT,
7760 WMI_LOG_LEVEL_ISSUE_REPRO,
7761 WMI_LOG_LEVEL_ACTIVE,
7762};
7763
Padma, Santhosh Kumar73524052016-09-11 18:24:59 +05307764/**
Kiran Venkatappa176fe6c2016-12-26 15:38:06 +05307765 * HW mode config type replicated from FW header
7766 * @WMI_HOST_HW_MODE_SINGLE: Only one PHY is active.
7767 * @WMI_HOST_HW_MODE_DBS: Both PHYs are active in different bands,
7768 * one in 2G and another in 5G.
7769 * @WMI_HOST_HW_MODE_SBS_PASSIVE: Both PHYs are in passive mode (only rx) in
7770 * same band; no tx allowed.
7771 * @WMI_HOST_HW_MODE_SBS: Both PHYs are active in the same band.
7772 * Support for both PHYs within one band is planned
7773 * for 5G only(as indicated in WMI_MAC_PHY_CAPABILITIES),
7774 * but could be extended to other bands in the future.
7775 * The separation of the band between the two PHYs needs
7776 * to be communicated separately.
7777 * @WMI_HOST_HW_MODE_DBS_SBS: 3 PHYs, with 2 on the same band doing SBS
7778 * as in WMI_HW_MODE_SBS, and 3rd on the other band
Kiran Venkatappa29d4ef02017-08-02 12:11:09 +05307779 * @WMI_HOST_HW_MODE_DBS_OR_SBS: Two PHY with one PHY capabale of both 2G and
7780 * 5G. It can support SBS (5G + 5G) OR DBS (5G + 2G).
Kiran Venkatappaaf1dae32016-12-23 19:58:54 +05307781 * @WMI_HOST_HW_MODE_MAX: Max hw_mode_id. Used to indicate invalid mode.
Kiran Venkatappa176fe6c2016-12-26 15:38:06 +05307782 */
7783enum wmi_host_hw_mode_config_type {
7784 WMI_HOST_HW_MODE_SINGLE = 0,
7785 WMI_HOST_HW_MODE_DBS = 1,
7786 WMI_HOST_HW_MODE_SBS_PASSIVE = 2,
7787 WMI_HOST_HW_MODE_SBS = 3,
7788 WMI_HOST_HW_MODE_DBS_SBS = 4,
Kiran Venkatappa29d4ef02017-08-02 12:11:09 +05307789 WMI_HOST_HW_MODE_DBS_OR_SBS = 5,
Kiran Venkatappaaf1dae32016-12-23 19:58:54 +05307790 WMI_HOST_HW_MODE_MAX,
Kiran Venkatappa176fe6c2016-12-26 15:38:06 +05307791};
7792
Sathish Kumar7e2eaed2016-11-14 17:44:29 +05307793/*
7794 * struct wmi_host_peer_txmu_cnt_event
7795 * @tx_mu_transmitted - MU-MIMO tx count
7796 */
7797typedef struct {
7798 uint32_t tx_mu_transmitted;
7799} wmi_host_peer_txmu_cnt_event;
7800
Manikandan Mohan7e5ad482016-12-13 13:14:06 -08007801#define MAX_SAR_LIMIT_ROWS_SUPPORTED 64
7802/**
Jeff Johnsonefb43392017-12-14 15:50:16 -08007803 * struct sar_limit_cmd_row - sar limits row
Manikandan Mohan7e5ad482016-12-13 13:14:06 -08007804 * @band_id: Optional param for frequency band
Jeff Johnsonefb43392017-12-14 15:50:16 -08007805 * See %enum wmi_sar_band_id_flags for possible values
Manikandan Mohan7e5ad482016-12-13 13:14:06 -08007806 * @chain_id: Optional param for antenna chain id
7807 * @mod_id: Optional param for modulation scheme
Jeff Johnsonefb43392017-12-14 15:50:16 -08007808 * See %enum wmi_sar_mod_id_flags for possible values
Manikandan Mohan7e5ad482016-12-13 13:14:06 -08007809 * @limit_value: Mandatory param providing power limits in steps of 0.5 dbm
7810 * @validity_bitmap: bitmap of valid optional params in sar_limit_cmd_row struct
Jeff Johnsonefb43392017-12-14 15:50:16 -08007811 * See WMI_SAR_*_VALID_MASK for possible values
Manikandan Mohan7e5ad482016-12-13 13:14:06 -08007812 */
7813struct sar_limit_cmd_row {
7814 uint32_t band_id;
7815 uint32_t chain_id;
7816 uint32_t mod_id;
7817 uint32_t limit_value;
7818 uint32_t validity_bitmap;
7819};
7820
7821/**
Jeff Johnsonefb43392017-12-14 15:50:16 -08007822 * struct sar_limit_cmd_params - sar limits params
Manikandan Mohan7e5ad482016-12-13 13:14:06 -08007823 * @sar_enable: flag to enable SAR
Jeff Johnsonefb43392017-12-14 15:50:16 -08007824 * See %enum wmi_sar_feature_state_flags for possible values
Manikandan Mohan7e5ad482016-12-13 13:14:06 -08007825 * @num_limit_rows: number of items in sar_limits
7826 * @commit_limits: indicates firmware to start apply new SAR values
7827 * @sar_limit_row_list: pointer to array of sar limit rows
7828 */
7829struct sar_limit_cmd_params {
7830 uint32_t sar_enable;
7831 uint32_t num_limit_rows;
7832 uint32_t commit_limits;
7833 struct sar_limit_cmd_row *sar_limit_row_list;
7834};
7835
Jeff Johnsonefb43392017-12-14 15:50:16 -08007836/**
7837 * struct sar_limit_event_row - sar limits row
7838 * @band_id: Frequency band.
7839 * See %enum wmi_sar_band_id_flags for possible values
7840 * @chain_id: Chain id
7841 * @mod_id: Modulation scheme
7842 * See %enum wmi_sar_mod_id_flags for possible values
7843 * @limit_value: Power limits in steps of 0.5 dbm that is currently active for
7844 * the given @band_id, @chain_id, and @mod_id
7845 */
7846struct sar_limit_event_row {
7847 uint32_t band_id;
7848 uint32_t chain_id;
7849 uint32_t mod_id;
7850 uint32_t limit_value;
7851};
7852
7853/**
7854 * struct sar_limit_event - sar limits params
7855 * @sar_enable: Current status of SAR enablement.
7856 * See %enum wmi_sar_feature_state_flags for possible values
7857 * @num_limit_rows: number of items in sar_limits
7858 * @sar_limit_row: array of sar limit rows. Only @num_limit_rows
7859 * should be considered valid.
7860 */
7861struct sar_limit_event {
7862 uint32_t sar_enable;
7863 uint32_t num_limit_rows;
7864 struct sar_limit_event_row
7865 sar_limit_row[MAX_SAR_LIMIT_ROWS_SUPPORTED];
7866};
7867
Sathish Kumar7e2eaed2016-11-14 17:44:29 +05307868/*
7869 * struct wmi_peer_gid_userpos_list_event
7870 * @usr_list - User list
7871 */
7872#define GID_OVERLOAD_GROUP_COUNT 15
7873typedef struct {
7874 uint32_t usr_list[GID_OVERLOAD_GROUP_COUNT];
7875} wmi_host_peer_gid_userpos_list_event;
7876
Rajeev Kumar Sirasanagandlacddf6fe2016-11-22 21:28:54 +05307877/**
7878 * enum rcpi_measurement_type - for identifying type of rcpi measurement
7879 * @RCPI_MEASUREMENT_TYPE_AVG_MGMT: avg rcpi of mgmt frames
7880 * @RCPI_MEASUREMENT_TYPE_AVG_DATA: avg rcpi of data frames
7881 * @RCPI_MEASUREMENT_TYPE_LAST_MGMT: rcpi of last mgmt frame
7882 * @RCPI_MEASUREMENT_TYPE_LAST_DATA: rcpi of last data frame
7883 * @RCPI_MEASUREMENT_TYPE_INVALID: invalid rcpi measurement type
7884 */
7885enum rcpi_measurement_type {
7886 RCPI_MEASUREMENT_TYPE_AVG_MGMT = 0x1,
7887 RCPI_MEASUREMENT_TYPE_AVG_DATA = 0x2,
7888 RCPI_MEASUREMENT_TYPE_LAST_MGMT = 0x3,
7889 RCPI_MEASUREMENT_TYPE_LAST_DATA = 0x4,
7890 RCPI_MEASUREMENT_TYPE_INVALID = 0x5,
7891};
7892
7893/**
7894 * struct rcpi_req - RCPI req parameter
7895 * @vdev_id: virtual device id
7896 * @measurement_type: type of rcpi from enum wmi_rcpi_measurement_type
7897 * @mac_addr: peer mac addr for which measurement is required
7898 */
7899struct rcpi_req {
7900 uint32_t vdev_id;
7901 enum rcpi_measurement_type measurement_type;
7902 uint8_t mac_addr[IEEE80211_ADDR_LEN];
7903};
7904
7905/**
7906 * struct rcpi_res - RCPI response parameter
7907 * @vdev_id: virtual device id
7908 * @measurement_type: type of rcpi from enum wmi_rcpi_measurement_type
7909 * @mac_addr: peer mac addr for which measurement is required
7910 * @rcpi_value: value of RCPI computed by firmware
7911 */
7912struct rcpi_res {
7913 uint32_t vdev_id;
7914 enum rcpi_measurement_type measurement_type;
7915 uint8_t mac_addr[IEEE80211_ADDR_LEN];
7916 int32_t rcpi_value;
7917};
7918
Sathish Kumar7e2eaed2016-11-14 17:44:29 +05307919#define WMI_HOST_BOARD_MCN_STRING_MAX_SIZE 19
7920#define WMI_HOST_BOARD_MCN_STRING_BUF_SIZE \
7921 (WMI_HOST_BOARD_MCN_STRING_MAX_SIZE+1) /* null-terminator */
7922
7923typedef struct {
7924 uint32_t software_cal_version;
7925 uint32_t board_cal_version;
7926 /* board_mcn_detail:
7927 * Provide a calibration message string for the host to display.
7928 * Note: on a big-endian host, the 4 bytes within each A_UINT32 portion
7929 * of a WMI message will be automatically byteswapped by the copy engine
7930 * as the messages are transferred between host and target, to convert
7931 * between the target's little-endianness and the host's big-endianness.
7932 * Consequently, a big-endian host should manually unswap the bytes
7933 * within the board_mcn_detail string buffer to get the bytes back into
7934 * the desired natural order.
7935 */
7936 uint8_t board_mcn_detail[WMI_HOST_BOARD_MCN_STRING_BUF_SIZE];
7937 uint32_t cal_ok; /* filled with CALIBRATION_STATUS enum value */
7938} wmi_host_pdev_check_cal_version_event;
7939
Kiran Venkatappa4110f0a2016-12-27 22:51:29 +05307940/**
7941 * enum WMI_HOST_CALIBRATION_STATUS - Host defined Enums for cal status
7942 * @WMI_HOST_NO_FEATURE: The board was calibrated with a meta
7943 * which did not have this feature
7944 * @WMI_HOST_CALIBRATION_OK: The calibration status is OK
7945 * @WMI_HOST_CALIBRATION_NOT_OK: The calibration status is NOT OK
7946 */
7947enum WMI_HOST_CALIBRATION_STATUS {
7948 WMI_HOST_NO_FEATURE = 0,
7949 WMI_HOST_CALIBRATION_OK,
7950 WMI_HOST_CALIBRATION_NOT_OK,
7951};
7952
Sathish Kumar617535c2017-01-24 17:51:26 +05307953/**
7954 * struct wmi_host_pdev_utf_event - Host defined struct to hold utf event data
7955 * @data: Pointer to data
7956 * @datalen: Data length
Kiran Venkatappac98badb2017-06-01 16:08:17 +05307957 * @pdev_id: Pdev_id of data
Sathish Kumar617535c2017-01-24 17:51:26 +05307958 *
7959 */
7960struct wmi_host_pdev_utf_event {
7961 uint8_t *data;
7962 uint16_t datalen;
Kiran Venkatappa2a93f6f2017-02-28 12:42:36 +05307963 uint32_t pdev_id;
Sathish Kumar617535c2017-01-24 17:51:26 +05307964};
7965
Kiran Venkatappa9b7a9592016-12-29 18:09:32 +05307966/**
Kiran Venkatappac98badb2017-06-01 16:08:17 +05307967 * struct wmi_host_utf_seg_header_info - Host defined struct to map seg info in
7968 * UTF event
7969 * @len: segment length
7970 * @msgref: message reference
7971 * @segment_info: segment info
7972 * @pdev_id: pdev_id
7973 *
7974 */
7975struct wmi_host_utf_seg_header_info {
7976 uint32_t len;
7977 uint32_t msgref;
7978 uint32_t segment_info;
7979 uint32_t pdev_id;
7980};
7981
7982/**
Kiran Venkatappa3d514982017-02-28 14:19:17 +05307983 * struct wmi_host_pdev_qvit_event - Host defined struct to hold qvit event data
7984 * @data: Pointer to data
7985 * @datalen: Data length
7986 *
7987 */
7988struct wmi_host_pdev_qvit_event {
7989 uint8_t *data;
7990 uint16_t datalen;
7991 uint32_t pdev_id;
7992};
7993
7994/**
Vijay Pamidipatiadd0ba72017-01-17 12:53:05 +05307995 * struct wmi_host_peer_delete_response_event - Peer Delete response event param
7996 * @vdev_id: vdev id
7997 * @mac_address: Peer Mac Address
7998 *
7999 */
8000struct wmi_host_peer_delete_response_event {
8001 uint32_t vdev_id;
8002 struct qdf_mac_addr mac_address;
8003};
8004
8005/**
Kiran Venkatappa9b7a9592016-12-29 18:09:32 +05308006 * @struct wmi_host_dcs_interference_param
8007 * @interference_type: Type of DCS Interference
8008 * @uint32_t pdev_id: pdev id
8009 */
8010struct wmi_host_dcs_interference_param {
8011 uint32_t interference_type;
8012 uint32_t pdev_id;
8013};
8014
Kiran Venkatappa9f5fcc02016-12-29 22:07:14 +05308015/*
8016 * struct wmi_host_fips_event_param: FIPS event param
8017 * @pdev_id: pdev id
8018 * @error_status: Error status: 0 (no err), 1, or OPER_TIMEOUR
8019 * @data_len: FIPS data lenght
8020 * @data: pointer to data
8021 */
8022struct wmi_host_fips_event_param {
8023 uint32_t pdev_id;
8024 uint32_t error_status;
8025 uint32_t data_len;
8026 uint32_t *data;
8027};
Kiran Venkatappa3f061a92017-02-08 14:57:16 +05308028
8029/**
8030 * struct wmi_host_proxy_ast_reserve_param
8031 * @pdev_id: pdev id
8032 * @result: result
8033 */
8034struct wmi_host_proxy_ast_reserve_param {
8035 uint32_t pdev_id;
8036 uint32_t result;
8037};
Kiran Venkatappaaf1dae32016-12-23 19:58:54 +05308038
8039/**
8040 * struct wmi_host_pdev_band_to_mac - freq range for mac
8041 * @pdev_id: PDEV ID to identifiy mac
8042 * @start_freq: start frequency value
8043 * @end_freq: end frequency value
8044 */
8045struct wmi_host_pdev_band_to_mac {
8046 uint32_t pdev_id;
8047 uint32_t start_freq;
8048 uint32_t end_freq;
8049};
8050#define WMI_HOST_MAX_PDEV 3
8051
8052/**
8053 * struct wmi_init_cmd_param - INIT command params
8054 * @target_resource_config: pointer to resource config
8055 * @num_mem_chunks: number of memory chunks
8056 * @struct wmi_host_mem_chunk: pointer to memory chunks
8057 * @hw_mode_index: HW mode index chosen
8058 * @num_band_to_mac: Number of band to mac setting
8059 * @struct wmi_host_pdev_band_to_mac: band to mac setting
8060 */
8061struct wmi_init_cmd_param {
8062 target_resource_config *res_cfg;
8063 uint8_t num_mem_chunks;
8064 struct wmi_host_mem_chunk *mem_chunks;
8065 uint32_t hw_mode_id;
8066 uint32_t num_band_to_mac;
8067 struct wmi_host_pdev_band_to_mac band_to_mac[WMI_HOST_MAX_PDEV];
8068};
Sathish Kumar907a7462017-02-27 10:35:40 +05308069
8070/**
8071 * struct pdev_csa_switch_count_status - CSA switch count status event param
8072 * @pdev_id: Physical device identifier
8073 * @current_switch_count: Current CSA switch count
8074 * @num_vdevs: Number of vdevs that need restart
8075 * @vdev_ids: Array containing the vdev ids that need restart
8076 */
8077struct pdev_csa_switch_count_status {
8078 uint32_t pdev_id;
8079 uint32_t current_switch_count;
8080 uint32_t num_vdevs;
8081 uint32_t *vdev_ids;
8082};
8083
Dustin Brown4def3162017-01-13 15:24:07 -08008084/**
8085 * enum wmi_host_active-bpf_mode - FW_ACTIVE_BPF_MODE, replicated from FW header
8086 * @WMI_HOST_ACTIVE_BPF_DISABLED: BPF is disabled for all packets in active mode
8087 * @WMI_HOST_ACTIVE_BPF_ENABLED: BPF is enabled for all packets in active mode
8088 * @WMI_HOST_ACTIVE_BPF_ADAPTIVE: BPF is enabled for packets up to some
8089 * threshold in active mode
8090 */
8091enum wmi_host_active_bpf_mode {
8092 WMI_HOST_ACTIVE_BPF_DISABLED = (1 << 1),
8093 WMI_HOST_ACTIVE_BPF_ENABLED = (1 << 2),
8094 WMI_HOST_ACTIVE_BPF_ADAPTIVE = (1 << 3)
8095};
8096
Sathish Kumar125754e2017-04-24 11:36:00 +05308097/**
8098 * struct coex_config_params - Coex config command params
8099 * @vdev_id: Virtual AP device identifier
8100 * @config_type: Configuration type - wmi_coex_config_type enum
8101 * @config_arg1: Configuration argument based on config type
8102 * @config_arg2: Configuration argument based on config type
8103 * @config_arg3: Configuration argument based on config type
8104 * @config_arg4: Configuration argument based on config type
8105 * @config_arg5: Configuration argument based on config type
8106 * @config_arg6: Configuration argument based on config type
8107 */
8108struct coex_config_params {
8109 uint32_t vdev_id;
8110 uint32_t config_type;
8111 uint32_t config_arg1;
8112 uint32_t config_arg2;
8113 uint32_t config_arg3;
8114 uint32_t config_arg4;
8115 uint32_t config_arg5;
8116 uint32_t config_arg6;
8117};
8118
Kiran Venkatappa49341042017-05-10 16:24:51 +05308119#define WMI_HOST_PDEV_ID_SOC 0xFF
8120#define WMI_HOST_PDEV_ID_0 0
8121#define WMI_HOST_PDEV_ID_1 1
8122#define WMI_HOST_PDEV_ID_2 2
Sathish Kumar744fbf72017-05-17 18:05:15 +05308123
8124/**
8125 * struct tbttoffset_params - Tbttoffset event params
8126 * @vdev_id: Virtual AP device identifier
8127 * @tbttoffset : Tbttoffset for the virtual AP device
8128 */
8129struct tbttoffset_params {
8130 uint32_t vdev_id;
8131 uint32_t tbttoffset;
8132};
8133
Nitesh Shahfb9e88b2017-05-22 15:49:00 +05308134#define WMI_SCAN_CLIENT_MAX 7
8135
8136/**
8137 * struct wmi_dbs_scan_sel_params - DBS scan selection params
8138 * @num_clients: Number of scan clients dutycycle
8139 * @pdev_id: pdev_id for identifying the MAC
8140 * @module_id: scan client module id
8141 * @num_dbs_scans: number of DBS scans
8142 * @num_non_dbs_scans: number of non-DBS scans
8143 */
8144struct wmi_dbs_scan_sel_params {
8145 uint32_t num_clients;
8146 uint32_t pdev_id;
8147 uint32_t module_id[WMI_SCAN_CLIENT_MAX];
8148 uint32_t num_dbs_scans[WMI_SCAN_CLIENT_MAX];
8149 uint32_t num_non_dbs_scans[WMI_SCAN_CLIENT_MAX];
8150};
8151
Ganesh Kondabattini20b086b2017-07-10 11:54:11 +05308152/**
8153 * struct wmi_limit_off_chan_param - limit off channel parameters
8154 * @vdev_id: vdev id
8155 * @status: status of the command (enable/disable)
8156 * @max_offchan_time: max off channel time
8157 * @rest_time: home channel time
8158 * @skip_dfs_chans: skip dfs channels during scan
8159 */
8160struct wmi_limit_off_chan_param {
8161 uint32_t vdev_id;
8162 bool status;
8163 uint32_t max_offchan_time;
8164 uint32_t rest_time;
8165 bool skip_dfs_chans;
8166};
8167
Varun Reddy Yeturu4cae4292017-07-20 09:45:01 -07008168/**
8169 * struct wmi_mawc_roam_params - Motion Aided wireless connectivity params
8170 * @vdev_id: VDEV on which the parameters should be applied
8171 * @enable: MAWC roaming feature enable/disable
8172 * @traffic_load_threshold: Traffic threshold in kBps for MAWC roaming
8173 * @best_ap_rssi_threshold: AP RSSI Threshold for MAWC roaming
8174 * @rssi_stationary_high_adjust: High RSSI adjustment value to suppress scan
8175 * @rssi_stationary_low_adjust: Low RSSI adjustment value to suppress scan
8176 */
8177struct wmi_mawc_roam_params {
8178 uint8_t vdev_id;
8179 bool enable;
8180 uint32_t traffic_load_threshold;
8181 uint32_t best_ap_rssi_threshold;
8182 uint8_t rssi_stationary_high_adjust;
8183 uint8_t rssi_stationary_low_adjust;
8184};
yeshwanth sriram guntuka230af892017-09-01 17:56:07 +05308185/**
8186 * struct wmi_btm_config - BSS Transition Management offload params
8187 * @vdev_id: VDEV on which the parameters should be applied
8188 * @btm_offload_config: BTM config
Jiachao Wu26f55de2018-01-08 16:45:09 +08008189 * @btm_solicited_timeout: Timeout value for waiting BTM request
8190 * @btm_max_attempt_cnt: Maximum attempt for sending BTM query to ESS
8191 * @btm_sticky_time: Stick time after roaming to new AP by BTM
yeshwanth sriram guntuka230af892017-09-01 17:56:07 +05308192 */
8193struct wmi_btm_config {
8194 uint8_t vdev_id;
8195 uint32_t btm_offload_config;
Jiachao Wu26f55de2018-01-08 16:45:09 +08008196 uint32_t btm_solicited_timeout;
8197 uint32_t btm_max_attempt_cnt;
8198 uint32_t btm_sticky_time;
yeshwanth sriram guntuka230af892017-09-01 17:56:07 +05308199};
Varun Reddy Yeturu4cae4292017-07-20 09:45:01 -07008200
Anurag Chouhanc1705422017-09-11 14:56:30 +05308201/**
8202 * struct set_arp_stats - set/reset arp stats
8203 * @vdev_id: session id
8204 * @flag: enable/disable stats
8205 * @pkt_type: type of packet(1 - arp)
8206 * @ip_addr: subnet ipv4 address in case of encrypted packets
8207 */
8208struct set_arp_stats {
8209 uint32_t vdev_id;
8210 uint8_t flag;
8211 uint8_t pkt_type;
8212 uint32_t ip_addr;
8213};
8214
8215/**
8216 * struct get_arp_stats - get arp stats from firmware
8217 * @pkt_type: packet type(1 - ARP)
8218 * @vdev_id: session id
8219 */
8220struct get_arp_stats {
8221 uint8_t pkt_type;
8222 uint32_t vdev_id;
8223};
8224
Kiran Venkatappaa40870a2017-11-10 20:50:12 +05308225/**
8226 * struct wmi_host_ready_ev_param - Data revieved in ready event
Kiran Venkatappae27364f2017-11-28 12:23:24 +05308227 * @status: FW init status. Success or Failure.
Kiran Venkatappaa40870a2017-11-10 20:50:12 +05308228 * @num_dscp_table: Number of DSCP table supported in FW
8229 * @num_extra_mac_addr: Extra mac address present in ready event. Used
8230 * in DBDC mode to provide multiple mac per pdev.
8231 * @num_total_peer: Total number of peers FW could allocate. Zero means
8232 * FW could allocate num peers requested by host in init.
8233 * Otherwise, host need update it max_peer to this value.
Kiran Venkatappae27364f2017-11-28 12:23:24 +05308234 * @num_extra_peer: Number of extra peers created and used within FW. Host
8235 * should expect peer_id can be num_total_peer + num_extra_peer
8236 * but it can create only upto num_total_peer.
Kiran Venkatappaa40870a2017-11-10 20:50:12 +05308237 * @agile_capability: Boolean specification of whether the target supports
8238 * agile DFS, by means of using one 80 MHz radio chain for
8239 * radar detection, concurrently with using another radio
8240 * chain for non-160 MHz regular operation.
8241 */
8242struct wmi_host_ready_ev_param {
Kiran Venkatappae27364f2017-11-28 12:23:24 +05308243 uint32_t status;
Kiran Venkatappaa40870a2017-11-10 20:50:12 +05308244 uint32_t num_dscp_table;
8245 uint32_t num_extra_mac_addr;
8246 uint32_t num_total_peer;
Kiran Venkatappae27364f2017-11-28 12:23:24 +05308247 uint32_t num_extra_peer;
Kiran Venkatappaa40870a2017-11-10 20:50:12 +05308248 bool agile_capability;
8249};
Kiran Venkatappaf9b1de32017-11-08 19:32:23 +05308250
8251/**
8252 * struct bcn_offload_control - Beacon offload control params
8253 * @vdev_id: vdev identifer of VAP to control beacon tx
8254 * @bcn_tx_enable: Enable or Disable beacon TX in offload mode
8255 */
8256struct bcn_offload_control {
8257 uint32_t vdev_id;
8258 bool bcn_tx_enable;
8259};
8260
Rathees kumar Chinannanaff64b02017-11-22 17:03:57 +05308261/**
8262 * struct wds_entry - WDS entry structure
8263 * @peer_mac: peer mac
8264 * @wds_mac: wds mac address
8265 * @flags: flags
8266 */
8267struct wdsentry {
8268 u_int8_t peer_mac[IEEE80211_ADDR_LEN];
8269 u_int8_t wds_mac[IEEE80211_ADDR_LEN];
8270 A_UINT32 flags;
8271};
8272
Sathish Kumar3d3cf4f2017-11-17 17:30:41 +05308273#define WMI_HOST_DBR_RING_ADDR_LO_S 0
8274#define WMI_HOST_DBR_RING_ADDR_LO 0xffffffff
8275
8276#define WMI_HOST_DBR_RING_ADDR_LO_GET(dword) \
8277 WMI_HOST_F_MS(dword, WMI_HOST_DBR_RING_ADDR_LO)
8278#define WMI_HOST_DBR_RING_ADDR_LO_SET(dword, val) \
8279 WMI_HOST_F_RMW(dword, val, WMI_HOST_DBR_RING_ADDR_LO)
8280
8281#define WMI_HOST_DBR_RING_ADDR_HI_S 0
8282#define WMI_HOST_DBR_RING_ADDR_HI 0xf
8283
8284#define WMI_HOST_DBR_RING_ADDR_HI_GET(dword) \
8285 WMI_HOST_F_MS(dword, WMI_HOST_DBR_RING_ADDR_HI)
8286#define WMI_HOST_DBR_RING_ADDR_HI_SET(dword, val) \
8287 WMI_HOST_F_RMW(dword, val, WMI_HOST_DBR_RING_ADDR_HI)
8288
8289#define WMI_HOST_DBR_DATA_ADDR_LO_S 0
8290#define WMI_HOST_DBR_DATA_ADDR_LO 0xffffffff
8291
8292#define WMI_HOST_DBR_DATA_ADDR_LO_GET(dword) \
8293 WMI_HOST_F_MS(dword, WMI_HOST_DBR_DATA_ADDR_LO)
8294#define WMI_HOST_DBR_DATA_ADDR_LO_SET(dword, val) \
8295 WMI_HOST_F_RMW(dword, val, WMI_HOST_DBR_DATA_ADDR_LO)
8296
8297#define WMI_HOST_DBR_DATA_ADDR_HI_S 0
8298#define WMI_HOST_DBR_DATA_ADDR_HI 0xf
8299
8300#define WMI_HOST_DBR_DATA_ADDR_HI_GET(dword) \
8301 WMI_HOST_F_MS(dword, WMI_HOST_DBR_DATA_ADDR_HI)
8302#define WMI_HOST_DBR_DATA_ADDR_HI_SET(dword, val) \
8303 WMI_HOST_F_RMW(dword, val, WMI_HOST_DBR_DATA_ADDR_HI)
8304
8305#define WMI_HOST_DBR_DATA_ADDR_HI_HOST_DATA_S 12
8306#define WMI_HOST_DBR_DATA_ADDR_HI_HOST_DATA 0xfffff
8307
8308#define WMI_HOST_DBR_DATA_ADDR_HI_HOST_DATA_GET(dword) \
8309 WMI_HOST_F_MS(dword, WMI_HOST_DBR_DATA_ADDR_HI_HOST_DATA)
8310#define WMI_HOST_DBR_DATA_ADDR_HI_HOST_DATA_SET(dword, val) \
8311 WMI_HOST_F_RMW(dword, val, WMI_HOST_DBR_DATA_ADDR_HI_HOST_DATA)
8312
8313/**
8314 * struct direct_buf_rx_entry: direct buffer rx release entry structure
8315 *
8316 * @addr_lo: LSB 32-bits of the buffer
8317 * @addr_hi: MSB 32-bits of the buffer
8318 * @len: Length of the buffer
8319 */
8320struct direct_buf_rx_entry {
8321 uint32_t paddr_lo;
8322 uint32_t paddr_hi;
8323 uint32_t len;
8324};
8325
8326/**
8327 * struct direct_buf_rx_rsp: direct buffer rx response structure
8328 *
8329 * @pdev_id: Index of the pdev for which response is received
8330 * @mod_mod: Index of the module for which respone is received
8331 * @num_buf_release_entry: Number of buffers released through event
8332 * @dbr_entries: Pointer to direct buffer rx entry struct
8333 */
8334struct direct_buf_rx_rsp {
8335 uint32_t pdev_id;
8336 uint32_t mod_id;
8337 uint32_t num_buf_release_entry;
8338 struct direct_buf_rx_entry *dbr_entries;
8339};
8340
8341/**
8342 * struct direct_buf_rx_cfg_req: direct buffer rx config request structure
8343 *
8344 * @pdev_id: Index of the pdev for which response is received
8345 * @mod_id: Index of the module for which respone is received
8346 * @base_paddr_lo: Lower 32bits of ring base address
8347 * @base_paddr_hi: Higher 32bits of ring base address
8348 * @head_idx_paddr_lo: Lower 32bits of head idx register address
8349 * @head_idx_paddr_hi: Higher 32bits of head idx register address
8350 * @tail_idx_paddr_lo: Lower 32bits of tail idx register address
8351 * @tail_idx_paddr_hi: Higher 32bits of tail idx register address
8352 * @buf_size: Size of the buffer for each pointer in the ring
8353 * @num_elems: Number of pointers allocated and part of the source ring
8354 */
8355struct direct_buf_rx_cfg_req {
8356 uint32_t pdev_id;
8357 uint32_t mod_id;
8358 uint32_t base_paddr_lo;
8359 uint32_t base_paddr_hi;
8360 uint32_t head_idx_paddr_lo;
8361 uint32_t head_idx_paddr_hi;
8362 uint32_t tail_idx_paddr_hi;
8363 uint32_t tail_idx_paddr_lo;
8364 uint32_t buf_size;
8365 uint32_t num_elems;
8366 uint32_t event_timeout_ms;
8367 uint32_t num_resp_per_event;
8368};
8369
Arif Hussain2cfde1d2017-12-27 16:23:45 -08008370/**
8371 * struct wmi_obss_detection_cfg_param - obss detection cfg
8372 * @vdev_id: vdev id
8373 * @obss_detect_period_ms: detection period in ms
8374 * @obss_11b_ap_detect_mode: detect whether there is 11b ap/ibss
8375 * @obss_11b_sta_detect_mode: detect whether there is 11b sta
8376 * connected with other APs
8377 * @obss_11g_ap_detect_mode: detect whether there is 11g AP
8378 * @obss_11a_detect_mode: detect whether there is legacy 11a traffic
8379 * @obss_ht_legacy_detect_mode: detect whether there is ap which is
8380 * ht legacy mode
8381 * @obss_ht_mixed_detect_mode: detect whether there is ap which is ht mixed mode
8382 * @obss_ht_20mhz_detect_mode: detect whether there is ap which has 20M only
8383 * station
8384 */
8385struct wmi_obss_detection_cfg_param {
8386 uint32_t vdev_id;
8387 uint32_t obss_detect_period_ms;
8388 uint32_t obss_11b_ap_detect_mode;
8389 uint32_t obss_11b_sta_detect_mode;
8390 uint32_t obss_11g_ap_detect_mode;
8391 uint32_t obss_11a_detect_mode;
8392 uint32_t obss_ht_legacy_detect_mode;
8393 uint32_t obss_ht_mixed_detect_mode;
8394 uint32_t obss_ht_20mhz_detect_mode;
8395};
8396
Arif Hussainf9f26b52018-01-12 13:15:04 -08008397/**
8398 * enum sap_obss_detection_reason - obss detection event reasons
8399 * @OBSS_OFFLOAD_DETECTION_DISABLED: OBSS detection disabled
8400 * @OBSS_OFFLOAD_DETECTION_PRESENT: OBSS present detection
8401 * @OBSS_OFFLOAD_DETECTION_ABSENT: OBSS absent detection
8402 *
8403 * Defines different types of reasons for obss detection event from firmware.
8404 */
8405enum wmi_obss_detection_reason {
8406 OBSS_OFFLOAD_DETECTION_DISABLED = 0,
8407 OBSS_OFFLOAD_DETECTION_PRESENT = 1,
8408 OBSS_OFFLOAD_DETECTION_ABSENT = 2,
8409};
8410
8411/**
8412 * struct wmi_obss_detect_info - OBSS detection info from firmware
8413 * @vdev_id: IDof the vdev to which this info belongs.
8414 * @reason: Indicate if present or Absent detection,
8415 * also if not supported offload for this vdev.
8416 * @matched_detection_masks: Detection bit map.
8417 * @matched_bssid_addr: MAC address valid for only if info is present detection.
8418 */
8419struct wmi_obss_detect_info {
8420 uint32_t vdev_id;
8421 enum wmi_obss_detection_reason reason;
8422 uint32_t matched_detection_masks;
8423 uint8_t matched_bssid_addr[IEEE80211_ADDR_LEN];
8424};
8425
Sathish Kumar7e2eaed2016-11-14 17:44:29 +05308426#endif /* _WMI_UNIFIED_PARAM_H_ */