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