xref: /wlan-driver/qca-wifi-host-cmn/dp/inc/cdp_txrx_cmn_struct.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2011-2021 The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name  *
5*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for
6*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
7*5113495bSYour Name  * above copyright notice and this permission notice appear in all
8*5113495bSYour Name  * copies.
9*5113495bSYour Name  *
10*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
18*5113495bSYour Name  */
19*5113495bSYour Name 
20*5113495bSYour Name  /**
21*5113495bSYour Name   * DOC: cdp_txrx_cmn_struct.h
22*5113495bSYour Name   * Define the host data path converged API functions
23*5113495bSYour Name   * called by the host control SW and the OS interface module
24*5113495bSYour Name   */
25*5113495bSYour Name #ifndef _CDP_TXRX_CMN_STRUCT_H_
26*5113495bSYour Name #define _CDP_TXRX_CMN_STRUCT_H_
27*5113495bSYour Name 
28*5113495bSYour Name /*
29*5113495bSYour Name  * For WIN legacy header compilation
30*5113495bSYour Name  * Temporary add dummy definitions
31*5113495bSYour Name  * should be removed properly WIN legacy code handle
32*5113495bSYour Name  */
33*5113495bSYour Name 
34*5113495bSYour Name #include "htc_api.h"
35*5113495bSYour Name #include "qdf_types.h"
36*5113495bSYour Name #include "qdf_nbuf.h"
37*5113495bSYour Name #include "qdf_atomic.h"
38*5113495bSYour Name #ifdef DP_MOB_DEFS
39*5113495bSYour Name #include <cdp_txrx_mob_def.h>
40*5113495bSYour Name #endif
41*5113495bSYour Name #include <cdp_txrx_handle.h>
42*5113495bSYour Name #include <cdp_txrx_stats_struct.h>
43*5113495bSYour Name #ifdef WLAN_RX_PKT_CAPTURE_ENH
44*5113495bSYour Name #include "cdp_txrx_extd_struct.h"
45*5113495bSYour Name #endif
46*5113495bSYour Name #ifdef WLAN_FEATURE_TX_LATENCY_STATS
47*5113495bSYour Name #include "qdf_list.h"
48*5113495bSYour Name #endif
49*5113495bSYour Name 
50*5113495bSYour Name #ifdef WLAN_MAX_CLIENTS_ALLOWED
51*5113495bSYour Name #define OL_TXRX_NUM_LOCAL_PEER_IDS (WLAN_MAX_CLIENTS_ALLOWED + 1 + 1 + 1)
52*5113495bSYour Name #endif
53*5113495bSYour Name 
54*5113495bSYour Name #ifndef OL_TXRX_NUM_LOCAL_PEER_IDS
55*5113495bSYour Name /*
56*5113495bSYour Name  * Each AP will occupy one ID, so it will occupy two IDs for AP-AP mode.
57*5113495bSYour Name  * Clients will be assigned max 32 IDs.
58*5113495bSYour Name  * STA(associated)/P2P DEV(self-PEER) will get one ID.
59*5113495bSYour Name  */
60*5113495bSYour Name #define OL_TXRX_NUM_LOCAL_PEER_IDS (32 + 1 + 1 + 1)
61*5113495bSYour Name #endif
62*5113495bSYour Name 
63*5113495bSYour Name #define CDP_BA_256_BIT_MAP_SIZE_DWORDS 8
64*5113495bSYour Name #define CDP_BA_64_BIT_MAP_SIZE_DWORDS 2
65*5113495bSYour Name 
66*5113495bSYour Name #define OL_TXRX_INVALID_PDEV_ID 0xff
67*5113495bSYour Name #define OL_TXRX_INVALID_LOCAL_PEER_ID 0xffff
68*5113495bSYour Name #define CDP_INVALID_VDEV_ID 0xff
69*5113495bSYour Name 
70*5113495bSYour Name /* Max vdev_stats_id(48) is as per the max vdevs supported by HW */
71*5113495bSYour Name #define CDP_MAX_VDEV_STATS_ID     0x30
72*5113495bSYour Name /* Invalid vdev_stats_id */
73*5113495bSYour Name #define CDP_INVALID_VDEV_STATS_ID 0xFF
74*5113495bSYour Name 
75*5113495bSYour Name /* METADATA used for wakeup triggers, specifically for Standby modes */
76*5113495bSYour Name #define CDP_STANDBY_METADATA 5588
77*5113495bSYour Name 
78*5113495bSYour Name /* Options for Dump Statistics */
79*5113495bSYour Name #define CDP_HDD_STATS               0
80*5113495bSYour Name #define CDP_TXRX_PATH_STATS         1
81*5113495bSYour Name #define CDP_TXRX_HIST_STATS         2
82*5113495bSYour Name #define CDP_TXRX_TSO_STATS          3
83*5113495bSYour Name #define CDP_HDD_NETIF_OPER_HISTORY  4
84*5113495bSYour Name #define CDP_DUMP_TX_FLOW_POOL_INFO  5
85*5113495bSYour Name #define CDP_TXRX_DESC_STATS         6
86*5113495bSYour Name #define CDP_HIF_STATS               7
87*5113495bSYour Name #define CDP_LRO_STATS               8
88*5113495bSYour Name #define CDP_NAPI_STATS              9
89*5113495bSYour Name #define CDP_WLAN_RX_BUF_DEBUG_STATS 10
90*5113495bSYour Name #define CDP_RX_RING_STATS          11
91*5113495bSYour Name #define CDP_DP_NAPI_STATS          12
92*5113495bSYour Name #define CDP_DP_RX_THREAD_STATS     13
93*5113495bSYour Name #define CDP_SCHEDULER_STATS        21
94*5113495bSYour Name #define CDP_TX_QUEUE_STATS         22
95*5113495bSYour Name #define CDP_BUNDLE_STATS           23
96*5113495bSYour Name #define CDP_CREDIT_STATS           24
97*5113495bSYour Name #define CDP_DISCONNECT_STATS       25
98*5113495bSYour Name #define CDP_DP_RX_FISA_STATS	   26
99*5113495bSYour Name #define CDP_DP_SWLM_STATS	   27
100*5113495bSYour Name #define CDP_DP_TX_HW_LATENCY_STATS 28
101*5113495bSYour Name 
102*5113495bSYour Name #define WME_AC_TO_TID(_ac) (       \
103*5113495bSYour Name 		((_ac) == WME_AC_VO) ? 6 : \
104*5113495bSYour Name 		((_ac) == WME_AC_VI) ? 5 : \
105*5113495bSYour Name 		((_ac) == WME_AC_BK) ? 1 : \
106*5113495bSYour Name 		0)
107*5113495bSYour Name 
108*5113495bSYour Name #define TID_TO_WME_AC(_tid) (      \
109*5113495bSYour Name 		(((_tid) == 0) || ((_tid) == 3)) ? WME_AC_BE : \
110*5113495bSYour Name 		(((_tid) == 1) || ((_tid) == 2)) ? WME_AC_BK : \
111*5113495bSYour Name 		(((_tid) == 4) || ((_tid) == 5)) ? WME_AC_VI : \
112*5113495bSYour Name 		WME_AC_VO)
113*5113495bSYour Name 
114*5113495bSYour Name #define CDP_MU_MAX_USERS 37
115*5113495bSYour Name #define CDP_MU_MAX_USER_INDEX (CDP_MU_MAX_USERS - 1)
116*5113495bSYour Name #define CDP_INVALID_PEER 0xffff
117*5113495bSYour Name #define CDP_INVALID_TID	 31
118*5113495bSYour Name #define CDP_INVALID_TX_ENCAP_TYPE	 6
119*5113495bSYour Name #define CDP_INVALID_SEC_TYPE		12
120*5113495bSYour Name 
121*5113495bSYour Name #define CDP_DATA_TID_MAX 8
122*5113495bSYour Name #define CDP_DATA_NON_QOS_TID 16
123*5113495bSYour Name 
124*5113495bSYour Name #define CDP_NUM_SA_BW 4
125*5113495bSYour Name /* Smart Antenna 320MHz BW Phy MAX Rate Code Index */
126*5113495bSYour Name #define CDP_SA_BW320_INX 4
127*5113495bSYour Name #define CDP_PERCENT_MACRO 100
128*5113495bSYour Name #define CDP_NUM_KB_IN_MB 1000
129*5113495bSYour Name /*
130*5113495bSYour Name  * advance rx monitor filter
131*5113495bSYour Name  */
132*5113495bSYour Name #define MON_FILTER_PASS			0x0001
133*5113495bSYour Name #define MON_FILTER_OTHER		0x0002
134*5113495bSYour Name #define MON_FILTER_ALL			0x0003
135*5113495bSYour Name 
136*5113495bSYour Name #define FILTER_MGMT_ALL			0xFFFF
137*5113495bSYour Name #define FILTER_MGMT_ASSOC_REQ		0x0001
138*5113495bSYour Name #define FILTER_MGMT_ASSOC_RES		0x0002
139*5113495bSYour Name #define FILTER_MGMT_REASSOC_REQ		0x0004
140*5113495bSYour Name #define FILTER_MGMT_REASSOC_RES		0x0008
141*5113495bSYour Name #define FILTER_MGMT_PROBE_REQ		0x0010
142*5113495bSYour Name #define FILTER_MGMT_PROBE_RES		0x0020
143*5113495bSYour Name #define FILTER_MGMT_TIM_ADVT		0x0040
144*5113495bSYour Name #define FILTER_MGMT_RESERVED_7		0x0080
145*5113495bSYour Name #define FILTER_MGMT_BEACON		0x0100
146*5113495bSYour Name #define FILTER_MGMT_ATIM		0x0200
147*5113495bSYour Name #define FILTER_MGMT_DISASSOC		0x0400
148*5113495bSYour Name #define FILTER_MGMT_AUTH		0x0800
149*5113495bSYour Name #define FILTER_MGMT_DEAUTH		0x1000
150*5113495bSYour Name #define FILTER_MGMT_ACTION		0x2000
151*5113495bSYour Name #define FILTER_MGMT_ACT_NO_ACK		0x4000
152*5113495bSYour Name #define FILTER_MGMT_RESERVED_15		0x8000
153*5113495bSYour Name 
154*5113495bSYour Name #define FILTER_CTRL_ALL			0xFFFF
155*5113495bSYour Name #define FILTER_CTRL_RESERVED_1		0x0001
156*5113495bSYour Name #define FILTER_CTRL_RESERVED_2		0x0002
157*5113495bSYour Name #define FILTER_CTRL_TRIGGER		0x0004
158*5113495bSYour Name #define FILTER_CTRL_RESERVED_4		0x0008
159*5113495bSYour Name #define FILTER_CTRL_BF_REP_POLL		0x0010
160*5113495bSYour Name #define FILTER_CTRL_VHT_NDP		0x0020
161*5113495bSYour Name #define FILTER_CTRL_FRAME_EXT		0x0040
162*5113495bSYour Name #define FILTER_CTRL_CTRLWRAP		0x0080
163*5113495bSYour Name #define FILTER_CTRL_BA_REQ		0x0100
164*5113495bSYour Name #define FILTER_CTRL_BA			0x0200
165*5113495bSYour Name #define FILTER_CTRL_PSPOLL		0x0400
166*5113495bSYour Name #define FILTER_CTRL_RTS			0x0800
167*5113495bSYour Name #define FILTER_CTRL_CTS			0x1000
168*5113495bSYour Name #define FILTER_CTRL_ACK			0x2000
169*5113495bSYour Name #define FILTER_CTRL_CFEND		0x4000
170*5113495bSYour Name #define FILTER_CTRL_CFEND_CFACK		0x8000
171*5113495bSYour Name 
172*5113495bSYour Name #define FILTER_DATA_ALL			0xFFFF
173*5113495bSYour Name #define FILTER_DATA_MCAST		0x4000
174*5113495bSYour Name #define FILTER_DATA_UCAST		0x8000
175*5113495bSYour Name #define FILTER_DATA_DATA		0x0001
176*5113495bSYour Name #define FILTER_DATA_NULL		0x0008
177*5113495bSYour Name 
178*5113495bSYour Name /*
179*5113495bSYour Name  * Multiply rate by 2 to avoid float point
180*5113495bSYour Name  * and get rate in units of 500kbps
181*5113495bSYour Name  */
182*5113495bSYour Name #define CDP_11B_RATE_0MCS (11 * 2)
183*5113495bSYour Name #define CDP_11B_RATE_1MCS (5.5 * 2)
184*5113495bSYour Name #define CDP_11B_RATE_2MCS (2 * 2)
185*5113495bSYour Name #define CDP_11B_RATE_3MCS (1 * 2)
186*5113495bSYour Name #define CDP_11B_RATE_4MCS (11 * 2)
187*5113495bSYour Name #define CDP_11B_RATE_5MCS (5.5 * 2)
188*5113495bSYour Name #define CDP_11B_RATE_6MCS (2 * 2)
189*5113495bSYour Name 
190*5113495bSYour Name #define CDP_11A_RATE_0MCS (48 * 2)
191*5113495bSYour Name #define CDP_11A_RATE_1MCS (24 * 2)
192*5113495bSYour Name #define CDP_11A_RATE_2MCS (12 * 2)
193*5113495bSYour Name #define CDP_11A_RATE_3MCS (6 * 2)
194*5113495bSYour Name #define CDP_11A_RATE_4MCS (54 * 2)
195*5113495bSYour Name #define CDP_11A_RATE_5MCS (36 * 2)
196*5113495bSYour Name #define CDP_11A_RATE_6MCS (18 * 2)
197*5113495bSYour Name #define CDP_11A_RATE_7MCS (9 * 2)
198*5113495bSYour Name 
199*5113495bSYour Name #define CDP_LEGACY_MCS0  0
200*5113495bSYour Name #define CDP_LEGACY_MCS1  1
201*5113495bSYour Name #define CDP_LEGACY_MCS2  2
202*5113495bSYour Name #define CDP_LEGACY_MCS3  3
203*5113495bSYour Name #define CDP_LEGACY_MCS4  4
204*5113495bSYour Name #define CDP_LEGACY_MCS5  5
205*5113495bSYour Name #define CDP_LEGACY_MCS6  6
206*5113495bSYour Name #define CDP_LEGACY_MCS7  7
207*5113495bSYour Name 
208*5113495bSYour Name QDF_DECLARE_EWMA(tx_lag, 1024, 8)
209*5113495bSYour Name struct cdp_stats_cookie;
210*5113495bSYour Name 
211*5113495bSYour Name /**
212*5113495bSYour Name  * enum cdp_cfg_param_type - DP configuration parameters
213*5113495bSYour Name  * @CDP_CFG_MAX_PEER_ID: Maximum peer id
214*5113495bSYour Name  * @CDP_CFG_CCE_DISABLE: CCE disable
215*5113495bSYour Name  * @CDP_CFG_MLD_NETDEV_MODE_AP: Ap's mld netdev model
216*5113495bSYour Name  * @CDP_CFG_NUM_PARAMS: Total number of params
217*5113495bSYour Name  */
218*5113495bSYour Name enum cdp_cfg_param_type {
219*5113495bSYour Name 	CDP_CFG_MAX_PEER_ID,
220*5113495bSYour Name 	CDP_CFG_CCE_DISABLE,
221*5113495bSYour Name 	CDP_CFG_MLD_NETDEV_MODE_AP,
222*5113495bSYour Name 	CDP_CFG_NUM_PARAMS
223*5113495bSYour Name };
224*5113495bSYour Name 
225*5113495bSYour Name /**
226*5113495bSYour Name  * enum CDP_PPDU_STATS_PPDU_TYPE - PPDU TYPE from FW
227*5113495bSYour Name  * @CDP_PPDU_STATS_PPDU_TYPE_SU: single user type
228*5113495bSYour Name  * @CDP_PPDU_STATS_PPDU_TYPE_MU_MIMO: multi user mu-mimo
229*5113495bSYour Name  * @CDP_PPDU_STATS_PPDU_TYPE_MU_OFDMA: multi user ofdma
230*5113495bSYour Name  * @CDP_PPDU_STATS_PPDU_TYPE_MU_MIMO_OFDMA: multi user mu-mimo ofdma
231*5113495bSYour Name  * @CDP_PPDU_STATS_PPDU_TYPE_UL_TRIG: ul trigger ppdu
232*5113495bSYour Name  * @CDP_PPDU_STATS_PPDU_TYPE_BURST_BCN: burst beacon
233*5113495bSYour Name  * @CDP_PPDU_STATS_PPDU_TYPE_UL_BSR_RESP: bsr respond
234*5113495bSYour Name  * @CDP_PPDU_STATS_PPDU_TYPE_UL_BSR_TRIG: bsr trigger
235*5113495bSYour Name  * @CDP_PPDU_STATS_PPDU_TYPE_UL_RESP: ul response
236*5113495bSYour Name  * @CDP_PPDU_STATS_PPDU_TYPE_UNKNOWN: unknown
237*5113495bSYour Name  */
238*5113495bSYour Name enum CDP_PPDU_STATS_PPDU_TYPE {
239*5113495bSYour Name 	CDP_PPDU_STATS_PPDU_TYPE_SU = 0,
240*5113495bSYour Name 	CDP_PPDU_STATS_PPDU_TYPE_MU_MIMO = 1,
241*5113495bSYour Name 	CDP_PPDU_STATS_PPDU_TYPE_MU_OFDMA = 2,
242*5113495bSYour Name 	CDP_PPDU_STATS_PPDU_TYPE_MU_MIMO_OFDMA = 4,
243*5113495bSYour Name 	CDP_PPDU_STATS_PPDU_TYPE_UL_TRIG = 5,
244*5113495bSYour Name 	CDP_PPDU_STATS_PPDU_TYPE_BURST_BCN = 6,
245*5113495bSYour Name 	CDP_PPDU_STATS_PPDU_TYPE_UL_BSR_RESP = 7,
246*5113495bSYour Name 	CDP_PPDU_STATS_PPDU_TYPE_UL_BSR_TRIG = 8,
247*5113495bSYour Name 	CDP_PPDU_STATS_PPDU_TYPE_UL_RESP = 9,
248*5113495bSYour Name 	CDP_PPDU_STATS_PPDU_TYPE_UNKNOWN = 0x1F,
249*5113495bSYour Name };
250*5113495bSYour Name 
251*5113495bSYour Name /**
252*5113495bSYour Name  * enum htt_cmn_dbg_stats_type -
253*5113495bSYour Name  * bit positions for each stats type within a stats type bitmask
254*5113495bSYour Name  * The bitmask contains 24 bits.
255*5113495bSYour Name  * @HTT_DBG_CMN_STATS_WAL_PDEV_TXRX:
256*5113495bSYour Name  * @HTT_DBG_CMN_STATS_RX_REORDER:
257*5113495bSYour Name  * @HTT_DBG_CMN_STATS_RX_RATE_INFO:
258*5113495bSYour Name  * @HTT_DBG_CMN_STATS_TX_PPDU_LOG:
259*5113495bSYour Name  * @HTT_DBG_CMN_STATS_TX_RATE_INFO:
260*5113495bSYour Name  * @HTT_DBG_CMN_STATS_TIDQ:
261*5113495bSYour Name  * @HTT_DBG_CMN_STATS_TXBF_INFO:
262*5113495bSYour Name  * @HTT_DBG_CMN_STATS_SND_INFO:
263*5113495bSYour Name  * @HTT_DBG_CMN_STATS_ERROR_INFO:
264*5113495bSYour Name  * @HTT_DBG_CMN_STATS_TX_SELFGEN_INFO:
265*5113495bSYour Name  * @HTT_DBG_CMN_STATS_TX_MU_INFO:
266*5113495bSYour Name  * @HTT_DBG_CMN_STATS_SIFS_RESP_INFO:
267*5113495bSYour Name  * @HTT_DBG_CMN_STATS_RESET_INFO:
268*5113495bSYour Name  * @HTT_DBG_CMN_STATS_MAC_WDOG_INFO:
269*5113495bSYour Name  * @HTT_DBG_CMN_STATS_TX_DESC_INFO:
270*5113495bSYour Name  * @HTT_DBG_CMN_STATS_TX_FETCH_MGR_INFO:
271*5113495bSYour Name  * @HTT_DBG_CMN_STATS_TX_PFSCHED_INFO:
272*5113495bSYour Name  * @HTT_DBG_CMN_STATS_TX_PATH_STATS_INFO:
273*5113495bSYour Name  * @HTT_DBG_CMN_NUM_STATS:
274*5113495bSYour Name  * @HTT_DBG_CMN_NUM_STATS_INVALID:
275*5113495bSYour Name  */
276*5113495bSYour Name enum htt_cmn_dbg_stats_type {
277*5113495bSYour Name 	HTT_DBG_CMN_STATS_WAL_PDEV_TXRX      = 0,  /* bit 0 -> 0x1 */
278*5113495bSYour Name 	HTT_DBG_CMN_STATS_RX_REORDER         = 1,  /* bit 1 -> 0x2 */
279*5113495bSYour Name 	HTT_DBG_CMN_STATS_RX_RATE_INFO       = 2,  /* bit 2 -> 0x4 */
280*5113495bSYour Name 	HTT_DBG_CMN_STATS_TX_PPDU_LOG        = 3,  /* bit 3 -> 0x8 */
281*5113495bSYour Name 	HTT_DBG_CMN_STATS_TX_RATE_INFO       = 4,  /* bit 4 -> 0x10 */
282*5113495bSYour Name 	HTT_DBG_CMN_STATS_TIDQ               = 5,  /* bit 5 -> 0x20 */
283*5113495bSYour Name 	HTT_DBG_CMN_STATS_TXBF_INFO          = 6,  /* bit 6 -> 0x40 */
284*5113495bSYour Name 	HTT_DBG_CMN_STATS_SND_INFO           = 7,  /* bit 7 -> 0x80 */
285*5113495bSYour Name 	HTT_DBG_CMN_STATS_ERROR_INFO         = 8,  /* bit 8  -> 0x100 */
286*5113495bSYour Name 	HTT_DBG_CMN_STATS_TX_SELFGEN_INFO    = 9,  /* bit 9  -> 0x200 */
287*5113495bSYour Name 	HTT_DBG_CMN_STATS_TX_MU_INFO         = 10, /* bit 10 -> 0x400 */
288*5113495bSYour Name 	HTT_DBG_CMN_STATS_SIFS_RESP_INFO     = 11, /* bit 11 -> 0x800 */
289*5113495bSYour Name 	HTT_DBG_CMN_STATS_RESET_INFO         = 12, /* bit 12 -> 0x1000 */
290*5113495bSYour Name 	HTT_DBG_CMN_STATS_MAC_WDOG_INFO      = 13, /* bit 13 -> 0x2000 */
291*5113495bSYour Name 	HTT_DBG_CMN_STATS_TX_DESC_INFO       = 14, /* bit 14 -> 0x4000 */
292*5113495bSYour Name 	HTT_DBG_CMN_STATS_TX_FETCH_MGR_INFO  = 15, /* bit 15 -> 0x8000 */
293*5113495bSYour Name 	HTT_DBG_CMN_STATS_TX_PFSCHED_INFO    = 16, /* bit 16 -> 0x10000 */
294*5113495bSYour Name 	HTT_DBG_CMN_STATS_TX_PATH_STATS_INFO = 17, /* bit 17 -> 0x20000 */
295*5113495bSYour Name 	/* bits 18-23 currently reserved */
296*5113495bSYour Name 
297*5113495bSYour Name 	/* keep this last */
298*5113495bSYour Name 	HTT_DBG_CMN_NUM_STATS,
299*5113495bSYour Name 	HTT_DBG_CMN_NUM_STATS_INVALID        = 31, /* bit 31 -> 0x80000000 */
300*5113495bSYour Name };
301*5113495bSYour Name 
302*5113495bSYour Name /**
303*5113495bSYour Name  * enum cdp_host_txrx_stats - Different types of host stats
304*5113495bSYour Name  * @TXRX_HOST_STATS_INVALID: Invalid option
305*5113495bSYour Name  * @TXRX_CLEAR_STATS: clear all host stats
306*5113495bSYour Name  * @TXRX_RX_RATE_STATS: Rx rate info
307*5113495bSYour Name  * @TXRX_TX_RATE_STATS: Tx rate info
308*5113495bSYour Name  * @TXRX_TX_HOST_STATS: Print Tx stats
309*5113495bSYour Name  * @TXRX_RX_HOST_STATS: Print host Rx stats
310*5113495bSYour Name  * @TXRX_AST_STATS:
311*5113495bSYour Name  * @TXRX_SRNG_PTR_STATS: Print SRNG pointer stats
312*5113495bSYour Name  * @TXRX_RX_MON_STATS: Print monitor mode stats
313*5113495bSYour Name  * @TXRX_REO_QUEUE_STATS: Print Per peer REO Queue Stats
314*5113495bSYour Name  * @TXRX_SOC_CFG_PARAMS: Print soc cfg params info
315*5113495bSYour Name  * @TXRX_PDEV_CFG_PARAMS: Print pdev cfg params info
316*5113495bSYour Name  * @TXRX_NAPI_STATS: Print NAPI scheduling statistics
317*5113495bSYour Name  * @TXRX_SOC_INTERRUPT_STATS: Print soc interrupt stats
318*5113495bSYour Name  * @TXRX_SOC_FSE_STATS:
319*5113495bSYour Name  * @TXRX_HAL_REG_WRITE_STATS: Hal Reg Write stats
320*5113495bSYour Name  * @TXRX_SOC_REO_HW_DESC_DUMP: HW REO queue desc dump
321*5113495bSYour Name  * @TXRX_SOC_WBM_IDLE_HPTP_DUMP: WBM idle link desc SRNG HP/TP dump
322*5113495bSYour Name  * @TXRX_SRNG_USAGE_WM_STATS: SRNG usage watermark stats
323*5113495bSYour Name  * @TXRX_PEER_STATS: Per link peer stats
324*5113495bSYour Name  * @TXRX_HOST_STATS_MAX:
325*5113495bSYour Name  */
326*5113495bSYour Name enum cdp_host_txrx_stats {
327*5113495bSYour Name 	TXRX_HOST_STATS_INVALID  = -1,
328*5113495bSYour Name 	TXRX_CLEAR_STATS     = 0,
329*5113495bSYour Name 	TXRX_RX_RATE_STATS   = 1,
330*5113495bSYour Name 	TXRX_TX_RATE_STATS   = 2,
331*5113495bSYour Name 	TXRX_TX_HOST_STATS   = 3,
332*5113495bSYour Name 	TXRX_RX_HOST_STATS   = 4,
333*5113495bSYour Name 	TXRX_AST_STATS       = 5,
334*5113495bSYour Name 	TXRX_SRNG_PTR_STATS  = 6,
335*5113495bSYour Name 	TXRX_RX_MON_STATS    = 7,
336*5113495bSYour Name 	TXRX_REO_QUEUE_STATS = 8,
337*5113495bSYour Name 	TXRX_SOC_CFG_PARAMS   = 9,
338*5113495bSYour Name 	TXRX_PDEV_CFG_PARAMS  = 10,
339*5113495bSYour Name 	TXRX_NAPI_STATS       = 11,
340*5113495bSYour Name 	TXRX_SOC_INTERRUPT_STATS = 12,
341*5113495bSYour Name 	TXRX_SOC_FSE_STATS = 13,
342*5113495bSYour Name 	TXRX_HAL_REG_WRITE_STATS = 14,
343*5113495bSYour Name 	TXRX_SOC_REO_HW_DESC_DUMP = 15,
344*5113495bSYour Name 	TXRX_SOC_WBM_IDLE_HPTP_DUMP = 16,
345*5113495bSYour Name 	TXRX_SRNG_USAGE_WM_STATS = 17,
346*5113495bSYour Name 	TXRX_PEER_STATS   = 18,
347*5113495bSYour Name 	TXRX_HOST_STATS_MAX,
348*5113495bSYour Name };
349*5113495bSYour Name 
350*5113495bSYour Name /**
351*5113495bSYour Name  * enum cdp_ppdu_ftype - PPDU Frame Type
352*5113495bSYour Name  * @CDP_PPDU_FTYPE_DATA: SU or MU Data Frame
353*5113495bSYour Name  * @CDP_PPDU_FTYPE_CTRL: Control/Management Frames
354*5113495bSYour Name  * @CDP_PPDU_FTYPE_BAR: SU or MU BAR frames
355*5113495bSYour Name  * @CDP_PPDU_FTYPE_MAX: Max value
356*5113495bSYour Name  */
357*5113495bSYour Name enum cdp_ppdu_ftype {
358*5113495bSYour Name 	CDP_PPDU_FTYPE_CTRL,
359*5113495bSYour Name 	CDP_PPDU_FTYPE_DATA,
360*5113495bSYour Name 	CDP_PPDU_FTYPE_BAR,
361*5113495bSYour Name 	CDP_PPDU_FTYPE_MAX
362*5113495bSYour Name };
363*5113495bSYour Name 
364*5113495bSYour Name 
365*5113495bSYour Name /**
366*5113495bSYour Name  * enum htt_cmn_pkt_type - General specification of the tx frame contents
367*5113495bSYour Name  * @htt_cmn_pkt_type_raw: raw
368*5113495bSYour Name  * @htt_cmn_pkt_type_native_wifi: native wifi
369*5113495bSYour Name  * @htt_cmn_pkt_type_ethernet: ethernet
370*5113495bSYour Name  * @htt_cmn_pkt_type_mgmt: management
371*5113495bSYour Name  * @htt_cmn_pkt_type_eth2: ethernet2
372*5113495bSYour Name  * @htt_cmn_pkt_num_types: number of packet types
373*5113495bSYour Name  *
374*5113495bSYour Name  * for efficiency, the HTT packet type values correspond
375*5113495bSYour Name  * to the bit positions of the WAL packet type values, so the
376*5113495bSYour Name  * translation is a simple shift operation.
377*5113495bSYour Name  */
378*5113495bSYour Name enum htt_cmn_pkt_type {
379*5113495bSYour Name 	htt_cmn_pkt_type_raw = 0,
380*5113495bSYour Name 	htt_cmn_pkt_type_native_wifi = 1,
381*5113495bSYour Name 	htt_cmn_pkt_type_ethernet = 2,
382*5113495bSYour Name 	htt_cmn_pkt_type_mgmt = 3,
383*5113495bSYour Name 	htt_cmn_pkt_type_eth2 = 4,
384*5113495bSYour Name 
385*5113495bSYour Name 	/* keep this last */
386*5113495bSYour Name 	htt_cmn_pkt_num_types
387*5113495bSYour Name };
388*5113495bSYour Name 
389*5113495bSYour Name /**
390*5113495bSYour Name  * enum htt_cmn_rx_status - description of HTT received packets status
391*5113495bSYour Name  * @htt_cmn_rx_status_unknown:
392*5113495bSYour Name  * @htt_cmn_rx_status_ok:
393*5113495bSYour Name  * @htt_cmn_rx_status_err_fcs:
394*5113495bSYour Name  * @htt_cmn_rx_status_err_dup:
395*5113495bSYour Name  * @htt_cmn_rx_status_err_replay:
396*5113495bSYour Name  * @htt_cmn_rx_status_inv_peer:
397*5113495bSYour Name  * @htt_cmn_rx_status_ctrl_mgmt_null:
398*5113495bSYour Name  * @htt_cmn_rx_status_tkip_mic_err:
399*5113495bSYour Name  * @htt_cmn_rx_status_decrypt_err:
400*5113495bSYour Name  * @htt_cmn_rx_status_mpdu_length_err:
401*5113495bSYour Name  * @htt_cmn_rx_status_err_misc:
402*5113495bSYour Name  *
403*5113495bSYour Name  * It is similar to htt_rx_status enum
404*5113495bSYour Name  * but is added as a cdp enum can be freely used in OL_IF layer
405*5113495bSYour Name  */
406*5113495bSYour Name enum htt_cmn_rx_status {
407*5113495bSYour Name 	htt_cmn_rx_status_unknown = 0x0,
408*5113495bSYour Name 	htt_cmn_rx_status_ok,
409*5113495bSYour Name 	htt_cmn_rx_status_err_fcs,
410*5113495bSYour Name 	htt_cmn_rx_status_err_dup,
411*5113495bSYour Name 	htt_cmn_rx_status_err_replay,
412*5113495bSYour Name 	htt_cmn_rx_status_inv_peer,
413*5113495bSYour Name 	htt_cmn_rx_status_ctrl_mgmt_null = 0x08,
414*5113495bSYour Name 	htt_cmn_rx_status_tkip_mic_err = 0x09,
415*5113495bSYour Name 	htt_cmn_rx_status_decrypt_err = 0x0A,
416*5113495bSYour Name 	htt_cmn_rx_status_mpdu_length_err = 0x0B,
417*5113495bSYour Name 	htt_cmn_rx_status_err_misc = 0xFF
418*5113495bSYour Name };
419*5113495bSYour Name 
420*5113495bSYour Name 
421*5113495bSYour Name enum cdp_host_reo_dest_ring {
422*5113495bSYour Name     cdp_host_reo_dest_ring_unknown = 0,
423*5113495bSYour Name     cdp_host_reo_dest_ring_1 = 1,
424*5113495bSYour Name     cdp_host_reo_dest_ring_2 = 2,
425*5113495bSYour Name     cdp_host_reo_dest_ring_3 = 3,
426*5113495bSYour Name     cdp_host_reo_dest_ring_4 = 4,
427*5113495bSYour Name };
428*5113495bSYour Name 
429*5113495bSYour Name enum htt_cmn_t2h_en_stats_type {
430*5113495bSYour Name     /* keep this always first */
431*5113495bSYour Name     HTT_CMN_T2H_EN_STATS_TYPE_START     = 0,
432*5113495bSYour Name 
433*5113495bSYour Name     /** ppdu_common_stats is the payload */
434*5113495bSYour Name     HTT_CMN_T2H_EN_STATS_TYPE_COMMON    = 1,
435*5113495bSYour Name     /** ppdu_sant_stats is the payload */
436*5113495bSYour Name     HTT_CMN_T2H_EN_STATS_TYPE_SANT      = 2,
437*5113495bSYour Name     /** ppdu_common_stats_v2 is the payload */
438*5113495bSYour Name     HTT_CMN_T2H_EN_STATS_TYPE_COMMON_V2 = 3,
439*5113495bSYour Name 
440*5113495bSYour Name     /* Keep this last */
441*5113495bSYour Name     HTT_CMN_T2H_EN_STATS_TYPE_END       = 0x1f,
442*5113495bSYour Name };
443*5113495bSYour Name 
444*5113495bSYour Name enum htt_cmn_t2h_en_stats_status {
445*5113495bSYour Name     /* Keep this first always */
446*5113495bSYour Name     HTT_CMN_T2H_EN_STATS_STATUS_PARTIAL     = 0,
447*5113495bSYour Name     HTT_CMN_T2H_EN_STATS_STATUS_PRESENT     = 1,
448*5113495bSYour Name     HTT_CMN_T2H_EN_STATS_STATUS_ERROR       = 2,
449*5113495bSYour Name     HTT_CMN_T2H_EN_STATS_STATUS_INVALID     = 3,
450*5113495bSYour Name 
451*5113495bSYour Name 
452*5113495bSYour Name     /* keep this always last */
453*5113495bSYour Name     HTT_CMN_T2H_EN_STATS_STATUS_SERIES_DONE         = 7,
454*5113495bSYour Name };
455*5113495bSYour Name 
456*5113495bSYour Name /**
457*5113495bSYour Name  * enum cdp_peer_type - Peer type
458*5113495bSYour Name  * @CDP_INVALID_PEER_TYPE: invalid peer type
459*5113495bSYour Name  * @CDP_LINK_PEER_TYPE: legacy peer or link peer for MLO connection
460*5113495bSYour Name  * @CDP_MLD_PEER_TYPE: MLD peer for MLO connection
461*5113495bSYour Name  * @CDP_WILD_PEER_TYPE: used to set peer type for same mld/link mac addr
462*5113495bSYour Name  */
463*5113495bSYour Name enum cdp_peer_type {
464*5113495bSYour Name 	CDP_INVALID_PEER_TYPE,
465*5113495bSYour Name 	CDP_LINK_PEER_TYPE,
466*5113495bSYour Name 	CDP_MLD_PEER_TYPE,
467*5113495bSYour Name 	CDP_WILD_PEER_TYPE,
468*5113495bSYour Name };
469*5113495bSYour Name 
470*5113495bSYour Name /**
471*5113495bSYour Name  * struct cdp_peer_setup_info - MLO connection info for cdp_peer_setup()
472*5113495bSYour Name  * @mld_peer_mac: mld peer mac address pointer
473*5113495bSYour Name  * @is_first_link: set true for first MLO link peer
474*5113495bSYour Name  * @is_primary_link: set true for MLO primary link peer
475*5113495bSYour Name  * @primary_umac_id: primary umac_id
476*5113495bSYour Name  * @num_links: number of links in MLO
477*5113495bSYour Name  * @is_bridge_peer: flag to indicate if peer is bridge peer or not
478*5113495bSYour Name  */
479*5113495bSYour Name struct cdp_peer_setup_info {
480*5113495bSYour Name 	uint8_t *mld_peer_mac;
481*5113495bSYour Name 	uint8_t is_first_link:1,
482*5113495bSYour Name 		is_primary_link:1;
483*5113495bSYour Name 	uint8_t primary_umac_id;
484*5113495bSYour Name 	uint8_t num_links;
485*5113495bSYour Name 	uint8_t is_bridge_peer;
486*5113495bSYour Name };
487*5113495bSYour Name 
488*5113495bSYour Name /**
489*5113495bSYour Name  * struct cdp_peer_info - peer info for dp hash find
490*5113495bSYour Name  * @vdev_id: Vdev ID
491*5113495bSYour Name  * @mac_addr: peer mac address to search
492*5113495bSYour Name  * @mac_addr_is_aligned: true only if mac_addr type is
493*5113495bSYour Name  *			"union dp_align_mac_addr", otherwise set false always.
494*5113495bSYour Name  * @peer_type: link or MLD peer type
495*5113495bSYour Name  */
496*5113495bSYour Name struct cdp_peer_info {
497*5113495bSYour Name 	uint8_t vdev_id;
498*5113495bSYour Name 	uint8_t *mac_addr;
499*5113495bSYour Name 	bool mac_addr_is_aligned;
500*5113495bSYour Name 	enum cdp_peer_type peer_type;
501*5113495bSYour Name };
502*5113495bSYour Name 
503*5113495bSYour Name /**
504*5113495bSYour Name  * enum ol_txrx_peer_state - Peer state information
505*5113495bSYour Name  * @OL_TXRX_PEER_STATE_INVALID: Invalid
506*5113495bSYour Name  * @OL_TXRX_PEER_STATE_DISC: disconnected (initial state)
507*5113495bSYour Name  * @OL_TXRX_PEER_STATE_CONN: authentication in progress
508*5113495bSYour Name  * @OL_TXRX_PEER_STATE_AUTH: authentication successful
509*5113495bSYour Name  */
510*5113495bSYour Name enum ol_txrx_peer_state {
511*5113495bSYour Name 	OL_TXRX_PEER_STATE_INVALID,
512*5113495bSYour Name 	OL_TXRX_PEER_STATE_DISC,
513*5113495bSYour Name 	OL_TXRX_PEER_STATE_CONN,
514*5113495bSYour Name 	OL_TXRX_PEER_STATE_AUTH,
515*5113495bSYour Name };
516*5113495bSYour Name 
517*5113495bSYour Name /**
518*5113495bSYour Name  * enum cdp_txrx_ast_entry_type - AST entry type information
519*5113495bSYour Name  * @CDP_TXRX_AST_TYPE_NONE: static ast entry for connected peer
520*5113495bSYour Name  * @CDP_TXRX_AST_TYPE_STATIC: static ast entry for connected peer
521*5113495bSYour Name  * @CDP_TXRX_AST_TYPE_SELF: static ast entry for self peer (STA mode)
522*5113495bSYour Name  * @CDP_TXRX_AST_TYPE_WDS: WDS peer ast entry type
523*5113495bSYour Name  * @CDP_TXRX_AST_TYPE_WDS_HM: HM WDS entry
524*5113495bSYour Name  * @CDP_TXRX_AST_TYPE_STA_BSS: BSS entry(STA mode)
525*5113495bSYour Name  * @CDP_TXRX_AST_TYPE_DA:	AST entry based on Destination address
526*5113495bSYour Name  * @CDP_TXRX_AST_TYPE_WDS_HM_SEC: HM WDS entry for secondary radio
527*5113495bSYour Name  * @CDP_TXRX_AST_TYPE_MLD: AST entry type for MLD peer
528*5113495bSYour Name  * @CDP_TXRX_AST_TYPE_MAX:
529*5113495bSYour Name  */
530*5113495bSYour Name enum cdp_txrx_ast_entry_type {
531*5113495bSYour Name 	CDP_TXRX_AST_TYPE_NONE,
532*5113495bSYour Name 	CDP_TXRX_AST_TYPE_STATIC,
533*5113495bSYour Name 	CDP_TXRX_AST_TYPE_SELF,
534*5113495bSYour Name 	CDP_TXRX_AST_TYPE_WDS,
535*5113495bSYour Name 	CDP_TXRX_AST_TYPE_WDS_HM,
536*5113495bSYour Name 	CDP_TXRX_AST_TYPE_STA_BSS,
537*5113495bSYour Name 	CDP_TXRX_AST_TYPE_DA,
538*5113495bSYour Name 	CDP_TXRX_AST_TYPE_WDS_HM_SEC,
539*5113495bSYour Name 	CDP_TXRX_AST_TYPE_MLD,
540*5113495bSYour Name 	CDP_TXRX_AST_TYPE_MAX
541*5113495bSYour Name };
542*5113495bSYour Name 
543*5113495bSYour Name /**
544*5113495bSYour Name  * enum cdp_ast_free_status - status passed to callback function before
545*5113495bSYour Name  *                            freeing ast
546*5113495bSYour Name  * @CDP_TXRX_AST_DELETED: AST is deleted from FW and delete response received
547*5113495bSYour Name  * @CDP_TXRX_AST_DELETE_IN_PROGRESS: AST delete command sent to FW and host
548*5113495bSYour Name  *                                    is waiting for FW response
549*5113495bSYour Name  */
550*5113495bSYour Name enum cdp_ast_free_status {
551*5113495bSYour Name 	CDP_TXRX_AST_DELETED,
552*5113495bSYour Name 	CDP_TXRX_AST_DELETE_IN_PROGRESS,
553*5113495bSYour Name };
554*5113495bSYour Name 
555*5113495bSYour Name /**
556*5113495bSYour Name  * typedef txrx_ast_free_cb() - callback registered for ast free
557*5113495bSYour Name  * @ctrl_soc: control path soc context
558*5113495bSYour Name  * @cdp_soc: DP soc context
559*5113495bSYour Name  * @cookie: cookie
560*5113495bSYour Name  * @cdp_ast_free_status: ast free status
561*5113495bSYour Name  */
562*5113495bSYour Name typedef void (*txrx_ast_free_cb)(struct cdp_ctrl_objmgr_psoc *ctrl_soc,
563*5113495bSYour Name 				 struct cdp_soc *cdp_soc,
564*5113495bSYour Name 				 void *cookie,
565*5113495bSYour Name 				 enum cdp_ast_free_status);
566*5113495bSYour Name 
567*5113495bSYour Name /**
568*5113495bSYour Name  *  struct cdp_ast_entry_info - AST entry information
569*5113495bSYour Name  *  @peer_mac_addr: mac address of peer on which AST entry is added
570*5113495bSYour Name  *  @type: ast entry type
571*5113495bSYour Name  *  @vdev_id: vdev_id
572*5113495bSYour Name  *  @pdev_id: pdev_id
573*5113495bSYour Name  *  @peer_id: peer_id
574*5113495bSYour Name  *
575*5113495bSYour Name  *  This structure holds the ast entry information
576*5113495bSYour Name  *
577*5113495bSYour Name  */
578*5113495bSYour Name struct cdp_ast_entry_info {
579*5113495bSYour Name 	uint8_t peer_mac_addr[QDF_MAC_ADDR_SIZE];
580*5113495bSYour Name 	enum cdp_txrx_ast_entry_type type;
581*5113495bSYour Name 	uint8_t vdev_id;
582*5113495bSYour Name 	uint8_t pdev_id;
583*5113495bSYour Name 	uint16_t peer_id;
584*5113495bSYour Name };
585*5113495bSYour Name 
586*5113495bSYour Name #define MIC_SEQ_CTR_SIZE 6
587*5113495bSYour Name 
588*5113495bSYour Name enum cdp_rx_frame_type {
589*5113495bSYour Name 	cdp_rx_frame_type_802_11,
590*5113495bSYour Name 	cdp_rx_frame_type_802_3,
591*5113495bSYour Name };
592*5113495bSYour Name 
593*5113495bSYour Name /**
594*5113495bSYour Name  *  struct cdp_rx_mic_err_info - rx mic error information
595*5113495bSYour Name  *  @frame_type: frame type - 0 - 802.11 frame
596*5113495bSYour Name  *                          - 1 - 802.3 frame
597*5113495bSYour Name  *  @data: 802.11 frame
598*5113495bSYour Name  *  @ta_mac_addr: transmitter mac address
599*5113495bSYour Name  *  @da_mac_addr: destination mac address
600*5113495bSYour Name  *  @tsc: sequence number
601*5113495bSYour Name  *  @key_id: Key ID
602*5113495bSYour Name  *  @multicast: flag for multicast
603*5113495bSYour Name  *  @vdev_id: vdev ID
604*5113495bSYour Name  *
605*5113495bSYour Name  *  This structure holds rx mic error information
606*5113495bSYour Name  *
607*5113495bSYour Name  */
608*5113495bSYour Name struct cdp_rx_mic_err_info {
609*5113495bSYour Name 	uint8_t frame_type;
610*5113495bSYour Name 	uint8_t *data;
611*5113495bSYour Name 	struct qdf_mac_addr ta_mac_addr;
612*5113495bSYour Name 	struct qdf_mac_addr da_mac_addr;
613*5113495bSYour Name 	uint8_t tsc[MIC_SEQ_CTR_SIZE];
614*5113495bSYour Name 	uint8_t key_id;
615*5113495bSYour Name 	bool multicast;
616*5113495bSYour Name 	uint16_t vdev_id;
617*5113495bSYour Name };
618*5113495bSYour Name 
619*5113495bSYour Name #ifdef WLAN_SUPPORT_MSCS
620*5113495bSYour Name /**
621*5113495bSYour Name  * struct cdp_mscs_params - MSCS parameters obtained
622*5113495bSYour Name  * from handshake
623*5113495bSYour Name  * @user_pri_bitmap: User priority bitmap
624*5113495bSYour Name  * @user_pri_limit: User priority limit
625*5113495bSYour Name  * @classifier_type: TCLAS Classifier type
626*5113495bSYour Name  * @classifier_mask: TCLAS Classifier mask
627*5113495bSYour Name  */
628*5113495bSYour Name struct cdp_mscs_params {
629*5113495bSYour Name 	uint8_t user_pri_bitmap;
630*5113495bSYour Name 	uint8_t user_pri_limit;
631*5113495bSYour Name 	uint8_t classifier_type;
632*5113495bSYour Name 	uint8_t classifier_mask;
633*5113495bSYour Name };
634*5113495bSYour Name #endif
635*5113495bSYour Name 
636*5113495bSYour Name /**
637*5113495bSYour Name  * struct cdp_ds_vp_params - Direct Switch related params
638*5113495bSYour Name  * @dev: Net device
639*5113495bSYour Name  * @peer_id: peer id
640*5113495bSYour Name  * @ppe_vp_profile_idx: VP profile index in be soc
641*5113495bSYour Name  * @wds_ext_mode: flag to indicate wds ext.
642*5113495bSYour Name  * @ppe_vp_type: VP type flag.
643*5113495bSYour Name  */
644*5113495bSYour Name struct cdp_ds_vp_params {
645*5113495bSYour Name 	struct net_device *dev;
646*5113495bSYour Name 	uint32_t peer_id;
647*5113495bSYour Name 	int8_t ppe_vp_profile_idx;
648*5113495bSYour Name 	bool wds_ext_mode;
649*5113495bSYour Name 	unsigned long ppe_vp_type;
650*5113495bSYour Name };
651*5113495bSYour Name 
652*5113495bSYour Name /**
653*5113495bSYour Name  * enum cdp_sec_type - security type information
654*5113495bSYour Name  * @cdp_sec_type_none:
655*5113495bSYour Name  * @cdp_sec_type_wep128:
656*5113495bSYour Name  * @cdp_sec_type_wep104:
657*5113495bSYour Name  * @cdp_sec_type_wep40:
658*5113495bSYour Name  * @cdp_sec_type_tkip:
659*5113495bSYour Name  * @cdp_sec_type_tkip_nomic:
660*5113495bSYour Name  * @cdp_sec_type_aes_ccmp:
661*5113495bSYour Name  * @cdp_sec_type_wapi:
662*5113495bSYour Name  * @cdp_sec_type_aes_ccmp_256:
663*5113495bSYour Name  * @cdp_sec_type_aes_gcmp:
664*5113495bSYour Name  * @cdp_sec_type_aes_gcmp_256:
665*5113495bSYour Name  * @cdp_num_sec_types:
666*5113495bSYour Name  */
667*5113495bSYour Name enum cdp_sec_type {
668*5113495bSYour Name     cdp_sec_type_none,
669*5113495bSYour Name     cdp_sec_type_wep128,
670*5113495bSYour Name     cdp_sec_type_wep104,
671*5113495bSYour Name     cdp_sec_type_wep40,
672*5113495bSYour Name     cdp_sec_type_tkip,
673*5113495bSYour Name     cdp_sec_type_tkip_nomic,
674*5113495bSYour Name     cdp_sec_type_aes_ccmp,
675*5113495bSYour Name     cdp_sec_type_wapi,
676*5113495bSYour Name     cdp_sec_type_aes_ccmp_256,
677*5113495bSYour Name     cdp_sec_type_aes_gcmp,
678*5113495bSYour Name     cdp_sec_type_aes_gcmp_256,
679*5113495bSYour Name 
680*5113495bSYour Name     /* keep this last! */
681*5113495bSYour Name     cdp_num_sec_types
682*5113495bSYour Name };
683*5113495bSYour Name 
684*5113495bSYour Name /**
685*5113495bSYour Name  * struct cdp_tx_exception_metadata - Exception path parameters
686*5113495bSYour Name  * @peer_id: Peer id of the peer
687*5113495bSYour Name  * @tid: Transmit Identifier
688*5113495bSYour Name  * @tx_encap_type: Transmit encap type (i.e. Raw, Native Wi-Fi, Ethernet)
689*5113495bSYour Name  * @sec_type: sec_type to be passed to HAL
690*5113495bSYour Name  * @is_tx_sniffer: Indicates if the packet has to be sniffed
691*5113495bSYour Name  * @is_intrabss_fwd:
692*5113495bSYour Name  * @ppdu_cookie: 16-bit ppdu cookie that has to be replayed back in completions
693*5113495bSYour Name  * @is_wds_extended:
694*5113495bSYour Name  * @is_mlo_mcast: Indicates if mlo_mcast enable or not
695*5113495bSYour Name  *
696*5113495bSYour Name  * This structure holds the parameters needed in the exception path of tx
697*5113495bSYour Name  *
698*5113495bSYour Name  */
699*5113495bSYour Name struct cdp_tx_exception_metadata {
700*5113495bSYour Name 	uint16_t peer_id;
701*5113495bSYour Name 	uint8_t tid;
702*5113495bSYour Name 	uint16_t tx_encap_type;
703*5113495bSYour Name 	enum cdp_sec_type sec_type;
704*5113495bSYour Name 	uint8_t is_tx_sniffer :1,
705*5113495bSYour Name 		is_intrabss_fwd :1;
706*5113495bSYour Name 	uint16_t ppdu_cookie;
707*5113495bSYour Name #ifdef QCA_SUPPORT_WDS_EXTENDED
708*5113495bSYour Name 	uint8_t is_wds_extended;
709*5113495bSYour Name #endif
710*5113495bSYour Name #ifdef WLAN_MCAST_MLO
711*5113495bSYour Name 	uint8_t is_mlo_mcast;
712*5113495bSYour Name #endif
713*5113495bSYour Name };
714*5113495bSYour Name 
715*5113495bSYour Name /**
716*5113495bSYour Name  * enum wlan_op_mode - Virtual device operation mode
717*5113495bSYour Name  * @wlan_op_mode_unknown: Unknown mode
718*5113495bSYour Name  * @wlan_op_mode_ap: AP mode
719*5113495bSYour Name  * @wlan_op_mode_ibss: IBSS mode
720*5113495bSYour Name  * @wlan_op_mode_sta: STA (client) mode
721*5113495bSYour Name  * @wlan_op_mode_monitor: Monitor mode
722*5113495bSYour Name  * @wlan_op_mode_ocb: OCB mode
723*5113495bSYour Name  * @wlan_op_mode_ndi: NDI mode
724*5113495bSYour Name  */
725*5113495bSYour Name enum wlan_op_mode {
726*5113495bSYour Name 	wlan_op_mode_unknown,
727*5113495bSYour Name 	wlan_op_mode_ap,
728*5113495bSYour Name 	wlan_op_mode_ibss,
729*5113495bSYour Name 	wlan_op_mode_sta,
730*5113495bSYour Name 	wlan_op_mode_monitor,
731*5113495bSYour Name 	wlan_op_mode_ocb,
732*5113495bSYour Name 	wlan_op_mode_ndi,
733*5113495bSYour Name };
734*5113495bSYour Name 
735*5113495bSYour Name /**
736*5113495bSYour Name  * enum wlan_op_subtype - Virtual device subtype
737*5113495bSYour Name  * @wlan_op_subtype_none: Subtype not applicable
738*5113495bSYour Name  * @wlan_op_subtype_p2p_device: P2P device
739*5113495bSYour Name  * @wlan_op_subtype_p2p_cli: P2P Client
740*5113495bSYour Name  * @wlan_op_subtype_p2p_go: P2P GO
741*5113495bSYour Name  *
742*5113495bSYour Name  * This enum lists the subtypes of a particular virtual
743*5113495bSYour Name  * device.
744*5113495bSYour Name  */
745*5113495bSYour Name enum wlan_op_subtype {
746*5113495bSYour Name 	wlan_op_subtype_none,
747*5113495bSYour Name 	wlan_op_subtype_p2p_device,
748*5113495bSYour Name 	wlan_op_subtype_p2p_cli,
749*5113495bSYour Name 	wlan_op_subtype_p2p_go,
750*5113495bSYour Name };
751*5113495bSYour Name 
752*5113495bSYour Name /**
753*5113495bSYour Name  * struct cdp_vdev_info - Vdev information
754*5113495bSYour Name  * @vdev_mac_addr: mac address of the vdev
755*5113495bSYour Name  * @vdev_id: ID of the vdev
756*5113495bSYour Name  * @vdev_stats_id: Stats ID of the vdev
757*5113495bSYour Name  * @op_mode: Operation mode of the vdev
758*5113495bSYour Name  * @subtype: subtype of the vdev
759*5113495bSYour Name  * @qdf_opmode: Operation mode of the vdev
760*5113495bSYour Name  * @mld_mac_addr: MLD mac addr of the current vdev.
761*5113495bSYour Name  * @is_bridge_vap: current vdev is bridge vap or not.
762*5113495bSYour Name  */
763*5113495bSYour Name struct cdp_vdev_info {
764*5113495bSYour Name 	uint8_t *vdev_mac_addr;
765*5113495bSYour Name 	uint8_t vdev_id;
766*5113495bSYour Name 	uint8_t vdev_stats_id;
767*5113495bSYour Name 	enum wlan_op_mode op_mode;
768*5113495bSYour Name 	enum wlan_op_subtype subtype;
769*5113495bSYour Name 	enum QDF_OPMODE qdf_opmode;
770*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO
771*5113495bSYour Name 	uint8_t *mld_mac_addr;
772*5113495bSYour Name #ifdef WLAN_MLO_MULTI_CHIP
773*5113495bSYour Name 	bool is_bridge_vap;
774*5113495bSYour Name #endif
775*5113495bSYour Name #endif
776*5113495bSYour Name };
777*5113495bSYour Name 
778*5113495bSYour Name typedef struct cdp_soc_t *ol_txrx_soc_handle;
779*5113495bSYour Name 
780*5113495bSYour Name /**
781*5113495bSYour Name  * typedef ol_txrx_vdev_delete_cb ()- callback registered during vdev detach
782*5113495bSYour Name  * @context:
783*5113495bSYour Name  */
784*5113495bSYour Name typedef void (*ol_txrx_vdev_delete_cb)(void *context);
785*5113495bSYour Name 
786*5113495bSYour Name /**
787*5113495bSYour Name  * typedef ol_txrx_peer_unmap_sync_cb() - callback registered during peer
788*5113495bSYour Name  *                                        detach sync
789*5113495bSYour Name  * @vdev_id:
790*5113495bSYour Name  * @peer_id_cnt:
791*5113495bSYour Name  * @peer_id_list:
792*5113495bSYour Name  */
793*5113495bSYour Name typedef QDF_STATUS(*ol_txrx_peer_unmap_sync_cb)(uint8_t vdev_id,
794*5113495bSYour Name 						 uint32_t peer_id_cnt,
795*5113495bSYour Name 						 uint16_t *peer_id_list);
796*5113495bSYour Name 
797*5113495bSYour Name /**
798*5113495bSYour Name  * enum txrx_direction - Packet Direction
799*5113495bSYour Name  * @rx_direction: rx path packet
800*5113495bSYour Name  * @tx_direction: tx path packet
801*5113495bSYour Name  */
802*5113495bSYour Name enum txrx_direction {
803*5113495bSYour Name 	rx_direction = 1,
804*5113495bSYour Name 	tx_direction = 0,
805*5113495bSYour Name };
806*5113495bSYour Name 
807*5113495bSYour Name /**
808*5113495bSYour Name  * enum cdp_capabilities- DP capabilities
809*5113495bSYour Name  * @CDP_CFG_DP_TSO: TSO capability
810*5113495bSYour Name  * @CDP_CFG_DP_LRO: LRO capability
811*5113495bSYour Name  * @CDP_CFG_DP_SG: Scatter Gather capability
812*5113495bSYour Name  * @CDP_CFG_DP_GRO: GRO capability
813*5113495bSYour Name  * @CDP_CFG_DP_OL_TX_CSUM: Hardware based TX checksum capability
814*5113495bSYour Name  * @CDP_CFG_DP_OL_RX_CSUM: Hardware based RX checksum capability
815*5113495bSYour Name  * @CDP_CFG_DP_RAWMODE: RAW mode capability
816*5113495bSYour Name  * @CDP_CFG_DP_PEER_FLOW_CTRL: Peer flow-control capability
817*5113495bSYour Name  * @CDP_CFG_DP_MARK_NOTIFY_FRAME_SUPPORT: mark notify frames capability
818*5113495bSYour Name  */
819*5113495bSYour Name enum cdp_capabilities {
820*5113495bSYour Name 	CDP_CFG_DP_TSO,
821*5113495bSYour Name 	CDP_CFG_DP_LRO,
822*5113495bSYour Name 	CDP_CFG_DP_SG,
823*5113495bSYour Name 	CDP_CFG_DP_GRO,
824*5113495bSYour Name 	CDP_CFG_DP_OL_TX_CSUM,
825*5113495bSYour Name 	CDP_CFG_DP_OL_RX_CSUM,
826*5113495bSYour Name 	CDP_CFG_DP_RAWMODE,
827*5113495bSYour Name 	CDP_CFG_DP_PEER_FLOW_CTRL,
828*5113495bSYour Name 	CDP_CFG_DP_MARK_NOTIFY_FRAME_SUPPORT,
829*5113495bSYour Name };
830*5113495bSYour Name 
831*5113495bSYour Name /**
832*5113495bSYour Name  * struct ol_txrx_nbuf_classify - Packet classification object
833*5113495bSYour Name  * @peer_id: unique peer identifier from fw
834*5113495bSYour Name  * @tid: traffic identifier(could be overridden)
835*5113495bSYour Name  * @pkt_tid: traffic identifier(cannot be overridden)
836*5113495bSYour Name  * @pkt_tos: ip header tos value
837*5113495bSYour Name  * @pkt_dscp: ip header dscp value
838*5113495bSYour Name  * @tos: index value in map
839*5113495bSYour Name  * @dscp: DSCP_TID map index
840*5113495bSYour Name  * @is_mcast: multicast pkt check
841*5113495bSYour Name  * @is_eap: eapol pkt check
842*5113495bSYour Name  * @is_arp: arp pkt check
843*5113495bSYour Name  * @is_tcp: tcp pkt check
844*5113495bSYour Name  * @is_dhcp: dhcp pkt check
845*5113495bSYour Name  * @is_igmp: igmp pkt check
846*5113495bSYour Name  * @is_ipv4: ip version 4 pkt check
847*5113495bSYour Name  * @is_ipv6: ip version 6 pkt check
848*5113495bSYour Name  */
849*5113495bSYour Name struct ol_txrx_nbuf_classify {
850*5113495bSYour Name 	uint16_t peer_id;
851*5113495bSYour Name 	uint8_t tid;
852*5113495bSYour Name 	uint8_t pkt_tid;
853*5113495bSYour Name 	uint8_t pkt_tos;
854*5113495bSYour Name 	uint8_t pkt_dscp;
855*5113495bSYour Name 	uint8_t tos;
856*5113495bSYour Name 	uint8_t dscp;
857*5113495bSYour Name 	uint8_t is_mcast;
858*5113495bSYour Name 	uint8_t is_eap;
859*5113495bSYour Name 	uint8_t is_arp;
860*5113495bSYour Name 	uint8_t is_tcp;
861*5113495bSYour Name 	uint8_t is_dhcp;
862*5113495bSYour Name 	uint8_t is_igmp;
863*5113495bSYour Name 	uint8_t is_ipv4;
864*5113495bSYour Name 	uint8_t is_ipv6;
865*5113495bSYour Name };
866*5113495bSYour Name 
867*5113495bSYour Name /*
868*5113495bSYour Name  * typedef ol_osif_vdev_handle - opaque handle for OS shim virtual
869*5113495bSYour Name  *                               device object
870*5113495bSYour Name  */
871*5113495bSYour Name struct ol_osif_vdev_t;
872*5113495bSYour Name typedef struct ol_osif_vdev_t *ol_osif_vdev_handle;
873*5113495bSYour Name 
874*5113495bSYour Name #ifdef QCA_SUPPORT_WDS_EXTENDED
875*5113495bSYour Name struct ol_osif_peer_t;
876*5113495bSYour Name typedef struct ol_osif_peer_t *ol_osif_peer_handle;
877*5113495bSYour Name #endif
878*5113495bSYour Name 
879*5113495bSYour Name /**
880*5113495bSYour Name  * enum connectivity_stats_pkt_status - data pkt type
881*5113495bSYour Name  * @PKT_TYPE_REQ: Request packet
882*5113495bSYour Name  * @PKT_TYPE_RSP: Response packet
883*5113495bSYour Name  * @PKT_TYPE_TX_DROPPED: TX packet dropped
884*5113495bSYour Name  * @PKT_TYPE_RX_DROPPED: RX packet dropped
885*5113495bSYour Name  * @PKT_TYPE_RX_DELIVERED: RX packet delivered
886*5113495bSYour Name  * @PKT_TYPE_RX_REFUSED: RX packet refused
887*5113495bSYour Name  * @PKT_TYPE_TX_HOST_FW_SENT: TX packet FW sent
888*5113495bSYour Name  * @PKT_TYPE_TX_ACK_CNT:TC packet acked
889*5113495bSYour Name  * @PKT_TYPE_NONE: Invalid packet
890*5113495bSYour Name  */
891*5113495bSYour Name enum connectivity_stats_pkt_status {
892*5113495bSYour Name 	PKT_TYPE_REQ,
893*5113495bSYour Name 	PKT_TYPE_RSP,
894*5113495bSYour Name 	PKT_TYPE_TX_DROPPED,
895*5113495bSYour Name 	PKT_TYPE_RX_DROPPED,
896*5113495bSYour Name 	PKT_TYPE_RX_DELIVERED,
897*5113495bSYour Name 	PKT_TYPE_RX_REFUSED,
898*5113495bSYour Name 	PKT_TYPE_TX_HOST_FW_SENT,
899*5113495bSYour Name 	PKT_TYPE_TX_ACK_CNT,
900*5113495bSYour Name 	PKT_TYPE_NONE,
901*5113495bSYour Name };
902*5113495bSYour Name 
903*5113495bSYour Name /**
904*5113495bSYour Name  * typedef ol_txrx_mgmt_tx_cb() - tx management delivery notification
905*5113495bSYour Name  * callback function
906*5113495bSYour Name  * @ctxt:
907*5113495bSYour Name  * @tx_mgmt_frm:
908*5113495bSYour Name  * @had_error:
909*5113495bSYour Name  */
910*5113495bSYour Name typedef void
911*5113495bSYour Name (*ol_txrx_mgmt_tx_cb)(void *ctxt, qdf_nbuf_t tx_mgmt_frm, int had_error);
912*5113495bSYour Name 
913*5113495bSYour Name /**
914*5113495bSYour Name  * typedef ol_txrx_data_tx_cb() - Function registered with the data path
915*5113495bSYour Name  * that is called when tx frames marked as "no free" are
916*5113495bSYour Name  * done being transmitted
917*5113495bSYour Name  * @ctxt:
918*5113495bSYour Name  * @tx_frm:
919*5113495bSYour Name  * @had_error:
920*5113495bSYour Name  */
921*5113495bSYour Name typedef void
922*5113495bSYour Name (*ol_txrx_data_tx_cb)(void *ctxt, qdf_nbuf_t tx_frm, int had_error);
923*5113495bSYour Name 
924*5113495bSYour Name /**
925*5113495bSYour Name  * typedef ol_txrx_tx_fp() - top-level transmit function
926*5113495bSYour Name  * @soc: dp soc handle
927*5113495bSYour Name  * @vdev_id: handle to the virtual device object
928*5113495bSYour Name  * @msdu_list: list of network buffers
929*5113495bSYour Name  */
930*5113495bSYour Name typedef qdf_nbuf_t (*ol_txrx_tx_fp)(struct cdp_soc_t *soc, uint8_t vdev_id,
931*5113495bSYour Name 				    qdf_nbuf_t msdu_list);
932*5113495bSYour Name 
933*5113495bSYour Name /**
934*5113495bSYour Name  * typedef ol_txrx_tx_fast_fp() - top-level fast transmit function
935*5113495bSYour Name  * @soc: dp soc handle
936*5113495bSYour Name  * @vdev_id: handle to the virtual device object
937*5113495bSYour Name  * @msdu_list: list of network buffers
938*5113495bSYour Name  */
939*5113495bSYour Name typedef qdf_nbuf_t (*ol_txrx_tx_fast_fp)(struct cdp_soc_t *soc, uint8_t vdev_id,
940*5113495bSYour Name 					 qdf_nbuf_t msdu_list);
941*5113495bSYour Name 
942*5113495bSYour Name /**
943*5113495bSYour Name  * typedef ol_txrx_tx_exc_fp() - top-level transmit function on exception path
944*5113495bSYour Name  * @soc: dp soc handle
945*5113495bSYour Name  * @vdev_id: handle to the virtual device object
946*5113495bSYour Name  * @msdu_list: list of network buffers
947*5113495bSYour Name  * @tx_exc_metadata: structure that holds parameters to exception path
948*5113495bSYour Name  */
949*5113495bSYour Name typedef qdf_nbuf_t (*ol_txrx_tx_exc_fp)(struct cdp_soc_t *soc, uint8_t vdev_id,
950*5113495bSYour Name 					qdf_nbuf_t msdu_list,
951*5113495bSYour Name 					struct cdp_tx_exception_metadata
952*5113495bSYour Name 						*tx_exc_metadata);
953*5113495bSYour Name 
954*5113495bSYour Name /**
955*5113495bSYour Name  * typedef ol_txrx_completion_fp() - top-level transmit function
956*5113495bSYour Name  *                                   for tx completion
957*5113495bSYour Name  * @skb: skb data
958*5113495bSYour Name  * @osif_dev: the virtual device's OS shim object
959*5113495bSYour Name  * @flag: flag
960*5113495bSYour Name  */
961*5113495bSYour Name typedef void (*ol_txrx_completion_fp)(qdf_nbuf_t skb,
962*5113495bSYour Name 				      void *osif_dev, uint16_t flag);
963*5113495bSYour Name 
964*5113495bSYour Name /**
965*5113495bSYour Name  * typedef ol_txrx_classify_critical_pkt_fp() - classification cb for critical
966*5113495bSYour Name  *                                              frames
967*5113495bSYour Name  * @osif_dev: the virtual device's OS shim object
968*5113495bSYour Name  * @skb: skb data
969*5113495bSYour Name  */
970*5113495bSYour Name typedef void (*ol_txrx_classify_critical_pkt_fp)(void *osif_dev,
971*5113495bSYour Name 						 qdf_nbuf_t skb);
972*5113495bSYour Name /**
973*5113495bSYour Name  * typedef ol_txrx_tx_flow_control_fp() - tx flow control notification
974*5113495bSYour Name  *                                        function from txrx to OS shim
975*5113495bSYour Name  * @osif_dev: the virtual device's OS shim object
976*5113495bSYour Name  * @tx_resume: tx os q should be resumed or not
977*5113495bSYour Name  */
978*5113495bSYour Name typedef void (*ol_txrx_tx_flow_control_fp)(void *osif_dev,
979*5113495bSYour Name 					    bool tx_resume);
980*5113495bSYour Name 
981*5113495bSYour Name /**
982*5113495bSYour Name  * typedef ol_txrx_tx_flow_control_is_pause_fp() - is tx paused by flow control
983*5113495bSYour Name  *                                                 function from txrx to OS shim
984*5113495bSYour Name  * @osif_dev: the virtual device's OS shim object
985*5113495bSYour Name  *
986*5113495bSYour Name  * Return: true if tx is paused by flow control
987*5113495bSYour Name  */
988*5113495bSYour Name typedef bool (*ol_txrx_tx_flow_control_is_pause_fp)(void *osif_dev);
989*5113495bSYour Name 
990*5113495bSYour Name /**
991*5113495bSYour Name  * typedef ol_txrx_rx_fp() - receive function to hand batches of data
992*5113495bSYour Name  *                           frames from txrx to OS shim
993*5113495bSYour Name  * @osif_dev: handle to the OSIF virtual device object
994*5113495bSYour Name  * @msdu_list: list of network buffers
995*5113495bSYour Name  */
996*5113495bSYour Name typedef QDF_STATUS(*ol_txrx_rx_fp)(void *osif_dev, qdf_nbuf_t msdu_list);
997*5113495bSYour Name 
998*5113495bSYour Name typedef QDF_STATUS(*ol_txrx_fisa_rx_fp)(void *soc,
999*5113495bSYour Name 					void *dp_vdev,
1000*5113495bSYour Name 					qdf_nbuf_t msdu_list);
1001*5113495bSYour Name 
1002*5113495bSYour Name typedef QDF_STATUS(*ol_txrx_fisa_flush_fp)(void *soc, int ring_num);
1003*5113495bSYour Name 
1004*5113495bSYour Name /**
1005*5113495bSYour Name  * typedef ol_txrx_rx_flush_fp() - receive function to hand batches of
1006*5113495bSYour Name  *                                 data frames from txrx to OS shim
1007*5113495bSYour Name  * @osif_dev: handle to the OSIF virtual device object
1008*5113495bSYour Name  * @vdev_id: vdev_if of the packets to be flushed
1009*5113495bSYour Name  */
1010*5113495bSYour Name typedef QDF_STATUS(*ol_txrx_rx_flush_fp)(void *osif_dev, uint8_t vdev_id);
1011*5113495bSYour Name 
1012*5113495bSYour Name /**
1013*5113495bSYour Name  * typedef ol_txrx_rx_gro_flush_ind_fp() - function to send GRO flush
1014*5113495bSYour Name  *                                         indication to stack for a given
1015*5113495bSYour Name  *                                         RX Context Id.
1016*5113495bSYour Name  * @osif_dev: handle to the OSIF virtual device object
1017*5113495bSYour Name  * @rx_ctx_id: Rx context Id for which gro flush should happen
1018*5113495bSYour Name  */
1019*5113495bSYour Name typedef QDF_STATUS(*ol_txrx_rx_gro_flush_ind_fp)(void *osif_dev,
1020*5113495bSYour Name 						 int rx_ctx_id);
1021*5113495bSYour Name 
1022*5113495bSYour Name /**
1023*5113495bSYour Name  * typedef ol_txrx_stats_rx_fp() - receive function to hand batches of
1024*5113495bSYour Name  *                                 data frames from txrx to OS shim
1025*5113495bSYour Name  * @skb: skb data
1026*5113495bSYour Name  * @osif_dev: the virtual device's OS shim object
1027*5113495bSYour Name  * @action: data packet type
1028*5113495bSYour Name  * @pkt_type: packet data type
1029*5113495bSYour Name  */
1030*5113495bSYour Name typedef void (*ol_txrx_stats_rx_fp)(struct sk_buff *skb,
1031*5113495bSYour Name 		void *osif_dev, enum connectivity_stats_pkt_status action,
1032*5113495bSYour Name 		uint8_t *pkt_type);
1033*5113495bSYour Name 
1034*5113495bSYour Name /**
1035*5113495bSYour Name  * typedef ol_txrx_get_key_fp() - function to gey key based on keyix
1036*5113495bSYour Name  *                                and peer mac address
1037*5113495bSYour Name  * @osif_dev: the virtual device's OS shim object
1038*5113495bSYour Name  * @key_buf: pointer to store key
1039*5113495bSYour Name  * @mac_addr: pointer to mac address
1040*5113495bSYour Name  * @keyix: key id
1041*5113495bSYour Name  */
1042*5113495bSYour Name typedef QDF_STATUS(*ol_txrx_get_key_fp)(void *osif_dev, uint8_t *key_buf,
1043*5113495bSYour Name 					uint8_t *mac_addr, uint8_t keyix);
1044*5113495bSYour Name 
1045*5113495bSYour Name /**
1046*5113495bSYour Name  * typedef ol_txrx_rsim_rx_decap_fp() - raw mode simulation function
1047*5113495bSYour Name  *                                      to decap the packets in
1048*5113495bSYour Name  *                                      receive path.
1049*5113495bSYour Name  * @osif_dev: the virtual device's OS shim object
1050*5113495bSYour Name  * @list_head: pointer to head of receive packet queue to decap
1051*5113495bSYour Name  * @list_tail: pointer to tail of receive packet queue to decap
1052*5113495bSYour Name  * @peer_mac: mac address of peer handler
1053*5113495bSYour Name  */
1054*5113495bSYour Name typedef QDF_STATUS(*ol_txrx_rsim_rx_decap_fp)(void *osif_dev,
1055*5113495bSYour Name 					      qdf_nbuf_t *list_head,
1056*5113495bSYour Name 					      qdf_nbuf_t *list_tail);
1057*5113495bSYour Name 
1058*5113495bSYour Name /**
1059*5113495bSYour Name  * typedef ol_txrx_tx_free_ext_fp() - external tx free function to
1060*5113495bSYour Name  *                                    read per packet stats and free
1061*5113495bSYour Name  *                                    tx buffer externally
1062*5113495bSYour Name  * @netbuf: tx network buffer
1063*5113495bSYour Name  */
1064*5113495bSYour Name typedef void (*ol_txrx_tx_free_ext_fp)(qdf_nbuf_t netbuf);
1065*5113495bSYour Name 
1066*5113495bSYour Name /**
1067*5113495bSYour Name  * typedef ol_txrx_rx_check_wai_fp() - OSIF WAPI receive function
1068*5113495bSYour Name  * @vdev:
1069*5113495bSYour Name  * @mpdu_head:
1070*5113495bSYour Name  * @mpdu_tail:
1071*5113495bSYour Name  */
1072*5113495bSYour Name typedef bool (*ol_txrx_rx_check_wai_fp)(ol_osif_vdev_handle vdev,
1073*5113495bSYour Name 					qdf_nbuf_t mpdu_head,
1074*5113495bSYour Name 					qdf_nbuf_t mpdu_tail);
1075*5113495bSYour Name /**
1076*5113495bSYour Name  * typedef ol_txrx_rx_mon_fp() - OSIF monitor mode receive function for single
1077*5113495bSYour Name  *                               MPDU (802.11 format)
1078*5113495bSYour Name  * @vdev:
1079*5113495bSYour Name  * @mpdu:
1080*5113495bSYour Name  * @rx_status:
1081*5113495bSYour Name  */
1082*5113495bSYour Name typedef void (*ol_txrx_rx_mon_fp)(ol_osif_vdev_handle vdev,
1083*5113495bSYour Name 				  qdf_nbuf_t mpdu,
1084*5113495bSYour Name 				  void *rx_status);
1085*5113495bSYour Name 
1086*5113495bSYour Name /**
1087*5113495bSYour Name  * typedef ol_txrx_proxy_arp_fp() - proxy arp function pointer
1088*5113495bSYour Name  * @vdev:
1089*5113495bSYour Name  * @netbuf:
1090*5113495bSYour Name  */
1091*5113495bSYour Name typedef int (*ol_txrx_proxy_arp_fp)(ol_osif_vdev_handle vdev,
1092*5113495bSYour Name 				    qdf_nbuf_t netbuf);
1093*5113495bSYour Name 
1094*5113495bSYour Name /**
1095*5113495bSYour Name  * typedef ol_txrx_mcast_me_fp() - function pointer for multicast enhancement
1096*5113495bSYour Name  * @vdev:
1097*5113495bSYour Name  * @netbuf:
1098*5113495bSYour Name  */
1099*5113495bSYour Name typedef int (*ol_txrx_mcast_me_fp)(ol_osif_vdev_handle vdev,
1100*5113495bSYour Name 				   qdf_nbuf_t netbuf);
1101*5113495bSYour Name 
1102*5113495bSYour Name /**
1103*5113495bSYour Name  * typedef ol_txrx_stats_callback() - statistics notify callback
1104*5113495bSYour Name  * @ctxt:
1105*5113495bSYour Name  * @type:
1106*5113495bSYour Name  * @buf:
1107*5113495bSYour Name  * @bytes:
1108*5113495bSYour Name  */
1109*5113495bSYour Name typedef void (*ol_txrx_stats_callback)(void *ctxt,
1110*5113495bSYour Name 				       enum htt_cmn_dbg_stats_type type,
1111*5113495bSYour Name 				       uint8_t *buf, int bytes);
1112*5113495bSYour Name 
1113*5113495bSYour Name /**
1114*5113495bSYour Name  * typedef ol_txrx_pktdump_cb() - callback for packet dump feature
1115*5113495bSYour Name  * @soc:
1116*5113495bSYour Name  * @pdev_id:
1117*5113495bSYour Name  * @vdev_id:
1118*5113495bSYour Name  * @netbuf:
1119*5113495bSYour Name  * @status:
1120*5113495bSYour Name  * @type:
1121*5113495bSYour Name  */
1122*5113495bSYour Name typedef void (*ol_txrx_pktdump_cb)(ol_txrx_soc_handle soc,
1123*5113495bSYour Name 				   uint8_t pdev_id,
1124*5113495bSYour Name 				   uint8_t vdev_id,
1125*5113495bSYour Name 				   qdf_nbuf_t netbuf,
1126*5113495bSYour Name 				   enum qdf_dp_tx_rx_status status,
1127*5113495bSYour Name 				   enum qdf_pkt_type type);
1128*5113495bSYour Name 
1129*5113495bSYour Name /**
1130*5113495bSYour Name  * typedef ol_txrx_get_tsf_time() - callback to get tsf time
1131*5113495bSYour Name  * @osif_dev:
1132*5113495bSYour Name  * @input_time:
1133*5113495bSYour Name  * @tsf_time:
1134*5113495bSYour Name  */
1135*5113495bSYour Name typedef QDF_STATUS(*ol_txrx_get_tsf_time)(void *osif_dev, uint64_t input_time,
1136*5113495bSYour Name 					  uint64_t *tsf_time);
1137*5113495bSYour Name 
1138*5113495bSYour Name /**
1139*5113495bSYour Name  * struct ol_txrx_ops - (pointers to) the functions used for tx and rx
1140*5113495bSYour Name  * data xfer
1141*5113495bSYour Name  *
1142*5113495bSYour Name  * There are two portions of these txrx operations.
1143*5113495bSYour Name  * The rx portion is filled in by OSIF SW before calling
1144*5113495bSYour Name  * ol_txrx_osif_vdev_register; inside the ol_txrx_osif_vdev_register
1145*5113495bSYour Name  * the txrx SW stores a copy of these rx function pointers, to use
1146*5113495bSYour Name  * as it delivers rx data frames to the OSIF SW.
1147*5113495bSYour Name  * The tx portion is filled in by the txrx SW inside
1148*5113495bSYour Name  * ol_txrx_osif_vdev_register; when the function call returns,
1149*5113495bSYour Name  * the OSIF SW stores a copy of these tx functions to use as it
1150*5113495bSYour Name  * delivers tx data frames to the txrx SW.
1151*5113495bSYour Name  *
1152*5113495bSYour Name  * @tx: tx function pointers - specified by txrx, stored by OS shim
1153*5113495bSYour Name  * @tx.std:  the tx function pointer for standard data
1154*5113495bSYour Name  * frames This function pointer is set by the txrx SW
1155*5113495bSYour Name  * perform host-side transmit operations based on
1156*5113495bSYour Name  * whether a HL or LL host/target interface is in use.
1157*5113495bSYour Name  * @tx.flow_control_cb: the transmit flow control
1158*5113495bSYour Name  * function that is registered by the
1159*5113495bSYour Name  * OSIF which is called from txrx to
1160*5113495bSYour Name  * indicate whether the transmit OS
1161*5113495bSYour Name  * queues should be paused/resumed
1162*5113495bSYour Name  * @rx: rx function pointers - specified by OS shim, stored by txrx
1163*5113495bSYour Name  * @rx.rx: the OS shim rx function to deliver rx data
1164*5113495bSYour Name  * frames to. This can have different values for
1165*5113495bSYour Name  * different virtual devices, e.g. so one virtual
1166*5113495bSYour Name  * device's OS shim directly hands rx frames to the OS,
1167*5113495bSYour Name  * but another virtual device's OS shim filters out P2P
1168*5113495bSYour Name  * messages before sending the rx frames to the OS. The
1169*5113495bSYour Name  * netbufs delivered to the osif_rx function are in the
1170*5113495bSYour Name  * format specified by the OS to use for tx and rx
1171*5113495bSYour Name  * frames (either 802.3 or native WiFi). In case RX Threads are enabled, pkts
1172*5113495bSYour Name  * are given to the thread, instead of the stack via this pointer.
1173*5113495bSYour Name  * @rx.rx_eapol: This rx function pointer used to receive only eapol frames
1174*5113495bSYour Name  * @rx.stack: function to give packets to the stack. Differs from @rx.rx.
1175*5113495bSYour Name  * In case RX Threads are enabled, this pointer holds the callback to give
1176*5113495bSYour Name  * packets to the stack.
1177*5113495bSYour Name  * @rx.rx_gro_flush: GRO flush indication to stack for a given RX CTX ID
1178*5113495bSYour Name  * @rx.wai_check: the tx function pointer for WAPI frames
1179*5113495bSYour Name  * @rx.mon: the OS shim rx monitor function to deliver
1180*5113495bSYour Name  * monitor data to Though in practice, it is probable
1181*5113495bSYour Name  * that the same function will be used for delivering
1182*5113495bSYour Name  * rx monitor data for all virtual devices, in theory
1183*5113495bSYour Name  * each different virtual device can have a different
1184*5113495bSYour Name  * OS shim function for accepting rx monitor data. The
1185*5113495bSYour Name  * netbufs delivered to the osif_rx_mon function are in
1186*5113495bSYour Name  * 802.11 format.  Each netbuf holds a 802.11 MPDU, not
1187*5113495bSYour Name  * an 802.11 MSDU. Depending on compile-time
1188*5113495bSYour Name  * configuration, each netbuf may also have a
1189*5113495bSYour Name  * monitor-mode encapsulation header such as a radiotap
1190*5113495bSYour Name  * header added before the MPDU contents.
1191*5113495bSYour Name  * @rx.std: the OS shim rx function to deliver rx data
1192*5113495bSYour Name  * @proxy_arp: proxy arp function pointer - specified by
1193*5113495bSYour Name  * OS shim, stored by txrx
1194*5113495bSYour Name  * @me_convert:
1195*5113495bSYour Name  * @get_key: function pointer to get key of the peer with
1196*5113495bSYour Name  * specific key index
1197*5113495bSYour Name  * @get_tsf_time: function pointer to get TSF
1198*5113495bSYour Name  * @vdev_del_notify: vdev delete notifier
1199*5113495bSYour Name  */
1200*5113495bSYour Name struct ol_txrx_ops {
1201*5113495bSYour Name 	struct {
1202*5113495bSYour Name 		ol_txrx_tx_fp         tx;
1203*5113495bSYour Name 		ol_txrx_tx_fast_fp    tx_fast;
1204*5113495bSYour Name 		ol_txrx_tx_exc_fp     tx_exception;
1205*5113495bSYour Name 		ol_txrx_tx_free_ext_fp tx_free_ext;
1206*5113495bSYour Name 		ol_txrx_completion_fp tx_comp;
1207*5113495bSYour Name 		ol_txrx_classify_critical_pkt_fp tx_classify_critical_pkt_cb;
1208*5113495bSYour Name 	} tx;
1209*5113495bSYour Name 
1210*5113495bSYour Name 	struct {
1211*5113495bSYour Name 		ol_txrx_rx_fp           rx;
1212*5113495bSYour Name #ifdef QCA_SUPPORT_EAPOL_OVER_CONTROL_PORT
1213*5113495bSYour Name 		ol_txrx_rx_fp     rx_eapol;
1214*5113495bSYour Name #endif
1215*5113495bSYour Name 		ol_txrx_rx_fp           rx_stack;
1216*5113495bSYour Name 		ol_txrx_rx_flush_fp     rx_flush;
1217*5113495bSYour Name 		ol_txrx_rx_gro_flush_ind_fp           rx_gro_flush;
1218*5113495bSYour Name 		ol_txrx_rx_check_wai_fp wai_check;
1219*5113495bSYour Name 		ol_txrx_rx_mon_fp       mon;
1220*5113495bSYour Name 		ol_txrx_stats_rx_fp           stats_rx;
1221*5113495bSYour Name 		ol_txrx_rsim_rx_decap_fp rsim_rx_decap;
1222*5113495bSYour Name 		ol_txrx_fisa_rx_fp	osif_fisa_rx;
1223*5113495bSYour Name 		ol_txrx_fisa_flush_fp   osif_fisa_flush;
1224*5113495bSYour Name 	} rx;
1225*5113495bSYour Name 	/* proxy arp function pointer - specified by OS shim, stored by txrx */
1226*5113495bSYour Name 	ol_txrx_proxy_arp_fp      proxy_arp;
1227*5113495bSYour Name 	ol_txrx_mcast_me_fp          me_convert;
1228*5113495bSYour Name 
1229*5113495bSYour Name 	ol_txrx_get_key_fp  get_key;
1230*5113495bSYour Name 	ol_txrx_get_tsf_time get_tsf_time;
1231*5113495bSYour Name 	ol_txrx_vdev_delete_cb vdev_del_notify;
1232*5113495bSYour Name };
1233*5113495bSYour Name 
1234*5113495bSYour Name /**
1235*5113495bSYour Name  * struct ol_txrx_hardtart_ctxt - handlers for dp tx path
1236*5113495bSYour Name  * @tx: normal tx function
1237*5113495bSYour Name  * @tx_fast: fast tx function
1238*5113495bSYour Name  * @tx_exception: exception tx function
1239*5113495bSYour Name  */
1240*5113495bSYour Name struct ol_txrx_hardtart_ctxt {
1241*5113495bSYour Name 	ol_txrx_tx_fp         tx;
1242*5113495bSYour Name 	ol_txrx_tx_fast_fp    tx_fast;
1243*5113495bSYour Name 	ol_txrx_tx_exc_fp     tx_exception;
1244*5113495bSYour Name };
1245*5113495bSYour Name 
1246*5113495bSYour Name /**
1247*5113495bSYour Name  * struct ol_txrx_stats_req - specifications of the requested
1248*5113495bSYour Name  *                            statistics
1249*5113495bSYour Name  * @stats_type_upload_mask: which stats to upload
1250*5113495bSYour Name  * @stats_type_reset_mask: which stats to reset
1251*5113495bSYour Name  * @print: control to print uploaded stats. stats will be printed if
1252*5113495bSYour Name  *         either print element is set
1253*5113495bSYour Name  * @print.verbose: verbose stats printout
1254*5113495bSYour Name  * @print.concise: concise stats printout (takes precedence)
1255*5113495bSYour Name  * @callback: callback context
1256*5113495bSYour Name  * @callback.fp: function pointer to call. stats notify callback will
1257*5113495bSYour Name  *               be invoked if fp is non-NULL
1258*5113495bSYour Name  * @callback.ctxt: opaque context to pass to callback function
1259*5113495bSYour Name  * @copy: copy context
1260*5113495bSYour Name  * @copy.buf: stats will be copied into the specified buffer if buf is
1261*5113495bSYour Name  *            non-NULL
1262*5113495bSYour Name  * @byte_limit: don't copy more than this
1263*5113495bSYour Name  * @wait: wait context
1264*5113495bSYour Name  * @wait.blocking: If true, the caller will take the specified
1265*5113495bSYour Name  *                 semaphore to wait for the stats to be uploaded, and
1266*5113495bSYour Name  *                 the driver will release the semaphore when the
1267*5113495bSYour Name  *                 stats are done being uploaded.
1268*5113495bSYour Name  * @wait.sem_ptr: Semaphore to use for blocking
1269*5113495bSYour Name  */
1270*5113495bSYour Name struct ol_txrx_stats_req {
1271*5113495bSYour Name 	uint32_t stats_type_upload_mask;
1272*5113495bSYour Name 	uint32_t stats_type_reset_mask;
1273*5113495bSYour Name 
1274*5113495bSYour Name 	struct {
1275*5113495bSYour Name 		int verbose;
1276*5113495bSYour Name 		int concise;
1277*5113495bSYour Name 	} print;
1278*5113495bSYour Name 
1279*5113495bSYour Name 	struct {
1280*5113495bSYour Name 		ol_txrx_stats_callback fp;
1281*5113495bSYour Name 		void *ctxt;
1282*5113495bSYour Name 	} callback;
1283*5113495bSYour Name 
1284*5113495bSYour Name 	struct {
1285*5113495bSYour Name 		uint8_t *buf;
1286*5113495bSYour Name 		int byte_limit;
1287*5113495bSYour Name 	} copy;
1288*5113495bSYour Name 
1289*5113495bSYour Name 	struct {
1290*5113495bSYour Name 		int blocking;
1291*5113495bSYour Name 		qdf_semaphore_t *sem_ptr;
1292*5113495bSYour Name 	} wait;
1293*5113495bSYour Name };
1294*5113495bSYour Name 
1295*5113495bSYour Name 
1296*5113495bSYour Name /* DP soc struct definition */
1297*5113495bSYour Name struct cdp_soc_t {
1298*5113495bSYour Name 	struct cdp_ops *ops;
1299*5113495bSYour Name 	struct ol_if_ops *ol_ops;
1300*5113495bSYour Name };
1301*5113495bSYour Name 
1302*5113495bSYour Name /**
1303*5113495bSYour Name  * enum cdp_peer_param_type - different types of parameters
1304*5113495bSYour Name  *			      to set values in peer
1305*5113495bSYour Name  * @CDP_CONFIG_NAWDS: Enable nawds mode
1306*5113495bSYour Name  * @CDP_CONFIG_NAC: Enable nac
1307*5113495bSYour Name  * @CDP_CONFIG_ISOLATION: Enable isolation
1308*5113495bSYour Name  * @CDP_CONFIG_IN_TWT: In TWT session or not
1309*5113495bSYour Name  * @CDP_CONFIG_MLD_PEER_VDEV: Change MLD peer's vdev
1310*5113495bSYour Name  * @CDP_CONFIG_PEER_FREQ: Set peer frequency
1311*5113495bSYour Name  */
1312*5113495bSYour Name enum cdp_peer_param_type {
1313*5113495bSYour Name 	CDP_CONFIG_NAWDS,
1314*5113495bSYour Name 	CDP_CONFIG_NAC,
1315*5113495bSYour Name 	CDP_CONFIG_ISOLATION,
1316*5113495bSYour Name 	CDP_CONFIG_IN_TWT,
1317*5113495bSYour Name 	CDP_CONFIG_MLD_PEER_VDEV,
1318*5113495bSYour Name 	CDP_CONFIG_PEER_FREQ,
1319*5113495bSYour Name };
1320*5113495bSYour Name 
1321*5113495bSYour Name /**
1322*5113495bSYour Name  * enum cdp_pdev_param_type - different types of parameters
1323*5113495bSYour Name  *			      to set values in pdev
1324*5113495bSYour Name  * @CDP_CONFIG_DEBUG_SNIFFER: Enable debug sniffer feature
1325*5113495bSYour Name  * @CDP_CONFIG_BPR_ENABLE: Enable bcast probe feature
1326*5113495bSYour Name  * @CDP_CONFIG_PRIMARY_RADIO: Configure radio as primary
1327*5113495bSYour Name  * @CDP_CONFIG_ENABLE_PERPKT_TXSTATS: Enable per packet statistics
1328*5113495bSYour Name  * @CDP_CONFIG_IGMPMLD_OVERRIDE: Override IGMP/MLD
1329*5113495bSYour Name  * @CDP_CONFIG_IGMPMLD_TID: Configurable TID value when igmmld_override is set
1330*5113495bSYour Name  * @CDP_CONFIG_ARP_DBG_CONF: Enable ARP debug
1331*5113495bSYour Name  * @CDP_CONFIG_CAPTURE_LATENCY: Capture time latency
1332*5113495bSYour Name  * @CDP_INGRESS_STATS: Accumulate ingress statistics
1333*5113495bSYour Name  * @CDP_OSIF_DROP: Accumulate drops in OSIF layer
1334*5113495bSYour Name  * @CDP_CONFIG_ENH_RX_CAPTURE: Enable enhanced RX capture
1335*5113495bSYour Name  * @CDP_CONFIG_ENH_TX_CAPTURE: Enable enhanced TX capture
1336*5113495bSYour Name  * @CDP_CONFIG_HMMC_TID_OVERRIDE: Enable hmmc tid override
1337*5113495bSYour Name  * @CDP_CONFIG_HMMC_TID_VALUE: set hmmc tid value
1338*5113495bSYour Name  * @CDP_CONFIG_TX_CAPTURE: set tx capture
1339*5113495bSYour Name  * @CDP_CHAN_NOISE_FLOOR: set channel noise floor
1340*5113495bSYour Name  * @CDP_CONFIG_VOW: set/get vow config
1341*5113495bSYour Name  * @CDP_TIDQ_OVERRIDE: set/get tid queue override
1342*5113495bSYour Name  * @CDP_TIDMAP_PRTY: set/get tid map prty
1343*5113495bSYour Name  * @CDP_TX_PENDING: get tx pending
1344*5113495bSYour Name  * @CDP_FILTER_NEIGH_PEERS: filter neighbour peers
1345*5113495bSYour Name  * @CDP_FILTER_UCAST_DATA: filter unicast data
1346*5113495bSYour Name  * @CDP_FILTER_MCAST_DATA: filter multicast data
1347*5113495bSYour Name  * @CDP_FILTER_NO_DATA: filter no data
1348*5113495bSYour Name  * @CDP_MONITOR_CHANNEL: monitor channel
1349*5113495bSYour Name  * @CDP_MONITOR_FREQUENCY: monitor frequency
1350*5113495bSYour Name  * @CDP_CONFIG_BSS_COLOR: configure bss color
1351*5113495bSYour Name  * @CDP_SET_ATF_STATS_ENABLE: set ATF stats flag
1352*5113495bSYour Name  * @CDP_CONFIG_SPECIAL_VAP: Configure Special vap
1353*5113495bSYour Name  * @CDP_RESET_SCAN_SPCL_VAP_STATS_ENABLE: Enable scan spcl vap stats reset
1354*5113495bSYour Name  * @CDP_CONFIG_ENHANCED_STATS_ENABLE:
1355*5113495bSYour Name  * @CDP_ISOLATION: set isolation flag
1356*5113495bSYour Name  * @CDP_CONFIG_UNDECODED_METADATA_CAPTURE_ENABLE: Undecoded metadata capture
1357*5113495bSYour Name  * @CDP_CONFIG_RXDMA_BUF_RING_SIZE: RXDMA buffer ring size configure
1358*5113495bSYour Name  * @CDP_CONFIG_DELAY_STATS: set/get delay stats
1359*5113495bSYour Name  */
1360*5113495bSYour Name enum cdp_pdev_param_type {
1361*5113495bSYour Name 	CDP_CONFIG_DEBUG_SNIFFER,
1362*5113495bSYour Name 	CDP_CONFIG_BPR_ENABLE,
1363*5113495bSYour Name 	CDP_CONFIG_PRIMARY_RADIO,
1364*5113495bSYour Name 	CDP_CONFIG_ENABLE_PERPKT_TXSTATS,
1365*5113495bSYour Name 	CDP_CONFIG_IGMPMLD_OVERRIDE,
1366*5113495bSYour Name 	CDP_CONFIG_IGMPMLD_TID,
1367*5113495bSYour Name 	CDP_CONFIG_ARP_DBG_CONF,
1368*5113495bSYour Name 	CDP_CONFIG_CAPTURE_LATENCY,
1369*5113495bSYour Name 	CDP_INGRESS_STATS,
1370*5113495bSYour Name 	CDP_OSIF_DROP,
1371*5113495bSYour Name 	CDP_CONFIG_ENH_RX_CAPTURE,
1372*5113495bSYour Name 	CDP_CONFIG_ENH_TX_CAPTURE,
1373*5113495bSYour Name 	CDP_CONFIG_HMMC_TID_OVERRIDE,
1374*5113495bSYour Name 	CDP_CONFIG_HMMC_TID_VALUE,
1375*5113495bSYour Name 	CDP_CONFIG_TX_CAPTURE,
1376*5113495bSYour Name 	CDP_CHAN_NOISE_FLOOR,
1377*5113495bSYour Name 	CDP_CONFIG_VOW,
1378*5113495bSYour Name 	CDP_TIDQ_OVERRIDE,
1379*5113495bSYour Name 	CDP_TIDMAP_PRTY,
1380*5113495bSYour Name 	CDP_TX_PENDING,
1381*5113495bSYour Name 	CDP_FILTER_NEIGH_PEERS,
1382*5113495bSYour Name 	CDP_FILTER_UCAST_DATA,
1383*5113495bSYour Name 	CDP_FILTER_MCAST_DATA,
1384*5113495bSYour Name 	CDP_FILTER_NO_DATA,
1385*5113495bSYour Name 	CDP_MONITOR_CHANNEL,
1386*5113495bSYour Name 	CDP_MONITOR_FREQUENCY,
1387*5113495bSYour Name 	CDP_CONFIG_BSS_COLOR,
1388*5113495bSYour Name 	CDP_SET_ATF_STATS_ENABLE,
1389*5113495bSYour Name 	CDP_CONFIG_SPECIAL_VAP,
1390*5113495bSYour Name 	CDP_RESET_SCAN_SPCL_VAP_STATS_ENABLE,
1391*5113495bSYour Name 	CDP_CONFIG_ENHANCED_STATS_ENABLE,
1392*5113495bSYour Name 	CDP_ISOLATION,
1393*5113495bSYour Name 	CDP_CONFIG_UNDECODED_METADATA_CAPTURE_ENABLE,
1394*5113495bSYour Name 	CDP_CONFIG_RXDMA_BUF_RING_SIZE,
1395*5113495bSYour Name 	CDP_CONFIG_DELAY_STATS,
1396*5113495bSYour Name };
1397*5113495bSYour Name 
1398*5113495bSYour Name /**
1399*5113495bSYour Name  * typedef cdp_config_param_type - union of different types of parameters
1400*5113495bSYour Name  *			to set values into dp handles.
1401*5113495bSYour Name  *
1402*5113495bSYour Name  * @cdp_peer_param_nawds: Enable nawds mode
1403*5113495bSYour Name  * @cdp_peer_param_isolation: Enable isolation
1404*5113495bSYour Name  * @cdp_peer_param_in_twt: in TWT session or not
1405*5113495bSYour Name  * @cdp_peer_param_nac: Enable nac
1406*5113495bSYour Name  * @cdp_peer_param_freq: Peer frequency
1407*5113495bSYour Name  *
1408*5113495bSYour Name  * @cdp_vdev_param_nawds: set nawds enable/disable
1409*5113495bSYour Name  * @cdp_vdev_param_mcast_en: enable/disable multicast enhancement
1410*5113495bSYour Name  * @cdp_vdev_param_wds: wds sta
1411*5113495bSYour Name  * @cdp_vdev_param_mec: MEC enable flags
1412*5113495bSYour Name  * @cdp_vdev_param_proxysta: proxy sta
1413*5113495bSYour Name  * @cdp_vdev_param_tdls_flags: tdls link flags
1414*5113495bSYour Name  * @cdp_vdev_param_ap_brdg_en: set ap_bridging enable/disable
1415*5113495bSYour Name  * @cdp_vdev_param_cipher_en: set cipher type based on security
1416*5113495bSYour Name  * @cdp_vdev_param_qwrap_isolation: qwrap isolation mode
1417*5113495bSYour Name  * @cdp_vdev_param_tx_encap: tx encap type
1418*5113495bSYour Name  * @cdp_vdev_param_rx_decap: rx decap type
1419*5113495bSYour Name  * @cdp_vdev_param_mesh_rx_filter: set mesh rx filter
1420*5113495bSYour Name  * @cdp_vdev_param_tidmap_prty: set tid vdev prty
1421*5113495bSYour Name  * @cdp_vdev_param_tidmap_tbl_id: set tidmap table id
1422*5113495bSYour Name  * @cdp_vdev_param_mesh_mode: set mesh mode
1423*5113495bSYour Name  * @cdp_vdev_param_safe_mode: set safe mode
1424*5113495bSYour Name  * @cdp_vdev_param_drop_unenc: set drop unencrypted flag
1425*5113495bSYour Name  * @cdp_vdev_param_hlos_tid_override: set hlos tid override
1426*5113495bSYour Name  * @cdp_vdev_param_peer_authorize: set peer authorize
1427*5113495bSYour Name  * @cdp_vdev_param_peer_tid_latency_enable: set peer tid latency enable flag
1428*5113495bSYour Name  * @cdp_vdev_param_mesh_tid: config tatency tid on vdev
1429*5113495bSYour Name  * @cdp_vdev_param_dscp_tid_map_id: set dscp to tid map id
1430*5113495bSYour Name  * @cdp_vdev_param_mcast_vdev: set mcast vdev params
1431*5113495bSYour Name  * @cdp_vdev_param_wrap: qwrap ap vap
1432*5113495bSYour Name  *
1433*5113495bSYour Name  * @cdp_pdev_param_dbg_snf: Enable debug sniffer feature
1434*5113495bSYour Name  * @cdp_pdev_param_bpr_enable: Enable bcast probe feature
1435*5113495bSYour Name  * @cdp_pdev_param_primary_radio: Configure radio as primary
1436*5113495bSYour Name  * @cdp_pdev_param_en_perpkt_txstats: Enable per packet statistics
1437*5113495bSYour Name  * @cdp_pdev_param_igmpmld_override: Override IGMP/MLD
1438*5113495bSYour Name  * @cdp_pdev_param_igmpmld_tid: TID value when igmmld_override is set
1439*5113495bSYour Name  * @cdp_pdev_param_arp_dbg_conf: Enable ARP debug
1440*5113495bSYour Name  * @cdp_pdev_param_cptr_latcy: Capture time latency
1441*5113495bSYour Name  * @cdp_pdev_param_ingrs_stats: Accumulate ingress statistics
1442*5113495bSYour Name  * @cdp_pdev_param_osif_drop: Accumulate drops in OSIF layer
1443*5113495bSYour Name  * @cdp_pdev_param_en_rx_cap: Enable enhanced RX capture
1444*5113495bSYour Name  * @cdp_pdev_param_en_tx_cap: Enable enhanced TX capture
1445*5113495bSYour Name  * @cdp_pdev_param_hmmc_tid_ovrd: Enable hmmc tid override
1446*5113495bSYour Name  * @cdp_pdev_param_hmmc_tid: set hmmc tid value
1447*5113495bSYour Name  * @cdp_pdev_param_tx_capture: set tx capture
1448*5113495bSYour Name  * @cdp_pdev_param_chn_noise_flr: set channel noise floor
1449*5113495bSYour Name  * @cdp_pdev_param_cfg_vow: set/get vow config
1450*5113495bSYour Name  * @cdp_pdev_param_cfg_delay_stats: set/get delayed stats
1451*5113495bSYour Name  * @cdp_pdev_param_tidq_override: set/get tid queue override
1452*5113495bSYour Name  * @cdp_pdev_param_mon_freq: set monitor frequency
1453*5113495bSYour Name  * @cdp_pdev_param_bss_color: configure bss color
1454*5113495bSYour Name  * @cdp_pdev_param_tidmap_prty: set/get tid map prty
1455*5113495bSYour Name  * @cdp_pdev_param_tx_pending: get tx pending
1456*5113495bSYour Name  * @cdp_pdev_param_fltr_neigh_peers: filter neighbour peers
1457*5113495bSYour Name  * @cdp_pdev_param_fltr_ucast: filter unicast data
1458*5113495bSYour Name  * @cdp_pdev_param_fltr_mcast: filter multicast data
1459*5113495bSYour Name  * @cdp_pdev_param_fltr_none: filter no data
1460*5113495bSYour Name  * @cdp_pdev_param_monitor_chan: monitor channel
1461*5113495bSYour Name  * @cdp_pdev_param_atf_stats_enable: ATF stats enable
1462*5113495bSYour Name  * @cdp_pdev_param_config_special_vap: Configure Special vap
1463*5113495bSYour Name  * @cdp_pdev_param_isolation : set isolation mode
1464*5113495bSYour Name  *
1465*5113495bSYour Name  * @cdp_psoc_param_en_rate_stats: set rate stats enable/disable
1466*5113495bSYour Name  * @cdp_psoc_param_en_nss_cfg: set nss cfg
1467*5113495bSYour Name  * @cdp_ipa_enabled : set ipa mode
1468*5113495bSYour Name  * @cdp_psoc_param_vdev_stats_hw_offload: Configure HW vdev stats offload
1469*5113495bSYour Name  * @cdp_pdev_param_undecoded_metadata_enable: Undecoded metadata capture enable
1470*5113495bSYour Name  * @cdp_sawf_enabled: SAWF enable/disable
1471*5113495bSYour Name  * @cdp_sawf_stats: SAWF stats config
1472*5113495bSYour Name  * @cdp_vdev_param_traffic_end_ind: Traffic end indication enable/disable
1473*5113495bSYour Name  * @cdp_skel_enable : Enable/Disable skeleton code for Umac reset debug
1474*5113495bSYour Name  * @cdp_drop_tx_mcast: Enable/Disable tx mcast drop
1475*5113495bSYour Name  * @cdp_vdev_tx_to_fw: Set to_fw bit for all tx packets for the vdev
1476*5113495bSYour Name  * @cdp_peer_metadata_ver: DP rx peer metadata version configuration
1477*5113495bSYour Name  * @hal_soc_hdl: DP HAL soc handle
1478*5113495bSYour Name  * @cdp_tx_desc_num: DP TX desc number config
1479*5113495bSYour Name  * @cdp_tx_ext_desc_num: number of TX EXT desc config
1480*5113495bSYour Name  * @cdp_tx_ring_size: TX ring size config
1481*5113495bSYour Name  * @cdp_tx_comp_ring_size: TX completion ring size config
1482*5113495bSYour Name  * @cdp_rx_sw_desc_num: RX SW descriptor number config
1483*5113495bSYour Name  * @cdp_reo_dst_ring_size: REO destination ring size config
1484*5113495bSYour Name  * @cdp_rxdma_refill_ring_size: RXDMA refill ring size config
1485*5113495bSYour Name  * @cdp_rx_refill_buf_pool_size: RX refill ring size config
1486*5113495bSYour Name  * @cdp_rxdma_buf_ring_size: RXDMA buf ring size config
1487*5113495bSYour Name  * @mac_addr: vdev mac address
1488*5113495bSYour Name  * @new_vdev_id: New vdev id to which MLD peer is to be moved
1489*5113495bSYour Name  * @fisa_params.fisa_fst_size: FISA table size
1490*5113495bSYour Name  * @fisa_params.rx_flow_max_search: max FST entries
1491*5113495bSYour Name  * @fisa_params.rx_toeplitz_hash_key: RX hash key
1492*5113495bSYour Name  * @rx_pkt_tlv_size: RX packet TLV size
1493*5113495bSYour Name  * @cdp_ast_indication_disable: AST indication disable
1494*5113495bSYour Name  * @cdp_psoc_param_mlo_oper_mode: mlo operation mode
1495*5113495bSYour Name  * @cdp_monitor_flag: monitor interface flags
1496*5113495bSYour Name  */
1497*5113495bSYour Name typedef union cdp_config_param_t {
1498*5113495bSYour Name 	/* peer params */
1499*5113495bSYour Name 	bool cdp_peer_param_nawds;
1500*5113495bSYour Name 	bool cdp_peer_param_isolation;
1501*5113495bSYour Name 	uint8_t cdp_peer_param_nac;
1502*5113495bSYour Name 	bool cdp_peer_param_in_twt;
1503*5113495bSYour Name 	uint32_t cdp_peer_param_freq;
1504*5113495bSYour Name 
1505*5113495bSYour Name 	/* vdev params */
1506*5113495bSYour Name 	bool cdp_vdev_param_wds;
1507*5113495bSYour Name 	bool cdp_vdev_param_mec;
1508*5113495bSYour Name 	bool cdp_vdev_param_nawds;
1509*5113495bSYour Name 	bool cdp_vdev_param_proxysta;
1510*5113495bSYour Name 	bool cdp_vdev_param_tdls_flags;
1511*5113495bSYour Name 	bool cdp_vdev_param_ap_brdg_en;
1512*5113495bSYour Name 	bool cdp_vdev_param_qwrap_isolation;
1513*5113495bSYour Name 	bool cdp_vdev_param_update_multipass;
1514*5113495bSYour Name 	uint8_t cdp_vdev_param_da_war;
1515*5113495bSYour Name 	uint8_t cdp_vdev_param_mcast_en;
1516*5113495bSYour Name 	uint8_t cdp_vdev_param_igmp_mcast_en;
1517*5113495bSYour Name 	uint8_t cdp_vdev_param_tidmap_prty;
1518*5113495bSYour Name 	uint8_t cdp_vdev_param_tidmap_tbl_id;
1519*5113495bSYour Name 	uint32_t cdp_vdev_param_aging_tmr;
1520*5113495bSYour Name 	uint32_t cdp_vdev_param_cipher_en;
1521*5113495bSYour Name 	uint32_t cdp_vdev_param_tx_encap;
1522*5113495bSYour Name 	uint32_t cdp_vdev_param_rx_decap;
1523*5113495bSYour Name 	uint32_t cdp_vdev_param_mesh_rx_filter;
1524*5113495bSYour Name 	uint32_t cdp_vdev_param_mesh_mode;
1525*5113495bSYour Name 	uint32_t cdp_vdev_param_safe_mode;
1526*5113495bSYour Name 	uint32_t cdp_vdev_param_drop_unenc;
1527*5113495bSYour Name 	uint8_t cdp_vdev_param_hlos_tid_override;
1528*5113495bSYour Name 	bool cdp_vdev_param_wds_ext;
1529*5113495bSYour Name 	uint8_t cdp_vdev_param_peer_authorize;
1530*5113495bSYour Name 	uint8_t cdp_vdev_param_peer_tid_latency_enable;
1531*5113495bSYour Name 	uint8_t cdp_vdev_param_mesh_tid;
1532*5113495bSYour Name 	uint8_t cdp_vdev_param_dscp_tid_map_id;
1533*5113495bSYour Name 	bool cdp_vdev_param_mcast_vdev;
1534*5113495bSYour Name 	bool cdp_vdev_param_wrap;
1535*5113495bSYour Name 
1536*5113495bSYour Name 	/* pdev params */
1537*5113495bSYour Name 	bool cdp_pdev_param_cptr_latcy;
1538*5113495bSYour Name 	bool cdp_pdev_param_hmmc_tid_ovrd;
1539*5113495bSYour Name 	bool cdp_pdev_param_fltr_neigh_peers;
1540*5113495bSYour Name 	bool cdp_pdev_param_cfg_vow;
1541*5113495bSYour Name 	bool cdp_pdev_param_cfg_delay_stats;
1542*5113495bSYour Name 	bool cdp_pdev_param_fltr_mcast;
1543*5113495bSYour Name 	bool cdp_pdev_param_fltr_none;
1544*5113495bSYour Name 	bool cdp_pdev_param_fltr_ucast;
1545*5113495bSYour Name 	uint8_t cdp_pdev_param_primary_radio;
1546*5113495bSYour Name 	uint8_t cdp_pdev_param_en_rx_cap;
1547*5113495bSYour Name 	uint8_t cdp_pdev_param_en_tx_cap;
1548*5113495bSYour Name 	uint8_t cdp_pdev_param_tx_capture;
1549*5113495bSYour Name 	uint8_t cdp_pdev_param_hmmc_tid;
1550*5113495bSYour Name 	uint8_t cdp_pdev_param_tidmap_prty;
1551*5113495bSYour Name 	uint8_t cdp_pdev_param_igmpmld_override;
1552*5113495bSYour Name 	uint8_t cdp_pdev_param_igmpmld_tid;
1553*5113495bSYour Name 	uint8_t cdp_pdev_param_arp_dbg_conf;
1554*5113495bSYour Name 	uint8_t cdp_pdev_param_tidq_override;
1555*5113495bSYour Name 	uint8_t cdp_pdev_param_bss_color;
1556*5113495bSYour Name 	uint16_t cdp_pdev_param_chn_noise_flr;
1557*5113495bSYour Name 	qdf_freq_t cdp_pdev_param_mon_freq;
1558*5113495bSYour Name 	int cdp_pdev_param_dbg_snf;
1559*5113495bSYour Name 	int cdp_pdev_param_bpr_enable;
1560*5113495bSYour Name 	int cdp_pdev_param_monitor_chan;
1561*5113495bSYour Name 	uint32_t cdp_pdev_param_ingrs_stats;
1562*5113495bSYour Name 	uint32_t cdp_pdev_param_osif_drop;
1563*5113495bSYour Name 	uint32_t cdp_pdev_param_en_perpkt_txstats;
1564*5113495bSYour Name 	uint32_t cdp_pdev_param_tx_pending;
1565*5113495bSYour Name 	bool cdp_pdev_param_atf_stats_enable;
1566*5113495bSYour Name 	bool cdp_pdev_param_config_special_vap;
1567*5113495bSYour Name 	bool cdp_pdev_param_reset_scan_spcl_vap_stats_enable;
1568*5113495bSYour Name 	bool cdp_pdev_param_enhanced_stats_enable;
1569*5113495bSYour Name 	bool cdp_pdev_param_isolation;
1570*5113495bSYour Name 
1571*5113495bSYour Name 	/* psoc params */
1572*5113495bSYour Name 	bool cdp_psoc_param_en_rate_stats;
1573*5113495bSYour Name 	int cdp_psoc_param_en_nss_cfg;
1574*5113495bSYour Name 	int cdp_psoc_param_preferred_hw_mode;
1575*5113495bSYour Name 	bool cdp_psoc_param_pext_stats;
1576*5113495bSYour Name 	bool cdp_psoc_param_jitter_stats;
1577*5113495bSYour Name 	bool cdp_psoc_param_dp_debug_log;
1578*5113495bSYour Name 
1579*5113495bSYour Name 	bool cdp_skip_bar_update;
1580*5113495bSYour Name 	bool cdp_ipa_enabled;
1581*5113495bSYour Name 	bool cdp_psoc_param_vdev_stats_hw_offload;
1582*5113495bSYour Name 	bool cdp_pdev_param_undecoded_metadata_enable;
1583*5113495bSYour Name 	bool cdp_sawf_enabled;
1584*5113495bSYour Name 	uint8_t cdp_sawf_stats;
1585*5113495bSYour Name 	bool cdp_drop_3addr_mcast;
1586*5113495bSYour Name 	bool cdp_vdev_param_traffic_end_ind;
1587*5113495bSYour Name 	bool cdp_umac_rst_skel;
1588*5113495bSYour Name 	bool cdp_drop_tx_mcast;
1589*5113495bSYour Name 	bool cdp_vdev_tx_to_fw;
1590*5113495bSYour Name 	uint8_t cdp_peer_metadata_ver;
1591*5113495bSYour Name 	void *hal_soc_hdl;
1592*5113495bSYour Name 
1593*5113495bSYour Name 	int cdp_tx_desc_num;
1594*5113495bSYour Name 	int cdp_tx_ext_desc_num;
1595*5113495bSYour Name 	int cdp_tx_ring_size;
1596*5113495bSYour Name 	int cdp_tx_comp_ring_size;
1597*5113495bSYour Name 	int cdp_rx_sw_desc_num;
1598*5113495bSYour Name 	int cdp_reo_dst_ring_size;
1599*5113495bSYour Name 	int cdp_rxdma_refill_ring_size;
1600*5113495bSYour Name 	int cdp_rx_refill_buf_pool_size;
1601*5113495bSYour Name 	int cdp_rxdma_buf_ring_size;
1602*5113495bSYour Name 
1603*5113495bSYour Name 	uint8_t mac_addr[QDF_MAC_ADDR_SIZE];
1604*5113495bSYour Name 	uint8_t new_vdev_id;
1605*5113495bSYour Name 	struct {
1606*5113495bSYour Name 		uint32_t fisa_fst_size;
1607*5113495bSYour Name 		uint16_t rx_flow_max_search;
1608*5113495bSYour Name 		uint8_t *rx_toeplitz_hash_key;
1609*5113495bSYour Name 	} fisa_params;
1610*5113495bSYour Name 	uint16_t rx_pkt_tlv_size;
1611*5113495bSYour Name 	bool cdp_ast_indication_disable;
1612*5113495bSYour Name 	uint8_t cdp_psoc_param_mlo_oper_mode;
1613*5113495bSYour Name 	uint8_t cdp_monitor_flag;
1614*5113495bSYour Name } cdp_config_param_type;
1615*5113495bSYour Name 
1616*5113495bSYour Name /**
1617*5113495bSYour Name  * enum cdp_rx_enh_capture_mode - Rx enhanced capture modes
1618*5113495bSYour Name  * @CDP_RX_ENH_CAPTURE_DISABLED: Disable Rx enhance capture
1619*5113495bSYour Name  * @CDP_RX_ENH_CAPTURE_MPDU: Enable capture of 128 bytes of each MPDU
1620*5113495bSYour Name  * @CDP_RX_ENH_CAPTURE_MPDU_MSDU: Enable capture of 128 bytes of each MSDU
1621*5113495bSYour Name  */
1622*5113495bSYour Name enum cdp_rx_enh_capture_mode {
1623*5113495bSYour Name 	CDP_RX_ENH_CAPTURE_DISABLED = 0,
1624*5113495bSYour Name 	CDP_RX_ENH_CAPTURE_MPDU,
1625*5113495bSYour Name 	CDP_RX_ENH_CAPTURE_MPDU_MSDU,
1626*5113495bSYour Name };
1627*5113495bSYour Name 
1628*5113495bSYour Name /**
1629*5113495bSYour Name  * enum cdp_rx_enh_capture_peer - Rx enhanced capture peer filtering
1630*5113495bSYour Name  * @CDP_RX_ENH_CAPTURE_PEER_DISABLED: Disable Rx ENH capture peer filtering
1631*5113495bSYour Name  * @CDP_RX_ENH_CAPTURE_PEER_ENABLED: Enable Rx ENH capture peer filtering
1632*5113495bSYour Name  */
1633*5113495bSYour Name enum cdp_rx_enh_capture_peer {
1634*5113495bSYour Name 	CDP_RX_ENH_CAPTURE_PEER_DISABLED = 0,
1635*5113495bSYour Name 	CDP_RX_ENH_CAPTURE_PEER_ENABLED,
1636*5113495bSYour Name };
1637*5113495bSYour Name 
1638*5113495bSYour Name /**
1639*5113495bSYour Name  * enum cdp_tx_enh_capture_mode - Tx enhanced capture modes
1640*5113495bSYour Name  * @CDP_TX_ENH_CAPTURE_DISABLED: Disable Tx enhance capture for all peers
1641*5113495bSYour Name  * @CDP_TX_ENH_CAPTURE_ENABLE_ALL_PEERS: Enable tx capture for all peers
1642*5113495bSYour Name  * @CDP_TX_ENH_CAPTURE_ENDIS_PER_PEER: Enable/disable per peer as necessary
1643*5113495bSYour Name  * @CDP_TX_ENH_CAPTURE_MAX: Max value
1644*5113495bSYour Name  */
1645*5113495bSYour Name enum cdp_tx_enh_capture_mode {
1646*5113495bSYour Name 	CDP_TX_ENH_CAPTURE_DISABLED = 0,
1647*5113495bSYour Name 	CDP_TX_ENH_CAPTURE_ENABLE_ALL_PEERS,
1648*5113495bSYour Name 	CDP_TX_ENH_CAPTURE_ENDIS_PER_PEER,
1649*5113495bSYour Name 	CDP_TX_ENH_CAPTURE_MAX,
1650*5113495bSYour Name };
1651*5113495bSYour Name 
1652*5113495bSYour Name /**
1653*5113495bSYour Name  * enum cdp_pdev_bpr_param - different types of parameters
1654*5113495bSYour Name  *			     to set value in pdev
1655*5113495bSYour Name  * @CDP_BPR_DISABLE: Set bpr to disable state
1656*5113495bSYour Name  * @CDP_BPR_ENABLE: set bpr to enable state
1657*5113495bSYour Name  *
1658*5113495bSYour Name  * Enum indicating bpr state to enable/disable.
1659*5113495bSYour Name  */
1660*5113495bSYour Name enum cdp_pdev_bpr_param {
1661*5113495bSYour Name 	CDP_BPR_DISABLE,
1662*5113495bSYour Name 	CDP_BPR_ENABLE,
1663*5113495bSYour Name };
1664*5113495bSYour Name 
1665*5113495bSYour Name /**
1666*5113495bSYour Name  * enum cdp_vdev_param_type - different types of parameters
1667*5113495bSYour Name  *			      to set values in vdev
1668*5113495bSYour Name  * @CDP_ENABLE_NAWDS: set nawds enable/disable
1669*5113495bSYour Name  * @CDP_ENABLE_MCAST_EN: enable/disable multicast enhancement
1670*5113495bSYour Name  * @CDP_ENABLE_WDS: wds sta
1671*5113495bSYour Name  * @CDP_ENABLE_MEC: MEC enable flags
1672*5113495bSYour Name  * @CDP_ENABLE_DA_WAR:
1673*5113495bSYour Name  * @CDP_ENABLE_PROXYSTA: proxy sta
1674*5113495bSYour Name  * @CDP_UPDATE_TDLS_FLAGS: tdls link flags
1675*5113495bSYour Name  * @CDP_CFG_WDS_AGING_TIMER: modify/stop wds aging timer
1676*5113495bSYour Name  * @CDP_ENABLE_AP_BRIDGE: set ap_bridging enable/disable
1677*5113495bSYour Name  * @CDP_ENABLE_CIPHER: set cipher type based on security
1678*5113495bSYour Name  * @CDP_ENABLE_QWRAP_ISOLATION: qwrap isolation mode
1679*5113495bSYour Name  * @CDP_UPDATE_MULTIPASS: enable/disable multipass
1680*5113495bSYour Name  * @CDP_TX_ENCAP_TYPE: tx encap type
1681*5113495bSYour Name  * @CDP_RX_DECAP_TYPE: rx decap type
1682*5113495bSYour Name  * @CDP_MESH_RX_FILTER: set mesh rx filter
1683*5113495bSYour Name  * @CDP_TID_VDEV_PRTY: set tid vdev prty
1684*5113495bSYour Name  * @CDP_TIDMAP_TBL_ID: set tidmap table id
1685*5113495bSYour Name  * @CDP_MESH_MODE: set mesh mode
1686*5113495bSYour Name  * @CDP_SAFEMODE: set safe mode
1687*5113495bSYour Name  * @CDP_DROP_UNENC: set drop unencrypted flag
1688*5113495bSYour Name  * @CDP_ENABLE_IGMP_MCAST_EN: enable/disable igmp multicast enhancement
1689*5113495bSYour Name  * @CDP_ENABLE_HLOS_TID_OVERRIDE: set hlos tid override flag
1690*5113495bSYour Name  * @CDP_CFG_WDS_EXT: enable/disable wds ext feature
1691*5113495bSYour Name  * @CDP_DROP_TX_MCAST: enable/disable tx mcast drop
1692*5113495bSYour Name  * @CDP_ENABLE_PEER_AUTHORIZE: enable peer authorize flag
1693*5113495bSYour Name  * @CDP_ENABLE_PEER_TID_LATENCY: set peer tid latency enable flag
1694*5113495bSYour Name  * @CDP_SET_VAP_MESH_TID: Set latency tid in vap
1695*5113495bSYour Name  * @CDP_SKIP_BAR_UPDATE_AP: enable/disable bar
1696*5113495bSYour Name  * @CDP_UPDATE_DSCP_TO_TID_MAP: Set DSCP to TID map id
1697*5113495bSYour Name  * @CDP_SET_MCAST_VDEV: Set primary mcast vdev
1698*5113495bSYour Name  * @CDP_RESET_MLO_MCAST_VDEV: Reset mlo mcast vdev settings
1699*5113495bSYour Name  * @CDP_SET_MCAST_VDEV_HW_UPDATE: Not in use
1700*5113495bSYour Name  * @CDP_DROP_3ADDR_MCAST: enable/disable drop 3addr multicast flag
1701*5113495bSYour Name  * @CDP_ENABLE_WRAP: qwrap ap
1702*5113495bSYour Name  * @CDP_ENABLE_TRAFFIC_END_INDICATION: enable/disable traffic end indication
1703*5113495bSYour Name  * @CDP_VDEV_TX_TO_FW: Set to_fw bit for tx packets for the vdev
1704*5113495bSYour Name  * @CDP_VDEV_SET_MAC_ADDR: Set mac address for vdev
1705*5113495bSYour Name  */
1706*5113495bSYour Name enum cdp_vdev_param_type {
1707*5113495bSYour Name 	CDP_ENABLE_NAWDS,
1708*5113495bSYour Name 	CDP_ENABLE_MCAST_EN,
1709*5113495bSYour Name 	CDP_ENABLE_WDS,
1710*5113495bSYour Name 	CDP_ENABLE_MEC,
1711*5113495bSYour Name 	CDP_ENABLE_DA_WAR,
1712*5113495bSYour Name 	CDP_ENABLE_PROXYSTA,
1713*5113495bSYour Name 	CDP_UPDATE_TDLS_FLAGS,
1714*5113495bSYour Name 	CDP_CFG_WDS_AGING_TIMER,
1715*5113495bSYour Name 	CDP_ENABLE_AP_BRIDGE,
1716*5113495bSYour Name 	CDP_ENABLE_CIPHER,
1717*5113495bSYour Name 	CDP_ENABLE_QWRAP_ISOLATION,
1718*5113495bSYour Name 	CDP_UPDATE_MULTIPASS,
1719*5113495bSYour Name 	CDP_TX_ENCAP_TYPE,
1720*5113495bSYour Name 	CDP_RX_DECAP_TYPE,
1721*5113495bSYour Name 	CDP_MESH_RX_FILTER,
1722*5113495bSYour Name 	CDP_TID_VDEV_PRTY,
1723*5113495bSYour Name 	CDP_TIDMAP_TBL_ID,
1724*5113495bSYour Name #ifdef MESH_MODE_SUPPORT
1725*5113495bSYour Name 	CDP_MESH_MODE,
1726*5113495bSYour Name #endif
1727*5113495bSYour Name 	CDP_SAFEMODE,
1728*5113495bSYour Name 	CDP_DROP_UNENC,
1729*5113495bSYour Name 	CDP_ENABLE_IGMP_MCAST_EN,
1730*5113495bSYour Name 	CDP_ENABLE_HLOS_TID_OVERRIDE,
1731*5113495bSYour Name #ifdef QCA_SUPPORT_WDS_EXTENDED
1732*5113495bSYour Name 	CDP_CFG_WDS_EXT,
1733*5113495bSYour Name 	CDP_DROP_TX_MCAST,
1734*5113495bSYour Name #endif /* QCA_SUPPORT_WDS_EXTENDED */
1735*5113495bSYour Name 	CDP_ENABLE_PEER_AUTHORIZE,
1736*5113495bSYour Name #ifdef WLAN_SUPPORT_MESH_LATENCY
1737*5113495bSYour Name 	CDP_ENABLE_PEER_TID_LATENCY,
1738*5113495bSYour Name 	CDP_SET_VAP_MESH_TID,
1739*5113495bSYour Name #endif
1740*5113495bSYour Name #ifdef WLAN_VENDOR_SPECIFIC_BAR_UPDATE
1741*5113495bSYour Name 	CDP_SKIP_BAR_UPDATE_AP,
1742*5113495bSYour Name #endif
1743*5113495bSYour Name 	CDP_UPDATE_DSCP_TO_TID_MAP,
1744*5113495bSYour Name 	CDP_SET_MCAST_VDEV,
1745*5113495bSYour Name 	CDP_RESET_MLO_MCAST_VDEV,
1746*5113495bSYour Name 	CDP_SET_MCAST_VDEV_HW_UPDATE,
1747*5113495bSYour Name 	CDP_DROP_3ADDR_MCAST,
1748*5113495bSYour Name 	CDP_ENABLE_WRAP,
1749*5113495bSYour Name #ifdef DP_TRAFFIC_END_INDICATION
1750*5113495bSYour Name 	CDP_ENABLE_TRAFFIC_END_INDICATION,
1751*5113495bSYour Name #endif
1752*5113495bSYour Name #ifdef FEATURE_DIRECT_LINK
1753*5113495bSYour Name 	CDP_VDEV_TX_TO_FW,
1754*5113495bSYour Name #endif
1755*5113495bSYour Name 	CDP_VDEV_SET_MAC_ADDR,
1756*5113495bSYour Name };
1757*5113495bSYour Name 
1758*5113495bSYour Name /**
1759*5113495bSYour Name  * enum cdp_psoc_param_type - different types of parameters
1760*5113495bSYour Name  *			      to set values in psoc
1761*5113495bSYour Name  * @CDP_ENABLE_RATE_STATS: set rate stats enable/disable
1762*5113495bSYour Name  * @CDP_SET_NSS_CFG: set nss cfg
1763*5113495bSYour Name  * @CDP_SET_PREFERRED_HW_MODE: set preferred hw mode
1764*5113495bSYour Name  * @CDP_CFG_PEER_EXT_STATS: Peer extended stats mode.
1765*5113495bSYour Name  * @CDP_IPA_ENABLE : set IPA enable mode.
1766*5113495bSYour Name  * @CDP_CFG_VDEV_STATS_HW_OFFLOAD: HW Vdev stats config
1767*5113495bSYour Name  * @CDP_SAWF_ENABLE:
1768*5113495bSYour Name  * @CDP_UMAC_RST_SKEL_ENABLE: Enable Umac reset skeleton code for debug
1769*5113495bSYour Name  * @CDP_SAWF_STATS: set SAWF stats config
1770*5113495bSYour Name  * @CDP_UMAC_RESET_STATS: UMAC reset stats
1771*5113495bSYour Name  * @CDP_CFG_RX_PEER_METADATA_VER: RX peer metadata configuration
1772*5113495bSYour Name  * @CDP_TXRX_HAL_SOC_HDL: HAL soc handle
1773*5113495bSYour Name  * @CDP_CFG_TX_DESC_NUM: number of TX descriptors config
1774*5113495bSYour Name  * @CDP_CFG_TX_EXT_DESC_NUM: number of TX EXT descriptors config
1775*5113495bSYour Name  * @CDP_CFG_TX_RING_SIZE: TX ring size config param
1776*5113495bSYour Name  * @CDP_CFG_TX_COMPL_RING_SIZE: TX completion ring size param
1777*5113495bSYour Name  * @CDP_CFG_RX_SW_DESC_NUM: RX SW descriptor number
1778*5113495bSYour Name  * @CDP_CFG_REO_DST_RING_SIZE: REO destination ring size config
1779*5113495bSYour Name  * @CDP_CFG_RXDMA_REFILL_RING_SIZE: RXDMA refill ring size config
1780*5113495bSYour Name  * @CDP_CFG_RX_REFILL_POOL_NUM: RX refill pool size config param
1781*5113495bSYour Name  * @CDP_CFG_FISA_PARAMS: FISA params
1782*5113495bSYour Name  * @CDP_RX_PKT_TLV_SIZE: RX pkt tlv size
1783*5113495bSYour Name  * @CDP_CFG_AST_INDICATION_DISABLE: AST indication disable
1784*5113495bSYour Name  * @CDP_CFG_GET_MLO_OPER_MODE: Get MLO operation mode
1785*5113495bSYour Name  * @CDP_CFG_PEER_JITTER_STATS: Peer Jitter Stats
1786*5113495bSYour Name  * @CDP_CONFIG_DP_DEBUG_LOG: set/get dp debug logging
1787*5113495bSYour Name  * @CDP_MONITOR_FLAG: Monitor interface configuration
1788*5113495bSYour Name  */
1789*5113495bSYour Name enum cdp_psoc_param_type {
1790*5113495bSYour Name 	CDP_ENABLE_RATE_STATS,
1791*5113495bSYour Name 	CDP_SET_NSS_CFG,
1792*5113495bSYour Name 	CDP_SET_PREFERRED_HW_MODE,
1793*5113495bSYour Name 	CDP_CFG_PEER_EXT_STATS,
1794*5113495bSYour Name 	CDP_IPA_ENABLE,
1795*5113495bSYour Name 	CDP_CFG_VDEV_STATS_HW_OFFLOAD,
1796*5113495bSYour Name 	CDP_SAWF_ENABLE,
1797*5113495bSYour Name 	CDP_UMAC_RST_SKEL_ENABLE,
1798*5113495bSYour Name 	CDP_SAWF_STATS,
1799*5113495bSYour Name 	CDP_UMAC_RESET_STATS,
1800*5113495bSYour Name 	CDP_CFG_RX_PEER_METADATA_VER,
1801*5113495bSYour Name 	CDP_TXRX_HAL_SOC_HDL,
1802*5113495bSYour Name 	CDP_CFG_TX_DESC_NUM,
1803*5113495bSYour Name 	CDP_CFG_TX_EXT_DESC_NUM,
1804*5113495bSYour Name 	CDP_CFG_TX_RING_SIZE,
1805*5113495bSYour Name 	CDP_CFG_TX_COMPL_RING_SIZE,
1806*5113495bSYour Name 	CDP_CFG_RX_SW_DESC_NUM,
1807*5113495bSYour Name 	CDP_CFG_REO_DST_RING_SIZE,
1808*5113495bSYour Name 	CDP_CFG_RXDMA_REFILL_RING_SIZE,
1809*5113495bSYour Name #ifdef WLAN_FEATURE_RX_PREALLOC_BUFFER_POOL
1810*5113495bSYour Name 	CDP_CFG_RX_REFILL_POOL_NUM,
1811*5113495bSYour Name #endif
1812*5113495bSYour Name 	CDP_CFG_FISA_PARAMS,
1813*5113495bSYour Name 	CDP_RX_PKT_TLV_SIZE,
1814*5113495bSYour Name 	CDP_CFG_AST_INDICATION_DISABLE,
1815*5113495bSYour Name 	CDP_CFG_GET_MLO_OPER_MODE,
1816*5113495bSYour Name 	CDP_CFG_PEER_JITTER_STATS,
1817*5113495bSYour Name 	CDP_CONFIG_DP_DEBUG_LOG,
1818*5113495bSYour Name 	CDP_MONITOR_FLAG,
1819*5113495bSYour Name };
1820*5113495bSYour Name 
1821*5113495bSYour Name #ifdef CONFIG_AP_PLATFORM
1822*5113495bSYour Name /* RX peer metadata version if v1a_v1b is supported */
1823*5113495bSYour Name #define CDP_RX_PEER_METADATA_V1_A_B 3
1824*5113495bSYour Name #else
1825*5113495bSYour Name #define CDP_RX_PEER_METADATA_V1_A_B 2
1826*5113495bSYour Name #endif
1827*5113495bSYour Name 
1828*5113495bSYour Name #define TXRX_FW_STATS_TXSTATS                     1
1829*5113495bSYour Name #define TXRX_FW_STATS_RXSTATS                     2
1830*5113495bSYour Name #define TXRX_FW_STATS_RX_RATE_INFO                3
1831*5113495bSYour Name #define TXRX_FW_STATS_PHYSTATS                    4
1832*5113495bSYour Name #define TXRX_FW_STATS_PHYSTATS_CONCISE            5
1833*5113495bSYour Name #define TXRX_FW_STATS_TX_RATE_INFO                6
1834*5113495bSYour Name #define TXRX_FW_STATS_TID_STATE                   7
1835*5113495bSYour Name #define TXRX_FW_STATS_HOST_STATS                  8
1836*5113495bSYour Name #define TXRX_FW_STATS_CLEAR_HOST_STATS            9
1837*5113495bSYour Name #define TXRX_FW_STATS_CE_STATS                   10
1838*5113495bSYour Name #define TXRX_FW_STATS_VOW_UMAC_COUNTER           11
1839*5113495bSYour Name #define TXRX_FW_STATS_ME_STATS                   12
1840*5113495bSYour Name #define TXRX_FW_STATS_TXBF_INFO                  13
1841*5113495bSYour Name #define TXRX_FW_STATS_SND_INFO                   14
1842*5113495bSYour Name #define TXRX_FW_STATS_ERROR_INFO                 15
1843*5113495bSYour Name #define TXRX_FW_STATS_TX_SELFGEN_INFO            16
1844*5113495bSYour Name #define TXRX_FW_STATS_TX_MU_INFO                 17
1845*5113495bSYour Name #define TXRX_FW_SIFS_RESP_INFO                   18
1846*5113495bSYour Name #define TXRX_FW_RESET_STATS                      19
1847*5113495bSYour Name #define TXRX_FW_MAC_WDOG_STATS                   20
1848*5113495bSYour Name #define TXRX_FW_MAC_DESC_STATS                   21
1849*5113495bSYour Name #define TXRX_FW_MAC_FETCH_MGR_STATS              22
1850*5113495bSYour Name #define TXRX_FW_MAC_PREFETCH_MGR_STATS           23
1851*5113495bSYour Name #define TXRX_FW_STATS_DURATION_INFO              24
1852*5113495bSYour Name #define TXRX_FW_STATS_DURATION_INFO_RESET        25
1853*5113495bSYour Name #define TXRX_FW_HALPHY_STATS                     26
1854*5113495bSYour Name #define TXRX_FW_COEX_STATS                       27
1855*5113495bSYour Name 
1856*5113495bSYour Name #define PER_RADIO_FW_STATS_REQUEST 0
1857*5113495bSYour Name #define PER_VDEV_FW_STATS_REQUEST 1
1858*5113495bSYour Name /**
1859*5113495bSYour Name  * enum data_stall_log_event_indicator - Module triggering data stall
1860*5113495bSYour Name  * @DATA_STALL_LOG_INDICATOR_UNUSED: Unused
1861*5113495bSYour Name  * @DATA_STALL_LOG_INDICATOR_HOST_DRIVER: Host driver indicates data stall
1862*5113495bSYour Name  * @DATA_STALL_LOG_INDICATOR_FIRMWARE: FW indicates data stall
1863*5113495bSYour Name  * @DATA_STALL_LOG_INDICATOR_FRAMEWORK: Framework indicates data stall
1864*5113495bSYour Name  *
1865*5113495bSYour Name  * Enum indicating the module that indicates data stall event
1866*5113495bSYour Name  */
1867*5113495bSYour Name enum data_stall_log_event_indicator {
1868*5113495bSYour Name 	DATA_STALL_LOG_INDICATOR_UNUSED,
1869*5113495bSYour Name 	DATA_STALL_LOG_INDICATOR_HOST_DRIVER,
1870*5113495bSYour Name 	DATA_STALL_LOG_INDICATOR_FIRMWARE,
1871*5113495bSYour Name 	DATA_STALL_LOG_INDICATOR_FRAMEWORK,
1872*5113495bSYour Name };
1873*5113495bSYour Name 
1874*5113495bSYour Name /**
1875*5113495bSYour Name  * enum data_stall_log_event_type - data stall event type
1876*5113495bSYour Name  * @DATA_STALL_LOG_NONE:
1877*5113495bSYour Name  * @DATA_STALL_LOG_FW_VDEV_PAUSE:
1878*5113495bSYour Name  * @DATA_STALL_LOG_HWSCHED_CMD_FILTER:
1879*5113495bSYour Name  * @DATA_STALL_LOG_HWSCHED_CMD_FLUSH:
1880*5113495bSYour Name  * @DATA_STALL_LOG_FW_RX_REFILL_FAILED:
1881*5113495bSYour Name  * @DATA_STALL_LOG_FW_RX_FCS_LEN_ERROR:
1882*5113495bSYour Name  * @DATA_STALL_LOG_FW_WDOG_ERRORS:
1883*5113495bSYour Name  * @DATA_STALL_LOG_BB_WDOG_ERROR:
1884*5113495bSYour Name  * @DATA_STALL_LOG_POST_TIM_NO_TXRX_ERROR:
1885*5113495bSYour Name  * @DATA_STALL_LOG_HOST_STA_TX_TIMEOUT:
1886*5113495bSYour Name  * @DATA_STALL_LOG_HOST_SOFTAP_TX_TIMEOUT:
1887*5113495bSYour Name  * @DATA_STALL_LOG_NUD_FAILURE:
1888*5113495bSYour Name  *
1889*5113495bSYour Name  * Enum indicating data stall event type
1890*5113495bSYour Name  */
1891*5113495bSYour Name enum data_stall_log_event_type {
1892*5113495bSYour Name 	DATA_STALL_LOG_NONE,
1893*5113495bSYour Name 	DATA_STALL_LOG_FW_VDEV_PAUSE,
1894*5113495bSYour Name 	DATA_STALL_LOG_HWSCHED_CMD_FILTER,
1895*5113495bSYour Name 	DATA_STALL_LOG_HWSCHED_CMD_FLUSH,
1896*5113495bSYour Name 	DATA_STALL_LOG_FW_RX_REFILL_FAILED,
1897*5113495bSYour Name 	DATA_STALL_LOG_FW_RX_FCS_LEN_ERROR,
1898*5113495bSYour Name 	DATA_STALL_LOG_FW_WDOG_ERRORS,
1899*5113495bSYour Name 	DATA_STALL_LOG_BB_WDOG_ERROR,
1900*5113495bSYour Name 	DATA_STALL_LOG_POST_TIM_NO_TXRX_ERROR,
1901*5113495bSYour Name 	/* Stall events triggered by host/framework start from 0x100 onwards. */
1902*5113495bSYour Name 	DATA_STALL_LOG_HOST_STA_TX_TIMEOUT = 0x100,
1903*5113495bSYour Name 	DATA_STALL_LOG_HOST_SOFTAP_TX_TIMEOUT,
1904*5113495bSYour Name 	DATA_STALL_LOG_NUD_FAILURE,
1905*5113495bSYour Name };
1906*5113495bSYour Name 
1907*5113495bSYour Name /**
1908*5113495bSYour Name  * enum data_stall_log_recovery_type - data stall recovery type
1909*5113495bSYour Name  * @DATA_STALL_LOG_RECOVERY_NONE:
1910*5113495bSYour Name  * @DATA_STALL_LOG_RECOVERY_CONNECT_DISCONNECT:
1911*5113495bSYour Name  * @DATA_STALL_LOG_RECOVERY_TRIGGER_PDR:
1912*5113495bSYour Name  *
1913*5113495bSYour Name  * Enum indicating data stall recovery type
1914*5113495bSYour Name  */
1915*5113495bSYour Name enum data_stall_log_recovery_type {
1916*5113495bSYour Name 	DATA_STALL_LOG_RECOVERY_NONE = 0,
1917*5113495bSYour Name 	DATA_STALL_LOG_RECOVERY_CONNECT_DISCONNECT,
1918*5113495bSYour Name 	DATA_STALL_LOG_RECOVERY_TRIGGER_PDR,
1919*5113495bSYour Name };
1920*5113495bSYour Name 
1921*5113495bSYour Name /**
1922*5113495bSYour Name  * struct data_stall_event_info - data stall info
1923*5113495bSYour Name  * @indicator: Module triggering data stall
1924*5113495bSYour Name  * @data_stall_type: data stall event type
1925*5113495bSYour Name  * @vdev_id_bitmap: vdev_id_bitmap
1926*5113495bSYour Name  * @pdev_id: pdev id
1927*5113495bSYour Name  * @recovery_type: data stall recovery type
1928*5113495bSYour Name  */
1929*5113495bSYour Name struct data_stall_event_info {
1930*5113495bSYour Name 	uint32_t indicator;
1931*5113495bSYour Name 	uint32_t data_stall_type;
1932*5113495bSYour Name 	uint32_t vdev_id_bitmap;
1933*5113495bSYour Name 	uint32_t pdev_id;
1934*5113495bSYour Name 	uint32_t recovery_type;
1935*5113495bSYour Name };
1936*5113495bSYour Name 
1937*5113495bSYour Name typedef void (*data_stall_detect_cb)(struct data_stall_event_info *);
1938*5113495bSYour Name 
1939*5113495bSYour Name /**
1940*5113495bSYour Name  * enum cdp_stats - options for host and firmware statistics
1941*5113495bSYour Name  * @CDP_TXRX_STATS_0:
1942*5113495bSYour Name  * @CDP_TXRX_STATS_1: HTT Pdev tx stats
1943*5113495bSYour Name  * @CDP_TXRX_STATS_2: HTT Pdev rx stats
1944*5113495bSYour Name  * @CDP_TXRX_STATS_3: HTT Pdev Tx HW Queue stats
1945*5113495bSYour Name  * @CDP_TXRX_STATS_4: HTT Pdev Tx HW Sched stats
1946*5113495bSYour Name  * @CDP_TXRX_STATS_5: HTT Pdev error stats
1947*5113495bSYour Name  * @CDP_TXRX_STATS_6: HTT TQM stats
1948*5113495bSYour Name  * @CDP_TXRX_STATS_7: HTT TQM CMDQ stats
1949*5113495bSYour Name  * @CDP_TXRX_STATS_8: HTT Tx_de_cmn thread stats
1950*5113495bSYour Name  * @CDP_TXRX_STATS_9: HTT Pdev Tx rate stats
1951*5113495bSYour Name  * @CDP_TXRX_STATS_10: HTT Pdev Rx rate stats
1952*5113495bSYour Name  * @CDP_TXRX_STATS_11: HTT Peer stats
1953*5113495bSYour Name  * @CDP_TXRX_STATS_12: HTT Tx Self Gen Info
1954*5113495bSYour Name  * @CDP_TXRX_STATS_13: HTT Tx MU HWQ stats
1955*5113495bSYour Name  * @CDP_TXRX_STATS_14: HTT Ring interface info stats
1956*5113495bSYour Name  * @CDP_TXRX_STATS_15: HTT SRNG info stats
1957*5113495bSYour Name  * @CDP_TXRX_STATS_16: HTT SFM info stats
1958*5113495bSYour Name  * @CDP_TXRX_STATS_17: HTT Pdev tx mu mimo sched info
1959*5113495bSYour Name  * @CDP_TXRX_STATS_18: HTT Peer list details
1960*5113495bSYour Name  * @CDP_TXRX_STATS_19: Reserved
1961*5113495bSYour Name  * @CDP_TXRX_STATS_20: Reset Host stats
1962*5113495bSYour Name  * @CDP_TXRX_STATS_21: Host Rx rate stats
1963*5113495bSYour Name  * @CDP_TXRX_STATS_22: Host Tx rate stats
1964*5113495bSYour Name  * @CDP_TXRX_STATS_23: Host Tx stats
1965*5113495bSYour Name  * @CDP_TXRX_STATS_24: Host Rx stats
1966*5113495bSYour Name  * @CDP_TXRX_STATS_25: Host Ast stats
1967*5113495bSYour Name  * @CDP_TXRX_STATS_26: Host Head/Tail Pointer stats
1968*5113495bSYour Name  * @CDP_TXRX_STATS_27: Host Monitor mode stats
1969*5113495bSYour Name  * @CDP_TXRX_STATS_28: Host Peer entry stats
1970*5113495bSYour Name  * @CDP_TXRX_STATS_29: Host Soc config params info
1971*5113495bSYour Name  * @CDP_TXRX_STATS_30: Host Pdev config params info
1972*5113495bSYour Name  * @CDP_TXRX_STATS_31: Host DP Interrupt Stats
1973*5113495bSYour Name  * @CDP_TXRX_STATS_HTT_MAX:
1974*5113495bSYour Name  * @CDP_TXRX_MAX_STATS:
1975*5113495bSYour Name  */
1976*5113495bSYour Name enum cdp_stats {
1977*5113495bSYour Name 	CDP_TXRX_STATS_0  = 0,
1978*5113495bSYour Name 	CDP_TXRX_STATS_1,
1979*5113495bSYour Name 	CDP_TXRX_STATS_2,
1980*5113495bSYour Name 	CDP_TXRX_STATS_3,
1981*5113495bSYour Name 	CDP_TXRX_STATS_4,
1982*5113495bSYour Name 	CDP_TXRX_STATS_5,
1983*5113495bSYour Name 	CDP_TXRX_STATS_6,
1984*5113495bSYour Name 	CDP_TXRX_STATS_7,
1985*5113495bSYour Name 	CDP_TXRX_STATS_8,
1986*5113495bSYour Name 	CDP_TXRX_STATS_9,
1987*5113495bSYour Name 	CDP_TXRX_STATS_10,
1988*5113495bSYour Name 	CDP_TXRX_STATS_11,
1989*5113495bSYour Name 	CDP_TXRX_STATS_12,
1990*5113495bSYour Name 	CDP_TXRX_STATS_13,
1991*5113495bSYour Name 	CDP_TXRX_STATS_14,
1992*5113495bSYour Name 	CDP_TXRX_STATS_15,
1993*5113495bSYour Name 	CDP_TXRX_STATS_16,
1994*5113495bSYour Name 	CDP_TXRX_STATS_17,
1995*5113495bSYour Name 	CDP_TXRX_STATS_18,
1996*5113495bSYour Name 	CDP_TXRX_STATS_19,
1997*5113495bSYour Name 	CDP_TXRX_STATS_20,
1998*5113495bSYour Name 	CDP_TXRX_STATS_21,
1999*5113495bSYour Name 	CDP_TXRX_STATS_22,
2000*5113495bSYour Name 	CDP_TXRX_STATS_23,
2001*5113495bSYour Name 	CDP_TXRX_STATS_24,
2002*5113495bSYour Name 	CDP_TXRX_STATS_25,
2003*5113495bSYour Name 	CDP_TXRX_STATS_26,
2004*5113495bSYour Name 	CDP_TXRX_STATS_27,
2005*5113495bSYour Name 	CDP_TXRX_STATS_28,
2006*5113495bSYour Name 	CDP_TXRX_STATS_29,
2007*5113495bSYour Name 	CDP_TXRX_STATS_30,
2008*5113495bSYour Name 	CDP_TXRX_STATS_31,
2009*5113495bSYour Name 	CDP_TXRX_STATS_HTT_MAX = 256,
2010*5113495bSYour Name 	CDP_TXRX_MAX_STATS = 265,
2011*5113495bSYour Name };
2012*5113495bSYour Name 
2013*5113495bSYour Name /**
2014*5113495bSYour Name  * enum cdp_stat_update_type - Different Stat update types sent to
2015*5113495bSYour Name  *                             OL_IF
2016*5113495bSYour Name  * @UPDATE_PEER_STATS: update peer stats
2017*5113495bSYour Name  * @UPDATE_VDEV_STATS: update vdev stats
2018*5113495bSYour Name  * @UPDATE_PDEV_STATS: Update pdev stats
2019*5113495bSYour Name  * @UPDATE_VDEV_STATS_MLD: Update mld vdev stats
2020*5113495bSYour Name  */
2021*5113495bSYour Name enum cdp_stat_update_type {
2022*5113495bSYour Name 	UPDATE_PEER_STATS = 0,
2023*5113495bSYour Name 	UPDATE_VDEV_STATS = 1,
2024*5113495bSYour Name 	UPDATE_PDEV_STATS = 2,
2025*5113495bSYour Name 	UPDATE_VDEV_STATS_MLD = 3,
2026*5113495bSYour Name };
2027*5113495bSYour Name 
2028*5113495bSYour Name /**
2029*5113495bSYour Name  * struct cdp_tx_sojourn_stats - Tx sojourn stats
2030*5113495bSYour Name  * @ppdu_seq_id: ppdu_seq_id from tx completion
2031*5113495bSYour Name  * @avg_sojourn_msdu: average sojourn msdu time
2032*5113495bSYour Name  * @sum_sojourn_msdu: sum sojourn msdu time
2033*5113495bSYour Name  * @num_msdus: number of msdus per ppdu
2034*5113495bSYour Name  * @cookie: cookie to be used by upper layer
2035*5113495bSYour Name  */
2036*5113495bSYour Name struct cdp_tx_sojourn_stats {
2037*5113495bSYour Name 	uint32_t ppdu_seq_id;
2038*5113495bSYour Name 	qdf_ewma_tx_lag avg_sojourn_msdu[CDP_DATA_TID_MAX];
2039*5113495bSYour Name 	uint32_t sum_sojourn_msdu[CDP_DATA_TID_MAX];
2040*5113495bSYour Name 	uint32_t num_msdus[CDP_DATA_TID_MAX];
2041*5113495bSYour Name 	struct cdp_stats_cookie *cookie;
2042*5113495bSYour Name };
2043*5113495bSYour Name 
2044*5113495bSYour Name /**
2045*5113495bSYour Name  * struct cdp_delayed_tx_completion_ppdu_user - Delayed Tx PPDU completion
2046*5113495bSYour Name  *                                              per-user information
2047*5113495bSYour Name  * @frame_ctrl: frame control field in 802.11 header
2048*5113495bSYour Name  * @qos_ctrl: QoS control field in 802.11 header
2049*5113495bSYour Name  * @mpdu_tried_ucast: number of unicast mpdus tried
2050*5113495bSYour Name  * @mpdu_tried_mcast: number of multicastmpdus tried
2051*5113495bSYour Name  * @ltf_size: ltf_size
2052*5113495bSYour Name  * @stbc: stbc
2053*5113495bSYour Name  * @he_re: he_re (range extension)
2054*5113495bSYour Name  * @txbf: txbf
2055*5113495bSYour Name  * @bw: Transmission bandwidth
2056*5113495bSYour Name  *       <enum 2 transmit_bw_20_MHz>
2057*5113495bSYour Name  *       <enum 3 transmit_bw_40_MHz>
2058*5113495bSYour Name  *       <enum 4 transmit_bw_80_MHz>
2059*5113495bSYour Name  *       <enum 5 transmit_bw_160_MHz>
2060*5113495bSYour Name  * @nss: NSS 1,2, ...8
2061*5113495bSYour Name  * @mcs: MCS index
2062*5113495bSYour Name  * @preamble: preamble
2063*5113495bSYour Name  * @gi: guard interval 800/400/1600/3200 ns
2064*5113495bSYour Name  * @dcm: dcm
2065*5113495bSYour Name  * @ldpc: ldpc
2066*5113495bSYour Name  * @delayed_ba:
2067*5113495bSYour Name  * @ru_start: RU start index
2068*5113495bSYour Name  * @ru_tones: RU tones length
2069*5113495bSYour Name  * @is_mcast: MCAST or UCAST
2070*5113495bSYour Name  * @user_pos: user position
2071*5113495bSYour Name  * @mu_group_id: mu group id
2072*5113495bSYour Name  * @ppdu_start_timestamp: 64 bits ppdu start timestamp
2073*5113495bSYour Name  * @ppdu_end_timestamp: 64 bits ppdu end timestamp
2074*5113495bSYour Name  */
2075*5113495bSYour Name struct cdp_delayed_tx_completion_ppdu_user {
2076*5113495bSYour Name 	uint32_t frame_ctrl:16,
2077*5113495bSYour Name 		 qos_ctrl:16;
2078*5113495bSYour Name 	uint32_t mpdu_tried_ucast:16,
2079*5113495bSYour Name 		mpdu_tried_mcast:16;
2080*5113495bSYour Name 	uint32_t ltf_size:2,
2081*5113495bSYour Name 		 stbc:1,
2082*5113495bSYour Name 		 he_re:1,
2083*5113495bSYour Name 		 txbf:4,
2084*5113495bSYour Name 		 bw:4,
2085*5113495bSYour Name 		 nss:4,
2086*5113495bSYour Name 		 mcs:4,
2087*5113495bSYour Name 		 preamble:4,
2088*5113495bSYour Name 		 gi:4,
2089*5113495bSYour Name 		 dcm:1,
2090*5113495bSYour Name 		 ldpc:1,
2091*5113495bSYour Name 		 delayed_ba:1;
2092*5113495bSYour Name 	uint16_t ru_start;
2093*5113495bSYour Name 	uint16_t ru_tones;
2094*5113495bSYour Name 	bool is_mcast;
2095*5113495bSYour Name 	uint32_t user_pos;
2096*5113495bSYour Name 	uint32_t mu_group_id;
2097*5113495bSYour Name 	uint64_t ppdu_start_timestamp;
2098*5113495bSYour Name 	uint64_t ppdu_end_timestamp;
2099*5113495bSYour Name };
2100*5113495bSYour Name 
2101*5113495bSYour Name /**
2102*5113495bSYour Name  * struct cdp_tx_completion_ppdu_user - Tx PPDU completion per-user information
2103*5113495bSYour Name  * @completion_status: completion status - OK/Filter/Abort/Timeout
2104*5113495bSYour Name  * @tid: TID number
2105*5113495bSYour Name  * @peer_id: Peer ID
2106*5113495bSYour Name  * @mac_addr:
2107*5113495bSYour Name  * @ba_size: Block-Ack size
2108*5113495bSYour Name  * @frame_ctrl: frame control field in 802.11 header
2109*5113495bSYour Name  * @qos_ctrl: QoS control field in 802.11 header
2110*5113495bSYour Name  * @mpdu_tried_ucast: number of unicast mpdus tried
2111*5113495bSYour Name  * @mpdu_tried_mcast: number of multicast mpdus tried
2112*5113495bSYour Name  * @mpdu_success: number of mpdus successfully transmitted
2113*5113495bSYour Name  * @mpdu_failed:
2114*5113495bSYour Name  * @long_retries: long retries
2115*5113495bSYour Name  * @short_retries: short retries
2116*5113495bSYour Name  * @tx_ratecode:
2117*5113495bSYour Name  * @is_ampdu: mpdu aggregate or non-aggregate?
2118*5113495bSYour Name  * @ppdu_type:
2119*5113495bSYour Name  * @pream_punct:
2120*5113495bSYour Name  * @is_seq_num_valid:
2121*5113495bSYour Name  * @success_bytes: bytes successfully transmitted
2122*5113495bSYour Name  * @retry_bytes: bytes retried
2123*5113495bSYour Name  * @failed_bytes:
2124*5113495bSYour Name  * @success_msdus: MSDUs successfully transmitted
2125*5113495bSYour Name  * @retry_msdus: MSDUs retried
2126*5113495bSYour Name  * @retry_mpdus: MPDUs retried
2127*5113495bSYour Name  * @failed_msdus: MSDUs failed transmission
2128*5113495bSYour Name  * @duration: user duration in ppdu
2129*5113495bSYour Name  * @ltf_size: ltf_size
2130*5113495bSYour Name  * @stbc: stbc
2131*5113495bSYour Name  * @he_re: he_re (range extension)
2132*5113495bSYour Name  * @txbf: txbf
2133*5113495bSYour Name  * @bw: Transmission bandwidth
2134*5113495bSYour Name  *       <enum 2 transmit_bw_20_MHz>
2135*5113495bSYour Name  *       <enum 3 transmit_bw_40_MHz>
2136*5113495bSYour Name  *       <enum 4 transmit_bw_80_MHz>
2137*5113495bSYour Name  *       <enum 5 transmit_bw_160_MHz>
2138*5113495bSYour Name  * @nss: NSS 1,2, ...8
2139*5113495bSYour Name  * @mcs: MCS index
2140*5113495bSYour Name  * @preamble: preamble
2141*5113495bSYour Name  * @gi: guard interval 800/400/1600/3200 ns
2142*5113495bSYour Name  * @dcm: dcm
2143*5113495bSYour Name  * @ldpc: ldpc
2144*5113495bSYour Name  * @delayed_ba: delayed ba bit
2145*5113495bSYour Name  * @ack_ba_tlv: ack ba recv tlv bit
2146*5113495bSYour Name  * @ba_seq_no: Block Ack sequence number
2147*5113495bSYour Name  * @ba_bitmap: Block Ack bitmap
2148*5113495bSYour Name  * @start_seq: Sequence number of first MPDU
2149*5113495bSYour Name  * @enq_bitmap: Enqueue MPDU bitmap
2150*5113495bSYour Name  * @failed_bitmap:
2151*5113495bSYour Name  * @num_mpdu:
2152*5113495bSYour Name  * @num_msdu:
2153*5113495bSYour Name  * @tx_duration:
2154*5113495bSYour Name  * @ru_start: RU start index
2155*5113495bSYour Name  * @ru_tones: RU tones length
2156*5113495bSYour Name  * @is_mcast: MCAST or UCAST
2157*5113495bSYour Name  * @tx_rate: Transmission Rate
2158*5113495bSYour Name  * @tx_ratekbps:
2159*5113495bSYour Name  * @ack_rssi: ack rssi for separate chains
2160*5113495bSYour Name  * @ack_rssi_valid:
2161*5113495bSYour Name  * @usr_ack_rssi:
2162*5113495bSYour Name  * @user_pos: user position
2163*5113495bSYour Name  * @mu_group_id: mu group id
2164*5113495bSYour Name  * @rix: rate index
2165*5113495bSYour Name  * @is_ppdu_cookie_valid : Indicates that ppdu_cookie is valid
2166*5113495bSYour Name  * @ppdu_cookie: 16-bit ppdu_cookie
2167*5113495bSYour Name  * @sa_is_training: smart antenna training packets indication
2168*5113495bSYour Name  * @rssi_chain: rssi chain per bandwidth
2169*5113495bSYour Name  * @sa_tx_antenna: antenna in which packet is transmitted
2170*5113495bSYour Name  * @sa_max_rates: smart antenna tx feedback info max rates
2171*5113495bSYour Name  * @sa_goodput: smart antenna tx feedback info goodput
2172*5113495bSYour Name  * @current_rate_per: Moving average per
2173*5113495bSYour Name  * @last_enq_seq: last equeue sequence number
2174*5113495bSYour Name  * @is_bss_peer: is bss peer check
2175*5113495bSYour Name  * @mpdu_q: queue of mpdu in a ppdu
2176*5113495bSYour Name  * @mpdus: MPDU list based on enqueue sequence bitmap
2177*5113495bSYour Name  * @pending_retries: pending MPDUs (retries)
2178*5113495bSYour Name  * @tlv_bitmap: per user tlv bitmap
2179*5113495bSYour Name  * @skip: tx capture skip flag
2180*5113495bSYour Name  * @mon_procd: to indicate user processed in ppdu of the sched cmd
2181*5113495bSYour Name  * @debug_copied: flag to indicate bar frame copied
2182*5113495bSYour Name  * @peer_last_delayed_ba: flag to indicate peer last delayed ba
2183*5113495bSYour Name  * @phy_tx_time_us: Phy TX duration for the User
2184*5113495bSYour Name  * @mpdu_bytes: accumulated bytes per mpdu for mem limit feature
2185*5113495bSYour Name  * @punc_mode: puncutured mode to indicate punctured bw
2186*5113495bSYour Name  * @punc_pattern_bitmap: bitmap indicating punctured pattern
2187*5113495bSYour Name  * @fixed_rate_used: flag to indicate fixed rate TX
2188*5113495bSYour Name  * @mprot_type: medium protection type
2189*5113495bSYour Name  * @msduq_bitmap: msduq bitmap
2190*5113495bSYour Name  * @rts_success: rts success
2191*5113495bSYour Name  * @rts_failure: rts failure
2192*5113495bSYour Name  */
2193*5113495bSYour Name struct cdp_tx_completion_ppdu_user {
2194*5113495bSYour Name 	uint32_t completion_status:8,
2195*5113495bSYour Name 		 tid:8,
2196*5113495bSYour Name 		 peer_id:16;
2197*5113495bSYour Name 	uint8_t mac_addr[6];
2198*5113495bSYour Name 	uint16_t ba_size;
2199*5113495bSYour Name 	uint32_t frame_ctrl:16,
2200*5113495bSYour Name 		 qos_ctrl:16;
2201*5113495bSYour Name 	uint32_t mpdu_tried_ucast:16,
2202*5113495bSYour Name 		mpdu_tried_mcast:16;
2203*5113495bSYour Name 	uint16_t mpdu_success:16;
2204*5113495bSYour Name 	uint16_t mpdu_failed:16;
2205*5113495bSYour Name 	uint32_t long_retries:4,
2206*5113495bSYour Name 		 short_retries:4,
2207*5113495bSYour Name 		 tx_ratecode:16,
2208*5113495bSYour Name 		 is_ampdu:1,
2209*5113495bSYour Name 		 ppdu_type:5,
2210*5113495bSYour Name 		 pream_punct:1,
2211*5113495bSYour Name 		 is_seq_num_valid:1;
2212*5113495bSYour Name 	uint32_t success_bytes;
2213*5113495bSYour Name 	uint32_t retry_bytes;
2214*5113495bSYour Name 	uint32_t failed_bytes;
2215*5113495bSYour Name 	uint32_t success_msdus:16,
2216*5113495bSYour Name 		 retry_msdus:16;
2217*5113495bSYour Name 	uint32_t retry_mpdus;
2218*5113495bSYour Name 	uint32_t failed_msdus:16,
2219*5113495bSYour Name 		 duration:16;
2220*5113495bSYour Name 	uint32_t ltf_size:2,
2221*5113495bSYour Name 		 stbc:1,
2222*5113495bSYour Name 		 he_re:1,
2223*5113495bSYour Name 		 txbf:4,
2224*5113495bSYour Name 		 bw:4,
2225*5113495bSYour Name 		 nss:4,
2226*5113495bSYour Name 		 mcs:4,
2227*5113495bSYour Name 		 preamble:4,
2228*5113495bSYour Name 		 gi:4,
2229*5113495bSYour Name 		 dcm:1,
2230*5113495bSYour Name 		 ldpc:1,
2231*5113495bSYour Name 		 delayed_ba:1,
2232*5113495bSYour Name 		 ack_ba_tlv:1;
2233*5113495bSYour Name 	uint32_t ba_seq_no;
2234*5113495bSYour Name 	uint32_t ba_bitmap[CDP_BA_256_BIT_MAP_SIZE_DWORDS];
2235*5113495bSYour Name 	uint32_t start_seq;
2236*5113495bSYour Name 	uint32_t enq_bitmap[CDP_BA_256_BIT_MAP_SIZE_DWORDS];
2237*5113495bSYour Name 	uint32_t failed_bitmap[CDP_BA_256_BIT_MAP_SIZE_DWORDS];
2238*5113495bSYour Name 	uint32_t num_mpdu:9,
2239*5113495bSYour Name 		 num_msdu:16;
2240*5113495bSYour Name 	uint32_t tx_duration;
2241*5113495bSYour Name 	uint16_t ru_start;
2242*5113495bSYour Name 	uint16_t ru_tones;
2243*5113495bSYour Name 	bool is_mcast;
2244*5113495bSYour Name 	uint32_t tx_rate;
2245*5113495bSYour Name 	uint32_t tx_ratekbps;
2246*5113495bSYour Name 	uint32_t ack_rssi[CDP_RSSI_CHAIN_LEN];
2247*5113495bSYour Name 	bool ack_rssi_valid;
2248*5113495bSYour Name 	uint32_t usr_ack_rssi;
2249*5113495bSYour Name 	uint32_t user_pos;
2250*5113495bSYour Name 	uint32_t mu_group_id;
2251*5113495bSYour Name 	uint32_t rix;
2252*5113495bSYour Name 	uint8_t is_ppdu_cookie_valid;
2253*5113495bSYour Name 	uint16_t ppdu_cookie;
2254*5113495bSYour Name 	uint8_t sa_is_training;
2255*5113495bSYour Name 	int32_t rssi_chain[CDP_RSSI_CHAIN_LEN];
2256*5113495bSYour Name 	uint32_t sa_tx_antenna;
2257*5113495bSYour Name 	/*Max rates for BW: 20MHZ, 40MHZ and 80MHZ and 160MHZ and 320MHZ
2258*5113495bSYour Name 	 * |-------------------------------------------------|
2259*5113495bSYour Name 	 * | 16 bits | 16 bits | 16 bits | 16 bits | 16 bits |
2260*5113495bSYour Name 	 * |   BW-1  |   BW-2  |   BW-3  |   BW-4  |   BW-5  |
2261*5113495bSYour Name 	 * |      /\  \                                      |
2262*5113495bSYour Name 	 * |     /  \  \                                     |
2263*5113495bSYour Name 	 * |    /    \  \                                    |
2264*5113495bSYour Name 	 * |   /      \  \                                   |
2265*5113495bSYour Name 	 * |  /        \  \                                  |
2266*5113495bSYour Name 	 * | /          \  \                                 |
2267*5113495bSYour Name 	 * |/            \  \                                |
2268*5113495bSYour Name 	 * |[11|8]     [5|8] \                               |
2269*5113495bSYour Name 	 * | BW1      PADDED  \                              |
2270*5113495bSYour Name 	 * |-------------------------------------------------|
2271*5113495bSYour Name 	 */
2272*5113495bSYour Name 	uint16_t sa_max_rates[CDP_NUM_SA_BW + 1];
2273*5113495bSYour Name 	uint32_t sa_goodput;
2274*5113495bSYour Name 	/* below field is used to calculate goodput in non-training period
2275*5113495bSYour Name 	 * Note: As host is exposing goodput and hence current_rate_per is
2276*5113495bSYour Name 	 * of no use. It is just for Host computation.
2277*5113495bSYour Name 	 */
2278*5113495bSYour Name 	uint32_t current_rate_per;
2279*5113495bSYour Name 	uint32_t last_enq_seq;
2280*5113495bSYour Name 
2281*5113495bSYour Name 	uint8_t is_bss_peer;
2282*5113495bSYour Name 
2283*5113495bSYour Name 	qdf_nbuf_queue_t mpdu_q;
2284*5113495bSYour Name 	qdf_nbuf_t *mpdus;
2285*5113495bSYour Name 	uint32_t pending_retries;
2286*5113495bSYour Name 	uint32_t tlv_bitmap;
2287*5113495bSYour Name 	bool skip;
2288*5113495bSYour Name 	bool mon_procd;
2289*5113495bSYour Name 	bool debug_copied;
2290*5113495bSYour Name 	bool peer_last_delayed_ba;
2291*5113495bSYour Name 
2292*5113495bSYour Name 	uint16_t phy_tx_time_us;
2293*5113495bSYour Name 	uint32_t mpdu_bytes;
2294*5113495bSYour Name 	uint8_t punc_mode;
2295*5113495bSYour Name 	uint32_t punc_pattern_bitmap:16,
2296*5113495bSYour Name 		fixed_rate_used:1;
2297*5113495bSYour Name 	uint32_t msduq_bitmap;
2298*5113495bSYour Name 	uint8_t mprot_type:3,
2299*5113495bSYour Name 		rts_success:1,
2300*5113495bSYour Name 		rts_failure:1;
2301*5113495bSYour Name };
2302*5113495bSYour Name 
2303*5113495bSYour Name /**
2304*5113495bSYour Name  * struct cdp_tx_indication_mpdu_info - Tx MPDU completion information
2305*5113495bSYour Name  * @ppdu_id: PPDU id
2306*5113495bSYour Name  * @tx_duration: user duration in ppdu
2307*5113495bSYour Name  * @frame_type: frame type MGMT/CTRL/DATA/BAR
2308*5113495bSYour Name  * @frame_ctrl: frame control field in 802.11 header
2309*5113495bSYour Name  * @qos_ctrl: QoS control field in 802.11 header
2310*5113495bSYour Name  * @tid: TID number
2311*5113495bSYour Name  * @num_msdu: number of msdu in MPDU
2312*5113495bSYour Name  * @seq_no: Sequence number of first MPDU
2313*5113495bSYour Name  * @ltf_size: ltf_size
2314*5113495bSYour Name  * @he_re: he_re (range extension)
2315*5113495bSYour Name  * @txbf: txbf
2316*5113495bSYour Name  * @bw: Transmission bandwidth
2317*5113495bSYour Name  *       <enum 2 transmit_bw_20_MHz>
2318*5113495bSYour Name  *       <enum 3 transmit_bw_40_MHz>
2319*5113495bSYour Name  *       <enum 4 transmit_bw_80_MHz>
2320*5113495bSYour Name  *       <enum 5 transmit_bw_160_MHz>
2321*5113495bSYour Name  * @nss: NSS 1,2, ...8
2322*5113495bSYour Name  * @mcs: MCS index
2323*5113495bSYour Name  * @preamble: preamble
2324*5113495bSYour Name  * @gi: guard interval 800/400/1600/3200 ns
2325*5113495bSYour Name  * @channel: frequency
2326*5113495bSYour Name  * @channel_num: channel number
2327*5113495bSYour Name  * @ack_rssi: ack rssi
2328*5113495bSYour Name  * @ldpc: ldpc
2329*5113495bSYour Name  * @tx_rate: Transmission Rate
2330*5113495bSYour Name  * @mac_address: peer mac address
2331*5113495bSYour Name  * @bss_mac_address: bss mac address
2332*5113495bSYour Name  * @ppdu_start_timestamp: TSF at PPDU start
2333*5113495bSYour Name  * @ppdu_end_timestamp: TSF at PPDU end
2334*5113495bSYour Name  * @ba_start_seq: Block Ack sequence number
2335*5113495bSYour Name  * @ba_bitmap: Block Ack bitmap
2336*5113495bSYour Name  * @ppdu_cookie: 16-bit ppdu_cookie
2337*5113495bSYour Name  * @long_retries: long retries
2338*5113495bSYour Name  * @short_retries: short retries
2339*5113495bSYour Name  * @completion_status: completion status - OK/Filter/Abort/Timeout
2340*5113495bSYour Name  * @resp_type: response type
2341*5113495bSYour Name  * @mprot_type: medium protection type
2342*5113495bSYour Name  * @rts_success: rts success
2343*5113495bSYour Name  * @rts_failure: rts failure
2344*5113495bSYour Name  * @usr_idx: user index
2345*5113495bSYour Name  */
2346*5113495bSYour Name struct cdp_tx_indication_mpdu_info {
2347*5113495bSYour Name 	uint32_t ppdu_id;
2348*5113495bSYour Name 	uint32_t tx_duration;
2349*5113495bSYour Name 	uint16_t frame_type;
2350*5113495bSYour Name 	uint16_t frame_ctrl;
2351*5113495bSYour Name 	uint16_t qos_ctrl;
2352*5113495bSYour Name 	uint8_t tid;
2353*5113495bSYour Name 	uint32_t num_msdu;
2354*5113495bSYour Name 	uint32_t seq_no;
2355*5113495bSYour Name 	uint32_t ltf_size:2,
2356*5113495bSYour Name 		 he_re:1,
2357*5113495bSYour Name 		 txbf:4,
2358*5113495bSYour Name 		 bw:4,
2359*5113495bSYour Name 		 nss:4,
2360*5113495bSYour Name 		 mcs:4,
2361*5113495bSYour Name 		 preamble:4,
2362*5113495bSYour Name 		 gi:4;
2363*5113495bSYour Name 	uint32_t channel;
2364*5113495bSYour Name 	uint8_t channel_num;
2365*5113495bSYour Name 	uint32_t ack_rssi;
2366*5113495bSYour Name 	uint32_t ldpc;
2367*5113495bSYour Name 	uint32_t tx_rate;
2368*5113495bSYour Name 	uint8_t mac_address[QDF_MAC_ADDR_SIZE];
2369*5113495bSYour Name 	uint8_t bss_mac_address[QDF_MAC_ADDR_SIZE];
2370*5113495bSYour Name 	uint64_t ppdu_start_timestamp;
2371*5113495bSYour Name 	uint64_t ppdu_end_timestamp;
2372*5113495bSYour Name 	uint32_t ba_start_seq;
2373*5113495bSYour Name 	uint32_t ba_bitmap[CDP_BA_256_BIT_MAP_SIZE_DWORDS];
2374*5113495bSYour Name 	uint16_t ppdu_cookie;
2375*5113495bSYour Name 	uint16_t long_retries:4,
2376*5113495bSYour Name 		 short_retries:4,
2377*5113495bSYour Name 		 completion_status:8;
2378*5113495bSYour Name 	uint16_t resp_type:4,
2379*5113495bSYour Name 		 mprot_type:3,
2380*5113495bSYour Name 		 rts_success:1,
2381*5113495bSYour Name 		 rts_failure:1;
2382*5113495bSYour Name 	uint8_t usr_idx;
2383*5113495bSYour Name };
2384*5113495bSYour Name 
2385*5113495bSYour Name /**
2386*5113495bSYour Name  * struct cdp_tx_indication_info - Tx capture information
2387*5113495bSYour Name  * @radiotap_done: Flag to say radiotap already done or not
2388*5113495bSYour Name  *			0 - radiotap not updated
2389*5113495bSYour Name  *			1 - radiotap header updated
2390*5113495bSYour Name  * @mpdu_info: Tx MPDU completion information
2391*5113495bSYour Name  * @mpdu_nbuf: reconstructed mpdu packet
2392*5113495bSYour Name  * @ppdu_desc: tx completion ppdu
2393*5113495bSYour Name  * @osif_vdev: OS IF vdev handle
2394*5113495bSYour Name  */
2395*5113495bSYour Name struct cdp_tx_indication_info {
2396*5113495bSYour Name 	bool radiotap_done;
2397*5113495bSYour Name 	struct cdp_tx_indication_mpdu_info mpdu_info;
2398*5113495bSYour Name 	qdf_nbuf_t mpdu_nbuf;
2399*5113495bSYour Name 	struct cdp_tx_completion_ppdu *ppdu_desc;
2400*5113495bSYour Name #ifdef QCA_SUPPORT_LITE_MONITOR
2401*5113495bSYour Name 	ol_osif_vdev_handle osif_vdev;
2402*5113495bSYour Name #endif
2403*5113495bSYour Name };
2404*5113495bSYour Name 
2405*5113495bSYour Name /**
2406*5113495bSYour Name  * struct cdp_tx_mgmt_comp_info - Tx mgmt comp info
2407*5113495bSYour Name  * @ppdu_id: ppdu_id
2408*5113495bSYour Name  * @is_sgen_pkt: payload received from wmi or htt path
2409*5113495bSYour Name  * @retries_count: retries count
2410*5113495bSYour Name  * @tx_tsf: 64 bit timestamp
2411*5113495bSYour Name  */
2412*5113495bSYour Name struct cdp_tx_mgmt_comp_info {
2413*5113495bSYour Name 	uint32_t ppdu_id;
2414*5113495bSYour Name 	bool is_sgen_pkt;
2415*5113495bSYour Name 	uint16_t retries_count;
2416*5113495bSYour Name 	uint64_t tx_tsf;
2417*5113495bSYour Name };
2418*5113495bSYour Name 
2419*5113495bSYour Name /**
2420*5113495bSYour Name  * struct cdp_tx_completion_ppdu - Tx PPDU completion information
2421*5113495bSYour Name  * @completion_status: completion status - OK/Filter/Abort/Timeout
2422*5113495bSYour Name  * @ppdu_id: PPDU Id
2423*5113495bSYour Name  * @ppdu_seq_id: ppdu sequence id for sojourn stats
2424*5113495bSYour Name  * @vdev_id: VAP Id
2425*5113495bSYour Name  * @bar_num_users: BA response user count, based on completion common TLV
2426*5113495bSYour Name  * @num_users: Number of users
2427*5113495bSYour Name  * @max_users: Number of users from USR_INFO TLV
2428*5113495bSYour Name  * @last_usr_index:
2429*5113495bSYour Name  * @drop_reason: drop reason from flush status
2430*5113495bSYour Name  * @is_flush: is_flush is set based on flush tlv
2431*5113495bSYour Name  * @flow_type: tx flow type from flush status
2432*5113495bSYour Name  * @queue_type: queue type from flush status
2433*5113495bSYour Name  * @num_mpdu: Number of MPDUs in PPDU
2434*5113495bSYour Name  * @num_msdu: Number of MSDUs in PPDU
2435*5113495bSYour Name  * @frame_type: frame SU or MU
2436*5113495bSYour Name  * @htt_frame_type: frame type from htt
2437*5113495bSYour Name  * @frame_ctrl: frame control of 80211 header
2438*5113495bSYour Name  * @channel: Channel informartion
2439*5113495bSYour Name  * @resp_type: response type
2440*5113495bSYour Name  * @mprot_type: medium protection type
2441*5113495bSYour Name  * @rts_success: rts success
2442*5113495bSYour Name  * @rts_failure: rts failure
2443*5113495bSYour Name  * @phy_mode: phy mode
2444*5113495bSYour Name  * @ack_rssi: RSSI value of last ack packet (units=dB above noise floor)
2445*5113495bSYour Name  * @tx_duration: PPDU airtime
2446*5113495bSYour Name  * @ppdu_start_timestamp: TSF at PPDU start
2447*5113495bSYour Name  * @ppdu_end_timestamp: TSF at PPDU end
2448*5113495bSYour Name  * @ack_timestamp: TSF at the reception of ACK
2449*5113495bSYour Name  * @delayed_ba: Delayed ba flag
2450*5113495bSYour Name  * @beam_change: beam change bit in ppdu for he-information
2451*5113495bSYour Name  * @bss_color: 6 bit value for full bss color
2452*5113495bSYour Name  * @doppler: value for doppler (will be 0 most of the times)
2453*5113495bSYour Name  * @spatial_reuse: value for spatial reuse used in radiotap HE header
2454*5113495bSYour Name  * @usr_nss_sum: Sum of user nss
2455*5113495bSYour Name  * @usr_ru_tones_sum: Sum of user ru_tones
2456*5113495bSYour Name  * @bar_ppdu_id: BAR ppdu_id
2457*5113495bSYour Name  * @bar_tx_duration: BAR tx duration
2458*5113495bSYour Name  * @bar_ppdu_start_timestamp: BAR start timestamp
2459*5113495bSYour Name  * @bar_ppdu_end_timestamp: BAR end timestamp
2460*5113495bSYour Name  * @tlv_bitmap: tlv_bitmap for the PPDU
2461*5113495bSYour Name  * @sched_cmdid: schedule command id
2462*5113495bSYour Name  * @phy_ppdu_tx_time_us: Phy per PPDU TX duration
2463*5113495bSYour Name  * @ppdu_bytes: accumulated bytes per ppdu for mem limit feature
2464*5113495bSYour Name  * @htt_seq_type: Seq type
2465*5113495bSYour Name  * @txmode_type: tx mode type UL/DL
2466*5113495bSYour Name  * @txmode: tx mode
2467*5113495bSYour Name  * @num_ul_users: Number of UL expected users
2468*5113495bSYour Name  * @ch_access_delay: Channel access delay
2469*5113495bSYour Name  * @backoff_ac_valid: Backoff AC valid
2470*5113495bSYour Name  * @backoff_ac: Backoff AC
2471*5113495bSYour Name  * @num_ul_user_resp_valid: Number of UL users response valid
2472*5113495bSYour Name  * @num_ul_user_resp: Number of UL users response
2473*5113495bSYour Name  * @user: per-User stats (array of per-user structures)
2474*5113495bSYour Name  */
2475*5113495bSYour Name struct cdp_tx_completion_ppdu {
2476*5113495bSYour Name 	uint32_t ppdu_id;
2477*5113495bSYour Name 	uint32_t ppdu_seq_id;
2478*5113495bSYour Name 	uint16_t vdev_id;
2479*5113495bSYour Name 	uint16_t bar_num_users;
2480*5113495bSYour Name 	uint32_t num_users;
2481*5113495bSYour Name 	uint8_t  max_users;
2482*5113495bSYour Name 	uint8_t last_usr_index;
2483*5113495bSYour Name 	uint32_t drop_reason;
2484*5113495bSYour Name 	uint32_t is_flush:1,
2485*5113495bSYour Name 		 flow_type:8,
2486*5113495bSYour Name 		 queue_type:8;
2487*5113495bSYour Name 	uint32_t num_mpdu:9,
2488*5113495bSYour Name 		 num_msdu:16;
2489*5113495bSYour Name 	uint16_t frame_type;
2490*5113495bSYour Name 	uint16_t htt_frame_type;
2491*5113495bSYour Name 	uint16_t frame_ctrl;
2492*5113495bSYour Name 	uint16_t channel;
2493*5113495bSYour Name 	uint16_t resp_type:4,
2494*5113495bSYour Name 		 mprot_type:3,
2495*5113495bSYour Name 		 rts_success:1,
2496*5113495bSYour Name 		 rts_failure:1;
2497*5113495bSYour Name 	uint16_t phy_mode;
2498*5113495bSYour Name 	uint32_t ack_rssi;
2499*5113495bSYour Name 	uint32_t tx_duration;
2500*5113495bSYour Name 	uint64_t ppdu_start_timestamp;
2501*5113495bSYour Name 	uint64_t ppdu_end_timestamp;
2502*5113495bSYour Name 	uint64_t ack_timestamp;
2503*5113495bSYour Name 	bool delayed_ba;
2504*5113495bSYour Name 	uint8_t beam_change;
2505*5113495bSYour Name 	uint8_t bss_color;
2506*5113495bSYour Name 	uint8_t doppler;
2507*5113495bSYour Name 	uint8_t spatial_reuse;
2508*5113495bSYour Name 	uint8_t usr_nss_sum;
2509*5113495bSYour Name 	uint32_t usr_ru_tones_sum;
2510*5113495bSYour Name 	uint32_t bar_ppdu_id;
2511*5113495bSYour Name 	uint32_t bar_tx_duration;
2512*5113495bSYour Name 	uint64_t bar_ppdu_start_timestamp;
2513*5113495bSYour Name 	uint64_t bar_ppdu_end_timestamp;
2514*5113495bSYour Name 	uint32_t tlv_bitmap;
2515*5113495bSYour Name 	uint16_t sched_cmdid;
2516*5113495bSYour Name 	uint16_t phy_ppdu_tx_time_us;
2517*5113495bSYour Name 	uint32_t ppdu_bytes;
2518*5113495bSYour Name 	uint8_t htt_seq_type;
2519*5113495bSYour Name 	uint8_t txmode_type;
2520*5113495bSYour Name 	uint8_t txmode;
2521*5113495bSYour Name 	uint32_t num_ul_users;
2522*5113495bSYour Name 	uint32_t ch_access_delay;
2523*5113495bSYour Name 	uint32_t backoff_ac_valid;
2524*5113495bSYour Name 	uint32_t backoff_ac;
2525*5113495bSYour Name 	uint32_t num_ul_user_resp_valid;
2526*5113495bSYour Name 	uint32_t num_ul_user_resp;
2527*5113495bSYour Name 	struct cdp_tx_completion_ppdu_user user[];
2528*5113495bSYour Name };
2529*5113495bSYour Name 
2530*5113495bSYour Name /**
2531*5113495bSYour Name  * struct cdp_dev_stats - Network device stats structure
2532*5113495bSYour Name  * @tx_packets: Tx total packets transmitted
2533*5113495bSYour Name  * @tx_errors : Tx error due to FW tx failure, Ring failure DMA etc
2534*5113495bSYour Name  * @tx_dropped: Tx dropped is same as tx errors as above
2535*5113495bSYour Name  * @rx_packets: Rx total packets transmitted
2536*5113495bSYour Name  * @rx_errors : Rx errors
2537*5113495bSYour Name  * @rx_dropped: Rx dropped stats
2538*5113495bSYour Name  * @tx_bytes  : Tx total bytes transmitted
2539*5113495bSYour Name  * @rx_bytes  : Rx total bytes transmitted
2540*5113495bSYour Name  */
2541*5113495bSYour Name struct cdp_dev_stats {
2542*5113495bSYour Name 	uint32_t tx_packets;
2543*5113495bSYour Name 	uint32_t tx_errors;
2544*5113495bSYour Name 	uint32_t tx_dropped;
2545*5113495bSYour Name 	uint32_t rx_packets;
2546*5113495bSYour Name 	uint32_t rx_errors;
2547*5113495bSYour Name 	uint32_t rx_dropped;
2548*5113495bSYour Name 	uint64_t tx_bytes;
2549*5113495bSYour Name 	uint64_t rx_bytes;
2550*5113495bSYour Name };
2551*5113495bSYour Name 
2552*5113495bSYour Name /**
2553*5113495bSYour Name  * struct cdp_rate_stats - Tx/Rx Rate statistics
2554*5113495bSYour Name  * @rate_stats_info_valid: set if the stats are valid
2555*5113495bSYour Name  * @bw: Indicates the BW of the upcoming transmission -
2556*5113495bSYour Name  *       <enum 2 transmit_bw_20_MHz>
2557*5113495bSYour Name  *       <enum 3 transmit_bw_40_MHz>
2558*5113495bSYour Name  *       <enum 4 transmit_bw_80_MHz>
2559*5113495bSYour Name  *       <enum 5 transmit_bw_160_MHz>
2560*5113495bSYour Name  * @pkt_type: Transmit Packet Type
2561*5113495bSYour Name  * @stbc: When set, STBC transmission rate was used
2562*5113495bSYour Name  * @ldpc: When set, use LDPC transmission rates
2563*5113495bSYour Name  * @sgi: <enum 0     0_8_us_sgi > Legacy normal GI
2564*5113495bSYour Name  *       <enum 1     0_4_us_sgi > Legacy short GI
2565*5113495bSYour Name  *       <enum 2     1_6_us_sgi > HE related GI
2566*5113495bSYour Name  *       <enum 3     3_2_us_sgi > HE
2567*5113495bSYour Name  * @mcs: Transmit MCS Rate
2568*5113495bSYour Name  * @ofdma: Set when the transmission was an OFDMA transmission
2569*5113495bSYour Name  * @tones_in_ru: The number of tones in the RU used.
2570*5113495bSYour Name  * @resvd0: reserved bits
2571*5113495bSYour Name  * @tsf: Lower 32 bits of the TSF (timestamp when ppdu transmission finished)
2572*5113495bSYour Name  * @peer_id: Peer ID of the flow or MPDU queue
2573*5113495bSYour Name  * @tid: TID of the flow or MPDU queue
2574*5113495bSYour Name  */
2575*5113495bSYour Name struct cdp_rate_stats {
2576*5113495bSYour Name 	uint32_t rate_stats_info_valid:1,
2577*5113495bSYour Name 		 bw:2,
2578*5113495bSYour Name 		 pkt_type:4,
2579*5113495bSYour Name 		 stbc:1,
2580*5113495bSYour Name 		 ldpc:1,
2581*5113495bSYour Name 		 sgi:2,
2582*5113495bSYour Name 		 mcs:4,
2583*5113495bSYour Name 		 ofdma:1,
2584*5113495bSYour Name 		 tones_in_ru:12,
2585*5113495bSYour Name 		 resvd0:4;
2586*5113495bSYour Name 	uint32_t tsf;
2587*5113495bSYour Name 	uint16_t peer_id;
2588*5113495bSYour Name 	uint8_t tid;
2589*5113495bSYour Name };
2590*5113495bSYour Name 
2591*5113495bSYour Name /**
2592*5113495bSYour Name  * struct cdp_tx_completion_msdu - Tx MSDU completion descriptor
2593*5113495bSYour Name  * @ppdu_id: PPDU to which this MSDU belongs
2594*5113495bSYour Name  * @transmit_cnt: Number of times this frame has been transmitted
2595*5113495bSYour Name  * @ack_frame_rssi: RSSI of the received ACK or BA frame
2596*5113495bSYour Name  * @resvd0: reserved bit
2597*5113495bSYour Name  * @first_msdu: Indicates this MSDU is the first MSDU in AMSDU
2598*5113495bSYour Name  * @last_msdu: Indicates this MSDU is the last MSDU in AMSDU
2599*5113495bSYour Name  * @msdu_part_of_amsdu : Indicates this MSDU was part of an A-MSDU in MPDU
2600*5113495bSYour Name  * @extd: Extended structure containing rate statistics
2601*5113495bSYour Name  * @resvd1: reserved bits
2602*5113495bSYour Name  */
2603*5113495bSYour Name struct cdp_tx_completion_msdu {
2604*5113495bSYour Name 	uint32_t ppdu_id;
2605*5113495bSYour Name 	uint8_t transmit_cnt;
2606*5113495bSYour Name 	uint32_t ack_frame_rssi:8,
2607*5113495bSYour Name 		 resvd0:1,
2608*5113495bSYour Name 		 first_msdu:1,
2609*5113495bSYour Name 		 last_msdu:1,
2610*5113495bSYour Name 		 msdu_part_of_amsdu:1,
2611*5113495bSYour Name 		 resvd1:20;
2612*5113495bSYour Name 	struct cdp_rate_stats extd;
2613*5113495bSYour Name };
2614*5113495bSYour Name 
2615*5113495bSYour Name /**
2616*5113495bSYour Name  * struct cdp_rx_stats_ppdu_user -- per user RX stats
2617*5113495bSYour Name  * @peer_id: Peer ID
2618*5113495bSYour Name  * @vdev_id: VAP ID
2619*5113495bSYour Name  * @is_ampdu: mpdu aggregate or non-aggregate?
2620*5113495bSYour Name  * @mu_ul_info_valid: MU UL info valid
2621*5113495bSYour Name  * @ofdma_ru_start_index: RU index number(0-73)
2622*5113495bSYour Name  * @ofdma_ru_width: size of RU in units of 1(26tone)RU
2623*5113495bSYour Name  * @nss: NSS 1,2, ...8
2624*5113495bSYour Name  * @mcs: MCS index
2625*5113495bSYour Name  * @user_index: user ID in multi-user case
2626*5113495bSYour Name  * @is_bss_peer: is bss peer check
2627*5113495bSYour Name  * @ast_index: ast index in multi-user case
2628*5113495bSYour Name  * @tid: TID number
2629*5113495bSYour Name  * @num_msdu: Number of MSDUs in PPDU
2630*5113495bSYour Name  * @tcp_msdu_count: Number of TCP MSDUs in PPDU
2631*5113495bSYour Name  * @udp_msdu_count: Number of UDP MSDUs in PPDU
2632*5113495bSYour Name  * @other_msdu_count: Number of MSDUs other than UDP and TCP MSDUs in PPDU
2633*5113495bSYour Name  * @frame_control: frame control field
2634*5113495bSYour Name  * @frame_control_info_valid: frame_control valid
2635*5113495bSYour Name  * @qos_control: qos control field
2636*5113495bSYour Name  * @qos_control_info_valid: qos_control valid
2637*5113495bSYour Name  * @data_sequence_control_info_valid: data_sequence_control_info valid
2638*5113495bSYour Name  * @first_data_seq_ctrl: Sequence control field of first data frame
2639*5113495bSYour Name  * @preamble_type: preamble
2640*5113495bSYour Name  * @ht_flags: HT flags
2641*5113495bSYour Name  * @vht_flags: VHT flags
2642*5113495bSYour Name  * @he_flags: HE flags
2643*5113495bSYour Name  * @mac_addr: Peer MAC Address
2644*5113495bSYour Name  * @mpdu_cnt_fcs_ok: Number of MPDUs in PPDU with fcs ok
2645*5113495bSYour Name  * @mpdu_cnt_fcs_err: Number of MPDUs in PPDU with fcs err
2646*5113495bSYour Name  * @mpdu_fcs_ok_bitmap: MPDU with fcs ok bitmap
2647*5113495bSYour Name  * @mpdu_ok_byte_count:
2648*5113495bSYour Name  * @mpdu_err_byte_count:
2649*5113495bSYour Name  * @retries: number of retries
2650*5113495bSYour Name  * @rx_ratekbps: rx rate in kbps
2651*5113495bSYour Name  * @rix: rate index
2652*5113495bSYour Name  * @mpdu_retries: retries of mpdu in rx
2653*5113495bSYour Name  * @rx_time_us: Rx duration
2654*5113495bSYour Name  */
2655*5113495bSYour Name struct cdp_rx_stats_ppdu_user {
2656*5113495bSYour Name 	uint16_t peer_id;
2657*5113495bSYour Name 	uint8_t vdev_id;
2658*5113495bSYour Name 	bool is_ampdu;
2659*5113495bSYour Name 	uint32_t mu_ul_info_valid:1,
2660*5113495bSYour Name 		 ofdma_ru_start_index:7,
2661*5113495bSYour Name 		 ofdma_ru_width:7,
2662*5113495bSYour Name 		 nss:4,
2663*5113495bSYour Name 		 mcs:4;
2664*5113495bSYour Name 	/* user id */
2665*5113495bSYour Name 	uint8_t  user_index;
2666*5113495bSYour Name 	uint8_t is_bss_peer;
2667*5113495bSYour Name 	uint32_t ast_index;
2668*5113495bSYour Name 	uint32_t tid;
2669*5113495bSYour Name 	uint32_t num_msdu;
2670*5113495bSYour Name 	uint16_t  tcp_msdu_count;
2671*5113495bSYour Name 	uint16_t  udp_msdu_count;
2672*5113495bSYour Name 	uint16_t  other_msdu_count;
2673*5113495bSYour Name 	uint16_t frame_control;
2674*5113495bSYour Name 	uint8_t  frame_control_info_valid;
2675*5113495bSYour Name 	uint16_t qos_control;
2676*5113495bSYour Name 	uint8_t  qos_control_info_valid;
2677*5113495bSYour Name 	uint8_t data_sequence_control_info_valid;
2678*5113495bSYour Name 	uint16_t first_data_seq_ctrl;
2679*5113495bSYour Name 	uint32_t preamble_type;
2680*5113495bSYour Name 	uint16_t ht_flags;
2681*5113495bSYour Name 	uint16_t vht_flags;
2682*5113495bSYour Name 	uint16_t he_flags;
2683*5113495bSYour Name 	uint8_t  mac_addr[QDF_MAC_ADDR_SIZE];
2684*5113495bSYour Name 	uint32_t mpdu_cnt_fcs_ok;
2685*5113495bSYour Name 	uint32_t mpdu_cnt_fcs_err;
2686*5113495bSYour Name 	uint32_t mpdu_fcs_ok_bitmap[QDF_MON_STATUS_MPDU_FCS_BMAP_NWORDS];
2687*5113495bSYour Name 	uint32_t mpdu_ok_byte_count;
2688*5113495bSYour Name 	uint32_t mpdu_err_byte_count;
2689*5113495bSYour Name 	uint32_t retries;
2690*5113495bSYour Name 	uint32_t rx_ratekbps;
2691*5113495bSYour Name 	uint32_t rix;
2692*5113495bSYour Name 	uint32_t mpdu_retries;
2693*5113495bSYour Name 	uint16_t rx_time_us;
2694*5113495bSYour Name };
2695*5113495bSYour Name 
2696*5113495bSYour Name /**
2697*5113495bSYour Name  * struct cdp_rx_indication_ppdu - Rx PPDU indication structure
2698*5113495bSYour Name  * @ppdu_id: PPDU Id
2699*5113495bSYour Name  * @is_ampdu: mpdu aggregate or non-aggregate?
2700*5113495bSYour Name  * @num_mpdu: Number of MPDUs in PPDU
2701*5113495bSYour Name  * @reserved: Reserved bits for future use
2702*5113495bSYour Name  * @num_msdu: Number of MSDUs in PPDU
2703*5113495bSYour Name  * @num_bytes: Number of bytes
2704*5113495bSYour Name  * @udp_msdu_count: Number of UDP MSDUs in PPDU
2705*5113495bSYour Name  * @tcp_msdu_count: Number of TCP MSDUs in PPDU
2706*5113495bSYour Name  * @other_msdu_count: Number of MSDUs other than UDP and TCP MSDUs in PPDU
2707*5113495bSYour Name  * @duration: PPDU duration
2708*5113495bSYour Name  * @tid: TID number
2709*5113495bSYour Name  * @peer_id: Peer ID
2710*5113495bSYour Name  * @vdev_id: VAP ID
2711*5113495bSYour Name  * @mac_addr: Peer MAC Address
2712*5113495bSYour Name  * @first_data_seq_ctrl: Sequence control field of first data frame
2713*5113495bSYour Name  * @u: union of rate information representations
2714*5113495bSYour Name  * @rate_info: consolidated rate fields
2715*5113495bSYour Name  * @ltf_size: ltf_size
2716*5113495bSYour Name  * @stbc: When set, STBC rate was used
2717*5113495bSYour Name  * @he_re: he_re (range extension)
2718*5113495bSYour Name  * @bw: Bandwidth
2719*5113495bSYour Name  *       <enum 0 bw_20_MHz>
2720*5113495bSYour Name  *       <enum 1 bw_40_MHz>
2721*5113495bSYour Name  *       <enum 2 bw_80_MHz>
2722*5113495bSYour Name  *       <enum 3 bw_160_MHz>
2723*5113495bSYour Name  * @nss: NSS 1,2, ...8
2724*5113495bSYour Name  * @mcs: MCS index
2725*5113495bSYour Name  * @preamble: preamble
2726*5113495bSYour Name  * @gi: <enum 0     0_8_us_sgi > Legacy normal GI
2727*5113495bSYour Name  *       <enum 1     0_4_us_sgi > Legacy short GI
2728*5113495bSYour Name  *       <enum 2     1_6_us_sgi > HE related GI
2729*5113495bSYour Name  *       <enum 3     3_2_us_sgi > HE
2730*5113495bSYour Name  * @dcm: dcm
2731*5113495bSYour Name  * @ldpc: ldpc
2732*5113495bSYour Name  * @ppdu_type: SU/MU_MIMO/MU_OFDMA/MU_MIMO_OFDMA/UL_TRIG/BURST_BCN/UL_BSR_RESP/
2733*5113495bSYour Name  * UL_BSR_TRIG/UNKNOWN
2734*5113495bSYour Name  * @rix: rate index
2735*5113495bSYour Name  * @lsig_a: L-SIG in 802.11 PHY header
2736*5113495bSYour Name  * @rssi: RSSI value (units = dB above noise floor)
2737*5113495bSYour Name  * @timestamp: TSF at the reception of PPDU
2738*5113495bSYour Name  * @length: PPDU length
2739*5113495bSYour Name  * @channel: Channel information
2740*5113495bSYour Name  * @beamformed:
2741*5113495bSYour Name  * @rx_ratekbps:
2742*5113495bSYour Name  * @ppdu_rx_rate:
2743*5113495bSYour Name  * @retries:
2744*5113495bSYour Name  * @rx_byte_count:
2745*5113495bSYour Name  * @rx_ratecode:
2746*5113495bSYour Name  * @fcs_error_mpdus:
2747*5113495bSYour Name  * @frame_ctrl: frame control field
2748*5113495bSYour Name  * @rssi_chain: rssi chain per nss per bw
2749*5113495bSYour Name  * @evm_info:
2750*5113495bSYour Name  * @rx_antenna:
2751*5113495bSYour Name  * @num_users:
2752*5113495bSYour Name  * @nf: noise floor
2753*5113495bSYour Name  * @per_chain_rssi: rssi per antenna
2754*5113495bSYour Name  * @is_mcast_bcast:
2755*5113495bSYour Name  * @cfr_info:
2756*5113495bSYour Name  * @punc_bw: punctured bw
2757*5113495bSYour Name  * @phyrx_abort: rx aborted undecoded frame indication
2758*5113495bSYour Name  * @phyrx_abort_reason: abort reason defined in phyrx_abort_request_info
2759*5113495bSYour Name  * @l_sig_length: L SIG A length
2760*5113495bSYour Name  * @l_sig_a_parity: L SIG A parity
2761*5113495bSYour Name  * @l_sig_a_pkt_type: L SIG A info pkt type
2762*5113495bSYour Name  * @l_sig_a_implicit_sounding: L SIG A info captured implicit sounding
2763*5113495bSYour Name  * @vht_crc: Indicate vht crc
2764*5113495bSYour Name  * @group_id:
2765*5113495bSYour Name  * @ht_length: num of bytes in PSDU
2766*5113495bSYour Name  * @ht_smoothing: Indicate ht_smoothing
2767*5113495bSYour Name  * @ht_not_sounding: Indicate ht not sounding
2768*5113495bSYour Name  * @ht_aggregation: Indicate ht aggregation
2769*5113495bSYour Name  * @ht_stbc: Indicate ht stbc
2770*5113495bSYour Name  * @ht_crc: Indicate ht crc
2771*5113495bSYour Name  * @vht_no_txop_ps: Indicate TXOP power save mode
2772*5113495bSYour Name  * @bss_color_id: Indicate BSS color ID
2773*5113495bSYour Name  * @beam_change: Indicates whether spatial mapping is changed
2774*5113495bSYour Name  * @dl_ul_flag: Differentiates between DL and UL transmission
2775*5113495bSYour Name  * @transmit_mcs: Indicates the data MCS
2776*5113495bSYour Name  * @ldpc_extra_sym: LDPC extra symbol
2777*5113495bSYour Name  * @special_reuse: Spatial reuse
2778*5113495bSYour Name  * @ltf_sym: Indictaes HE NSTS
2779*5113495bSYour Name  * @txbf: Indicates whether beamforming is applied
2780*5113495bSYour Name  * @pe_disambiguity: packet extension disambiguity
2781*5113495bSYour Name  * @pre_fec_pad: packet extension a factor
2782*5113495bSYour Name  * @dopplar: Doppler support
2783*5113495bSYour Name  * @txop_duration: Indicates the remaining time in the current TXOP
2784*5113495bSYour Name  * @sig_b_mcs: MCS of HE-SIG-B
2785*5113495bSYour Name  * @sig_b_dcm: DCM of HE-SIG-B
2786*5113495bSYour Name  * @sig_b_sym: Number of symbols of HE-SIG-B
2787*5113495bSYour Name  * @sig_b_comp: Compression mode of HE-SIG-B
2788*5113495bSYour Name  * @he_crc: CRC for HE-SIG contents
2789*5113495bSYour Name  * @usr_nss_sum: Sum of user nss
2790*5113495bSYour Name  * @usr_ru_tones_sum: Sum of user ru_tones
2791*5113495bSYour Name  * @user: per user stats in MU-user case
2792*5113495bSYour Name  */
2793*5113495bSYour Name struct cdp_rx_indication_ppdu {
2794*5113495bSYour Name 	uint32_t ppdu_id;
2795*5113495bSYour Name 	uint16_t is_ampdu:1,
2796*5113495bSYour Name 		 num_mpdu:9,
2797*5113495bSYour Name 		 reserved:6;
2798*5113495bSYour Name 	uint32_t num_msdu;
2799*5113495bSYour Name 	uint32_t num_bytes;
2800*5113495bSYour Name 	uint16_t udp_msdu_count;
2801*5113495bSYour Name 	uint16_t tcp_msdu_count;
2802*5113495bSYour Name 	uint16_t other_msdu_count;
2803*5113495bSYour Name 	uint16_t duration;
2804*5113495bSYour Name 	uint32_t tid:8,
2805*5113495bSYour Name 		 peer_id:16;
2806*5113495bSYour Name 	uint8_t vdev_id;
2807*5113495bSYour Name 	uint8_t mac_addr[6];
2808*5113495bSYour Name 	uint16_t first_data_seq_ctrl;
2809*5113495bSYour Name 	union {
2810*5113495bSYour Name 		uint32_t rate_info;
2811*5113495bSYour Name 		struct {
2812*5113495bSYour Name 			uint32_t ltf_size:2,
2813*5113495bSYour Name 				 stbc:1,
2814*5113495bSYour Name 				 he_re:1,
2815*5113495bSYour Name 				 bw:4,
2816*5113495bSYour Name 				 nss:4,
2817*5113495bSYour Name 				 mcs:4,
2818*5113495bSYour Name 				 preamble:4,
2819*5113495bSYour Name 				 gi:4,
2820*5113495bSYour Name 				 dcm:1,
2821*5113495bSYour Name 				 ldpc:1,
2822*5113495bSYour Name 				 ppdu_type:5;
2823*5113495bSYour Name 		};
2824*5113495bSYour Name 	} u;
2825*5113495bSYour Name 	uint32_t rix;
2826*5113495bSYour Name 	uint32_t lsig_a;
2827*5113495bSYour Name 	uint32_t rssi;
2828*5113495bSYour Name 	uint64_t timestamp;
2829*5113495bSYour Name 	uint32_t length;
2830*5113495bSYour Name 	uint8_t channel;
2831*5113495bSYour Name 	uint8_t beamformed;
2832*5113495bSYour Name 
2833*5113495bSYour Name 	uint32_t rx_ratekbps;
2834*5113495bSYour Name 	uint32_t ppdu_rx_rate;
2835*5113495bSYour Name 
2836*5113495bSYour Name 	uint32_t retries;
2837*5113495bSYour Name 	uint32_t rx_byte_count;
2838*5113495bSYour Name 	uint16_t rx_ratecode;
2839*5113495bSYour Name 	uint8_t fcs_error_mpdus;
2840*5113495bSYour Name 	uint16_t frame_ctrl;
2841*5113495bSYour Name 	int8_t rssi_chain[SS_COUNT][MAX_BW];
2842*5113495bSYour Name 	struct cdp_rx_su_evm_info evm_info;
2843*5113495bSYour Name 	uint32_t rx_antenna;
2844*5113495bSYour Name 	uint8_t num_users;
2845*5113495bSYour Name 	uint32_t nf;
2846*5113495bSYour Name 	uint8_t  per_chain_rssi[MAX_CHAIN];
2847*5113495bSYour Name 	uint8_t is_mcast_bcast;
2848*5113495bSYour Name #if defined(WLAN_CFR_ENABLE) && defined(WLAN_ENH_CFR_ENABLE)
2849*5113495bSYour Name 	struct cdp_rx_ppdu_cfr_info cfr_info;
2850*5113495bSYour Name #endif
2851*5113495bSYour Name 	uint8_t punc_bw;
2852*5113495bSYour Name #ifdef QCA_UNDECODED_METADATA_SUPPORT
2853*5113495bSYour Name 	bool phyrx_abort;
2854*5113495bSYour Name 	uint8_t phyrx_abort_reason;
2855*5113495bSYour Name 	uint32_t l_sig_length:12,
2856*5113495bSYour Name 		 l_sig_a_parity:1,
2857*5113495bSYour Name 		 l_sig_a_pkt_type:4,
2858*5113495bSYour Name 		 l_sig_a_implicit_sounding:1,
2859*5113495bSYour Name 		 vht_crc:8,
2860*5113495bSYour Name 		 group_id:6;
2861*5113495bSYour Name 	uint32_t ht_length:16,
2862*5113495bSYour Name 		 ht_smoothing:1,
2863*5113495bSYour Name 		 ht_not_sounding:1,
2864*5113495bSYour Name 		 ht_aggregation:1,
2865*5113495bSYour Name 		 ht_stbc:2,
2866*5113495bSYour Name 		 ht_crc:8,
2867*5113495bSYour Name 		 vht_no_txop_ps:1;
2868*5113495bSYour Name 	uint32_t bss_color_id:6,
2869*5113495bSYour Name 		 beam_change:1,
2870*5113495bSYour Name 		 dl_ul_flag:1,
2871*5113495bSYour Name 		 transmit_mcs:4,
2872*5113495bSYour Name 		 ldpc_extra_sym:1,
2873*5113495bSYour Name 		 special_reuse:4,
2874*5113495bSYour Name 		 ltf_sym:3,
2875*5113495bSYour Name 		 txbf:1,
2876*5113495bSYour Name 		 pe_disambiguity:1,
2877*5113495bSYour Name 		 pre_fec_pad:4,
2878*5113495bSYour Name 		 dopplar:1;
2879*5113495bSYour Name 	uint32_t txop_duration:7,
2880*5113495bSYour Name 		 sig_b_mcs:3,
2881*5113495bSYour Name 		 sig_b_dcm:1,
2882*5113495bSYour Name 		 sig_b_sym:4,
2883*5113495bSYour Name 		 sig_b_comp:1,
2884*5113495bSYour Name 		 he_crc:4;
2885*5113495bSYour Name #endif
2886*5113495bSYour Name 	uint8_t usr_nss_sum;
2887*5113495bSYour Name 	uint32_t usr_ru_tones_sum;
2888*5113495bSYour Name 	struct cdp_rx_stats_ppdu_user user[];
2889*5113495bSYour Name };
2890*5113495bSYour Name 
2891*5113495bSYour Name /**
2892*5113495bSYour Name  * struct cdp_rx_indication_msdu - Rx MSDU info
2893*5113495bSYour Name  * @ppdu_id: PPDU to which the MSDU belongs
2894*5113495bSYour Name  * @msdu_len: Length of MSDU in bytes
2895*5113495bSYour Name  * @ack_frame_rssi: RSSI of the received ACK or BA frame
2896*5113495bSYour Name  * @resvd0: reserved bit
2897*5113495bSYour Name  * @first_msdu: Indicates this MSDU is the first MSDU in AMSDU
2898*5113495bSYour Name  * @last_msdu: Indicates this MSDU is the last MSDU in AMSDU
2899*5113495bSYour Name  * @msdu_part_of_amsdu: Indicates this MSDU was part of an A-MSDU in MPDU
2900*5113495bSYour Name  * @msdu_part_of_ampdu:
2901*5113495bSYour Name  * @resvd1: reserved bit
2902*5113495bSYour Name  * @extd: Extended structure containing rate statistics
2903*5113495bSYour Name  */
2904*5113495bSYour Name struct cdp_rx_indication_msdu {
2905*5113495bSYour Name 	uint32_t ppdu_id;
2906*5113495bSYour Name 	uint16_t msdu_len;
2907*5113495bSYour Name 	uint32_t ack_frame_rssi:8,
2908*5113495bSYour Name 		 resvd0:1,
2909*5113495bSYour Name 		 first_msdu:1,
2910*5113495bSYour Name 		 last_msdu:1,
2911*5113495bSYour Name 		 msdu_part_of_amsdu:1,
2912*5113495bSYour Name 		 msdu_part_of_ampdu:1,
2913*5113495bSYour Name 		 resvd1:19;
2914*5113495bSYour Name 	struct cdp_rate_stats extd;
2915*5113495bSYour Name };
2916*5113495bSYour Name 
2917*5113495bSYour Name /**
2918*5113495bSYour Name  * struct cdp_config_params - Propagate configuration parameters to datapath
2919*5113495bSYour Name  * @tso_enable: Enable/Disable TSO
2920*5113495bSYour Name  * @lro_enable: Enable/Disable LRO
2921*5113495bSYour Name  * @gro_enable: Enable/Disable GRO
2922*5113495bSYour Name  * @flow_steering_enable: Enable/Disable Rx Hash based flow steering
2923*5113495bSYour Name  * @p2p_tcp_udp_checksumoffload: Enable/Disable TCP/UDP Checksum Offload for P2P
2924*5113495bSYour Name  * @nan_tcp_udp_checksumoffload: Enable/Disable TCP/UDP Checksum Offload for NAN
2925*5113495bSYour Name  * @tcp_udp_checksumoffload: Enable/Disable TCP/UDP Checksum Offload
2926*5113495bSYour Name  * @legacy_mode_checksumoffload_disable: Disable TCP/UDP Checksum Offload for
2927*5113495bSYour Name  *					 legacy modes.
2928*5113495bSYour Name  * @napi_enable: Enable/Disable Napi
2929*5113495bSYour Name  * @ipa_enable: Flag indicating if IPA is enabled or not
2930*5113495bSYour Name  * @tx_flow_stop_queue_threshold: Value to Pause tx queues
2931*5113495bSYour Name  * @tx_flow_start_queue_offset: Available Tx descriptors to unpause
2932*5113495bSYour Name  *				tx queue
2933*5113495bSYour Name  * @tx_comp_loop_pkt_limit: Max # of packets to be processed in 1 tx comp loop
2934*5113495bSYour Name  * @rx_reap_loop_pkt_limit: Max # of packets to be processed in 1 rx reap loop
2935*5113495bSYour Name  * @rx_hp_oos_update_limit: Max # of HP OOS (out of sync) updates
2936*5113495bSYour Name  */
2937*5113495bSYour Name struct cdp_config_params {
2938*5113495bSYour Name 	unsigned int tso_enable:1;
2939*5113495bSYour Name 	unsigned int lro_enable:1;
2940*5113495bSYour Name 	unsigned int gro_enable:1;
2941*5113495bSYour Name 	unsigned int flow_steering_enable:1;
2942*5113495bSYour Name 	unsigned int p2p_tcp_udp_checksumoffload:1;
2943*5113495bSYour Name 	unsigned int nan_tcp_udp_checksumoffload:1;
2944*5113495bSYour Name 	unsigned int tcp_udp_checksumoffload:1;
2945*5113495bSYour Name 	unsigned int legacy_mode_checksumoffload_disable:1;
2946*5113495bSYour Name 	unsigned int napi_enable:1;
2947*5113495bSYour Name 	unsigned int ipa_enable:1;
2948*5113495bSYour Name 	/* Set when QCA_LL_TX_FLOW_CONTROL_V2 is enabled */
2949*5113495bSYour Name 	uint8_t tx_flow_stop_queue_threshold;
2950*5113495bSYour Name 	uint8_t tx_flow_start_queue_offset;
2951*5113495bSYour Name 	uint32_t tx_comp_loop_pkt_limit;
2952*5113495bSYour Name 	uint32_t rx_reap_loop_pkt_limit;
2953*5113495bSYour Name 	uint32_t rx_hp_oos_update_limit;
2954*5113495bSYour Name 
2955*5113495bSYour Name };
2956*5113495bSYour Name 
2957*5113495bSYour Name /**
2958*5113495bSYour Name  * struct cdp_txrx_stats_req - stats request wrapper
2959*5113495bSYour Name  *	used to pass request information to cdp layer
2960*5113495bSYour Name  * @stats: type of stats requested
2961*5113495bSYour Name  * @param0: opaque argument 0 to be passed to htt
2962*5113495bSYour Name  * @param1: opaque argument 1 to be passed to htt
2963*5113495bSYour Name  * @param2: opaque argument 2 to be passed to htt
2964*5113495bSYour Name  * @param3: opaque argument 3 to be passed to htt
2965*5113495bSYour Name  * @cookie_val: cookie
2966*5113495bSYour Name  * @mac_id: mac id
2967*5113495bSYour Name  * @peer_addr: peer address
2968*5113495bSYour Name  */
2969*5113495bSYour Name struct cdp_txrx_stats_req {
2970*5113495bSYour Name 	enum cdp_stats	stats;
2971*5113495bSYour Name 	uint32_t	param0;
2972*5113495bSYour Name 	uint32_t	param1;
2973*5113495bSYour Name 	uint32_t	param2;
2974*5113495bSYour Name 	uint32_t	param3;
2975*5113495bSYour Name 	uint32_t	cookie_val;
2976*5113495bSYour Name 	uint8_t		mac_id;
2977*5113495bSYour Name 	char		*peer_addr;
2978*5113495bSYour Name };
2979*5113495bSYour Name 
2980*5113495bSYour Name /**
2981*5113495bSYour Name  * struct cdp_monitor_filter - monitor filter info
2982*5113495bSYour Name  * @mode: set filter mode
2983*5113495bSYour Name  * @fp_mgmt: set Filter Pass MGMT Configuration
2984*5113495bSYour Name  * @fp_ctrl: set Filter Pass CTRL Configuration
2985*5113495bSYour Name  * @fp_data: set Filter Pass DATA Configuration
2986*5113495bSYour Name  * @mo_mgmt: set Monitor Other MGMT Configuration
2987*5113495bSYour Name  * @mo_ctrl: set Monitor Other CTRL Configuration
2988*5113495bSYour Name  * @mo_data: set Monitor other DATA Configuration
2989*5113495bSYour Name  *
2990*5113495bSYour Name  */
2991*5113495bSYour Name struct cdp_monitor_filter {
2992*5113495bSYour Name 	uint16_t mode;
2993*5113495bSYour Name 	uint16_t fp_mgmt;
2994*5113495bSYour Name 	uint16_t fp_ctrl;
2995*5113495bSYour Name 	uint16_t fp_data;
2996*5113495bSYour Name 	uint16_t mo_mgmt;
2997*5113495bSYour Name 	uint16_t mo_ctrl;
2998*5113495bSYour Name 	uint16_t mo_data;
2999*5113495bSYour Name };
3000*5113495bSYour Name 
3001*5113495bSYour Name /**
3002*5113495bSYour Name  * enum cdp_dp_cfg - CDP ENUMs to get to DP configation
3003*5113495bSYour Name  * @cfg_dp_enable_data_stall: context passed to be used by consumer
3004*5113495bSYour Name  * @cfg_dp_enable_p2p_ip_tcp_udp_checksum_offload: get P2P checksum config
3005*5113495bSYour Name  * @cfg_dp_enable_nan_ip_tcp_udp_checksum_offload: get NAN TX checksum config
3006*5113495bSYour Name  * @cfg_dp_enable_ip_tcp_udp_checksum_offload: get TX checksum config for others
3007*5113495bSYour Name  * @cfg_dp_disable_legacy_mode_csum_offload: Disable checksum offload for
3008*5113495bSYour Name  *                                           legacy modes
3009*5113495bSYour Name  * @cfg_dp_tso_enable: get TSO enable config
3010*5113495bSYour Name  * @cfg_dp_lro_enable: get LRO enable config
3011*5113495bSYour Name  * @cfg_dp_gro_enable: get GRO enable config
3012*5113495bSYour Name  * @cfg_dp_tc_based_dyn_gro_enable: get TC based dynamic gro enable config
3013*5113495bSYour Name  * @cfg_dp_tc_ingress_prio: priority value to be checked for tc filters
3014*5113495bSYour Name  * @cfg_dp_sg_enable:
3015*5113495bSYour Name  * @cfg_dp_tx_flow_start_queue_offset: get DP TX flow start queue offset
3016*5113495bSYour Name  * @cfg_dp_tx_flow_stop_queue_threshold: get DP TX flow stop queue threshold
3017*5113495bSYour Name  * @cfg_dp_ipa_uc_tx_buf_size: get IPA TX buf size config
3018*5113495bSYour Name  * @cfg_dp_ipa_uc_tx_partition_base: get IPA UC TX partition base config
3019*5113495bSYour Name  * @cfg_dp_ipa_uc_rx_ind_ring_count: get IPA rx indication ring count config
3020*5113495bSYour Name  * @cfg_dp_enable_flow_steering: get flow steerint enable config
3021*5113495bSYour Name  * @cfg_dp_reorder_offload_supported: get reorder offload support config
3022*5113495bSYour Name  * @cfg_dp_ce_classify_enable: get CE classify enable config
3023*5113495bSYour Name  * @cfg_dp_disable_intra_bss_fwd: get intra bss fwd config
3024*5113495bSYour Name  * @cfg_dp_pktlog_buffer_size: get packet log buffer size config
3025*5113495bSYour Name  * @cfg_dp_wow_check_rx_pending: get wow rx pending frame check config
3026*5113495bSYour Name  * @cfg_dp_local_pkt_capture: get local packet capture config
3027*5113495bSYour Name  */
3028*5113495bSYour Name enum cdp_dp_cfg {
3029*5113495bSYour Name 	cfg_dp_enable_data_stall,
3030*5113495bSYour Name 	cfg_dp_enable_p2p_ip_tcp_udp_checksum_offload,
3031*5113495bSYour Name 	cfg_dp_enable_nan_ip_tcp_udp_checksum_offload,
3032*5113495bSYour Name 	cfg_dp_enable_ip_tcp_udp_checksum_offload,
3033*5113495bSYour Name 	cfg_dp_disable_legacy_mode_csum_offload,
3034*5113495bSYour Name 	cfg_dp_tso_enable,
3035*5113495bSYour Name 	cfg_dp_lro_enable,
3036*5113495bSYour Name 	cfg_dp_gro_enable,
3037*5113495bSYour Name 	cfg_dp_tc_based_dyn_gro_enable,
3038*5113495bSYour Name 	cfg_dp_tc_ingress_prio,
3039*5113495bSYour Name 	cfg_dp_sg_enable,
3040*5113495bSYour Name 	cfg_dp_tx_flow_start_queue_offset,
3041*5113495bSYour Name 	cfg_dp_tx_flow_stop_queue_threshold,
3042*5113495bSYour Name 	cfg_dp_ipa_uc_tx_buf_size,
3043*5113495bSYour Name 	cfg_dp_ipa_uc_tx_partition_base,
3044*5113495bSYour Name 	cfg_dp_ipa_uc_rx_ind_ring_count,
3045*5113495bSYour Name 	cfg_dp_enable_flow_steering,
3046*5113495bSYour Name 	cfg_dp_reorder_offload_supported,
3047*5113495bSYour Name 	cfg_dp_ce_classify_enable,
3048*5113495bSYour Name 	cfg_dp_disable_intra_bss_fwd,
3049*5113495bSYour Name 	cfg_dp_pktlog_buffer_size,
3050*5113495bSYour Name 	cfg_dp_wow_check_rx_pending,
3051*5113495bSYour Name 	cfg_dp_local_pkt_capture,
3052*5113495bSYour Name };
3053*5113495bSYour Name 
3054*5113495bSYour Name /**
3055*5113495bSYour Name  * struct cdp_peer_cookie - cookie used when creating peer
3056*5113495bSYour Name  * @ctx: context passed to be used by consumer
3057*5113495bSYour Name  * @mac_addr: MAC address of peer
3058*5113495bSYour Name  * @peer_id: peer id
3059*5113495bSYour Name  * @pdev_id: pdev_id
3060*5113495bSYour Name  * @cookie: cookie to be used by consumer
3061*5113495bSYour Name  */
3062*5113495bSYour Name struct cdp_peer_cookie {
3063*5113495bSYour Name 	struct cdp_stats_cookie *ctx;
3064*5113495bSYour Name 	uint8_t mac_addr[QDF_MAC_ADDR_SIZE];
3065*5113495bSYour Name 	uint8_t peer_id;
3066*5113495bSYour Name 	uint8_t pdev_id;
3067*5113495bSYour Name 	uint8_t cookie;
3068*5113495bSYour Name };
3069*5113495bSYour Name 
3070*5113495bSYour Name /**
3071*5113495bSYour Name  * enum cdp_fisa_stats_id - ID to query FISA stats
3072*5113495bSYour Name  * @CDP_FISA_STATS_ID_ERR_STATS: FISA error stats
3073*5113495bSYour Name  * @CDP_FISA_STATS_ID_DUMP_HW_FST: HW FST dump
3074*5113495bSYour Name  * @CDP_FISA_STATS_ID_DUMP_SW_FST: SW FST dump
3075*5113495bSYour Name  */
3076*5113495bSYour Name enum cdp_fisa_stats_id {
3077*5113495bSYour Name 	CDP_FISA_STATS_ID_ERR_STATS,
3078*5113495bSYour Name 	CDP_FISA_STATS_ID_DUMP_HW_FST,
3079*5113495bSYour Name 	CDP_FISA_STATS_ID_DUMP_SW_FST,
3080*5113495bSYour Name };
3081*5113495bSYour Name 
3082*5113495bSYour Name #ifdef WLAN_SUPPORT_RX_FISA
3083*5113495bSYour Name /**
3084*5113495bSYour Name  * enum cdp_fisa_config_id - FISA config ID
3085*5113495bSYour Name  * @CDP_FISA_HTT_RX_FISA_CFG: FISA config HTT message
3086*5113495bSYour Name  * @CDP_FISA_HTT_RX_FSE_OP_CFG: FSE operation HTT message
3087*5113495bSYour Name  * @CDP_FISA_HTT_RX_FSE_SETUP_CFG: FSE setup HTT message
3088*5113495bSYour Name  */
3089*5113495bSYour Name enum cdp_fisa_config_id {
3090*5113495bSYour Name 	CDP_FISA_HTT_RX_FISA_CFG,
3091*5113495bSYour Name 	CDP_FISA_HTT_RX_FSE_OP_CFG,
3092*5113495bSYour Name 	CDP_FISA_HTT_RX_FSE_SETUP_CFG,
3093*5113495bSYour Name };
3094*5113495bSYour Name 
3095*5113495bSYour Name /**
3096*5113495bSYour Name  * union cdp_fisa_config - FISA HTT message data
3097*5113495bSYour Name  * @fisa_config: FISA config HTT msg data
3098*5113495bSYour Name  * @fse_op_cmd: FSE operation HTT msg data
3099*5113495bSYour Name  * @fse_setup_info: FSE setup HTT msg data
3100*5113495bSYour Name  */
3101*5113495bSYour Name union cdp_fisa_config {
3102*5113495bSYour Name 	struct dp_htt_rx_fisa_cfg *fisa_config;
3103*5113495bSYour Name 	struct dp_htt_rx_flow_fst_operation *fse_op_cmd;
3104*5113495bSYour Name 	struct dp_htt_rx_flow_fst_setup *fse_setup_info;
3105*5113495bSYour Name };
3106*5113495bSYour Name 
3107*5113495bSYour Name struct cdp_flow_stats {
3108*5113495bSYour Name 	uint32_t aggr_count;
3109*5113495bSYour Name 	uint32_t curr_aggr_count;
3110*5113495bSYour Name 	uint32_t flush_count;
3111*5113495bSYour Name 	uint32_t bytes_aggregated;
3112*5113495bSYour Name };
3113*5113495bSYour Name #else
3114*5113495bSYour Name /**
3115*5113495bSYour Name  * struct cdp_flow_stats - Per-Flow (5-tuple) statistics
3116*5113495bSYour Name  * @msdu_count: number of rx msdus matching this flow
3117*5113495bSYour Name  * @mon_msdu_count: number of msdus matching this flow in mon path
3118*5113495bSYour Name  *
3119*5113495bSYour Name  * HW also includes msdu_byte_count and timestamp, which
3120*5113495bSYour Name  * are not currently tracked in SW.
3121*5113495bSYour Name  */
3122*5113495bSYour Name struct cdp_flow_stats {
3123*5113495bSYour Name 	uint32_t msdu_count;
3124*5113495bSYour Name 	uint32_t mon_msdu_count;
3125*5113495bSYour Name };
3126*5113495bSYour Name #endif
3127*5113495bSYour Name 
3128*5113495bSYour Name /**
3129*5113495bSYour Name  * enum cdp_flow_fst_operation - RX FST operations allowed
3130*5113495bSYour Name  * @CDP_FLOW_FST_ENTRY_ADD: Add entry
3131*5113495bSYour Name  * @CDP_FLOW_FST_ENTRY_DEL: Delete entry
3132*5113495bSYour Name  * @CDP_FLOW_FST_RX_BYPASS_ENABLE: RX bypass enable
3133*5113495bSYour Name  * @CDP_FLOW_FST_RX_BYPASS_DISABLE: RX bypass disable
3134*5113495bSYour Name  */
3135*5113495bSYour Name enum cdp_flow_fst_operation {
3136*5113495bSYour Name 	CDP_FLOW_FST_ENTRY_ADD,
3137*5113495bSYour Name 	CDP_FLOW_FST_ENTRY_DEL,
3138*5113495bSYour Name 	CDP_FLOW_FST_RX_BYPASS_ENABLE,
3139*5113495bSYour Name 	CDP_FLOW_FST_RX_BYPASS_DISABLE
3140*5113495bSYour Name };
3141*5113495bSYour Name 
3142*5113495bSYour Name /**
3143*5113495bSYour Name  * enum cdp_flow_protocol_type - RX FST supported protocol types,
3144*5113495bSYour Name  *                               mapped to HW spec
3145*5113495bSYour Name  * @CDP_FLOW_PROTOCOL_TYPE_TCP: TCP
3146*5113495bSYour Name  * @CDP_FLOW_PROTOCOL_TYPE_UDP: UDP
3147*5113495bSYour Name  */
3148*5113495bSYour Name enum cdp_flow_protocol_type {
3149*5113495bSYour Name 	CDP_FLOW_PROTOCOL_TYPE_TCP = 6,
3150*5113495bSYour Name 	CDP_FLOW_PROTOCOL_TYPE_UDP = 17,
3151*5113495bSYour Name };
3152*5113495bSYour Name 
3153*5113495bSYour Name /**
3154*5113495bSYour Name  * struct cdp_rx_flow_tuple_info - RX flow tuple info used for addition/deletion
3155*5113495bSYour Name  * @tuple_populated:
3156*5113495bSYour Name  * @is_exception: Flows which are added to flow table but not aggregated.
3157*5113495bSYour Name  * @bypass_fisa: Flow which are not added to flow table.
3158*5113495bSYour Name  * @dest_ip_127_96: destination IP address bit fields 96-127
3159*5113495bSYour Name  * @dest_ip_95_64: destination IP address bit fields 64-95
3160*5113495bSYour Name  * @dest_ip_63_32: destination IP address bit fields 32-63
3161*5113495bSYour Name  * @dest_ip_31_0: destination IP address bit fields 0-31
3162*5113495bSYour Name  * @src_ip_127_96: source IP address bit fields 96-127
3163*5113495bSYour Name  * @src_ip_95_64: source IP address bit fields 64-95
3164*5113495bSYour Name  * @src_ip_63_32: source IP address bit fields 32-63
3165*5113495bSYour Name  * @src_ip_31_0: source IP address bit fields 0-31
3166*5113495bSYour Name  * @dest_port: destination port of flow
3167*5113495bSYour Name  * @src_port: source port of flow
3168*5113495bSYour Name  * @l4_protocol: protocol type in flow (TCP/UDP)
3169*5113495bSYour Name  */
3170*5113495bSYour Name struct cdp_rx_flow_tuple_info {
3171*5113495bSYour Name #ifdef WLAN_SUPPORT_RX_FISA
3172*5113495bSYour Name 	uint8_t tuple_populated;
3173*5113495bSYour Name 	uint8_t is_exception;
3174*5113495bSYour Name 	bool bypass_fisa;
3175*5113495bSYour Name #endif
3176*5113495bSYour Name 	uint32_t dest_ip_127_96;
3177*5113495bSYour Name 	uint32_t dest_ip_95_64;
3178*5113495bSYour Name 	uint32_t dest_ip_63_32;
3179*5113495bSYour Name 	uint32_t dest_ip_31_0;
3180*5113495bSYour Name 	uint32_t src_ip_127_96;
3181*5113495bSYour Name 	uint32_t src_ip_95_64;
3182*5113495bSYour Name 	uint32_t src_ip_63_32;
3183*5113495bSYour Name 	uint32_t src_ip_31_0;
3184*5113495bSYour Name 	uint16_t dest_port;
3185*5113495bSYour Name 	uint16_t src_port;
3186*5113495bSYour Name 	uint16_t l4_protocol;
3187*5113495bSYour Name };
3188*5113495bSYour Name 
3189*5113495bSYour Name /**
3190*5113495bSYour Name  * struct cdp_rx_flow_info - RX flow info used for addition/deletion
3191*5113495bSYour Name  * @is_addr_ipv4: indicates whether given IP address is IPv4/IPv6
3192*5113495bSYour Name  * @op_code: add/delete/enable/disable operation requested
3193*5113495bSYour Name  * @flow_tuple_info: structure containing tuple info
3194*5113495bSYour Name  * @fse_metadata: metadata to be set in RX flow
3195*5113495bSYour Name  * @use_ppe_ds: use DS mode
3196*5113495bSYour Name  * @priority_vld: is priority valid
3197*5113495bSYour Name  * @service_code: service code for DS
3198*5113495bSYour Name  */
3199*5113495bSYour Name struct cdp_rx_flow_info {
3200*5113495bSYour Name 	bool is_addr_ipv4;
3201*5113495bSYour Name 	enum cdp_flow_fst_operation op_code;
3202*5113495bSYour Name 	struct cdp_rx_flow_tuple_info flow_tuple_info;
3203*5113495bSYour Name 	uint16_t fse_metadata;
3204*5113495bSYour Name 	uint8_t use_ppe_ds;
3205*5113495bSYour Name 	uint8_t priority_vld;
3206*5113495bSYour Name 	uint16_t service_code;
3207*5113495bSYour Name };
3208*5113495bSYour Name 
3209*5113495bSYour Name #ifdef QCA_SUPPORT_SCAN_SPCL_VAP_STATS
3210*5113495bSYour Name /**
3211*5113495bSYour Name  * struct cdp_scan_spcl_vap_stats - Special vap statistics info
3212*5113495bSYour Name  * @rx_ok_pkts: rx fcs ok pkts count
3213*5113495bSYour Name  * @rx_ok_bytes: rx fcs ok bytes count
3214*5113495bSYour Name  * @rx_err_pkts: rx fcs err pkts count
3215*5113495bSYour Name  * @rx_err_bytes: rx fcs err bytes count
3216*5113495bSYour Name  * @rx_mgmt_pkts: rx mgmt pkts count
3217*5113495bSYour Name  * @rx_ctrl_pkts: rx ctrl pkts count
3218*5113495bSYour Name  * @rx_data_pkts: rx data pkts count
3219*5113495bSYour Name  */
3220*5113495bSYour Name struct cdp_scan_spcl_vap_stats {
3221*5113495bSYour Name 	uint64_t rx_ok_pkts;
3222*5113495bSYour Name 	uint64_t rx_ok_bytes;
3223*5113495bSYour Name 	uint64_t rx_err_pkts;
3224*5113495bSYour Name 	uint64_t rx_err_bytes;
3225*5113495bSYour Name 	uint64_t rx_mgmt_pkts;
3226*5113495bSYour Name 	uint64_t rx_ctrl_pkts;
3227*5113495bSYour Name 	uint64_t rx_data_pkts;
3228*5113495bSYour Name };
3229*5113495bSYour Name #endif
3230*5113495bSYour Name 
3231*5113495bSYour Name /**
3232*5113495bSYour Name  * struct cdp_soc_attach_params
3233*5113495bSYour Name  *
3234*5113495bSYour Name  * @hif_handle: Opaque HIF handle
3235*5113495bSYour Name  * @htc_handle: Opaque HTC handle
3236*5113495bSYour Name  * @qdf_osdev: QDF device
3237*5113495bSYour Name  * @ol_ops: Offload Operations
3238*5113495bSYour Name  * @device_id: Device ID
3239*5113495bSYour Name  * @ml_context: DP ML object context
3240*5113495bSYour Name  * @mlo_chip_id: MLO chip id, for legacy SOCs chip_id need to 0
3241*5113495bSYour Name  * @mlo_enabled: MLO enable bit
3242*5113495bSYour Name  */
3243*5113495bSYour Name struct cdp_soc_attach_params {
3244*5113495bSYour Name 	struct hif_opaque_softc *hif_handle;
3245*5113495bSYour Name 	HTC_HANDLE htc_handle;
3246*5113495bSYour Name 	qdf_device_t qdf_osdev;
3247*5113495bSYour Name 	struct ol_if_ops *ol_ops;
3248*5113495bSYour Name 	uint16_t device_id;
3249*5113495bSYour Name 	struct cdp_mlo_ctxt *ml_context;
3250*5113495bSYour Name 	uint8_t mlo_chip_id;
3251*5113495bSYour Name 	uint8_t mlo_enabled;
3252*5113495bSYour Name };
3253*5113495bSYour Name 
3254*5113495bSYour Name /**
3255*5113495bSYour Name  * struct cdp_pdev_attach_params - params for pdev attach
3256*5113495bSYour Name  *
3257*5113495bSYour Name  * @htc_handle: HTC handle for host-target interface
3258*5113495bSYour Name  * @qdf_osdev: QDF OS device
3259*5113495bSYour Name  * @pdev_id: PDEV ID
3260*5113495bSYour Name  * @mlo_link_id: ML link id
3261*5113495bSYour Name  */
3262*5113495bSYour Name struct cdp_pdev_attach_params {
3263*5113495bSYour Name 	HTC_HANDLE htc_handle;
3264*5113495bSYour Name 	qdf_device_t qdf_osdev;
3265*5113495bSYour Name 	uint8_t pdev_id;
3266*5113495bSYour Name 	uint32_t mlo_link_id;
3267*5113495bSYour Name };
3268*5113495bSYour Name 
3269*5113495bSYour Name /*
3270*5113495bSYour Name  * cdp_txrx_peer_params_update
3271*5113495bSYour Name  *
3272*5113495bSYour Name  * @vdev_id: VDEV ID
3273*5113495bSYour Name  * @peer_mac: Peer mac address
3274*5113495bSYour Name  * @chip_id: CHIP ID
3275*5113495bSYour Name  * @pdev_id: PDEV ID
3276*5113495bSYour Name  */
3277*5113495bSYour Name struct cdp_txrx_peer_params_update {
3278*5113495bSYour Name 	uint8_t	vdev_id;
3279*5113495bSYour Name 	uint8_t	*peer_mac;
3280*5113495bSYour Name 	uint8_t	chip_id;
3281*5113495bSYour Name 	uint8_t	pdev_id;
3282*5113495bSYour Name };
3283*5113495bSYour Name 
3284*5113495bSYour Name /**
3285*5113495bSYour Name  * enum cdp_umac_reset_state - umac reset in progress state
3286*5113495bSYour Name  * @CDP_UMAC_RESET_NOT_IN_PROGRESS: Umac reset is not in progress
3287*5113495bSYour Name  * @CDP_UMAC_RESET_IN_PROGRESS: Umac reset is in progress
3288*5113495bSYour Name  * @CDP_UMAC_RESET_IN_PROGRESS_DURING_BUFFER_WINDOW: Umac reset was in progress
3289*5113495bSYour Name  *                                                   during this buffer window.
3290*5113495bSYour Name  * @CDP_UMAC_RESET_INVALID_STATE: Umac reset invalid state
3291*5113495bSYour Name  */
3292*5113495bSYour Name enum cdp_umac_reset_state {
3293*5113495bSYour Name 	CDP_UMAC_RESET_NOT_IN_PROGRESS,
3294*5113495bSYour Name 	CDP_UMAC_RESET_IN_PROGRESS,
3295*5113495bSYour Name 	CDP_UMAC_RESET_IN_PROGRESS_DURING_BUFFER_WINDOW,
3296*5113495bSYour Name 	CDP_UMAC_RESET_INVALID_STATE
3297*5113495bSYour Name };
3298*5113495bSYour Name 
3299*5113495bSYour Name #ifdef WLAN_FEATURE_TX_LATENCY_STATS
3300*5113495bSYour Name /* the maximum distribution level of tx latency stats */
3301*5113495bSYour Name #define CDP_TX_LATENCY_DISTR_LV_MAX 4
3302*5113495bSYour Name 
3303*5113495bSYour Name /**
3304*5113495bSYour Name  * enum cdp_tx_latency_type - transmit latency types
3305*5113495bSYour Name  * @CDP_TX_LATENCY_TYPE_DRIVER: Per MSDU latency
3306*5113495bSYour Name  *  from: A MSDU is presented to the driver
3307*5113495bSYour Name  *  to: the MSDU is queued into TCL SRNG
3308*5113495bSYour Name  * @CDP_TX_LATENCY_TYPE_RING_BUF: Per MSDU latency
3309*5113495bSYour Name  *  from: the MSDU is queued into TCL SRNG
3310*5113495bSYour Name  *  to: the MSDU is released by the driver
3311*5113495bSYour Name  * @CDP_TX_LATENCY_TYPE_HW: Per MSDU latency
3312*5113495bSYour Name  *  from: the MSDU is presented to the hardware
3313*5113495bSYour Name  *  to: the MSDU is released by the hardware
3314*5113495bSYour Name  * @CDP_TX_LATENCY_TYPE_CCA: Per PPDU latency
3315*5113495bSYour Name  *  The time spent on Clear Channel Assessment, the maximum value is 50000(us)
3316*5113495bSYour Name  *  from: A PPDU is presented to the hardware LMAC
3317*5113495bSYour Name  *  to: over-the-air transmission is started for the PPDU
3318*5113495bSYour Name  * @CDP_TX_LATENCY_TYPE_MAX: maximum number of types
3319*5113495bSYour Name  */
3320*5113495bSYour Name enum cdp_tx_latency_type {
3321*5113495bSYour Name 	CDP_TX_LATENCY_TYPE_DRIVER,
3322*5113495bSYour Name 	CDP_TX_LATENCY_TYPE_RING_BUF,
3323*5113495bSYour Name 	CDP_TX_LATENCY_TYPE_HW,
3324*5113495bSYour Name 	CDP_TX_LATENCY_TYPE_CCA,
3325*5113495bSYour Name 
3326*5113495bSYour Name 	/* keep last */
3327*5113495bSYour Name 	CDP_TX_LATENCY_TYPE_MAX,
3328*5113495bSYour Name };
3329*5113495bSYour Name 
3330*5113495bSYour Name /**
3331*5113495bSYour Name  * struct cdp_tx_latency_config - configuration for per-link transmit latency
3332*5113495bSYour Name  * statistics
3333*5113495bSYour Name  * @enable: enable/disable the feature
3334*5113495bSYour Name  * @report: enable/disable async report
3335*5113495bSYour Name  * @period: statistical period(in ms)
3336*5113495bSYour Name  * @granularity: granularity(in microseconds) of the distribution for the types
3337*5113495bSYour Name  */
3338*5113495bSYour Name struct cdp_tx_latency_config {
3339*5113495bSYour Name 	bool enable;
3340*5113495bSYour Name 	bool report;
3341*5113495bSYour Name 	uint32_t period;
3342*5113495bSYour Name 	uint32_t granularity[CDP_TX_LATENCY_TYPE_MAX];
3343*5113495bSYour Name };
3344*5113495bSYour Name 
3345*5113495bSYour Name /**
3346*5113495bSYour Name  * struct cdp_tx_latency_stats - per-type transmit latency statistics
3347*5113495bSYour Name  * @average: average of the latency(in us) for the type within a cycle
3348*5113495bSYour Name  * @granularity: granularity(in us) of the distribution for the type
3349*5113495bSYour Name  * @distribution: latency distribution for the type
3350*5113495bSYour Name  */
3351*5113495bSYour Name struct cdp_tx_latency_stats {
3352*5113495bSYour Name 	uint32_t average;
3353*5113495bSYour Name 	uint32_t granularity;
3354*5113495bSYour Name 	uint32_t distribution[CDP_TX_LATENCY_DISTR_LV_MAX];
3355*5113495bSYour Name };
3356*5113495bSYour Name 
3357*5113495bSYour Name /**
3358*5113495bSYour Name  * struct cdp_tx_latency - per-link transmit latency statistics
3359*5113495bSYour Name  * @node: list node for membership in the stats list
3360*5113495bSYour Name  * @mac_remote: link mac address of remote peer
3361*5113495bSYour Name  * @stats: transmit latency statistics for types
3362*5113495bSYour Name  */
3363*5113495bSYour Name struct cdp_tx_latency {
3364*5113495bSYour Name 	qdf_list_node_t node;
3365*5113495bSYour Name 	struct qdf_mac_addr mac_remote;
3366*5113495bSYour Name 	struct cdp_tx_latency_stats stats[CDP_TX_LATENCY_TYPE_MAX];
3367*5113495bSYour Name };
3368*5113495bSYour Name 
3369*5113495bSYour Name /**
3370*5113495bSYour Name  * typedef cdp_tx_latency_cb() - callback for transmit latency
3371*5113495bSYour Name  * @vdev_id: vdev id
3372*5113495bSYour Name  * @stats_list: list of per-link transmit latency statistics
3373*5113495bSYour Name  */
3374*5113495bSYour Name typedef QDF_STATUS(*cdp_tx_latency_cb)(uint8_t vdev_id,
3375*5113495bSYour Name 				       qdf_list_t *stats_list);
3376*5113495bSYour Name #endif
3377*5113495bSYour Name #endif
3378