xref: /wlan-dirver/qca-wifi-host-cmn/dp/inc/cdp_txrx_stats_struct.h (revision 11f5a63a6cbdda84849a730de22f0a71e635d58c)
1 /*
2  * Copyright (c) 2016-2019 The Linux Foundation. All rights reserved.
3  *
4  * Permission to use, copy, modify, and/or distribute this software for
5  * any purpose with or without fee is hereby granted, provided that the
6  * above copyright notice and this permission notice appear in all
7  * copies.
8  *
9  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16  * PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 /**
20  * @file cdp_txrx_stats_struct.h
21  * @brief Define the host data path stats API functions
22  * called by the host control SW and the OS interface module
23  */
24 #ifndef _CDP_TXRX_STATS_STRUCT_H_
25 #define _CDP_TXRX_STATS_STRUCT_H_
26 
27 #ifdef FEATURE_TSO_STATS
28 #include <qdf_types.h>
29 #endif /* FEATURE_TSO_STATS */
30 
31 #define TXRX_STATS_LEVEL_OFF   0
32 #define TXRX_STATS_LEVEL_BASIC 1
33 #define TXRX_STATS_LEVEL_FULL  2
34 
35 #define BSS_CHAN_INFO_READ                        1
36 #define BSS_CHAN_INFO_READ_AND_CLEAR              2
37 
38 #define TX_FRAME_TYPE_DATA 0
39 #define TX_FRAME_TYPE_MGMT 1
40 #define TX_FRAME_TYPE_BEACON 2
41 
42 #ifndef TXRX_STATS_LEVEL
43 #define TXRX_STATS_LEVEL TXRX_STATS_LEVEL_BASIC
44 #endif
45 
46 /* 1 additional MCS is for invalid values */
47 #define MAX_MCS (12 + 1)
48 #define MAX_MCS_11A 8
49 #define MAX_MCS_11B 7
50 #define MAX_MCS_11AC 12
51 /* 1 additional GI is for invalid values */
52 #define MAX_GI (4 + 1)
53 #define SS_COUNT 8
54 #define MAX_BW 7
55 #define MAX_RECEPTION_TYPES 4
56 
57 #define MAX_TRANSMIT_TYPES	9
58 
59 #define MAX_USER_POS		8
60 #define MAX_MU_GROUP_ID		64
61 #define MAX_RU_LOCATIONS	6
62 #define RU_26			1
63 #define RU_52			2
64 #define RU_106			4
65 #define RU_242			9
66 #define RU_484			18
67 #define RU_996			37
68 
69 /* WME stream classes */
70 #define WME_AC_BE    0    /* best effort */
71 #define WME_AC_BK    1    /* background */
72 #define WME_AC_VI    2    /* video */
73 #define WME_AC_VO    3    /* voice */
74 #define WME_AC_MAX   4    /* MAX AC Value */
75 
76 #define CDP_MAX_RX_RINGS 4  /* max rx rings */
77 #define CDP_MAX_TX_COMP_RINGS 3  /* max tx completion rings */
78 #define CDP_MAX_TX_TQM_STATUS 9  /* max tx tqm completion status */
79 #define CDP_MAX_TX_HTT_STATUS 7  /* max tx htt completion status */
80 
81 /* TID level VoW stats macros
82  * to add and get stats
83  */
84 #define PFLOW_TXRX_TIDQ_STATS_ADD(_peer, _tid, _var, _val) \
85 	(((_peer)->tidq_stats[_tid]).stats[_var]) += _val
86 #define PFLOW_TXRX_TIDQ_STATS_GET(_peer, _tid, _var, _val) \
87 	((_peer)->tidq_stats[_tid].stats[_var])
88 /*
89  * Video only stats
90  */
91 #define PFLOW_CTRL_PDEV_VIDEO_STATS_SET(_pdev, _var, _val) \
92 	(((_pdev)->vow.vistats[_var]).value) = _val
93 #define PFLOW_CTRL_PDEV_VIDEO_STATS_GET(_pdev, _var) \
94 	((_pdev)->vow.vistats[_var].value)
95 #define PFLOW_CTRL_PDEV_VIDEO_STATS_ADD(_pdev, _var, _val) \
96 	(((_pdev)->vow.vistats[_var]).value) += _val
97 /*
98  * video delay stats
99  */
100 #define PFLOW_CTRL_PDEV_DELAY_VIDEO_STATS_SET(_pdev, _var, _val) \
101 	(((_pdev)->vow.delaystats[_var]).value) = _val
102 #define PFLOW_CTRL_PDEV_DELAY_VIDEO_STATS_GET(_pdev, _var) \
103 	((_pdev)->vow.delaystats[_var].value)
104 #define PFLOW_CTRL_PDEV_DELAY_VIDEO_STATS_ADD(_pdev, _var, _val) \
105 	(((_pdev)->vow.delaystats[_var]).value) += _val
106 /*
107  * Number of TLVs sent by FW. Needs to reflect
108  * HTT_PPDU_STATS_MAX_TAG declared in FW
109  */
110 #define CDP_PPDU_STATS_MAX_TAG 14
111 #define CDP_MAX_DATA_TIDS 9
112 
113 #define CDP_WDI_NUM_EVENTS WDI_NUM_EVENTS
114 
115 #define CDP_FCTL_RETRY 0x0800
116 #define CDP_FC_IS_RETRY_SET(_fc) \
117 	((_fc) & qdf_cpu_to_le16(CDP_FCTL_RETRY))
118 
119 #define INVALID_RSSI 255
120 
121 /*Max SU EVM count */
122 #define DP_RX_MAX_SU_EVM_COUNT 32
123 
124 #define WDI_EVENT_BASE 0x100
125 
126 #define CDP_TXRX_RATECODE_MCS_MASK 0xF
127 #define CDP_TXRX_RATECODE_NSS_MASK 0x3
128 #define CDP_TXRX_RATECODE_NSS_LSB 4
129 #define CDP_TXRX_RATECODE_PREM_MASK 0x3
130 #define CDP_TXRX_RATECODE_PREM_LSB 6
131 
132 /* Below BW_GAIN should be added to the SNR value of every ppdu based on the
133  * bandwidth. This table is obtained from HALPHY.
134  * BW         BW_Gain
135  * 20          0
136  * 40          3dBm
137  * 80          6dBm
138  * 160/80P80   9dBm
139  */
140 
141 #define PKT_BW_GAIN_20MHZ 0
142 #define PKT_BW_GAIN_40MHZ 3
143 #define PKT_BW_GAIN_80MHZ 6
144 #define PKT_BW_GAIN_160MHZ 9
145 
146 /*
147  * cdp_tx_transmit_type: Transmit type index
148  * SU: SU Transmit type index
149  * MU_MIMO: MU_MIMO Transmit type index
150  * MU_OFDMA: MU_OFDMA Transmit type index
151  * MU_MIMO_OFDMA: MU MIMO OFDMA Transmit type index
152  */
153 enum cdp_tx_transmit_type {
154 	SU = 0,
155 	MU_MIMO,
156 	MU_OFDMA,
157 	MU_MIMO_OFDMA,
158 };
159 
160 /*
161  * cdp_ru_index: Different RU index
162  *
163  * RU_26_INDEX : 26-tone Resource Unit index
164  * RU_52_INDEX : 52-tone Resource Unit index
165  * RU_106_INDEX: 106-tone Resource Unit index
166  * RU_242_INDEX: 242-tone Resource Unit index
167  * RU_484_INDEX: 484-tone Resource Unit index
168  * RU_996_INDEX: 996-tone Resource Unit index
169  */
170 enum cdp_ru_index {
171 	RU_26_INDEX = 0,
172 	RU_52_INDEX,
173 	RU_106_INDEX,
174 	RU_242_INDEX,
175 	RU_484_INDEX,
176 	RU_996_INDEX,
177 };
178 
179 #ifdef FEATURE_TSO_STATS
180 /* Number of TSO Packet Statistics captured */
181 #define CDP_MAX_TSO_PACKETS 5
182 /* Information for Number of Segments for a TSO Packet captured */
183 #define CDP_MAX_TSO_SEGMENTS 2
184 /* Information for Number of Fragments for a TSO Segment captured */
185 #define CDP_MAX_TSO_FRAGMENTS 6
186 #endif /* FEATURE_TSO_STATS */
187 
188 /* Different Packet Types */
189 enum cdp_packet_type {
190 	DOT11_A = 0,
191 	DOT11_B = 1,
192 	DOT11_N = 2,
193 	DOT11_AC = 3,
194 	DOT11_AX = 4,
195 	DOT11_MAX = 5,
196 };
197 
198 enum WDI_EVENT {
199 	WDI_EVENT_TX_STATUS = WDI_EVENT_BASE,
200 	WDI_EVENT_OFFLOAD_ALL,
201 	WDI_EVENT_RX_DESC_REMOTE,
202 	WDI_EVENT_RX_PEER_INVALID,
203 	WDI_EVENT_DBG_PRINT, /* NEED to integrate pktlog changes*/
204 	WDI_EVENT_RX_CBF_REMOTE,
205 	WDI_EVENT_RATE_FIND,
206 	WDI_EVENT_RATE_UPDATE,
207 	WDI_EVENT_SW_EVENT,
208 	WDI_EVENT_RX_DESC,
209 	WDI_EVENT_LITE_T2H,
210 	WDI_EVENT_LITE_RX,
211 	WDI_EVENT_RX_PPDU_DESC,
212 	WDI_EVENT_TX_PPDU_DESC,
213 	WDI_EVENT_TX_MSDU_DESC,
214 	WDI_EVENT_TX_DATA,
215 	WDI_EVENT_RX_DATA,
216 	WDI_EVENT_TX_MGMT_CTRL,
217 	WDI_EVENT_HTT_STATS,
218 	WDI_EVENT_TX_BEACON,
219 	WDI_EVENT_PEER_STATS,
220 	WDI_EVENT_TX_SOJOURN_STAT,
221 	WDI_EVENT_UPDATE_DP_STATS,
222 	WDI_EVENT_RX_MGMT_CTRL,
223 	WDI_EVENT_PEER_CREATE,
224 	WDI_EVENT_PEER_DESTROY,
225 	WDI_EVENT_PEER_FLUSH_RATE_STATS,
226 	WDI_EVENT_FLUSH_RATE_STATS_REQ,
227 	WDI_EVENT_RX_MPDU,
228 	/* End of new event items */
229 	WDI_EVENT_LAST
230 };
231 
232 #define WDI_NUM_EVENTS WDI_EVENT_LAST - WDI_EVENT_BASE
233 
234 struct cdp_stats_extd {
235 };
236 
237 /* TID level Tx/Rx stats
238  *
239  */
240 enum cdp_txrx_tidq_stats {
241 	/* Tx Counters */
242 	TX_MSDU_TOTAL_LINUX_SUBSYSTEM,
243 	TX_MSDU_TOTAL_FROM_OSIF,
244 	TX_MSDU_TX_COMP_PKT_CNT,
245 	/* Rx Counters */
246 	RX_MSDU_TOTAL_FROM_FW,
247 	RX_MSDU_MCAST_FROM_FW,
248 	RX_TID_MISMATCH_FROM_FW,
249 	RX_MSDU_MISC_PKTS,
250 	RX_MSDU_IS_ARP,
251 	RX_MSDU_IS_EAP,
252 	RX_MSDU_IS_DHCP,
253 	RX_AGGREGATE_10,
254 	RX_AGGREGATE_20,
255 	RX_AGGREGATE_30,
256 	RX_AGGREGATE_40,
257 	RX_AGGREGATE_50,
258 	RX_AGGREGATE_60,
259 	RX_AGGREGATE_MORE,
260 	RX_AMSDU_1,
261 	RX_AMSDU_2,
262 	RX_AMSDU_3,
263 	RX_AMSDU_4,
264 	RX_AMSDU_MORE,
265 	RX_MSDU_CHAINED_FROM_FW,
266 	RX_MSDU_REORDER_FAILED_FROM_FW,
267 	RX_MSDU_REORDER_FLUSHED_FROM_FW,
268 	RX_MSDU_DISCARD_FROM_FW,
269 	RX_MSDU_DUPLICATE_FROM_FW,
270 	RX_MSDU_DELIVERED_TO_STACK,
271 	TIDQ_STATS_MAX,
272 };
273 
274 struct cdp_tidq_stats {
275 	uint32_t stats[TIDQ_STATS_MAX];
276 };
277 
278 /*
279  * struct cdp_rx_su_evm_info: Rx evm info
280  * @number_of_symbols: number of symbols
281  * @nss_count: number of spatial streams
282  * @pilot_count: number of pilot count
283  */
284 struct cdp_rx_su_evm_info {
285 	uint16_t number_of_symbols;
286 	uint8_t  nss_count;
287 	uint8_t  pilot_count;
288 	uint32_t pilot_evm[DP_RX_MAX_SU_EVM_COUNT];
289 };
290 
291 /*
292  * cdp_delay_stats_mode: Different types of delay statistics
293  *
294  * @CDP_DELAY_STATS_SW_ENQ: Stack to hw enqueue delay
295  * @CDP_DELAY_STATS_TX_INTERFRAME: Interframe delay at radio entry point
296  * @CDP_DELAY_STATS_FW_HW_TRANSMIT: Hw enqueue to tx completion delay
297  * @CDP_DELAY_STATS_REAP_STACK: Delay in ring reap to indicating network stack
298  * @CDP_DELAY_STATS_RX_INTERFRAME: Rx inteframe delay
299  * @CDP_DELAY_STATS_MODE_MAX: Maximum delay mode
300  */
301 enum cdp_delay_stats_mode {
302 	CDP_DELAY_STATS_SW_ENQ,
303 	CDP_DELAY_STATS_TX_INTERFRAME,
304 	CDP_DELAY_STATS_FW_HW_TRANSMIT,
305 	CDP_DELAY_STATS_REAP_STACK,
306 	CDP_DELAY_STATS_RX_INTERFRAME,
307 	CDP_DELAY_STATS_MODE_MAX,
308 };
309 
310 /*
311  * cdp_delay_bucket_index
312  *	Index to be used for all delay stats
313  */
314 enum cdp_delay_bucket_index {
315 	CDP_DELAY_BUCKET_0,
316 	CDP_DELAY_BUCKET_1,
317 	CDP_DELAY_BUCKET_2,
318 	CDP_DELAY_BUCKET_3,
319 	CDP_DELAY_BUCKET_4,
320 	CDP_DELAY_BUCKET_5,
321 	CDP_DELAY_BUCKET_6,
322 	CDP_DELAY_BUCKET_7,
323 	CDP_DELAY_BUCKET_8,
324 	CDP_DELAY_BUCKET_9,
325 	CDP_DELAY_BUCKET_10,
326 	CDP_DELAY_BUCKET_11,
327 	CDP_DELAY_BUCKET_12,
328 	CDP_DELAY_BUCKET_MAX,
329 };
330 
331 /*
332  * struct cdp_tx_host_drop - packet drop due to following reasons.
333  */
334 enum cdp_tx_sw_drop {
335 	TX_DESC_ERR,
336 	TX_HAL_RING_ACCESS_ERR,
337 	TX_DMA_MAP_ERR,
338 	TX_HW_ENQUEUE,
339 	TX_SW_ENQUEUE,
340 	TX_MAX_DROP,
341 };
342 
343 /*
344  * struct cdp_rx_host_drop - packet drop due to following reasons.
345  */
346 enum cdp_rx_sw_drop {
347 	INTRABSS_DROP,
348 	MSDU_DONE_FAILURE,
349 	INVALID_PEER_VDEV,
350 	POLICY_CHECK_DROP,
351 	MEC_DROP,
352 	NAWDS_MCAST_DROP,
353 	MESH_FILTER_DROP,
354 	ENQUEUE_DROP,
355 	RX_MAX_DROP,
356 };
357 
358 /*
359  * struct cdp_delay_stats
360  * @delay_bucket: division of buckets as per latency
361  * @min_delay: minimum delay
362  * @max_delay: maximum delay
363  * @avg_delay: average delay
364  */
365 struct cdp_delay_stats {
366 	uint64_t delay_bucket[CDP_DELAY_BUCKET_MAX];
367 	uint32_t min_delay;
368 	uint32_t max_delay;
369 	uint32_t avg_delay;
370 };
371 
372 /*
373  * struct cdp_tid_tx_stats
374  * @swq_delay: delay between wifi driver entry point and enqueue to HW in tx
375  * @hwtx_delay: delay between wifi driver exit (enqueue to HW) and tx completion
376  * @intfrm_delay: interframe delay
377  * @success_cnt: total successful transmit count
378  * @comp_fail_cnt: firmware drop found in tx completion path
379  * @swdrop_cnt: software drop in tx path
380  * @tqm_status_cnt: TQM completion status count
381  * @htt_status_cnt: HTT completion status count
382  */
383 struct cdp_tid_tx_stats {
384 	struct cdp_delay_stats swq_delay;
385 	struct cdp_delay_stats hwtx_delay;
386 	struct cdp_delay_stats intfrm_delay;
387 	uint64_t success_cnt;
388 	uint64_t comp_fail_cnt;
389 	uint64_t swdrop_cnt[TX_MAX_DROP];
390 	uint64_t tqm_status_cnt[CDP_MAX_TX_TQM_STATUS];
391 	uint64_t htt_status_cnt[CDP_MAX_TX_HTT_STATUS];
392 };
393 
394 /*
395  * struct cdp_tid_tx_stats
396  * @to_stack_delay: Time taken between ring reap to indication to network stack
397  * @intfrm_delay: Interframe rx delay
398  * @delivered_cnt: Total packets indicated to stack
399  * @intrabss_cnt: Rx total intraBSS frames
400  * @msdu_cnt: number of msdu received from HW
401  * @mcast_msdu_cnt: Num Mcast Msdus received from HW in Rx
402  * @bcast_msdu_cnt: Num Bcast Msdus received from HW in Rx
403  * @fail_cnt: Rx deliver drop counters
404  */
405 struct cdp_tid_rx_stats {
406 	struct cdp_delay_stats to_stack_delay;
407 	struct cdp_delay_stats intfrm_delay;
408 	uint64_t delivered_to_stack;
409 	uint64_t intrabss_cnt;
410 	uint64_t msdu_cnt;
411 	uint64_t mcast_msdu_cnt;
412 	uint64_t bcast_msdu_cnt;
413 	uint64_t fail_cnt[RX_MAX_DROP];
414 };
415 
416 /*
417  * struct cdp_tid_stats
418  * @ingress_stack: Total packets received from linux stack
419  * @osif_drop: drops in osif layer
420  * @tid_tx_stats: transmit counters per tid
421  * @tid_rx_stats: receive counters per tid
422  */
423 struct cdp_tid_stats {
424 	uint64_t ingress_stack;
425 	uint64_t osif_drop;
426 	struct cdp_tid_tx_stats tid_tx_stats[CDP_MAX_TX_COMP_RINGS]
427 					    [CDP_MAX_DATA_TIDS];
428 	struct cdp_tid_rx_stats tid_rx_stats[CDP_MAX_RX_RINGS]
429 					    [CDP_MAX_DATA_TIDS];
430 };
431 
432 /* struct cdp_pkt_info - packet info
433  * @num: no of packets
434  * @bytes: total no of bytes
435  */
436 struct cdp_pkt_info {
437 	uint32_t num;
438 	uint64_t bytes;
439 };
440 
441 /* struct cdp_pkt_type - packet type
442  * @mcs_count: Counter array for each MCS index
443  */
444 struct cdp_pkt_type {
445 	uint32_t mcs_count[MAX_MCS];
446 };
447 
448 /* struct cdp_tx_pkt_info - tx packet info
449  * num_msdu - successful msdu
450  * num_mpdu - successful mpdu from compltn common
451  * mpdu_tried - mpdu tried
452  *
453  * tx packet info counter field for mpdu success/tried and msdu
454  */
455 struct cdp_tx_pkt_info {
456 	uint32_t num_msdu;
457 	uint32_t num_mpdu;
458 	uint32_t mpdu_tried;
459 };
460 
461 #ifdef FEATURE_TSO_STATS
462 /**
463  * struct cdp_tso_seg_histogram - Segment histogram for TCP Packets
464  * @segs_1: packets with single segments
465  * @segs_2_5: packets with 2-5 segments
466  * @segs_6_10: packets with 6-10 segments
467  * @segs_11_15: packets with 11-15 segments
468  * @segs_16_20: packets with 16-20 segments
469  * @segs_20_plus: packets with 20 plus segments
470  */
471 struct cdp_tso_seg_histogram {
472 	uint64_t segs_1;
473 	uint64_t segs_2_5;
474 	uint64_t segs_6_10;
475 	uint64_t segs_11_15;
476 	uint64_t segs_16_20;
477 	uint64_t segs_20_plus;
478 };
479 
480 /**
481  * struct cdp_tso_packet_info - Stats for TSO segments within a TSO packet
482  * @tso_seg: TSO Segment information
483  * @num_seg: Number of segments
484  * @tso_packet_len: Size of the tso packet
485  * @tso_seg_idx: segment number
486  */
487 struct cdp_tso_packet_info {
488 	struct qdf_tso_seg_t tso_seg[CDP_MAX_TSO_SEGMENTS];
489 	uint8_t num_seg;
490 	size_t tso_packet_len;
491 	uint32_t tso_seg_idx;
492 };
493 
494 /**
495  * struct cdp_tso_info - stats for tso packets
496  * @tso_packet_info: TSO packet information
497  */
498 struct cdp_tso_info {
499 	struct cdp_tso_packet_info tso_packet_info[CDP_MAX_TSO_PACKETS];
500 };
501 #endif /* FEATURE_TSO_STATS */
502 
503 /**
504  * struct cdp_tso_stats -  TSO stats information
505  * @num_tso_pkts: Total number of TSO Packets
506  * @tso_comp: Total tso packet completions
507  * @dropped_host: TSO packets dropped by host
508  * @dropped_target: TSO packets_dropped by target
509  * @tso_info: Per TSO packet counters
510  * @seg_histogram: TSO histogram stats
511  */
512 struct cdp_tso_stats {
513 	struct cdp_pkt_info num_tso_pkts;
514 	uint32_t tso_comp;
515 	struct cdp_pkt_info dropped_host;
516 	uint32_t dropped_target;
517 #ifdef FEATURE_TSO_STATS
518 	struct cdp_tso_info tso_info;
519 	struct cdp_tso_seg_histogram seg_histogram;
520 #endif /* FEATURE_TSO_STATS */
521 };
522 
523 /* struct cdp_tx_stats - tx stats
524  * @cdp_pkt_info comp_pkt: Pkt Info for which completions were received
525  * @cdp_pkt_info ucast: Unicast Packet Count
526  * @cdp_pkt_info mcast: Multicast Packet Count
527  * @cdp_pkt_info bcast: Broadcast Packet Count
528  * @cdp_pkt_info nawds_mcast: NAWDS  Multicast Packet Count
529  * @nawds_mcast_drop: NAWDS  Multicast Drop Count
530  * @cdp_pkt_info tx_success: Successful Tx Packets
531  * @tx_failed: Total Tx failure
532  * @ofdma: Total Packets as ofdma
533  * @stbc: Packets in STBC
534  * @ldpc: Packets in LDPC
535  * @retries: Packet retries
536  * @non_amsdu_cnt: Number of MSDUs with no MSDU level aggregation
537  * @amsdu_cnt: Number of MSDUs part of AMSDU
538  * @tx_rate: Tx Rate
539  * @last_tx_rate: Last tx rate for unicast packets
540  * @last_tx_rate_mcs: Tx rate mcs for unicast packets
541  * @mcast_last_tx_rate: Last tx rate for multicast packets
542  * @mcast_last_tx_rate_mcs: Last tx rate mcs for multicast
543  * @last_per: Tx Per
544  * @rnd_avg_tx_rate: Rounded average tx rate
545  * @avg_tx_rate: Average TX rate
546  * @last_ack_rssi: RSSI of last acked packet
547  * @tx_bytes_success_last: last Tx success bytes
548  * @tx_data_success_last: last Tx success data
549  * @tx_byte_rate: Bytes Trasmitted in last one sec
550  * @tx_data_rate: Data Transmitted in last one sec
551  * @sgi_count[MAX_GI]: SGI count
552  * @nss[SS_COUNT]: Packet count for different num_spatial_stream values
553  * @bw[MAX_BW]: Packet Count for different bandwidths
554  * @wme_ac_type[WME_AC_MAX]: Wireless Multimedia type Count
555  * @excess_retries_per_ac[WME_AC_MAX]: Wireless Multimedia type Count
556  * @fw_rem: Discarded by firmware
557  * @fw_rem_notx: firmware_discard_untransmitted
558  * @fw_rem_tx: firmware_discard_transmitted
559  * @age_out: aged out in mpdu/msdu queues
560  * @fw_reason1: discarded by firmware reason 1
561  * @fw_reason2: discarded by firmware reason 2
562  * @fw_reason3: discarded by firmware reason 3
563  * @mcs_count: MCS Count
564  * @dot11_tx_pkts: dot11 tx packets
565  * @an_tx_cnt: ald tx count
566  * @an_tx_rates_used: ald rx rate used
567  * @an_tx_bytes: ald tx bytes
568  * @ald_txcount: ald tx count
569  * @ald_lastper: ald last PER
570  * @ald_max4msframelen: ald max frame len
571  * @an_tx_ratecount: ald tx ratecount
572  * @ald_retries: ald retries
573  * @ald_ac_nobufs: #buffer overflows per node per AC
574  * @ald_ac_excretries: #pkts dropped after excessive retries per node per AC
575  * @rssi_chain: rssi chain
576  * @inactive_time: inactive time in secs
577  * @tx_ratecode: Tx rate code of last frame
578  * @tx_flags: tx flags
579  * @tx_power: Tx power latest
580  * @is_tx_no_ack: no ack received
581  * @is_tx_nodefkey: tx failed 'cuz no defkey
582  * @is_tx_noheadroom: tx failed 'cuz no space
583  * @is_crypto_enmicfail:
584  * @is_tx_nonode: tx failed for no node
585  * @is_tx_unknownmgt: tx of unknown mgt frame
586  * @is_tx_badcipher: tx failed 'cuz key type
587  * @ampdu_cnt: completion of aggregation
588  * @non_ampdu_cnt: tx completion not aggregated
589  * @failed_retry_count: packets failed due to retry above 802.11 retry limit
590  * @retry_count: packets successfully send after one or more retry
591  * @multiple_retry_count: packets successfully sent after more than one retry
592  * @transmit_type: pkt info for tx transmit type
593  * @mu_group_id: mumimo mu group id
594  * @ru_start: RU start index
595  * @ru_tones: RU tones size
596  * @ru_loc: pkt info for RU location 26/ 52/ 106/ 242/ 484 counter
597  * @num_ppdu_cookie_valid : Number of comp received with valid ppdu cookie
598  */
599 struct cdp_tx_stats {
600 	struct cdp_pkt_info comp_pkt;
601 	struct cdp_pkt_info ucast;
602 	struct cdp_pkt_info mcast;
603 	struct cdp_pkt_info bcast;
604 	struct cdp_pkt_info nawds_mcast;
605 	uint32_t nawds_mcast_drop;
606 	struct cdp_pkt_info tx_success;
607 	uint32_t tx_failed;
608 	uint32_t ofdma;
609 	uint32_t stbc;
610 	uint32_t ldpc;
611 	uint32_t retries;
612 	uint32_t non_amsdu_cnt;
613 	uint32_t amsdu_cnt;
614 	uint32_t tx_rate;
615 	uint32_t last_tx_rate;
616 	uint32_t last_tx_rate_mcs;
617 	uint32_t mcast_last_tx_rate;
618 	uint32_t mcast_last_tx_rate_mcs;
619 	uint32_t last_per;
620 	uint64_t rnd_avg_tx_rate;
621 	uint64_t avg_tx_rate;
622 	uint32_t last_ack_rssi;
623 	uint32_t tx_bytes_success_last;
624 	uint32_t tx_data_success_last;
625 	uint32_t tx_byte_rate;
626 	uint32_t tx_data_rate;
627 	uint32_t tx_data_ucast_last;
628 	uint32_t tx_data_ucast_rate;
629 	struct cdp_pkt_type pkt_type[DOT11_MAX];
630 	uint32_t sgi_count[MAX_GI];
631 
632 	uint32_t nss[SS_COUNT];
633 
634 	uint32_t bw[MAX_BW];
635 
636 	uint32_t wme_ac_type[WME_AC_MAX];
637 
638 	uint32_t excess_retries_per_ac[WME_AC_MAX];
639 
640 	struct {
641 		struct cdp_pkt_info fw_rem;
642 		uint32_t fw_rem_notx;
643 		uint32_t fw_rem_tx;
644 		uint32_t age_out;
645 		uint32_t fw_reason1;
646 		uint32_t fw_reason2;
647 		uint32_t fw_reason3;
648 	} dropped;
649 
650 	struct cdp_pkt_info dot11_tx_pkts;
651 
652 	uint32_t fw_tx_cnt;
653 	uint32_t fw_tx_rates_used;
654 	uint32_t fw_tx_bytes;
655 	uint32_t fw_txcount;
656 	uint32_t fw_max4msframelen;
657 	uint32_t fw_ratecount;
658 
659 	uint32_t ac_nobufs[WME_AC_MAX];
660 	uint32_t rssi_chain[WME_AC_MAX];
661 	uint32_t inactive_time;
662 
663 	uint32_t tx_ratecode;
664 	uint32_t tx_flags;
665 	uint32_t tx_power;
666 
667 	/* MSDUs which the target sent but couldn't get an ack for */
668 	struct cdp_pkt_info is_tx_no_ack;
669 
670 	/*add for peer and upadted from ppdu*/
671 	uint32_t ampdu_cnt;
672 	uint32_t non_ampdu_cnt;
673 	uint32_t failed_retry_count;
674 	uint32_t retry_count;
675 	uint32_t multiple_retry_count;
676 	uint32_t last_tx_rate_used;
677 
678 	struct cdp_tx_pkt_info transmit_type[MAX_TRANSMIT_TYPES];
679 	uint32_t mu_group_id[MAX_MU_GROUP_ID];
680 	uint32_t ru_start;
681 	uint32_t ru_tones;
682 	struct cdp_tx_pkt_info ru_loc[MAX_RU_LOCATIONS];
683 
684 	uint32_t num_ppdu_cookie_valid;
685 };
686 
687 /* struct cdp_rx_stats - rx Level Stats
688  * @to_stack: Total packets sent up the stack
689  * @rcvd_reo[CDP_MAX_RX_RINGS]:  Packets received on the reo ring
690  * @unicast: Total unicast packets
691  * @multicast: Total multicast packets
692  * @bcast:  Broadcast Packet Count
693  * @raw: Raw Pakets received
694  * @nawds_mcast_drop: Total multicast packets
695  * @mec_drop: Total MEC packets dropped
696  * @pkts: Intra BSS packets received
697  * @fail: Intra BSS packets failed
698  * @mdns_no_fwd: Intra BSS MDNS packets not forwarded
699  * @mic_err: Rx MIC errors CCMP
700  * @decrypt_err: Rx Decryption Errors CRC
701  * @fcserr: rx MIC check failed (CCMP)
702  * @wme_ac_type[WME_AC_MAX]: Wireless Multimedia type Count
703  * @reception_type[MAX_RECEPTION_TYPES]: Reception type os packets
704  * @mcs_count[MAX_MCS]: mcs count
705  * @sgi_count[MAX_GI]: sgi count
706  * @nss[SS_COUNT]: Packet count in spatiel Streams
707  * @bw[MAX_BW]:  Packet Count in different bandwidths
708  * @non_ampdu_cnt: Number of MSDUs with no MPDU level aggregation
709  * @ampdu_cnt: Number of MSDUs part of AMSPU
710  * @non_amsdu_cnt: Number of MSDUs with no MSDU level aggregation
711  * @amsdu_cnt: Number of MSDUs part of AMSDU
712  * @bar_recv_cnt: Number of bar received
713  * @rssi: RSSI of received signal
714  * @last_rssi: Previous rssi
715  * @avg_rssi: Average rssi
716  * @rx_rate: Rx rate
717  * @last_rx_rate: Previous rx rate
718  * @rnd_avg_rx_rate: Rounded average rx rate
719  * @avg_rx_rate:  Average Rx rate
720  * @dot11_rx_pkts: dot11 rx packets
721  * @rx_bytes_last: last Rx success bytes
722  * @rx_data_last: last rx success data
723  * @rx_byte_rate: bytes received in last one sec
724  * @rx_data_rate: data received in last one sec
725  * @rx_retries: retries of packet in rx
726  * @rx_mpdus: mpdu in rx
727  * @rx_ppdus: ppdu in rx
728  * @is_rx_tooshort: tooshort
729  * @is_rx_decap: rx decap
730  * @rx_ccmpmic: rx MIC check failed (CCMP)
731  * @rx_tkipmic: rx MIC check failed (TKIP)
732  * @rx_tkipicv: rx ICV check failed (TKIP)
733  * @rx_wpimic: rx MIC check failed (WPI)
734  * @rx_wepfail: rx wep processing failed
735  * @rx_aggr: aggregation on rx
736  * @rx_discard: packets discard in rx
737  * @rx_ratecode: Rx rate code of last frame
738  * @rx_flags: rx flags
739  * @rx_rssi_measured_time: Time at which rssi is measured
740  */
741 struct cdp_rx_stats {
742 	struct cdp_pkt_info to_stack;
743 	struct cdp_pkt_info rcvd_reo[CDP_MAX_RX_RINGS];
744 	struct cdp_pkt_info unicast;
745 	struct cdp_pkt_info multicast;
746 	struct cdp_pkt_info bcast;
747 	struct cdp_pkt_info raw;
748 	uint32_t nawds_mcast_drop;
749 	struct cdp_pkt_info mec_drop;
750 	struct {
751 		struct cdp_pkt_info pkts;
752 		struct cdp_pkt_info fail;
753 		uint32_t mdns_no_fwd;
754 	} intra_bss;
755 
756 	struct {
757 		uint32_t mic_err;
758 		uint32_t decrypt_err;
759 		uint32_t fcserr;
760 	} err;
761 
762 	uint32_t wme_ac_type[WME_AC_MAX];
763 	uint32_t reception_type[MAX_RECEPTION_TYPES];
764 	struct cdp_pkt_type pkt_type[DOT11_MAX];
765 	uint32_t sgi_count[MAX_GI];
766 	uint32_t nss[SS_COUNT];
767 	uint32_t bw[MAX_BW];
768 	uint32_t non_ampdu_cnt;
769 	uint32_t ampdu_cnt;
770 	uint32_t non_amsdu_cnt;
771 	uint32_t amsdu_cnt;
772 	uint32_t bar_recv_cnt;
773 	uint32_t rssi;
774 	uint32_t last_rssi;
775 	uint32_t avg_rssi;
776 	uint32_t rx_rate;
777 	uint32_t last_rx_rate;
778 	uint32_t rnd_avg_rx_rate;
779 	uint32_t avg_rx_rate;
780 	struct cdp_pkt_info  dot11_rx_pkts;
781 
782 	uint32_t rx_bytes_success_last;
783 	uint32_t rx_data_success_last;
784 	uint32_t rx_byte_rate;
785 	uint32_t rx_data_rate;
786 
787 	uint32_t rx_retries;
788 	uint32_t rx_mpdus;
789 	uint32_t rx_ppdus;
790 
791 	/*add for peer updated for ppdu*/
792 	uint32_t rx_aggr;
793 	uint32_t rx_discard;
794 	uint32_t rx_ratecode;
795 	uint32_t rx_flags;
796 	uint32_t rx_rssi_measured_time;
797 };
798 
799 /* struct cdp_tx_ingress_stats - Tx ingress Stats
800  * @rcvd: Total packets received for transmission
801  * @processed: Tx packets processed
802  * @inspect_pkts: Total packets passed to inspect handler
803  * @nawds_mcast: NAWDS  Multicast Packet Count
804  * @bcast: Number of broadcast packets
805  * @raw_pkt: Total Raw packets
806  * @dma_map_error: DMA map error
807  * @num_seg: No of segments in TSO packets
808  * @tso_pkt:total no of TSO packets
809  * @non_tso_pkts: non - TSO packets
810  * @dropped_host: TSO packets dropped by host
811  * @dropped_target:TSO packets dropped by target
812  * @sg_pkt: Total scatter gather packets
813  * @non_sg_pkts: non SG packets
814  * @dropped_host: SG packets dropped by host
815  * @dropped_target: SG packets dropped by target
816  * @dma_map_error: Dma map error
817  * @mcast_pkt: total no of multicast conversion packets
818  * @dropped_map_error: packets dropped due to map error
819  * @dropped_self_mac: packets dropped due to self Mac address
820  * @dropped_send_fail: Packets dropped due to send fail
821  * @ucast: total unicast packets transmitted
822  * @fail_seg_alloc: Segment allocation failure
823  * @clone_fail: NBUF clone failure
824  * @dropped_pkt: Total scatter gather packets
825  * @desc_na: Desc Not Available
826  * @ring_full: ring full
827  * @enqueue_fail: hw enqueue fail
828  * @dma_error: dma fail
829  * @res_full: Resource Full: Congestion Control
830  * @exception_fw: packets sent to fw
831  * @completion_fw: packets completions received from fw
832  * @cce_classified:Number of packets classified by CCE
833  * @cce_classified_raw:Number of raw packets classified by CCE
834  * @sniffer_rcvd: Number of packets received with ppdu cookie
835  */
836 struct cdp_tx_ingress_stats {
837 	struct cdp_pkt_info rcvd;
838 	struct cdp_pkt_info processed;
839 	struct cdp_pkt_info reinject_pkts;
840 	struct cdp_pkt_info inspect_pkts;
841 	struct cdp_pkt_info nawds_mcast;
842 	struct cdp_pkt_info bcast;
843 
844 	struct {
845 		struct cdp_pkt_info raw_pkt;
846 		uint32_t dma_map_error;
847 		uint32_t invalid_raw_pkt_datatype;
848 	} raw;
849 
850 	/* Scatter Gather packet info */
851 	struct {
852 		struct cdp_pkt_info sg_pkt;
853 		struct cdp_pkt_info non_sg_pkts;
854 		struct cdp_pkt_info  dropped_host;
855 		uint32_t dropped_target;
856 		uint32_t dma_map_error;
857 	} sg;
858 
859 	/* Multicast Enhancement packets info */
860 	struct {
861 		struct cdp_pkt_info mcast_pkt;
862 		uint32_t dropped_map_error;
863 		uint32_t dropped_self_mac;
864 		uint32_t dropped_send_fail;
865 		uint32_t ucast;
866 		uint32_t fail_seg_alloc;
867 		uint32_t clone_fail;
868 	} mcast_en;
869 
870 	/* Packets dropped on the Tx side */
871 	struct {
872 		struct cdp_pkt_info dropped_pkt;
873 		struct cdp_pkt_info  desc_na;
874 		uint32_t ring_full;
875 		uint32_t enqueue_fail;
876 		uint32_t dma_error;
877 		uint32_t res_full;
878 		/* headroom insufficient */
879 		uint32_t headroom_insufficient;
880 	} dropped;
881 
882 	/* Mesh packets info */
883 	struct {
884 		uint32_t exception_fw;
885 		uint32_t completion_fw;
886 	} mesh;
887 
888 	uint32_t cce_classified;
889 	uint32_t cce_classified_raw;
890 	struct cdp_pkt_info sniffer_rcvd;
891 	struct cdp_tso_stats tso_stats;
892 };
893 
894 /* struct cdp_vdev_stats - vdev stats structure
895  * @tx_i: ingress tx stats
896  * @tx: cdp tx stats
897  * @rx: cdp rx stats
898  * @tso_stats: tso stats
899  */
900 struct cdp_vdev_stats {
901 	struct cdp_tx_ingress_stats tx_i;
902 	struct cdp_tx_stats tx;
903 	struct cdp_rx_stats rx;
904 	struct cdp_tso_stats tso_stats;
905 };
906 
907 /* struct cdp_peer_stats - peer stats structure
908  * @tx: cdp tx stats
909  * @rx: cdp rx stats
910  */
911 struct cdp_peer_stats {
912 	/* CDP Tx Stats */
913 	struct cdp_tx_stats tx;
914 	/* CDP Rx Stats */
915 	struct cdp_rx_stats rx;
916 };
917 
918 /* struct cdp_interface_peer_stats - interface structure for txrx peer stats
919  * @peer_hdl: control path peer handle
920  * @last_peer_tx_rate: peer tx rate for last transmission
921  * @peer_tx_rate: tx rate for current transmission
922  * @peer_rssi: current rssi value of peer
923  * @tx_packet_count: tx packet count
924  * @rx_packet_count: rx packet count
925  * @tx_byte_count: tx byte count
926  * @rx_byte_count: rx byte count
927  * @per: per error rate
928  * @ack_rssi: RSSI of the last ack received
929  * @rssi_changed: denotes rssi is changed
930  */
931 struct cdp_interface_peer_stats {
932 	void  *peer_hdl;
933 	uint32_t last_peer_tx_rate;
934 	uint32_t peer_tx_rate;
935 	uint32_t  peer_rssi;
936 	uint32_t tx_packet_count;
937 	uint32_t rx_packet_count;
938 	uint32_t tx_byte_count;
939 	uint32_t rx_byte_count;
940 	uint32_t per;
941 	uint32_t ack_rssi;
942 	uint8_t  rssi_changed;
943 };
944 
945 /* Tx completions per interrupt */
946 struct cdp_hist_tx_comp {
947 	uint32_t pkts_1;
948 	uint32_t pkts_2_20;
949 	uint32_t pkts_21_40;
950 	uint32_t pkts_41_60;
951 	uint32_t pkts_61_80;
952 	uint32_t pkts_81_100;
953 	uint32_t pkts_101_200;
954 	uint32_t pkts_201_plus;
955 };
956 
957 /* Rx ring descriptors reaped per interrupt */
958 struct cdp_hist_rx_ind {
959 	uint32_t pkts_1;
960 	uint32_t pkts_2_20;
961 	uint32_t pkts_21_40;
962 	uint32_t pkts_41_60;
963 	uint32_t pkts_61_80;
964 	uint32_t pkts_81_100;
965 	uint32_t pkts_101_200;
966 	uint32_t pkts_201_plus;
967 };
968 
969 struct cdp_htt_tlv_hdr {
970 	/* BIT [11 :  0]   :- tag
971 	 * BIT [23 : 12]   :- length
972 	 * BIT [31 : 24]   :- reserved
973 	 */
974 	uint32_t tag__length;
975 };
976 
977 #define HTT_STATS_SUBTYPE_MAX     16
978 
979 struct cdp_htt_rx_pdev_fw_stats_tlv {
980     struct cdp_htt_tlv_hdr tlv_hdr;
981 
982     /* BIT [ 7 :  0]   :- mac_id
983      * BIT [31 :  8]   :- reserved
984      */
985     uint32_t mac_id__word;
986     /* Num PPDU status processed from HW */
987     uint32_t ppdu_recvd;
988     /* Num MPDU across PPDUs with FCS ok */
989     uint32_t mpdu_cnt_fcs_ok;
990     /* Num MPDU across PPDUs with FCS err */
991     uint32_t mpdu_cnt_fcs_err;
992     /* Num MSDU across PPDUs */
993     uint32_t tcp_msdu_cnt;
994     /* Num MSDU across PPDUs */
995     uint32_t tcp_ack_msdu_cnt;
996     /* Num MSDU across PPDUs */
997     uint32_t udp_msdu_cnt;
998     /* Num MSDU across PPDUs */
999     uint32_t other_msdu_cnt;
1000     /* Num MPDU on FW ring indicated */
1001     uint32_t fw_ring_mpdu_ind;
1002     /* Num MGMT MPDU given to protocol */
1003     uint32_t fw_ring_mgmt_subtype[HTT_STATS_SUBTYPE_MAX];
1004     /* Num ctrl MPDU given to protocol */
1005     uint32_t fw_ring_ctrl_subtype[HTT_STATS_SUBTYPE_MAX];
1006     /* Num mcast data packet received */
1007     uint32_t fw_ring_mcast_data_msdu;
1008     /* Num broadcast data packet received */
1009     uint32_t fw_ring_bcast_data_msdu;
1010     /* Num unicat data packet received */
1011     uint32_t fw_ring_ucast_data_msdu;
1012     /* Num null data packet received  */
1013     uint32_t fw_ring_null_data_msdu;
1014     /* Num MPDU on FW ring dropped */
1015     uint32_t fw_ring_mpdu_drop;
1016 
1017     /* Num buf indication to offload */
1018     uint32_t ofld_local_data_ind_cnt;
1019     /* Num buf recycle from offload */
1020     uint32_t ofld_local_data_buf_recycle_cnt;
1021     /* Num buf indication to data_rx */
1022     uint32_t drx_local_data_ind_cnt;
1023     /* Num buf recycle from data_rx */
1024     uint32_t drx_local_data_buf_recycle_cnt;
1025     /* Num buf indication to protocol */
1026     uint32_t local_nondata_ind_cnt;
1027     /* Num buf recycle from protocol */
1028     uint32_t local_nondata_buf_recycle_cnt;
1029 
1030     /* Num buf fed */
1031     uint32_t fw_status_buf_ring_refill_cnt;
1032     /* Num ring empty encountered */
1033     uint32_t fw_status_buf_ring_empty_cnt;
1034     /* Num buf fed  */
1035     uint32_t fw_pkt_buf_ring_refill_cnt;
1036     /* Num ring empty encountered */
1037     uint32_t fw_pkt_buf_ring_empty_cnt;
1038     /* Num buf fed  */
1039     uint32_t fw_link_buf_ring_refill_cnt;
1040     /* Num ring empty encountered  */
1041     uint32_t fw_link_buf_ring_empty_cnt;
1042 
1043     /* Num buf fed */
1044     uint32_t host_pkt_buf_ring_refill_cnt;
1045     /* Num ring empty encountered */
1046     uint32_t host_pkt_buf_ring_empty_cnt;
1047     /* Num buf fed */
1048     uint32_t mon_pkt_buf_ring_refill_cnt;
1049     /* Num ring empty encountered */
1050     uint32_t mon_pkt_buf_ring_empty_cnt;
1051     /* Num buf fed */
1052     uint32_t mon_status_buf_ring_refill_cnt;
1053     /* Num ring empty encountered */
1054     uint32_t mon_status_buf_ring_empty_cnt;
1055     /* Num buf fed */
1056     uint32_t mon_desc_buf_ring_refill_cnt;
1057     /* Num ring empty encountered */
1058     uint32_t mon_desc_buf_ring_empty_cnt;
1059     /* Num buf fed */
1060     uint32_t mon_dest_ring_update_cnt;
1061     /* Num ring full encountered */
1062     uint32_t mon_dest_ring_full_cnt;
1063 
1064     /* Num rx suspend is attempted */
1065     uint32_t rx_suspend_cnt;
1066     /* Num rx suspend failed */
1067     uint32_t rx_suspend_fail_cnt;
1068     /* Num rx resume attempted */
1069     uint32_t rx_resume_cnt;
1070     /* Num rx resume failed */
1071     uint32_t rx_resume_fail_cnt;
1072     /* Num rx ring switch */
1073     uint32_t rx_ring_switch_cnt;
1074     /* Num rx ring restore */
1075     uint32_t rx_ring_restore_cnt;
1076     /* Num rx flush issued */
1077     uint32_t rx_flush_cnt;
1078 };
1079 
1080 /* == TX PDEV STATS == */
1081 struct cdp_htt_tx_pdev_stats_cmn_tlv {
1082     struct cdp_htt_tlv_hdr tlv_hdr;
1083 
1084     /* BIT [ 7 :  0]   :- mac_id
1085      * BIT [31 :  8]   :- reserved
1086      */
1087     uint32_t mac_id__word;
1088     /* Num queued to HW */
1089     uint32_t hw_queued;
1090     /* Num PPDU reaped from HW */
1091     uint32_t hw_reaped;
1092     /* Num underruns */
1093     uint32_t underrun;
1094     /* Num HW Paused counter. */
1095     uint32_t hw_paused;
1096     /* Num HW flush counter. */
1097     uint32_t hw_flush;
1098     /* Num HW filtered counter. */
1099     uint32_t hw_filt;
1100     /* Num PPDUs cleaned up in TX abort */
1101     uint32_t tx_abort;
1102     /* Num MPDUs requed by SW */
1103     uint32_t mpdu_requed;
1104     /* excessive retries */
1105     uint32_t tx_xretry;
1106     /* Last used data hw rate code */
1107     uint32_t data_rc;
1108     /* frames dropped due to excessive sw retries */
1109     uint32_t mpdu_dropped_xretry;
1110     /* illegal rate phy errors  */
1111     uint32_t illgl_rate_phy_err;
1112     /* wal pdev continuous xretry */
1113     uint32_t cont_xretry;
1114     /* wal pdev continuous xretry */
1115     uint32_t tx_timeout;
1116     /* wal pdev resets  */
1117     uint32_t pdev_resets;
1118     /* PhY/BB underrun */
1119     uint32_t phy_underrun;
1120     /* MPDU is more than txop limit */
1121     uint32_t txop_ovf;
1122     /* Number of Sequences posted */
1123     uint32_t seq_posted;
1124     /* Number of Sequences failed queueing */
1125     uint32_t seq_failed_queueing;
1126     /* Number of Sequences completed */
1127     uint32_t seq_completed;
1128     /* Number of Sequences restarted */
1129     uint32_t seq_restarted;
1130     /* Number of MU Sequences posted */
1131     uint32_t mu_seq_posted;
1132     /* Number of time HW ring is paused between seq switch within ISR */
1133     uint32_t seq_switch_hw_paused;
1134     /* Number of times seq continuation in DSR */
1135     uint32_t next_seq_posted_dsr;
1136     /* Number of times seq continuation in ISR */
1137     uint32_t seq_posted_isr;
1138     /* Number of seq_ctrl cached. */
1139     uint32_t seq_ctrl_cached;
1140     /* Number of MPDUs successfully transmitted */
1141     uint32_t mpdu_count_tqm;
1142     /* Number of MSDUs successfully transmitted */
1143     uint32_t msdu_count_tqm;
1144     /* Number of MPDUs dropped */
1145     uint32_t mpdu_removed_tqm;
1146     /* Number of MSDUs dropped */
1147     uint32_t msdu_removed_tqm;
1148     /* Num MPDUs flushed by SW, HWPAUSED, SW TXABORT (Reset,channel change) */
1149     uint32_t mpdus_sw_flush;
1150     /* Num MPDUs filtered by HW, all filter condition (TTL expired) */
1151     uint32_t mpdus_hw_filter;
1152     /* Num MPDUs truncated by PDG (TXOP, TBTT, PPDU_duration based on rate, dyn_bw) */
1153     uint32_t mpdus_truncated;
1154     /* Num MPDUs that was tried but didn't receive ACK or BA */
1155     uint32_t mpdus_ack_failed;
1156     /* Num MPDUs that was dropped due to expiry (MSDU TTL). */
1157     uint32_t mpdus_expired;
1158     /* Num MPDUs that was retried within seq_ctrl (MGMT/LEGACY) */
1159     uint32_t mpdus_seq_hw_retry;
1160     /* Num of TQM acked cmds processed */
1161     uint32_t ack_tlv_proc;
1162     /* coex_abort_mpdu_cnt valid. */
1163     uint32_t coex_abort_mpdu_cnt_valid;
1164     /* coex_abort_mpdu_cnt from TX FES stats. */
1165     uint32_t coex_abort_mpdu_cnt;
1166     /* Number of total PPDUs(DATA, MGMT, excludes selfgen) tried over the air (OTA) */
1167     uint32_t num_total_ppdus_tried_ota;
1168     /* Number of data PPDUs tried over the air (OTA) */
1169     uint32_t num_data_ppdus_tried_ota;
1170     /* Num Local control/mgmt frames (MSDUs) queued */
1171     uint32_t local_ctrl_mgmt_enqued;
1172     /* local_ctrl_mgmt_freed:
1173      * Num Local control/mgmt frames (MSDUs) done
1174      * It includes all local ctrl/mgmt completions
1175      * (acked, no ack, flush, TTL, etc)
1176      */
1177     uint32_t local_ctrl_mgmt_freed;
1178     /* Num Local data frames (MSDUs) queued */
1179     uint32_t local_data_enqued;
1180     /* local_data_freed:
1181      * Num Local data frames (MSDUs) done
1182      * It includes all local data completions
1183      * (acked, no ack, flush, TTL, etc)
1184      */
1185     uint32_t local_data_freed;
1186 
1187 	/* Num MPDUs tried by SW */
1188 	uint32_t mpdu_tried;
1189 	/* Num of waiting seq posted in isr completion handler */
1190 	uint32_t isr_wait_seq_posted;
1191 	uint32_t tx_active_dur_us_low;
1192 	uint32_t tx_active_dur_us_high;
1193 };
1194 
1195 struct cdp_htt_tx_pdev_stats_urrn_tlv_v {
1196     struct cdp_htt_tlv_hdr tlv_hdr;
1197     uint32_t urrn_stats[1]; /* HTT_TX_PDEV_MAX_URRN_STATS */
1198 };
1199 
1200 /* NOTE: Variable length TLV, use length spec to infer array size */
1201 struct cdp_htt_tx_pdev_stats_flush_tlv_v {
1202     struct cdp_htt_tlv_hdr tlv_hdr;
1203     uint32_t flush_errs[1]; /* HTT_TX_PDEV_MAX_FLUSH_REASON_STATS */
1204 };
1205 
1206 /* NOTE: Variable length TLV, use length spec to infer array size */
1207 struct cdp_htt_tx_pdev_stats_sifs_tlv_v {
1208     struct cdp_htt_tlv_hdr tlv_hdr;
1209     uint32_t sifs_status[1]; /* HTT_TX_PDEV_MAX_SIFS_BURST_STATS */
1210 };
1211 
1212 /* NOTE: Variable length TLV, use length spec to infer array size */
1213 struct cdp_htt_tx_pdev_stats_phy_err_tlv_v {
1214     struct cdp_htt_tlv_hdr tlv_hdr;
1215     uint32_t  phy_errs[1]; /* HTT_TX_PDEV_MAX_PHY_ERR_STATS */
1216 };
1217 
1218 /* == RX PDEV/SOC STATS == */
1219 /* HTT_STATS_RX_SOC_FW_STATS_TAG */
1220 struct cdp_htt_rx_soc_fw_stats_tlv {
1221     struct cdp_htt_tlv_hdr tlv_hdr;
1222     /* Num Packets received on REO FW ring */
1223     uint32_t fw_reo_ring_data_msdu;
1224     /* Num bc/mc packets indicated from fw to host */
1225     uint32_t fw_to_host_data_msdu_bcmc;
1226     /* Num unicast packets indicated from fw to host */
1227     uint32_t fw_to_host_data_msdu_uc;
1228     /* Num remote buf recycle from offload  */
1229     uint32_t ofld_remote_data_buf_recycle_cnt;
1230     /* Num remote free buf given to offload */
1231     uint32_t ofld_remote_free_buf_indication_cnt;
1232 };
1233 
1234 struct cdp_htt_rx_soc_fw_refill_ring_num_refill_tlv_v {
1235     struct cdp_htt_tlv_hdr tlv_hdr;
1236     /* Num total buf refilled from refill ring */
1237     uint32_t refill_ring_num_refill[1]; /* HTT_RX_STATS_REFILL_MAX_RING */
1238 };
1239 
1240 struct cdp_htt_rx_pdev_fw_ring_mpdu_err_tlv_v {
1241     struct cdp_htt_tlv_hdr tlv_hdr;
1242     /* Num error MPDU for each RxDMA error type  */
1243     uint32_t fw_ring_mpdu_err[1]; /* HTT_RX_STATS_RXDMA_MAX_ERR */
1244 };
1245 
1246 struct cdp_htt_rx_pdev_fw_mpdu_drop_tlv_v {
1247     struct cdp_htt_tlv_hdr tlv_hdr;
1248     /* Num MPDU dropped  */
1249     uint32_t fw_mpdu_drop[1]; /* HTT_RX_STATS_FW_DROP_REASON_MAX */
1250 };
1251 
1252 #define HTT_STATS_PHY_ERR_MAX 43
1253 
1254 struct cdp_htt_rx_pdev_fw_stats_phy_err_tlv {
1255     struct cdp_htt_tlv_hdr tlv_hdr;
1256 
1257     /* BIT [ 7 :  0]   :- mac_id
1258      * BIT [31 :  8]   :- reserved
1259      */
1260     uint32_t mac_id__word;
1261     /* Num of phy err */
1262     uint32_t total_phy_err_cnt;
1263     /* Counts of different types of phy errs
1264      * The mapping of PHY error types to phy_err array elements is HW dependent.
1265      * The only currently-supported mapping is shown below:
1266      *
1267      * 0 phyrx_err_phy_off Reception aborted due to receiving a PHY_OFF TLV
1268      * 1 phyrx_err_synth_off
1269      * 2 phyrx_err_ofdma_timing
1270      * 3 phyrx_err_ofdma_signal_parity
1271      * 4 phyrx_err_ofdma_rate_illegal
1272      * 5 phyrx_err_ofdma_length_illegal
1273      * 6 phyrx_err_ofdma_restart
1274      * 7 phyrx_err_ofdma_service
1275      * 8 phyrx_err_ppdu_ofdma_power_drop
1276      * 9 phyrx_err_cck_blokker
1277      * 10 phyrx_err_cck_timing
1278      * 11 phyrx_err_cck_header_crc
1279      * 12 phyrx_err_cck_rate_illegal
1280      * 13 phyrx_err_cck_length_illegal
1281      * 14 phyrx_err_cck_restart
1282      * 15 phyrx_err_cck_service
1283      * 16 phyrx_err_cck_power_drop
1284      * 17 phyrx_err_ht_crc_err
1285      * 18 phyrx_err_ht_length_illegal
1286      * 19 phyrx_err_ht_rate_illegal
1287      * 20 phyrx_err_ht_zlf
1288      * 21 phyrx_err_false_radar_ext
1289      * 22 phyrx_err_green_field
1290      * 23 phyrx_err_bw_gt_dyn_bw
1291      * 24 phyrx_err_leg_ht_mismatch
1292      * 25 phyrx_err_vht_crc_error
1293      * 26 phyrx_err_vht_siga_unsupported
1294      * 27 phyrx_err_vht_lsig_len_invalid
1295      * 28 phyrx_err_vht_ndp_or_zlf
1296      * 29 phyrx_err_vht_nsym_lt_zero
1297      * 30 phyrx_err_vht_rx_extra_symbol_mismatch
1298      * 31 phyrx_err_vht_rx_skip_group_id0
1299      * 32 phyrx_err_vht_rx_skip_group_id1to62
1300      * 33 phyrx_err_vht_rx_skip_group_id63
1301      * 34 phyrx_err_ofdm_ldpc_decoder_disabled
1302      * 35 phyrx_err_defer_nap
1303      * 36 phyrx_err_fdomain_timeout
1304      * 37 phyrx_err_lsig_rel_check
1305      * 38 phyrx_err_bt_collision
1306      * 39 phyrx_err_unsupported_mu_feedback
1307      * 40 phyrx_err_ppdu_tx_interrupt_rx
1308      * 41 phyrx_err_unsupported_cbf
1309      * 42 phyrx_err_other
1310      */
1311     uint32_t phy_err[HTT_STATS_PHY_ERR_MAX];
1312 };
1313 
1314 struct cdp_htt_rx_soc_fw_refill_ring_empty_tlv_v {
1315     struct cdp_htt_tlv_hdr tlv_hdr;
1316     /* Num ring empty encountered */
1317     uint32_t refill_ring_empty_cnt[1]; /* HTT_RX_STATS_REFILL_MAX_RING */
1318 };
1319 
1320 struct cdp_htt_tx_pdev_stats {
1321     struct cdp_htt_tx_pdev_stats_cmn_tlv cmn_tlv;
1322     struct cdp_htt_tx_pdev_stats_urrn_tlv_v underrun_tlv;
1323     struct cdp_htt_tx_pdev_stats_sifs_tlv_v sifs_tlv;
1324     struct cdp_htt_tx_pdev_stats_flush_tlv_v flush_tlv;
1325     struct cdp_htt_tx_pdev_stats_phy_err_tlv_v phy_err_tlv;
1326 };
1327 
1328 struct cdp_htt_rx_soc_stats_t {
1329     struct cdp_htt_rx_soc_fw_stats_tlv fw_tlv;
1330     struct cdp_htt_rx_soc_fw_refill_ring_empty_tlv_v fw_refill_ring_empty_tlv;
1331     struct cdp_htt_rx_soc_fw_refill_ring_num_refill_tlv_v fw_refill_ring_num_refill_tlv;
1332 };
1333 
1334 struct cdp_htt_rx_pdev_stats {
1335     struct cdp_htt_rx_soc_stats_t soc_stats;
1336     struct cdp_htt_rx_pdev_fw_stats_tlv fw_stats_tlv;
1337     struct cdp_htt_rx_pdev_fw_ring_mpdu_err_tlv_v fw_ring_mpdu_err_tlv;
1338     struct cdp_htt_rx_pdev_fw_mpdu_drop_tlv_v fw_ring_mpdu_drop;
1339     struct cdp_htt_rx_pdev_fw_stats_phy_err_tlv fw_stats_phy_err_tlv;
1340 };
1341 
1342 #ifdef WLAN_SUPPORT_RX_PROTOCOL_TYPE_TAG
1343 /* Since protocol type enumeration value is passed as CCE metadata
1344  * to firmware, add a constant offset before passing it to firmware
1345  */
1346 #define RX_PROTOCOL_TAG_START_OFFSET  128
1347 /* This should align with packet type enumerations in ieee80211_ioctl.h
1348  * and wmi_unified_param.h files
1349  */
1350 #define RX_PROTOCOL_TAG_MAX   24
1351 /* Macro that should be used to dump the statistics counter for all
1352  * protocol types
1353  */
1354 #define RX_PROTOCOL_TAG_ALL 0xff
1355 #endif /* WLAN_SUPPORT_RX_PROTOCOL_TYPE_TAG */
1356 
1357 #define OFDMA_NUM_RU_SIZE 7
1358 
1359 #define OFDMA_NUM_USERS	37
1360 /* struct cdp_pdev_stats - pdev stats
1361  * @msdu_not_done: packets dropped because msdu done bit not set
1362  * @mec:Multicast Echo check
1363  * @mesh_filter: Mesh Filtered packets
1364  * @mon_rx_drop: packets dropped on monitor vap
1365  * @wifi_parse: rxdma errors due to wifi parse error
1366  * @mon_radiotap_update_err: not enough space to update radiotap
1367  * @pkts: total packets replenished
1368  * @rxdma_err: rxdma errors for replenished
1369  * @nbuf_alloc_fail: nbuf alloc failed
1370  * @map_err: Mapping failure
1371  * @x86_fail: x86 failures
1372  * @low_thresh_intrs: low threshold interrupts
1373  * @rx_raw_pkts: Rx Raw Packets
1374  * @mesh_mem_alloc: Mesh Rx Stats Alloc fail
1375  * @tso_desc_cnt: TSO descriptors
1376  * @sg_desc_cnt: SG Descriptors
1377  * @vlan_tag_stp_cnt: Vlan tagged Stp packets in wifi parse error
1378  * @desc_alloc_fail: desc alloc failed errors
1379  * @ip_csum_err: ip checksum errors
1380  * @tcp_udp_csum_err: tcp/udp checksum errors
1381  * @buf_freelist: buffers added back in freelist
1382  * @tx_i: Tx Ingress stats
1383  * @tx:CDP Tx Stats
1384  * @rx: CDP Rx Stats
1385  * @tx_comp_histogram: Number of Tx completions per interrupt
1386  * @rx_ind_histogram:  Number of Rx ring descriptors reaped per interrupt
1387  * @ppdu_stats_counter: ppdu stats counter
1388  * @cdp_delayed_ba_not_recev: counter for delayed ba not received
1389  * @htt_tx_pdev_stats: htt pdev stats for tx
1390  * @htt_rx_pdev_stats: htt pdev stats for rx
1391  * @data_rx_ru_size: UL ofdma data ru size counter array
1392  * @nondata_rx_ru_size: UL ofdma non data ru size counter array
1393  * @data_rx_ppdu: data rx ppdu counter
1394  * @data_user: data user counter array
1395  */
1396 struct cdp_pdev_stats {
1397 	struct {
1398 		uint32_t msdu_not_done;
1399 		uint32_t mec;
1400 		uint32_t mesh_filter;
1401 		uint32_t wifi_parse;
1402 		/* Monitor mode related */
1403 		uint32_t mon_rx_drop;
1404 		uint32_t mon_radiotap_update_err;
1405 	} dropped;
1406 
1407 	struct {
1408 		struct cdp_pkt_info pkts;
1409 		uint32_t rxdma_err;
1410 		uint32_t nbuf_alloc_fail;
1411 		uint32_t map_err;
1412 		uint32_t x86_fail;
1413 		uint32_t low_thresh_intrs;
1414 	} replenish;
1415 
1416 	uint32_t rx_raw_pkts;
1417 	uint32_t mesh_mem_alloc;
1418 	uint32_t tso_desc_cnt;
1419 	uint32_t sg_desc_cnt;
1420 	uint32_t vlan_tag_stp_cnt;
1421 
1422 	/* Rx errors */
1423 	struct {
1424 		uint32_t desc_alloc_fail;
1425 		uint32_t ip_csum_err;
1426 		uint32_t tcp_udp_csum_err;
1427 		uint32_t rxdma_error;
1428 		uint32_t reo_error;
1429 	} err;
1430 
1431 	uint32_t buf_freelist;
1432 	struct cdp_tx_ingress_stats tx_i;
1433 	struct cdp_tx_stats tx;
1434 	struct cdp_rx_stats rx;
1435 	struct cdp_hist_tx_comp tx_comp_histogram;
1436 	struct cdp_hist_rx_ind rx_ind_histogram;
1437 	uint64_t ppdu_stats_counter[CDP_PPDU_STATS_MAX_TAG];
1438 	uint32_t cdp_delayed_ba_not_recev;
1439 
1440 	struct cdp_htt_tx_pdev_stats  htt_tx_pdev_stats;
1441 	struct cdp_htt_rx_pdev_stats  htt_rx_pdev_stats;
1442 
1443 	/* Received wdi messages from fw */
1444 	uint32_t wdi_event[CDP_WDI_NUM_EVENTS];
1445 	struct cdp_tid_stats tid_stats;
1446 
1447 	/* numbers of data/nondata per RU sizes */
1448 	struct {
1449 		uint32_t data_rx_ru_size[OFDMA_NUM_RU_SIZE];
1450 		uint32_t nondata_rx_ru_size[OFDMA_NUM_RU_SIZE];
1451 		uint32_t data_rx_ppdu;
1452 		uint32_t data_users[OFDMA_NUM_USERS];
1453 	} ul_ofdma;
1454 
1455 	struct cdp_tso_stats tso_stats;
1456 };
1457 
1458 #ifdef QCA_ENH_V3_STATS_SUPPORT
1459 /*
1460  * Enumeration of PDEV Configuration parameter
1461  */
1462 enum _ol_ath_param_t {
1463 	OL_ATH_PARAM_TXCHAINMASK               = 1,
1464 	OL_ATH_PARAM_RXCHAINMASK               = 2,
1465 	OL_ATH_PARAM_AMPDU                     = 6,
1466 	OL_ATH_PARAM_AMPDU_LIMIT               = 7,
1467 	OL_ATH_PARAM_AMPDU_SUBFRAMES           = 8,
1468 	OL_ATH_PARAM_TXPOWER_LIMIT2G           = 12,
1469 	OL_ATH_PARAM_TXPOWER_LIMIT5G           = 13,
1470 	OL_ATH_PARAM_LDPC                      = 32,
1471 	OL_ATH_PARAM_VOW_EXT_STATS             = 45,
1472 	OL_ATH_PARAM_DYN_TX_CHAINMASK          = 73,
1473 	OL_ATH_PARAM_BURST_ENABLE              = 77,
1474 	OL_ATH_PARAM_BURST_DUR                 = 78,
1475 	OL_ATH_PARAM_BCN_BURST                 = 80,
1476 	OL_ATH_PARAM_DCS                       = 82,
1477 #if UMAC_SUPPORT_PERIODIC_PERFSTATS
1478 	OL_ATH_PARAM_PRDPERFSTAT_THRPUT_ENAB   = 83,
1479 	OL_ATH_PARAM_PRDPERFSTAT_THRPUT_WIN    = 84,
1480 	OL_ATH_PARAM_PRDPERFSTAT_THRPUT        = 85,
1481 	OL_ATH_PARAM_PRDPERFSTAT_PER_ENAB      = 86,
1482 	OL_ATH_PARAM_PRDPERFSTAT_PER_WIN       = 87,
1483 	OL_ATH_PARAM_PRDPERFSTAT_PER           = 88,
1484 #endif
1485 	/* UMAC_SUPPORT_PERIODIC_PERFSTATS */
1486 	OL_ATH_PARAM_TOTAL_PER                 = 89,
1487 	/* set manual rate for rts frame */
1488 	OL_ATH_PARAM_RTS_CTS_RATE              = 92,
1489 	/* co channel interference threshold level */
1490 	OL_ATH_PARAM_DCS_COCH_THR              = 93,
1491 	/* transmit error threshold */
1492 	OL_ATH_PARAM_DCS_TXERR_THR             = 94,
1493 	/* phy error threshold */
1494 	OL_ATH_PARAM_DCS_PHYERR_THR            = 95,
1495 	/*
1496 	 * The IOCTL number is 114, it is made 114, inorder to make the IOCTL
1497 	 * number same as Direct-attach IOCTL.
1498 	 * Please, don't change number. This IOCTL gets the Interface code path
1499 	 * it should be either DIRECT-ATTACH or OFF-LOAD.
1500 	 */
1501 	OL_ATH_PARAM_GET_IF_ID                 = 114,
1502 	/* Enable Acs back Ground Channel selection Scan timer in AP mode*/
1503 	OL_ATH_PARAM_ACS_ENABLE_BK_SCANTIMEREN = 118,
1504 	 /* ACS scan timer value in Seconds */
1505 	OL_ATH_PARAM_ACS_SCANTIME              = 119,
1506 	 /* Negligence Delta RSSI between two channel */
1507 	OL_ATH_PARAM_ACS_RSSIVAR               = 120,
1508 	 /* Negligence Delta Channel load between two channel*/
1509 	OL_ATH_PARAM_ACS_CHLOADVAR             = 121,
1510 	  /* Enable Limited OBSS check */
1511 	OL_ATH_PARAM_ACS_LIMITEDOBSS           = 122,
1512 	/* Acs control flag for Scan timer */
1513 	OL_ATH_PARAM_ACS_CTRLFLAG              = 123,
1514 	 /* Acs Run time Debug level*/
1515 	OL_ATH_PARAM_ACS_DEBUGTRACE            = 124,
1516 	OL_ATH_PARAM_SET_FW_HANG_ID            = 137,
1517 	 /* Radio type 1:11ac 0:11abgn */
1518 	OL_ATH_PARAM_RADIO_TYPE                = 138,
1519 	OL_ATH_PARAM_IGMPMLD_OVERRIDE, /* IGMP/MLD packet override */
1520 	OL_ATH_PARAM_IGMPMLD_TID, /* IGMP/MLD packet TID no */
1521 	OL_ATH_PARAM_ARPDHCP_AC_OVERRIDE,
1522 	OL_ATH_PARAM_NON_AGG_SW_RETRY_TH,
1523 	OL_ATH_PARAM_AGG_SW_RETRY_TH,
1524 	/* Dont change this number it as per sync with DA
1525 	     Blocking certian channel from ic channel list */
1526 	OL_ATH_PARAM_DISABLE_DFS   = 144,
1527 	OL_ATH_PARAM_ENABLE_AMSDU  = 145,
1528 	OL_ATH_PARAM_ENABLE_AMPDU  = 146,
1529 	OL_ATH_PARAM_STA_KICKOUT_TH,
1530 	OL_ATH_PARAM_WLAN_PROF_ENABLE,
1531 	OL_ATH_PARAM_LTR_ENABLE,
1532 	OL_ATH_PARAM_LTR_AC_LATENCY_BE = 150,
1533 	OL_ATH_PARAM_LTR_AC_LATENCY_BK,
1534 	OL_ATH_PARAM_LTR_AC_LATENCY_VI,
1535 	OL_ATH_PARAM_LTR_AC_LATENCY_VO,
1536 	OL_ATH_PARAM_LTR_AC_LATENCY_TIMEOUT,
1537 	OL_ATH_PARAM_LTR_TX_ACTIVITY_TIMEOUT = 155,
1538 	OL_ATH_PARAM_LTR_SLEEP_OVERRIDE,
1539 	OL_ATH_PARAM_LTR_RX_OVERRIDE,
1540 	OL_ATH_PARAM_L1SS_ENABLE,
1541 	OL_ATH_PARAM_DSLEEP_ENABLE,
1542 	/* radar error threshold */
1543 	OL_ATH_PARAM_DCS_RADAR_ERR_THR = 160,
1544 	/* Tx channel utilization due to AP's tx and rx */
1545 	OL_ATH_PARAM_DCS_USERMAX_CU_THR,
1546 	/* interference detection threshold */
1547 	OL_ATH_PARAM_DCS_INTR_DETECT_THR,
1548 	/* sampling window, default 10secs */
1549 	OL_ATH_PARAM_DCS_SAMPLE_WINDOW,
1550 	/* debug logs enable/disable */
1551 	OL_ATH_PARAM_DCS_DEBUG,
1552 	OL_ATH_PARAM_ANI_ENABLE = 165,
1553 	OL_ATH_PARAM_ANI_POLL_PERIOD,
1554 	OL_ATH_PARAM_ANI_LISTEN_PERIOD,
1555 	OL_ATH_PARAM_ANI_OFDM_LEVEL,
1556 	OL_ATH_PARAM_ANI_CCK_LEVEL,
1557 	OL_ATH_PARAM_DSCP_TID_MAP = 170,
1558 	OL_ATH_PARAM_TXPOWER_SCALE,
1559 	/* Phy error penalty */
1560 	OL_ATH_PARAM_DCS_PHYERR_PENALTY,
1561 #if ATH_SUPPORT_DSCP_OVERRIDE
1562 	/* set/get TID for sending HMMC packets */
1563 	OL_ATH_PARAM_HMMC_DSCP_TID_MAP,
1564 	/* set/get DSCP mapping override */
1565 	OL_ATH_PARAM_DSCP_OVERRIDE,
1566 	/* set/get HMMC-DSCP mapping override */
1567 	OL_ATH_PARAM_HMMC_DSCP_OVERRIDE = 175,
1568 #endif
1569 #if ATH_RX_LOOPLIMIT_TIMER
1570 	OL_ATH_PARAM_LOOPLIMIT_NUM,
1571 #endif
1572 	OL_ATH_PARAM_ANTENNA_GAIN_2G,
1573 	OL_ATH_PARAM_ANTENNA_GAIN_5G,
1574 	OL_ATH_PARAM_RX_FILTER,
1575 #if ATH_SUPPORT_HYFI_ENHANCEMENTS
1576 	OL_ATH_PARAM_BUFF_THRESH = 180,
1577 	OL_ATH_PARAM_BLK_REPORT_FLOOD,
1578 	OL_ATH_PARAM_DROP_STA_QUERY,
1579 #endif
1580 	OL_ATH_PARAM_QBOOST,
1581 	OL_ATH_PARAM_SIFS_FRMTYPE,
1582 	OL_ATH_PARAM_SIFS_UAPSD = 185,
1583 	OL_ATH_PARAM_FW_RECOVERY_ID,
1584 	OL_ATH_PARAM_RESET_OL_STATS,
1585 	OL_ATH_PARAM_AGGR_BURST,
1586 	/* Number of deauth sent in consecutive rx_peer_invalid */
1587 	OL_ATH_PARAM_DEAUTH_COUNT,
1588 	OL_ATH_PARAM_BLOCK_INTERBSS = 190,
1589 	/* Firmware reset control for Bmiss / timeout / reset */
1590 	OL_ATH_PARAM_FW_DISABLE_RESET,
1591 	OL_ATH_PARAM_MSDU_TTL,
1592 	OL_ATH_PARAM_PPDU_DURATION,
1593 	OL_ATH_PARAM_SET_TXBF_SND_PERIOD,
1594 	OL_ATH_PARAM_ALLOW_PROMISC = 195,
1595 	OL_ATH_PARAM_BURST_MODE,
1596 	OL_ATH_PARAM_DYN_GROUPING,
1597 	OL_ATH_PARAM_DPD_ENABLE,
1598 	OL_ATH_PARAM_DBGLOG_RATELIM,
1599 	/* firmware should intimate us about ps state change for node  */
1600 	OL_ATH_PARAM_PS_STATE_CHANGE = 200,
1601 	OL_ATH_PARAM_MCAST_BCAST_ECHO,
1602 	/* OBSS RSSI threshold for 20/40 coexistence */
1603 	OL_ATH_PARAM_OBSS_RSSI_THRESHOLD,
1604 	/* Link/node RX RSSI threshold  for 20/40 coexistence */
1605 	OL_ATH_PARAM_OBSS_RX_RSSI_THRESHOLD,
1606 #if ATH_CHANNEL_BLOCKING
1607 	OL_ATH_PARAM_ACS_BLOCK_MODE = 205,
1608 #endif
1609 	OL_ATH_PARAM_ACS_TX_POWER_OPTION,
1610 	/*
1611 	 * Default Antenna Polarization MSB 8 bits (24:31) specifying
1612 	 * enable/disable ; LSB 24 bits (0:23) antenna mask value
1613 	 */
1614 	OL_ATH_PARAM_ANT_POLARIZATION,
1615 	/* rate limit mute type error prints */
1616 	OL_ATH_PARAM_PRINT_RATE_LIMIT,
1617 	OL_ATH_PARAM_PDEV_RESET,   /* Reset FW PDEV*/
1618 	/* Do not crash host when target assert happened*/
1619 	OL_ATH_PARAM_FW_DUMP_NO_HOST_CRASH = 210,
1620 	/* Consider OBSS non-erp to change to long slot*/
1621 	OL_ATH_PARAM_CONSIDER_OBSS_NON_ERP_LONG_SLOT = 211,
1622 	OL_ATH_PARAM_STATS_FC,
1623 	OL_ATH_PARAM_QFLUSHINTERVAL,
1624 	OL_ATH_PARAM_TOTAL_Q_SIZE,
1625 	OL_ATH_PARAM_TOTAL_Q_SIZE_RANGE0,
1626 	OL_ATH_PARAM_TOTAL_Q_SIZE_RANGE1,
1627 	OL_ATH_PARAM_TOTAL_Q_SIZE_RANGE2,
1628 	OL_ATH_PARAM_TOTAL_Q_SIZE_RANGE3,
1629 	OL_ATH_PARAM_MIN_THRESHOLD,
1630 	OL_ATH_PARAM_MAX_Q_LIMIT,
1631 	OL_ATH_PARAM_MIN_Q_LIMIT,
1632 	OL_ATH_PARAM_CONG_CTRL_TIMER_INTV,
1633 	OL_ATH_PARAM_STATS_TIMER_INTV,
1634 	OL_ATH_PARAM_ROTTING_TIMER_INTV,
1635 	OL_ATH_PARAM_LATENCY_PROFILE,
1636 	OL_ATH_PARAM_HOSTQ_DUMP,
1637 	OL_ATH_PARAM_TIDQ_MAP,
1638 	OL_ATH_PARAM_DBG_ARP_SRC_ADDR, /* ARP DEBUG source address*/
1639 	OL_ATH_PARAM_DBG_ARP_DST_ADDR, /* ARP DEBUG destination address*/
1640 	OL_ATH_PARAM_ARP_DBG_CONF,   /* ARP debug configuration */
1641 	OL_ATH_PARAM_DISABLE_STA_VAP_AMSDU, /* Disable AMSDU for station vap */
1642 #if ATH_SUPPORT_DFS && ATH_SUPPORT_STA_DFS
1643 	OL_ATH_PARAM_STADFS_ENABLE = 300,    /* STA DFS is enabled or not  */
1644 #endif
1645 #if QCA_AIRTIME_FAIRNESS
1646 	OL_ATH_PARAM_ATF_STRICT_SCHED = 301,
1647 	OL_ATH_PARAM_ATF_GROUP_POLICY = 302,
1648 #endif
1649 #if DBDC_REPEATER_SUPPORT
1650 	OL_ATH_PARAM_PRIMARY_RADIO,
1651 	OL_ATH_PARAM_DBDC_ENABLE,
1652 #endif
1653 	OL_ATH_PARAM_TXPOWER_DBSCALE,
1654 	OL_ATH_PARAM_CTL_POWER_SCALE,
1655 #if QCA_AIRTIME_FAIRNESS
1656 	OL_ATH_PARAM_ATF_OBSS_SCHED = 307,
1657 	OL_ATH_PARAM_ATF_OBSS_SCALE = 308,
1658 #endif
1659 	OL_ATH_PARAM_PHY_OFDM_ERR = 309,
1660 	OL_ATH_PARAM_PHY_CCK_ERR = 310,
1661 	OL_ATH_PARAM_FCS_ERR = 311,
1662 	OL_ATH_PARAM_CHAN_UTIL = 312,
1663 #if DBDC_REPEATER_SUPPORT
1664 	OL_ATH_PARAM_CLIENT_MCAST,
1665 #endif
1666 	OL_ATH_PARAM_EMIWAR_80P80 = 314,
1667 	OL_ATH_PARAM_BATCHMODE = 315,
1668 	OL_ATH_PARAM_PACK_AGGR_DELAY = 316,
1669 #if UMAC_SUPPORT_ACFG
1670 	OL_ATH_PARAM_DIAG_ENABLE = 317,
1671 #endif
1672 #if ATH_SUPPORT_VAP_QOS
1673 	OL_ATH_PARAM_VAP_QOS = 318,
1674 #endif
1675 	OL_ATH_PARAM_CHAN_STATS_TH = 319,
1676 	/* Passive scan is enabled or disabled  */
1677 	OL_ATH_PARAM_PASSIVE_SCAN_ENABLE = 320,
1678 	OL_ATH_MIN_RSSI_ENABLE = 321,
1679 	OL_ATH_MIN_RSSI = 322,
1680 	OL_ATH_PARAM_ACS_2G_ALLCHAN = 323,
1681 #if DBDC_REPEATER_SUPPORT
1682 	OL_ATH_PARAM_DELAY_STAVAP_UP = 324,
1683 #endif
1684 	/* It is used to set the channel switch options */
1685 	OL_ATH_PARAM_CHANSWITCH_OPTIONS = 327,
1686 	OL_ATH_BTCOEX_ENABLE        = 328,
1687 	OL_ATH_BTCOEX_WL_PRIORITY   = 329,
1688 	OL_ATH_PARAM_TID_OVERRIDE_QUEUE_MAPPING = 330,
1689 	OL_ATH_PARAM_CAL_VER_CHECK = 331,
1690 	OL_ATH_PARAM_NO_VLAN       = 332,
1691 	OL_ATH_PARAM_CCA_THRESHOLD = 333,
1692 	OL_ATH_PARAM_ATF_LOGGING = 334,
1693 	OL_ATH_PARAM_STRICT_DOTH = 335,
1694 	OL_ATH_PARAM_DISCONNECTION_TIMEOUT   = 336,
1695 	OL_ATH_PARAM_RECONFIGURATION_TIMEOUT = 337,
1696 	OL_ATH_PARAM_CHANNEL_SWITCH_COUNT = 338,
1697 	OL_ATH_PARAM_ALWAYS_PRIMARY = 339,
1698 	OL_ATH_PARAM_FAST_LANE = 340,
1699 	OL_ATH_GET_BTCOEX_DUTY_CYCLE = 341,
1700 	OL_ATH_PARAM_SECONDARY_OFFSET_IE = 342,
1701 	OL_ATH_PARAM_WIDE_BAND_SUB_ELEMENT = 343,
1702 	OL_ATH_PARAM_PREFERRED_UPLINK = 344,
1703 	OL_ATH_PARAM_PRECAC_ENABLE = 345,
1704 	OL_ATH_PARAM_PRECAC_TIMEOUT = 346,
1705 	OL_ATH_COEX_VER_CFG = 347,
1706 	OL_ATH_PARAM_DUMP_TARGET = 348,
1707 	OL_ATH_PARAM_PDEV_TO_REO_DEST = 349,
1708 	OL_ATH_PARAM_DUMP_CHAINMASK_TABLES = 350,
1709 	OL_ATH_PARAM_DUMP_OBJECTS = 351,
1710 	OL_ATH_PARAM_ACS_SRLOADVAR = 352,
1711 	OL_ATH_PARAM_MGMT_RSSI_THRESHOLD = 353,
1712 	OL_ATH_PARAM_EXT_NSS_CAPABLE = 354,
1713 	OL_ATH_PARAM_MGMT_PDEV_STATS_TIMER = 355,
1714 	OL_ATH_PARAM_TXACKTIMEOUT = 356,
1715 	OL_ATH_PARAM_ICM_ACTIVE = 357,
1716 	OL_ATH_PARAM_NOMINAL_NOISEFLOOR = 358,
1717 	OL_ATH_PARAM_CHAN_INFO = 359,
1718 	OL_ATH_PARAM_ACS_RANK = 360,
1719 	OL_ATH_PARAM_TXCHAINSOFT = 361,
1720 	OL_ATH_PARAM_WIDE_BAND_SCAN = 362,
1721 	OL_ATH_PARAM_CCK_TX_ENABLE = 363,
1722 	OL_ATH_PARAM_PAPI_ENABLE = 364,
1723 	OL_ATH_PARAM_ISOLATION = 365,
1724 	OL_ATH_PARAM_MAX_CLIENTS_PER_RADIO = 366,
1725 #if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST)
1726 	OL_ATH_PARAM_DFS_HOST_WAIT_TIMEOUT = 367,
1727 #endif
1728 	OL_ATH_PARAM_NF_THRESH = 368,
1729 #ifdef OL_ATH_SMART_LOGGING
1730 	OL_ATH_PARAM_SMARTLOG_ENABLE = 369,
1731 	OL_ATH_PARAM_SMARTLOG_FATAL_EVENT = 370,
1732 	OL_ATH_PARAM_SMARTLOG_SKB_SZ = 371,
1733 	OL_ATH_PARAM_SMARTLOG_P1PINGFAIL = 372,
1734 #endif /* OL_ATH_SMART_LOGGING */
1735 #ifdef WLAN_DFS_PRECAC_AUTO_CHAN_SUPPORT
1736 	OL_ATH_PARAM_PRECAC_INTER_CHANNEL = 373,
1737 	OL_ATH_PARAM_PRECAC_CHAN_STATE = 374,
1738 #endif
1739 	OL_ATH_PARAM_DBR_RING_STATUS = 375,
1740 #ifdef QCN_ESP_IE
1741 	OL_ATH_PARAM_ESP_PERIODICITY = 376,
1742 	OL_ATH_PARAM_ESP_AIRTIME = 377,
1743 	OL_ATH_PARAM_ESP_PPDU_DURATION = 378,
1744 	OL_ATH_PARAM_ESP_BA_WINDOW = 379,
1745 #endif /* QCN_ESP_IE */
1746 
1747 	OL_ATH_PARAM_CBS = 380,
1748 	OL_ATH_PARAM_DCS_SIM = 381,
1749 	OL_ATH_PARAM_CBS_DWELL_SPLIT_TIME = 382,
1750 	OL_ATH_PARAM_CBS_DWELL_REST_TIME = 383,
1751 	OL_ATH_PARAM_CBS_WAIT_TIME = 384,
1752 	OL_ATH_PARAM_CBS_REST_TIME = 385,
1753 	OL_ATH_PARAM_CBS_CSA = 386,
1754 	OL_ATH_PARAM_TWICE_ANTENNA_GAIN = 387,
1755 	OL_ATH_PARAM_ACTIVITY_FACTOR = 388,
1756 	OL_ATH_PARAM_CHAN_AP_RX_UTIL = 389,
1757 	OL_ATH_PARAM_CHAN_FREE  = 390,
1758 	OL_ATH_PARAM_CHAN_AP_TX_UTIL = 391,
1759 	OL_ATH_PARAM_CHAN_OBSS_RX_UTIL = 392,
1760 	OL_ATH_PARAM_CHAN_NON_WIFI = 393,
1761 #if PEER_FLOW_CONTROL
1762 	OL_ATH_PARAM_VIDEO_STATS_FC = 394,
1763 	OL_ATH_PARAM_VIDEO_DELAY_STATS_FC = 395,
1764 #endif
1765 	OL_ATH_PARAM_ENABLE_PEER_RETRY_STATS = 396,
1766 	OL_ATH_PARAM_HE_UL_TRIG_INT = 397,
1767 	OL_ATH_PARAM_DFS_NOL_SUBCHANNEL_MARKING = 398,
1768 	/*
1769 	 * Get the band that is tuned for low, high,
1770 	 * full band freq range or it's 2g
1771 	 */
1772 	OL_ATH_PARAM_BAND_INFO = 399,
1773 	OL_ATH_PARAM_BW_REDUCE = 400,
1774 	/* Enable/disable Spatial Reuse */
1775 	OL_ATH_PARAM_HE_SR = 401,
1776 	OL_ATH_PARAM_HE_UL_PPDU_DURATION = 402,
1777 	OL_ATH_PARAM_HE_UL_RU_ALLOCATION = 403,
1778 	OL_ATH_PARAM_PERIODIC_CFR_CAPTURE = 404,
1779 	OL_ATH_PARAM_FLUSH_PEER_RATE_STATS = 405,
1780 	OL_ATH_PARAM_DCS_RE_ENABLE_TIMER = 406,
1781 	/* Enable/disable Rx lite monitor mode */
1782 	OL_ATH_PARAM_RX_MON_LITE = 407,
1783 	/* wifi down indication used in MBSS feature */
1784 	OL_ATH_PARAM_WIFI_DOWN_IND = 408,
1785 	OL_ATH_PARAM_TX_CAPTURE = 409,
1786 	/* Enable fw dump collectin if wmi disconnects */
1787 	OL_ATH_PARAM_WMI_DIS_DUMP = 410,
1788 	OL_ATH_PARAM_ACS_CHAN_GRADE_ALGO = 411,
1789 	OL_ATH_PARAM_ACS_CHAN_EFFICIENCY_VAR = 412,
1790 	OL_ATH_PARAM_ACS_NEAR_RANGE_WEIGHTAGE = 413,
1791 	OL_ATH_PARAM_ACS_MID_RANGE_WEIGHTAGE = 414,
1792 	OL_ATH_PARAM_ACS_FAR_RANGE_WEIGHTAGE = 415,
1793 	/* Set SELF AP OBSS_PD_THRESHOLD value */
1794 	OL_ATH_PARAM_SET_CMD_OBSS_PD_THRESHOLD = 416,
1795 	/* Enable/Disable/Set MGMT_TTL in milliseconds. */
1796 	OL_ATH_PARAM_MGMT_TTL = 417,
1797 	/* Enable/Disable/Set PROBE_RESP_TTL in milliseconds */
1798 	OL_ATH_PARAM_PROBE_RESP_TTL = 418,
1799 	/* Set global MU PPDU duration for DL (usec units) */
1800 	OL_ATH_PARAM_MU_PPDU_DURATION = 419,
1801 	/* Set TBTT_CTRL_CFG */
1802 	OL_ATH_PARAM_TBTT_CTRL = 420,
1803 	/* Enable/disable AP OBSS_PD_THRESHOLD */
1804 	OL_ATH_PARAM_SET_CMD_OBSS_PD_THRESHOLD_ENABLE = 421,
1805 	/* Get baseline radio level channel width */
1806 	OL_ATH_PARAM_RCHWIDTH = 422,
1807 	/* Whether external ACS request is in progress */
1808 	OL_ATH_EXT_ACS_REQUEST_IN_PROGRESS = 423,
1809 	/* set/get hw mode */
1810 	OL_ATH_PARAM_HW_MODE  = 424,
1811 #if DBDC_REPEATER_SUPPORT
1812 	/* same ssid feature global disable */
1813 	OL_ATH_PARAM_SAME_SSID_DISABLE = 425,
1814 #endif
1815 	/* get MBSS enable flag */
1816 	OL_ATH_PARAM_MBSS_EN  = 426,
1817 };
1818 #endif
1819 /* Bitmasks for stats that can block */
1820 #define EXT_TXRX_FW_STATS		0x0001
1821 #endif
1822