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 #ifndef CONFIG_WIN 27 #include <wlan_defs.h> 28 #endif 29 30 #define TXRX_STATS_LEVEL_OFF 0 31 #define TXRX_STATS_LEVEL_BASIC 1 32 #define TXRX_STATS_LEVEL_FULL 2 33 34 #define BSS_CHAN_INFO_READ 1 35 #define BSS_CHAN_INFO_READ_AND_CLEAR 2 36 37 #define TX_FRAME_TYPE_DATA 0 38 #define TX_FRAME_TYPE_MGMT 1 39 #define TX_FRAME_TYPE_BEACON 2 40 41 #ifndef TXRX_STATS_LEVEL 42 #define TXRX_STATS_LEVEL TXRX_STATS_LEVEL_BASIC 43 #endif 44 45 /* 1 additional MCS is for invalid values */ 46 #define MAX_MCS (12 + 1) 47 #define MAX_MCS_11A 8 48 #define MAX_MCS_11B 7 49 #define MAX_MCS_11AC 12 50 /* 1 additional GI is for invalid values */ 51 #define MAX_GI (4 + 1) 52 #define SS_COUNT 8 53 #define MAX_BW 7 54 #define MAX_RECEPTION_TYPES 4 55 56 #define MAX_TRANSMIT_TYPES 9 57 #define SU_TX 0 58 #define MUMIMO_TX 1 59 #define MUOFDMA_TX 2 60 #define MUMIMO_OFDMA_TX 3 61 62 #define MAX_USER_POS 8 63 #define MAX_MU_GROUP_ID 64 64 #define MAX_RU_LOCATIONS 6 65 #define RU_26 1 66 #define RU_52 2 67 #define RU_106 4 68 #define RU_242 9 69 #define RU_484 18 70 #define RU_996 37 71 72 /* WME stream classes */ 73 #define WME_AC_BE 0 /* best effort */ 74 #define WME_AC_BK 1 /* background */ 75 #define WME_AC_VI 2 /* video */ 76 #define WME_AC_VO 3 /* voice */ 77 #define WME_AC_MAX 4 /* MAX AC Value */ 78 79 #define CDP_MAX_RX_RINGS 4 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 112 /* Different Packet Types */ 113 enum cdp_packet_type { 114 DOT11_A = 0, 115 DOT11_B = 1, 116 DOT11_N = 2, 117 DOT11_AC = 3, 118 DOT11_AX = 4, 119 DOT11_MAX = 5, 120 }; 121 122 /* TID level Tx/Rx stats 123 * 124 */ 125 enum cdp_txrx_tidq_stats { 126 /* Tx Counters */ 127 TX_MSDU_TOTAL_LINUX_SUBSYSTEM, 128 TX_MSDU_TOTAL_FROM_OSIF, 129 TX_MSDU_TX_COMP_PKT_CNT, 130 /* Rx Counters */ 131 RX_MSDU_TOTAL_FROM_FW, 132 RX_MSDU_MCAST_FROM_FW, 133 RX_TID_MISMATCH_FROM_FW, 134 RX_MSDU_MISC_PKTS, 135 RX_MSDU_IS_ARP, 136 RX_MSDU_IS_EAP, 137 RX_MSDU_IS_DHCP, 138 RX_AGGREGATE_10, 139 RX_AGGREGATE_20, 140 RX_AGGREGATE_30, 141 RX_AGGREGATE_40, 142 RX_AGGREGATE_50, 143 RX_AGGREGATE_60, 144 RX_AGGREGATE_MORE, 145 RX_AMSDU_1, 146 RX_AMSDU_2, 147 RX_AMSDU_3, 148 RX_AMSDU_4, 149 RX_AMSDU_MORE, 150 RX_MSDU_CHAINED_FROM_FW, 151 RX_MSDU_REORDER_FAILED_FROM_FW, 152 RX_MSDU_REORDER_FLUSHED_FROM_FW, 153 RX_MSDU_DISCARD_FROM_FW, 154 RX_MSDU_DUPLICATE_FROM_FW, 155 RX_MSDU_DELIVERED_TO_STACK, 156 TIDQ_STATS_MAX, 157 }; 158 159 struct cdp_tidq_stats { 160 uint32_t stats[TIDQ_STATS_MAX]; 161 }; 162 163 /* struct cdp_pkt_info - packet info 164 * @num: no of packets 165 * @bytes: total no of bytes 166 */ 167 struct cdp_pkt_info { 168 uint32_t num; 169 uint64_t bytes; 170 }; 171 172 /* struct cdp_pkt_type - packet type 173 * @mcs_count: Counter array for each MCS index 174 */ 175 struct cdp_pkt_type { 176 uint32_t mcs_count[MAX_MCS]; 177 }; 178 179 /* struct cdp_tx_stats - tx stats 180 * @cdp_pkt_info comp_pkt: Pkt Info for which completions were received 181 * @cdp_pkt_info ucast: Unicast Packet Count 182 * @cdp_pkt_info mcast: Multicast Packet Count 183 * @cdp_pkt_info bcast: Broadcast Packet Count 184 * @cdp_pkt_info nawds_mcast: NAWDS Multicast Packet Count 185 * @nawds_mcast_drop: NAWDS Multicast Drop Count 186 * @cdp_pkt_info tx_success: Successful Tx Packets 187 * @tx_failed: Total Tx failure 188 * @ofdma: Total Packets as ofdma 189 * @stbc: Packets in STBC 190 * @ldpc: Packets in LDPC 191 * @retries: Packet retries 192 * @non_amsdu_cnt: Number of MSDUs with no MSDU level aggregation 193 * @amsdu_cnt: Number of MSDUs part of AMSDU 194 * @tx_rate: Tx Rate 195 * @last_tx_rate: Last tx rate for unicast packets 196 * @last_tx_rate_mcs: Tx rate mcs for unicast packets 197 * @mcast_last_tx_rate: Last tx rate for multicast packets 198 * @mcast_last_tx_rate_mcs: Last tx rate mcs for multicast 199 * @last_per: Tx Per 200 * @rnd_avg_tx_rate: Rounded average tx rate 201 * @avg_tx_rate: Average TX rate 202 * @last_ack_rssi: RSSI of last acked packet 203 * @tx_bytes_success_last: last Tx success bytes 204 * @tx_data_success_last: last Tx success data 205 * @tx_byte_rate: Bytes Trasmitted in last one sec 206 * @tx_data_rate: Data Transmitted in last one sec 207 * @sgi_count[MAX_GI]: SGI count 208 * @nss[SS_COUNT]: Packet count for different num_spatial_stream values 209 * @bw[MAX_BW]: Packet Count for different bandwidths 210 * @wme_ac_type[WME_AC_MAX]: Wireless Multimedia type Count 211 * @excess_retries_per_ac[WME_AC_MAX]: Wireless Multimedia type Count 212 * @fw_rem: Discarded by firmware 213 * @fw_rem_notx: firmware_discard_untransmitted 214 * @fw_rem_tx: firmware_discard_transmitted 215 * @age_out: aged out in mpdu/msdu queues 216 * @fw_reason1: discarded by firmware reason 1 217 * @fw_reason2: discarded by firmware reason 2 218 * @fw_reason3: discarded by firmware reason 3 219 * @mcs_count: MCS Count 220 * @dot11_tx_pkts: dot11 tx packets 221 * @an_tx_cnt: ald tx count 222 * @an_tx_rates_used: ald rx rate used 223 * @an_tx_bytes: ald tx bytes 224 * @ald_txcount: ald tx count 225 * @ald_lastper: ald last PER 226 * @ald_max4msframelen: ald max frame len 227 * @an_tx_ratecount: ald tx ratecount 228 * @ald_retries: ald retries 229 * @ald_ac_nobufs: #buffer overflows per node per AC 230 * @ald_ac_excretries: #pkts dropped after excessive retries per node per AC 231 * @rssi_chain: rssi chain 232 * @inactive_time: inactive time in secs 233 * @tx_ratecode: Tx rate code of last frame 234 * @tx_flags: tx flags 235 * @tx_power: Tx power latest 236 * @is_tx_no_ack: no ack received 237 * @is_tx_nodefkey: tx failed 'cuz no defkey 238 * @is_tx_noheadroom: tx failed 'cuz no space 239 * @is_crypto_enmicfail: 240 * @is_tx_nonode: tx failed for no node 241 * @is_tx_unknownmgt: tx of unknown mgt frame 242 * @is_tx_badcipher: tx failed 'cuz key type 243 * @ampdu_cnt: completion of aggregation 244 * @non_ampdu_cnt: tx completion not aggregated 245 * @failed_retry_count: packets failed due to retry above 802.11 retry limit 246 * @retry_count: packets successfully send after one or more retry 247 * @multiple_retry_count: packets successfully sent after more than one retry 248 * @transmit_type: tx transmit type 249 * @mu_group_id: mumimo mu group id 250 * @ru_start: RU start index 251 * @ru_tones: RU tones size 252 * @ru_loc: RU location 26/ 52/ 106/ 242/ 484 counter 253 */ 254 struct cdp_tx_stats { 255 struct cdp_pkt_info comp_pkt; 256 struct cdp_pkt_info ucast; 257 struct cdp_pkt_info mcast; 258 struct cdp_pkt_info bcast; 259 struct cdp_pkt_info nawds_mcast; 260 uint32_t nawds_mcast_drop; 261 struct cdp_pkt_info tx_success; 262 uint32_t tx_failed; 263 uint32_t ofdma; 264 uint32_t stbc; 265 uint32_t ldpc; 266 uint32_t retries; 267 uint32_t non_amsdu_cnt; 268 uint32_t amsdu_cnt; 269 uint32_t tx_rate; 270 uint32_t last_tx_rate; 271 uint32_t last_tx_rate_mcs; 272 uint32_t mcast_last_tx_rate; 273 uint32_t mcast_last_tx_rate_mcs; 274 uint32_t last_per; 275 uint32_t rnd_avg_tx_rate; 276 uint32_t avg_tx_rate; 277 uint32_t last_ack_rssi; 278 uint32_t tx_bytes_success_last; 279 uint32_t tx_data_success_last; 280 uint32_t tx_byte_rate; 281 uint32_t tx_data_rate; 282 uint32_t tx_data_ucast_last; 283 uint32_t tx_data_ucast_rate; 284 struct cdp_pkt_type pkt_type[DOT11_MAX]; 285 uint32_t sgi_count[MAX_GI]; 286 287 uint32_t nss[SS_COUNT]; 288 289 uint32_t bw[MAX_BW]; 290 291 uint32_t wme_ac_type[WME_AC_MAX]; 292 293 uint32_t excess_retries_per_ac[WME_AC_MAX]; 294 295 struct { 296 struct cdp_pkt_info fw_rem; 297 uint32_t fw_rem_notx; 298 uint32_t fw_rem_tx; 299 uint32_t age_out; 300 uint32_t fw_reason1; 301 uint32_t fw_reason2; 302 uint32_t fw_reason3; 303 } dropped; 304 305 struct cdp_pkt_info dot11_tx_pkts; 306 307 uint32_t fw_tx_cnt; 308 uint32_t fw_tx_rates_used; 309 uint32_t fw_tx_bytes; 310 uint32_t fw_txcount; 311 uint32_t fw_max4msframelen; 312 uint32_t fw_ratecount; 313 314 uint32_t ac_nobufs[WME_AC_MAX]; 315 uint32_t rssi_chain[WME_AC_MAX]; 316 uint32_t inactive_time; 317 318 uint32_t tx_ratecode; 319 uint32_t tx_flags; 320 uint32_t tx_power; 321 322 /* MSDUs which the target sent but couldn't get an ack for */ 323 struct cdp_pkt_info is_tx_no_ack; 324 325 /*add for peer and upadted from ppdu*/ 326 uint32_t ampdu_cnt; 327 uint32_t non_ampdu_cnt; 328 uint32_t failed_retry_count; 329 uint32_t retry_count; 330 uint32_t multiple_retry_count; 331 uint32_t last_tx_rate_used; 332 333 uint32_t transmit_type[MAX_TRANSMIT_TYPES]; 334 uint32_t mu_group_id[MAX_MU_GROUP_ID]; 335 uint32_t ru_start; 336 uint32_t ru_tones; 337 uint32_t ru_loc[MAX_RU_LOCATIONS]; 338 }; 339 340 /* struct cdp_rx_stats - rx Level Stats 341 * @to_stack: Total packets sent up the stack 342 * @rcvd_reo[CDP_MAX_RX_RINGS]: Packets received on the reo ring 343 * @unicast: Total unicast packets 344 * @multicast: Total multicast packets 345 * @bcast: Broadcast Packet Count 346 * @raw: Raw Pakets received 347 * @nawds_mcast_drop: Total multicast packets 348 * @mec_drop: Total MEC packets dropped 349 * @pkts: Intra BSS packets received 350 * @fail: Intra BSS packets failed 351 * @mic_err: Rx MIC errors CCMP 352 * @decrypt_err: Rx Decryption Errors CRC 353 * @fcserr: rx MIC check failed (CCMP) 354 * @wme_ac_type[WME_AC_MAX]: Wireless Multimedia type Count 355 * @reception_type[MAX_RECEPTION_TYPES]: Reception type os packets 356 * @mcs_count[MAX_MCS]: mcs count 357 * @sgi_count[MAX_GI]: sgi count 358 * @nss[SS_COUNT]: Packet count in spatiel Streams 359 * @bw[MAX_BW]: Packet Count in different bandwidths 360 * @non_ampdu_cnt: Number of MSDUs with no MPDU level aggregation 361 * @ampdu_cnt: Number of MSDUs part of AMSPU 362 * @non_amsdu_cnt: Number of MSDUs with no MSDU level aggregation 363 * @amsdu_cnt: Number of MSDUs part of AMSDU 364 * @bar_recv_cnt: Number of bar received 365 * @rssi: RSSI of received signal 366 * @last_rssi: Previous rssi 367 * @rx_rate: Rx rate 368 * @last_rx_rate: Previous rx rate 369 * @rnd_avg_rx_rate: Rounded average rx rate 370 * @avg_rx_rate: Average Rx rate 371 * @dot11_rx_pkts: dot11 rx packets 372 * @rx_bytes_last: last Rx success bytes 373 * @rx_data_last: last rx success data 374 * @rx_byte_rate: bytes received in last one sec 375 * @rx_data_rate: data received in last one sec 376 * @rx_retries: retries of packet in rx 377 * @rx_mpdus: mpdu in rx 378 * @rx_ppdus: ppdu in rx 379 * @is_rx_tooshort: tooshort 380 * @is_rx_decap: rx decap 381 * @rx_ccmpmic: rx MIC check failed (CCMP) 382 * @rx_tkipmic: rx MIC check failed (TKIP) 383 * @rx_tkipicv: rx ICV check failed (TKIP) 384 * @rx_wpimic: rx MIC check failed (WPI) 385 * @rx_wepfail: rx wep processing failed 386 * @rx_aggr: aggregation on rx 387 * @rx_discard: packets discard in rx 388 * @rx_ratecode: Rx rate code of last frame 389 * @rx_flags: rx flags 390 */ 391 struct cdp_rx_stats { 392 struct cdp_pkt_info to_stack; 393 struct cdp_pkt_info rcvd_reo[CDP_MAX_RX_RINGS]; 394 struct cdp_pkt_info unicast; 395 struct cdp_pkt_info multicast; 396 struct cdp_pkt_info bcast; 397 struct cdp_pkt_info raw; 398 uint32_t nawds_mcast_drop; 399 struct cdp_pkt_info mec_drop; 400 struct { 401 struct cdp_pkt_info pkts; 402 struct cdp_pkt_info fail; 403 } intra_bss; 404 405 struct { 406 uint32_t mic_err; 407 uint32_t decrypt_err; 408 uint32_t fcserr; 409 } err; 410 411 uint32_t wme_ac_type[WME_AC_MAX]; 412 uint32_t reception_type[MAX_RECEPTION_TYPES]; 413 struct cdp_pkt_type pkt_type[DOT11_MAX]; 414 uint32_t sgi_count[MAX_GI]; 415 uint32_t nss[SS_COUNT]; 416 uint32_t bw[MAX_BW]; 417 uint32_t non_ampdu_cnt; 418 uint32_t ampdu_cnt; 419 uint32_t non_amsdu_cnt; 420 uint32_t amsdu_cnt; 421 uint32_t bar_recv_cnt; 422 uint32_t rssi; 423 uint32_t last_rssi; 424 uint32_t rx_rate; 425 uint32_t last_rx_rate; 426 uint32_t rnd_avg_rx_rate; 427 uint32_t avg_rx_rate; 428 struct cdp_pkt_info dot11_rx_pkts; 429 430 uint32_t rx_bytes_success_last; 431 uint32_t rx_data_success_last; 432 uint32_t rx_byte_rate; 433 uint32_t rx_data_rate; 434 435 uint32_t rx_retries; 436 uint32_t rx_mpdus; 437 uint32_t rx_ppdus; 438 439 /*add for peer updated for ppdu*/ 440 uint32_t rx_aggr; 441 uint32_t rx_discard; 442 uint32_t rx_ratecode; 443 uint32_t rx_flags; 444 }; 445 446 /* struct cdp_tx_ingress_stats - Tx ingress Stats 447 * @rcvd: Total packets received for transmission 448 * @processed: Tx packets processed 449 * @inspect_pkts: Total packets passed to inspect handler 450 * @nawds_mcast: NAWDS Multicast Packet Count 451 * @bcast: Number of broadcast packets 452 * @raw_pkt: Total Raw packets 453 * @dma_map_error: DMA map error 454 * @num_seg: No of segments in TSO packets 455 * @tso_pkt:total no of TSO packets 456 * @non_tso_pkts: non - TSO packets 457 * @dropped_host: TSO packets dropped by host 458 * @dropped_target:TSO packets dropped by target 459 * @sg_pkt: Total scatter gather packets 460 * @non_sg_pkts: non SG packets 461 * @dropped_host: SG packets dropped by host 462 * @dropped_target: SG packets dropped by target 463 * @dma_map_error: Dma map error 464 * @mcast_pkt: total no of multicast conversion packets 465 * @dropped_map_error: packets dropped due to map error 466 * @dropped_self_mac: packets dropped due to self Mac address 467 * @dropped_send_fail: Packets dropped due to send fail 468 * @ucast: total unicast packets transmitted 469 * @fail_seg_alloc: Segment allocation failure 470 * @clone_fail: NBUF clone failure 471 * @dropped_pkt: Total scatter gather packets 472 * @desc_na: Desc Not Available 473 * @ring_full: ring full 474 * @enqueue_fail: hw enqueue fail 475 * @dma_error: dma fail 476 * @res_full: Resource Full: Congestion Control 477 * @exception_fw: packets sent to fw 478 * @completion_fw: packets completions received from fw 479 * @cce_classified:Number of packets classified by CCE 480 * @cce_classified_raw:Number of raw packets classified by CCE 481 */ 482 struct cdp_tx_ingress_stats { 483 struct cdp_pkt_info rcvd; 484 struct cdp_pkt_info processed; 485 struct cdp_pkt_info reinject_pkts; 486 struct cdp_pkt_info inspect_pkts; 487 struct cdp_pkt_info nawds_mcast; 488 struct cdp_pkt_info bcast; 489 490 struct { 491 struct cdp_pkt_info raw_pkt; 492 uint32_t dma_map_error; 493 } raw; 494 495 /* TSO packets info */ 496 struct { 497 uint32_t num_seg; 498 struct cdp_pkt_info tso_pkt; 499 struct cdp_pkt_info non_tso_pkts; 500 struct cdp_pkt_info dropped_host; 501 uint32_t dropped_target; 502 } tso; 503 504 /* Scatter Gather packet info */ 505 struct { 506 struct cdp_pkt_info sg_pkt; 507 struct cdp_pkt_info non_sg_pkts; 508 struct cdp_pkt_info dropped_host; 509 uint32_t dropped_target; 510 uint32_t dma_map_error; 511 } sg; 512 513 /* Multicast Enhancement packets info */ 514 struct { 515 struct cdp_pkt_info mcast_pkt; 516 uint32_t dropped_map_error; 517 uint32_t dropped_self_mac; 518 uint32_t dropped_send_fail; 519 uint32_t ucast; 520 uint32_t fail_seg_alloc; 521 uint32_t clone_fail; 522 } mcast_en; 523 524 /* Packets dropped on the Tx side */ 525 struct { 526 struct cdp_pkt_info dropped_pkt; 527 struct cdp_pkt_info desc_na; 528 uint32_t ring_full; 529 uint32_t enqueue_fail; 530 uint32_t dma_error; 531 uint32_t res_full; 532 /* headroom insufficient */ 533 uint32_t headroom_insufficient; 534 } dropped; 535 536 /* Mesh packets info */ 537 struct { 538 uint32_t exception_fw; 539 uint32_t completion_fw; 540 } mesh; 541 542 uint32_t cce_classified; 543 uint32_t cce_classified_raw; 544 }; 545 546 /* struct cdp_vdev_stats - vdev stats structure 547 * @tx_i: ingress tx stats 548 * @tx: cdp tx stats 549 * @rx: cdp rx stats 550 */ 551 struct cdp_vdev_stats { 552 struct cdp_tx_ingress_stats tx_i; 553 struct cdp_tx_stats tx; 554 struct cdp_rx_stats rx; 555 }; 556 557 /* struct cdp_peer_stats - peer stats structure 558 * @tx: cdp tx stats 559 * @rx: cdp rx stats 560 */ 561 struct cdp_peer_stats { 562 /* CDP Tx Stats */ 563 struct cdp_tx_stats tx; 564 /* CDP Rx Stats */ 565 struct cdp_rx_stats rx; 566 }; 567 568 /* struct cdp_interface_peer_stats - interface structure for txrx peer stats 569 * @peer_hdl: control path peer handle 570 * @last_peer_tx_rate: peer tx rate for last transmission 571 * @peer_tx_rate: tx rate for current transmission 572 * @peer_rssi: current rssi value of peer 573 * @rssi_changed: denotes rssi is changed 574 * @tx_packet_count: tx packet count 575 * @rx_packet_count: rx packet count 576 * @tx_byte_count: tx byte count 577 * @rx_byte_count: rx byte count 578 * @per: per error rate 579 */ 580 struct cdp_interface_peer_stats { 581 void *peer_hdl; 582 uint32_t last_peer_tx_rate; 583 uint32_t peer_tx_rate; 584 uint32_t peer_rssi; 585 uint32_t tx_packet_count; 586 uint32_t rx_packet_count; 587 uint32_t tx_byte_count; 588 uint32_t rx_byte_count; 589 uint32_t per; 590 uint8_t rssi_changed; 591 }; 592 593 /* Tx completions per interrupt */ 594 struct cdp_hist_tx_comp { 595 uint32_t pkts_1; 596 uint32_t pkts_2_20; 597 uint32_t pkts_21_40; 598 uint32_t pkts_41_60; 599 uint32_t pkts_61_80; 600 uint32_t pkts_81_100; 601 uint32_t pkts_101_200; 602 uint32_t pkts_201_plus; 603 }; 604 605 /* Rx ring descriptors reaped per interrupt */ 606 struct cdp_hist_rx_ind { 607 uint32_t pkts_1; 608 uint32_t pkts_2_20; 609 uint32_t pkts_21_40; 610 uint32_t pkts_41_60; 611 uint32_t pkts_61_80; 612 uint32_t pkts_81_100; 613 uint32_t pkts_101_200; 614 uint32_t pkts_201_plus; 615 }; 616 617 struct cdp_htt_tlv_hdr { 618 /* BIT [11 : 0] :- tag 619 * BIT [23 : 12] :- length 620 * BIT [31 : 24] :- reserved 621 */ 622 uint32_t tag__length; 623 }; 624 625 #define HTT_STATS_SUBTYPE_MAX 16 626 627 struct cdp_htt_rx_pdev_fw_stats_tlv { 628 struct cdp_htt_tlv_hdr tlv_hdr; 629 630 /* BIT [ 7 : 0] :- mac_id 631 * BIT [31 : 8] :- reserved 632 */ 633 uint32_t mac_id__word; 634 /* Num PPDU status processed from HW */ 635 uint32_t ppdu_recvd; 636 /* Num MPDU across PPDUs with FCS ok */ 637 uint32_t mpdu_cnt_fcs_ok; 638 /* Num MPDU across PPDUs with FCS err */ 639 uint32_t mpdu_cnt_fcs_err; 640 /* Num MSDU across PPDUs */ 641 uint32_t tcp_msdu_cnt; 642 /* Num MSDU across PPDUs */ 643 uint32_t tcp_ack_msdu_cnt; 644 /* Num MSDU across PPDUs */ 645 uint32_t udp_msdu_cnt; 646 /* Num MSDU across PPDUs */ 647 uint32_t other_msdu_cnt; 648 /* Num MPDU on FW ring indicated */ 649 uint32_t fw_ring_mpdu_ind; 650 /* Num MGMT MPDU given to protocol */ 651 uint32_t fw_ring_mgmt_subtype[HTT_STATS_SUBTYPE_MAX]; 652 /* Num ctrl MPDU given to protocol */ 653 uint32_t fw_ring_ctrl_subtype[HTT_STATS_SUBTYPE_MAX]; 654 /* Num mcast data packet received */ 655 uint32_t fw_ring_mcast_data_msdu; 656 /* Num broadcast data packet received */ 657 uint32_t fw_ring_bcast_data_msdu; 658 /* Num unicat data packet received */ 659 uint32_t fw_ring_ucast_data_msdu; 660 /* Num null data packet received */ 661 uint32_t fw_ring_null_data_msdu; 662 /* Num MPDU on FW ring dropped */ 663 uint32_t fw_ring_mpdu_drop; 664 665 /* Num buf indication to offload */ 666 uint32_t ofld_local_data_ind_cnt; 667 /* Num buf recycle from offload */ 668 uint32_t ofld_local_data_buf_recycle_cnt; 669 /* Num buf indication to data_rx */ 670 uint32_t drx_local_data_ind_cnt; 671 /* Num buf recycle from data_rx */ 672 uint32_t drx_local_data_buf_recycle_cnt; 673 /* Num buf indication to protocol */ 674 uint32_t local_nondata_ind_cnt; 675 /* Num buf recycle from protocol */ 676 uint32_t local_nondata_buf_recycle_cnt; 677 678 /* Num buf fed */ 679 uint32_t fw_status_buf_ring_refill_cnt; 680 /* Num ring empty encountered */ 681 uint32_t fw_status_buf_ring_empty_cnt; 682 /* Num buf fed */ 683 uint32_t fw_pkt_buf_ring_refill_cnt; 684 /* Num ring empty encountered */ 685 uint32_t fw_pkt_buf_ring_empty_cnt; 686 /* Num buf fed */ 687 uint32_t fw_link_buf_ring_refill_cnt; 688 /* Num ring empty encountered */ 689 uint32_t fw_link_buf_ring_empty_cnt; 690 691 /* Num buf fed */ 692 uint32_t host_pkt_buf_ring_refill_cnt; 693 /* Num ring empty encountered */ 694 uint32_t host_pkt_buf_ring_empty_cnt; 695 /* Num buf fed */ 696 uint32_t mon_pkt_buf_ring_refill_cnt; 697 /* Num ring empty encountered */ 698 uint32_t mon_pkt_buf_ring_empty_cnt; 699 /* Num buf fed */ 700 uint32_t mon_status_buf_ring_refill_cnt; 701 /* Num ring empty encountered */ 702 uint32_t mon_status_buf_ring_empty_cnt; 703 /* Num buf fed */ 704 uint32_t mon_desc_buf_ring_refill_cnt; 705 /* Num ring empty encountered */ 706 uint32_t mon_desc_buf_ring_empty_cnt; 707 /* Num buf fed */ 708 uint32_t mon_dest_ring_update_cnt; 709 /* Num ring full encountered */ 710 uint32_t mon_dest_ring_full_cnt; 711 712 /* Num rx suspend is attempted */ 713 uint32_t rx_suspend_cnt; 714 /* Num rx suspend failed */ 715 uint32_t rx_suspend_fail_cnt; 716 /* Num rx resume attempted */ 717 uint32_t rx_resume_cnt; 718 /* Num rx resume failed */ 719 uint32_t rx_resume_fail_cnt; 720 /* Num rx ring switch */ 721 uint32_t rx_ring_switch_cnt; 722 /* Num rx ring restore */ 723 uint32_t rx_ring_restore_cnt; 724 /* Num rx flush issued */ 725 uint32_t rx_flush_cnt; 726 }; 727 728 /* == TX PDEV STATS == */ 729 struct cdp_htt_tx_pdev_stats_cmn_tlv { 730 struct cdp_htt_tlv_hdr tlv_hdr; 731 732 /* BIT [ 7 : 0] :- mac_id 733 * BIT [31 : 8] :- reserved 734 */ 735 uint32_t mac_id__word; 736 /* Num queued to HW */ 737 uint32_t hw_queued; 738 /* Num PPDU reaped from HW */ 739 uint32_t hw_reaped; 740 /* Num underruns */ 741 uint32_t underrun; 742 /* Num HW Paused counter. */ 743 uint32_t hw_paused; 744 /* Num HW flush counter. */ 745 uint32_t hw_flush; 746 /* Num HW filtered counter. */ 747 uint32_t hw_filt; 748 /* Num PPDUs cleaned up in TX abort */ 749 uint32_t tx_abort; 750 /* Num MPDUs requed by SW */ 751 uint32_t mpdu_requed; 752 /* excessive retries */ 753 uint32_t tx_xretry; 754 /* Last used data hw rate code */ 755 uint32_t data_rc; 756 /* frames dropped due to excessive sw retries */ 757 uint32_t mpdu_dropped_xretry; 758 /* illegal rate phy errors */ 759 uint32_t illgl_rate_phy_err; 760 /* wal pdev continuous xretry */ 761 uint32_t cont_xretry; 762 /* wal pdev continuous xretry */ 763 uint32_t tx_timeout; 764 /* wal pdev resets */ 765 uint32_t pdev_resets; 766 /* PhY/BB underrun */ 767 uint32_t phy_underrun; 768 /* MPDU is more than txop limit */ 769 uint32_t txop_ovf; 770 /* Number of Sequences posted */ 771 uint32_t seq_posted; 772 /* Number of Sequences failed queueing */ 773 uint32_t seq_failed_queueing; 774 /* Number of Sequences completed */ 775 uint32_t seq_completed; 776 /* Number of Sequences restarted */ 777 uint32_t seq_restarted; 778 /* Number of MU Sequences posted */ 779 uint32_t mu_seq_posted; 780 /* Number of time HW ring is paused between seq switch within ISR */ 781 uint32_t seq_switch_hw_paused; 782 /* Number of times seq continuation in DSR */ 783 uint32_t next_seq_posted_dsr; 784 /* Number of times seq continuation in ISR */ 785 uint32_t seq_posted_isr; 786 /* Number of seq_ctrl cached. */ 787 uint32_t seq_ctrl_cached; 788 /* Number of MPDUs successfully transmitted */ 789 uint32_t mpdu_count_tqm; 790 /* Number of MSDUs successfully transmitted */ 791 uint32_t msdu_count_tqm; 792 /* Number of MPDUs dropped */ 793 uint32_t mpdu_removed_tqm; 794 /* Number of MSDUs dropped */ 795 uint32_t msdu_removed_tqm; 796 /* Num MPDUs flushed by SW, HWPAUSED, SW TXABORT (Reset,channel change) */ 797 uint32_t mpdus_sw_flush; 798 /* Num MPDUs filtered by HW, all filter condition (TTL expired) */ 799 uint32_t mpdus_hw_filter; 800 /* Num MPDUs truncated by PDG (TXOP, TBTT, PPDU_duration based on rate, dyn_bw) */ 801 uint32_t mpdus_truncated; 802 /* Num MPDUs that was tried but didn't receive ACK or BA */ 803 uint32_t mpdus_ack_failed; 804 /* Num MPDUs that was dropped due to expiry (MSDU TTL). */ 805 uint32_t mpdus_expired; 806 /* Num MPDUs that was retried within seq_ctrl (MGMT/LEGACY) */ 807 uint32_t mpdus_seq_hw_retry; 808 /* Num of TQM acked cmds processed */ 809 uint32_t ack_tlv_proc; 810 /* coex_abort_mpdu_cnt valid. */ 811 uint32_t coex_abort_mpdu_cnt_valid; 812 /* coex_abort_mpdu_cnt from TX FES stats. */ 813 uint32_t coex_abort_mpdu_cnt; 814 /* Number of total PPDUs(DATA, MGMT, excludes selfgen) tried over the air (OTA) */ 815 uint32_t num_total_ppdus_tried_ota; 816 /* Number of data PPDUs tried over the air (OTA) */ 817 uint32_t num_data_ppdus_tried_ota; 818 /* Num Local control/mgmt frames (MSDUs) queued */ 819 uint32_t local_ctrl_mgmt_enqued; 820 /* local_ctrl_mgmt_freed: 821 * Num Local control/mgmt frames (MSDUs) done 822 * It includes all local ctrl/mgmt completions 823 * (acked, no ack, flush, TTL, etc) 824 */ 825 uint32_t local_ctrl_mgmt_freed; 826 /* Num Local data frames (MSDUs) queued */ 827 uint32_t local_data_enqued; 828 /* local_data_freed: 829 * Num Local data frames (MSDUs) done 830 * It includes all local data completions 831 * (acked, no ack, flush, TTL, etc) 832 */ 833 uint32_t local_data_freed; 834 835 /* Num MPDUs tried by SW */ 836 uint32_t mpdu_tried; 837 /* Num of waiting seq posted in isr completion handler */ 838 uint32_t isr_wait_seq_posted; 839 uint32_t tx_active_dur_us_low; 840 uint32_t tx_active_dur_us_high; 841 }; 842 843 struct cdp_htt_tx_pdev_stats_urrn_tlv_v { 844 struct cdp_htt_tlv_hdr tlv_hdr; 845 uint32_t urrn_stats[1]; /* HTT_TX_PDEV_MAX_URRN_STATS */ 846 }; 847 848 /* NOTE: Variable length TLV, use length spec to infer array size */ 849 struct cdp_htt_tx_pdev_stats_flush_tlv_v { 850 struct cdp_htt_tlv_hdr tlv_hdr; 851 uint32_t flush_errs[1]; /* HTT_TX_PDEV_MAX_FLUSH_REASON_STATS */ 852 }; 853 854 /* NOTE: Variable length TLV, use length spec to infer array size */ 855 struct cdp_htt_tx_pdev_stats_sifs_tlv_v { 856 struct cdp_htt_tlv_hdr tlv_hdr; 857 uint32_t sifs_status[1]; /* HTT_TX_PDEV_MAX_SIFS_BURST_STATS */ 858 }; 859 860 /* NOTE: Variable length TLV, use length spec to infer array size */ 861 struct cdp_htt_tx_pdev_stats_phy_err_tlv_v { 862 struct cdp_htt_tlv_hdr tlv_hdr; 863 uint32_t phy_errs[1]; /* HTT_TX_PDEV_MAX_PHY_ERR_STATS */ 864 }; 865 866 /* == RX PDEV/SOC STATS == */ 867 /* HTT_STATS_RX_SOC_FW_STATS_TAG */ 868 struct cdp_htt_rx_soc_fw_stats_tlv { 869 struct cdp_htt_tlv_hdr tlv_hdr; 870 /* Num Packets received on REO FW ring */ 871 uint32_t fw_reo_ring_data_msdu; 872 /* Num bc/mc packets indicated from fw to host */ 873 uint32_t fw_to_host_data_msdu_bcmc; 874 /* Num unicast packets indicated from fw to host */ 875 uint32_t fw_to_host_data_msdu_uc; 876 /* Num remote buf recycle from offload */ 877 uint32_t ofld_remote_data_buf_recycle_cnt; 878 /* Num remote free buf given to offload */ 879 uint32_t ofld_remote_free_buf_indication_cnt; 880 }; 881 882 struct cdp_htt_rx_soc_fw_refill_ring_num_refill_tlv_v { 883 struct cdp_htt_tlv_hdr tlv_hdr; 884 /* Num total buf refilled from refill ring */ 885 uint32_t refill_ring_num_refill[1]; /* HTT_RX_STATS_REFILL_MAX_RING */ 886 }; 887 888 struct cdp_htt_rx_pdev_fw_ring_mpdu_err_tlv_v { 889 struct cdp_htt_tlv_hdr tlv_hdr; 890 /* Num error MPDU for each RxDMA error type */ 891 uint32_t fw_ring_mpdu_err[1]; /* HTT_RX_STATS_RXDMA_MAX_ERR */ 892 }; 893 894 struct cdp_htt_rx_pdev_fw_mpdu_drop_tlv_v { 895 struct cdp_htt_tlv_hdr tlv_hdr; 896 /* Num MPDU dropped */ 897 uint32_t fw_mpdu_drop[1]; /* HTT_RX_STATS_FW_DROP_REASON_MAX */ 898 }; 899 900 #define HTT_STATS_PHY_ERR_MAX 43 901 902 struct cdp_htt_rx_pdev_fw_stats_phy_err_tlv { 903 struct cdp_htt_tlv_hdr tlv_hdr; 904 905 /* BIT [ 7 : 0] :- mac_id 906 * BIT [31 : 8] :- reserved 907 */ 908 uint32_t mac_id__word; 909 /* Num of phy err */ 910 uint32_t total_phy_err_cnt; 911 /* Counts of different types of phy errs 912 * The mapping of PHY error types to phy_err array elements is HW dependent. 913 * The only currently-supported mapping is shown below: 914 * 915 * 0 phyrx_err_phy_off Reception aborted due to receiving a PHY_OFF TLV 916 * 1 phyrx_err_synth_off 917 * 2 phyrx_err_ofdma_timing 918 * 3 phyrx_err_ofdma_signal_parity 919 * 4 phyrx_err_ofdma_rate_illegal 920 * 5 phyrx_err_ofdma_length_illegal 921 * 6 phyrx_err_ofdma_restart 922 * 7 phyrx_err_ofdma_service 923 * 8 phyrx_err_ppdu_ofdma_power_drop 924 * 9 phyrx_err_cck_blokker 925 * 10 phyrx_err_cck_timing 926 * 11 phyrx_err_cck_header_crc 927 * 12 phyrx_err_cck_rate_illegal 928 * 13 phyrx_err_cck_length_illegal 929 * 14 phyrx_err_cck_restart 930 * 15 phyrx_err_cck_service 931 * 16 phyrx_err_cck_power_drop 932 * 17 phyrx_err_ht_crc_err 933 * 18 phyrx_err_ht_length_illegal 934 * 19 phyrx_err_ht_rate_illegal 935 * 20 phyrx_err_ht_zlf 936 * 21 phyrx_err_false_radar_ext 937 * 22 phyrx_err_green_field 938 * 23 phyrx_err_bw_gt_dyn_bw 939 * 24 phyrx_err_leg_ht_mismatch 940 * 25 phyrx_err_vht_crc_error 941 * 26 phyrx_err_vht_siga_unsupported 942 * 27 phyrx_err_vht_lsig_len_invalid 943 * 28 phyrx_err_vht_ndp_or_zlf 944 * 29 phyrx_err_vht_nsym_lt_zero 945 * 30 phyrx_err_vht_rx_extra_symbol_mismatch 946 * 31 phyrx_err_vht_rx_skip_group_id0 947 * 32 phyrx_err_vht_rx_skip_group_id1to62 948 * 33 phyrx_err_vht_rx_skip_group_id63 949 * 34 phyrx_err_ofdm_ldpc_decoder_disabled 950 * 35 phyrx_err_defer_nap 951 * 36 phyrx_err_fdomain_timeout 952 * 37 phyrx_err_lsig_rel_check 953 * 38 phyrx_err_bt_collision 954 * 39 phyrx_err_unsupported_mu_feedback 955 * 40 phyrx_err_ppdu_tx_interrupt_rx 956 * 41 phyrx_err_unsupported_cbf 957 * 42 phyrx_err_other 958 */ 959 uint32_t phy_err[HTT_STATS_PHY_ERR_MAX]; 960 }; 961 962 struct cdp_htt_rx_soc_fw_refill_ring_empty_tlv_v { 963 struct cdp_htt_tlv_hdr tlv_hdr; 964 /* Num ring empty encountered */ 965 uint32_t refill_ring_empty_cnt[1]; /* HTT_RX_STATS_REFILL_MAX_RING */ 966 }; 967 968 struct cdp_htt_tx_pdev_stats { 969 struct cdp_htt_tx_pdev_stats_cmn_tlv cmn_tlv; 970 struct cdp_htt_tx_pdev_stats_urrn_tlv_v underrun_tlv; 971 struct cdp_htt_tx_pdev_stats_sifs_tlv_v sifs_tlv; 972 struct cdp_htt_tx_pdev_stats_flush_tlv_v flush_tlv; 973 struct cdp_htt_tx_pdev_stats_phy_err_tlv_v phy_err_tlv; 974 }; 975 976 struct cdp_htt_rx_soc_stats_t { 977 struct cdp_htt_rx_soc_fw_stats_tlv fw_tlv; 978 struct cdp_htt_rx_soc_fw_refill_ring_empty_tlv_v fw_refill_ring_empty_tlv; 979 struct cdp_htt_rx_soc_fw_refill_ring_num_refill_tlv_v fw_refill_ring_num_refill_tlv; 980 }; 981 982 struct cdp_htt_rx_pdev_stats { 983 struct cdp_htt_rx_soc_stats_t soc_stats; 984 struct cdp_htt_rx_pdev_fw_stats_tlv fw_stats_tlv; 985 struct cdp_htt_rx_pdev_fw_ring_mpdu_err_tlv_v fw_ring_mpdu_err_tlv; 986 struct cdp_htt_rx_pdev_fw_mpdu_drop_tlv_v fw_ring_mpdu_drop; 987 struct cdp_htt_rx_pdev_fw_stats_phy_err_tlv fw_stats_phy_err_tlv; 988 }; 989 990 /* struct cdp_pdev_stats - pdev stats 991 * @msdu_not_done: packets dropped because msdu done bit not set 992 * @mec:Multicast Echo check 993 * @mesh_filter: Mesh Filtered packets 994 * @mon_rx_drop: packets dropped on monitor vap 995 * @pkts: total packets replenished 996 * @rxdma_err: rxdma errors for replenished 997 * @nbuf_alloc_fail: nbuf alloc failed 998 * @map_err: Mapping failure 999 * @x86_fail: x86 failures 1000 * @low_thresh_intrs: low threshold interrupts 1001 * @rx_raw_pkts: Rx Raw Packets 1002 * @mesh_mem_alloc: Mesh Rx Stats Alloc fail 1003 * @tso_desc_cnt: TSO descriptors 1004 * @sg_desc_cnt: SG Descriptors 1005 * @desc_alloc_fail: desc alloc failed errors 1006 * @ip_csum_err: ip checksum errors 1007 * @tcp_udp_csum_err: tcp/udp checksum errors 1008 * @buf_freelist: buffers added back in freelist 1009 * @tx_i: Tx Ingress stats 1010 * @tx:CDP Tx Stats 1011 * @rx: CDP Rx Stats 1012 * @tx_comp_histogram: Number of Tx completions per interrupt 1013 * @rx_ind_histogram: Number of Rx ring descriptors reaped per interrupt 1014 * @ppdu_stats_counter: ppdu stats counter 1015 * @htt_tx_pdev_stats: htt pdev stats for tx 1016 * @htt_rx_pdev_stats: htt pdev stats for rx 1017 */ 1018 struct cdp_pdev_stats { 1019 struct { 1020 uint32_t msdu_not_done; 1021 uint32_t mec; 1022 uint32_t mesh_filter; 1023 uint32_t mon_rx_drop; 1024 } dropped; 1025 1026 struct { 1027 struct cdp_pkt_info pkts; 1028 uint32_t rxdma_err; 1029 uint32_t nbuf_alloc_fail; 1030 uint32_t map_err; 1031 uint32_t x86_fail; 1032 uint32_t low_thresh_intrs; 1033 } replenish; 1034 1035 uint32_t rx_raw_pkts; 1036 uint32_t mesh_mem_alloc; 1037 uint32_t tso_desc_cnt; 1038 uint32_t sg_desc_cnt; 1039 1040 /* Rx errors */ 1041 struct { 1042 uint32_t desc_alloc_fail; 1043 uint32_t ip_csum_err; 1044 uint32_t tcp_udp_csum_err; 1045 } err; 1046 1047 uint32_t buf_freelist; 1048 struct cdp_tx_ingress_stats tx_i; 1049 struct cdp_tx_stats tx; 1050 struct cdp_rx_stats rx; 1051 struct cdp_hist_tx_comp tx_comp_histogram; 1052 struct cdp_hist_rx_ind rx_ind_histogram; 1053 uint64_t ppdu_stats_counter[CDP_PPDU_STATS_MAX_TAG]; 1054 1055 struct cdp_htt_tx_pdev_stats htt_tx_pdev_stats; 1056 struct cdp_htt_rx_pdev_stats htt_rx_pdev_stats; 1057 }; 1058 1059 #ifndef BIG_ENDIAN_HOST 1060 typedef struct { 1061 uint64_t pkts; 1062 uint64_t bytes; 1063 } ol_txrx_stats_elem; 1064 #else 1065 struct ol_txrx_elem_t { 1066 uint64_t pkts; 1067 uint64_t bytes; 1068 }; 1069 typedef struct ol_txrx_elem_t ol_txrx_stats_elem; 1070 #endif 1071 1072 #ifndef CONFIG_MCL 1073 /** 1074 * @brief data stats published by the host txrx layer 1075 */ 1076 struct ol_txrx_stats { 1077 struct { 1078 /* MSDUs received from the stack */ 1079 ol_txrx_stats_elem from_stack; 1080 /* MSDUs successfully sent across the WLAN */ 1081 ol_txrx_stats_elem delivered; 1082 struct { 1083 /* MSDUs that the host did not accept */ 1084 ol_txrx_stats_elem host_reject; 1085 /* MSDUs which could not be downloaded to the target */ 1086 ol_txrx_stats_elem download_fail; 1087 /* 1088 * MSDUs which the target discarded 1089 * (lack of mem or old age) 1090 */ 1091 ol_txrx_stats_elem target_discard; 1092 /* 1093 * MSDUs which the target sent but couldn't get 1094 * an ack for 1095 */ 1096 ol_txrx_stats_elem no_ack; 1097 /* MSDUs dropped in NSS-FW */ 1098 ol_txrx_stats_elem nss_ol_dropped; 1099 } dropped; 1100 u_int32_t desc_in_use; 1101 u_int32_t desc_alloc_fails; 1102 u_int32_t ce_ring_full; 1103 u_int32_t dma_map_error; 1104 /* MSDUs given to the txrx layer by the management stack */ 1105 ol_txrx_stats_elem mgmt; 1106 struct { 1107 /* TSO applied jumbo packets received from NW Stack */ 1108 ol_txrx_stats_elem tso_pkts; 1109 /* Non - TSO packets */ 1110 ol_txrx_stats_elem non_tso_pkts; 1111 /* TSO packets : Dropped during TCP segmentation*/ 1112 ol_txrx_stats_elem tso_dropped; 1113 /* TSO Descriptors */ 1114 u_int32_t tso_desc_cnt; 1115 } tso; 1116 1117 struct { 1118 /* TSO applied jumbo packets received from NW Stack */ 1119 ol_txrx_stats_elem sg_pkts; 1120 /* Non - TSO packets */ 1121 ol_txrx_stats_elem non_sg_pkts; 1122 /* TSO packets : Dropped during TCP segmentation*/ 1123 ol_txrx_stats_elem sg_dropped; 1124 /* TSO Descriptors */ 1125 u_int32_t sg_desc_cnt; 1126 } sg; 1127 struct { 1128 /* packets enqueued for flow control */ 1129 u_int32_t fl_ctrl_enqueue; 1130 /* packets discarded for flow control is full */ 1131 u_int32_t fl_ctrl_discard; 1132 /* packets sent to CE without flow control */ 1133 u_int32_t fl_ctrl_avoid; 1134 } fl_ctrl; 1135 } tx; 1136 struct { 1137 /* MSDUs given to the OS shim */ 1138 ol_txrx_stats_elem delivered; 1139 /* MSDUs forwarded from the rx path to the tx path */ 1140 ol_txrx_stats_elem forwarded; 1141 /* MSDUs in which ipv4 chksum error detected by HW */ 1142 ol_txrx_stats_elem ipv4_cksum_err; 1143 /* MSDUs in which tcp chksum error detected by HW */ 1144 ol_txrx_stats_elem tcp_ipv4_cksum_err; 1145 /* MSDUs in which udp chksum error detected by HW */ 1146 ol_txrx_stats_elem udp_ipv4_cksum_err; 1147 /* MSDUs in which tcp V6 chksum error detected by HW */ 1148 ol_txrx_stats_elem tcp_ipv6_cksum_err; 1149 /* MSDUs in which UDP V6 chksum error detected by HW */ 1150 ol_txrx_stats_elem udp_ipv6_cksum_err; 1151 } rx; 1152 struct { 1153 /* Number of mcast received for conversion */ 1154 u_int32_t num_me_rcvd; 1155 /* Number of unicast sent as part of mcast conversion */ 1156 u_int32_t num_me_ucast; 1157 /* Number of multicast frames dropped due to dma_map failure */ 1158 u_int32_t num_me_dropped_m; 1159 /* 1160 * Number of multicast frames dropped due to allocation 1161 * failure 1162 */ 1163 u_int32_t num_me_dropped_a; 1164 /* Number of multicast frames dropped due to internal failure */ 1165 u_int32_t num_me_dropped_i; 1166 /* Number of me buf currently in use */ 1167 u_int32_t num_me_buf; 1168 /* Number of me buf frames to self mac address */ 1169 u_int32_t num_me_dropped_s; 1170 /* Number of me buf in use in non pool based allocation*/ 1171 u_int32_t num_me_nonpool; 1172 /* Number of me buf allocated using non pool based allocation*/ 1173 u_int32_t num_me_nonpool_count; 1174 } mcast_enhance; 1175 }; 1176 1177 struct ol_ath_dbg_rx_rssi { 1178 uint8_t rx_rssi_pri20; 1179 uint8_t rx_rssi_sec20; 1180 uint8_t rx_rssi_sec40; 1181 uint8_t rx_rssi_sec80; 1182 }; 1183 1184 struct ol_ath_radiostats { 1185 uint64_t tx_beacon; 1186 uint32_t tx_buf_count; 1187 int32_t tx_mgmt; 1188 int32_t rx_mgmt; 1189 uint32_t rx_num_mgmt; 1190 uint32_t rx_num_ctl; 1191 uint32_t tx_rssi; 1192 uint32_t rx_rssi_comb; 1193 struct ol_ath_dbg_rx_rssi rx_rssi_chain0; 1194 struct ol_ath_dbg_rx_rssi rx_rssi_chain1; 1195 struct ol_ath_dbg_rx_rssi rx_rssi_chain2; 1196 struct ol_ath_dbg_rx_rssi rx_rssi_chain3; 1197 uint32_t rx_overrun; 1198 uint32_t rx_phyerr; 1199 uint32_t ackRcvBad; 1200 uint32_t rtsBad; 1201 uint32_t rtsGood; 1202 uint32_t fcsBad; 1203 uint32_t noBeacons; 1204 uint32_t mib_int_count; 1205 uint32_t rx_looplimit_start; 1206 uint32_t rx_looplimit_end; 1207 uint8_t ap_stats_tx_cal_enable; 1208 uint8_t self_bss_util; 1209 uint8_t obss_util; 1210 uint8_t ap_rx_util; 1211 uint8_t free_medium; 1212 uint8_t ap_tx_util; 1213 uint8_t obss_rx_util; 1214 uint8_t non_wifi_util; 1215 uint32_t tgt_asserts; 1216 int16_t chan_nf; 1217 int16_t chan_nf_sec80; 1218 uint64_t wmi_tx_mgmt; 1219 uint64_t wmi_tx_mgmt_completions; 1220 uint32_t wmi_tx_mgmt_completion_err; 1221 uint32_t peer_delete_req; 1222 uint32_t peer_delete_resp; 1223 uint32_t rx_mgmt_rssi_drop; 1224 uint32_t tx_frame_count; 1225 uint32_t rx_frame_count; 1226 uint32_t rx_clear_count; 1227 uint32_t cycle_count; 1228 uint32_t phy_err_count; 1229 uint32_t chan_tx_pwr; 1230 uint32_t be_nobuf; 1231 uint32_t tx_packets; 1232 uint32_t rx_packets; 1233 uint32_t tx_num_data; 1234 uint32_t rx_num_data; 1235 uint32_t tx_mcs[10]; 1236 uint32_t rx_mcs[10]; 1237 uint64_t rx_bytes; 1238 uint64_t tx_bytes; 1239 uint32_t tx_compaggr; 1240 uint32_t rx_aggr; 1241 uint32_t tx_bawadv; 1242 uint32_t tx_compunaggr; 1243 uint32_t rx_badcrypt; 1244 uint32_t rx_badmic; 1245 uint32_t rx_crcerr; 1246 uint32_t rx_last_msdu_unset_cnt; 1247 uint32_t rx_data_bytes; 1248 uint32_t tx_retries; 1249 }; 1250 1251 /* 1252 * Enumeration of PDEV Configuration parameter 1253 */ 1254 enum _ol_ath_param_t { 1255 OL_ATH_PARAM_TXCHAINMASK = 1, 1256 OL_ATH_PARAM_RXCHAINMASK = 2, 1257 OL_ATH_PARAM_AMPDU = 6, 1258 OL_ATH_PARAM_AMPDU_LIMIT = 7, 1259 OL_ATH_PARAM_AMPDU_SUBFRAMES = 8, 1260 OL_ATH_PARAM_TXPOWER_LIMIT2G = 12, 1261 OL_ATH_PARAM_TXPOWER_LIMIT5G = 13, 1262 OL_ATH_PARAM_LDPC = 32, 1263 OL_ATH_PARAM_VOW_EXT_STATS = 45, 1264 OL_ATH_PARAM_DYN_TX_CHAINMASK = 73, 1265 OL_ATH_PARAM_BURST_ENABLE = 77, 1266 OL_ATH_PARAM_BURST_DUR = 78, 1267 OL_ATH_PARAM_BCN_BURST = 80, 1268 OL_ATH_PARAM_DCS = 82, 1269 #if UMAC_SUPPORT_PERIODIC_PERFSTATS 1270 OL_ATH_PARAM_PRDPERFSTAT_THRPUT_ENAB = 83, 1271 OL_ATH_PARAM_PRDPERFSTAT_THRPUT_WIN = 84, 1272 OL_ATH_PARAM_PRDPERFSTAT_THRPUT = 85, 1273 OL_ATH_PARAM_PRDPERFSTAT_PER_ENAB = 86, 1274 OL_ATH_PARAM_PRDPERFSTAT_PER_WIN = 87, 1275 OL_ATH_PARAM_PRDPERFSTAT_PER = 88, 1276 #endif 1277 /* UMAC_SUPPORT_PERIODIC_PERFSTATS */ 1278 OL_ATH_PARAM_TOTAL_PER = 89, 1279 /* set manual rate for rts frame */ 1280 OL_ATH_PARAM_RTS_CTS_RATE = 92, 1281 /* co channel interference threshold level */ 1282 OL_ATH_PARAM_DCS_COCH_THR = 93, 1283 /* transmit error threshold */ 1284 OL_ATH_PARAM_DCS_TXERR_THR = 94, 1285 /* phy error threshold */ 1286 OL_ATH_PARAM_DCS_PHYERR_THR = 95, 1287 /* 1288 * The IOCTL number is 114, it is made 114, inorder to make the IOCTL 1289 * number same as Direct-attach IOCTL. 1290 * Please, don't change number. This IOCTL gets the Interface code path 1291 * it should be either DIRECT-ATTACH or OFF-LOAD. 1292 */ 1293 OL_ATH_PARAM_GET_IF_ID = 114, 1294 /* Enable Acs back Ground Channel selection Scan timer in AP mode*/ 1295 OL_ATH_PARAM_ACS_ENABLE_BK_SCANTIMEREN = 118, 1296 /* ACS scan timer value in Seconds */ 1297 OL_ATH_PARAM_ACS_SCANTIME = 119, 1298 /* Negligence Delta RSSI between two channel */ 1299 OL_ATH_PARAM_ACS_RSSIVAR = 120, 1300 /* Negligence Delta Channel load between two channel*/ 1301 OL_ATH_PARAM_ACS_CHLOADVAR = 121, 1302 /* Enable Limited OBSS check */ 1303 OL_ATH_PARAM_ACS_LIMITEDOBSS = 122, 1304 /* Acs control flag for Scan timer */ 1305 OL_ATH_PARAM_ACS_CTRLFLAG = 123, 1306 /* Acs Run time Debug level*/ 1307 OL_ATH_PARAM_ACS_DEBUGTRACE = 124, 1308 OL_ATH_PARAM_SET_FW_HANG_ID = 137, 1309 /* Radio type 1:11ac 0:11abgn */ 1310 OL_ATH_PARAM_RADIO_TYPE = 138, 1311 OL_ATH_PARAM_IGMPMLD_OVERRIDE, /* IGMP/MLD packet override */ 1312 OL_ATH_PARAM_IGMPMLD_TID, /* IGMP/MLD packet TID no */ 1313 OL_ATH_PARAM_ARPDHCP_AC_OVERRIDE, 1314 OL_ATH_PARAM_NON_AGG_SW_RETRY_TH, 1315 OL_ATH_PARAM_AGG_SW_RETRY_TH, 1316 /* Dont change this number it as per sync with DA 1317 Blocking certian channel from ic channel list */ 1318 OL_ATH_PARAM_DISABLE_DFS = 144, 1319 OL_ATH_PARAM_ENABLE_AMSDU = 145, 1320 OL_ATH_PARAM_ENABLE_AMPDU = 146, 1321 OL_ATH_PARAM_STA_KICKOUT_TH, 1322 OL_ATH_PARAM_WLAN_PROF_ENABLE, 1323 OL_ATH_PARAM_LTR_ENABLE, 1324 OL_ATH_PARAM_LTR_AC_LATENCY_BE = 150, 1325 OL_ATH_PARAM_LTR_AC_LATENCY_BK, 1326 OL_ATH_PARAM_LTR_AC_LATENCY_VI, 1327 OL_ATH_PARAM_LTR_AC_LATENCY_VO, 1328 OL_ATH_PARAM_LTR_AC_LATENCY_TIMEOUT, 1329 OL_ATH_PARAM_LTR_TX_ACTIVITY_TIMEOUT = 155, 1330 OL_ATH_PARAM_LTR_SLEEP_OVERRIDE, 1331 OL_ATH_PARAM_LTR_RX_OVERRIDE, 1332 OL_ATH_PARAM_L1SS_ENABLE, 1333 OL_ATH_PARAM_DSLEEP_ENABLE, 1334 /* radar error threshold */ 1335 OL_ATH_PARAM_DCS_RADAR_ERR_THR = 160, 1336 /* Tx channel utilization due to AP's tx and rx */ 1337 OL_ATH_PARAM_DCS_USERMAX_CU_THR, 1338 /* interference detection threshold */ 1339 OL_ATH_PARAM_DCS_INTR_DETECT_THR, 1340 /* sampling window, default 10secs */ 1341 OL_ATH_PARAM_DCS_SAMPLE_WINDOW, 1342 /* debug logs enable/disable */ 1343 OL_ATH_PARAM_DCS_DEBUG, 1344 OL_ATH_PARAM_ANI_ENABLE = 165, 1345 OL_ATH_PARAM_ANI_POLL_PERIOD, 1346 OL_ATH_PARAM_ANI_LISTEN_PERIOD, 1347 OL_ATH_PARAM_ANI_OFDM_LEVEL, 1348 OL_ATH_PARAM_ANI_CCK_LEVEL, 1349 OL_ATH_PARAM_DSCP_TID_MAP = 170, 1350 OL_ATH_PARAM_TXPOWER_SCALE, 1351 /* Phy error penalty */ 1352 OL_ATH_PARAM_DCS_PHYERR_PENALTY, 1353 #if ATH_SUPPORT_DSCP_OVERRIDE 1354 /* set/get TID for sending HMMC packets */ 1355 OL_ATH_PARAM_HMMC_DSCP_TID_MAP, 1356 /* set/get DSCP mapping override */ 1357 OL_ATH_PARAM_DSCP_OVERRIDE, 1358 /* set/get HMMC-DSCP mapping override */ 1359 OL_ATH_PARAM_HMMC_DSCP_OVERRIDE = 175, 1360 #endif 1361 #if ATH_RX_LOOPLIMIT_TIMER 1362 OL_ATH_PARAM_LOOPLIMIT_NUM, 1363 #endif 1364 OL_ATH_PARAM_ANTENNA_GAIN_2G, 1365 OL_ATH_PARAM_ANTENNA_GAIN_5G, 1366 OL_ATH_PARAM_RX_FILTER, 1367 #if ATH_SUPPORT_HYFI_ENHANCEMENTS 1368 OL_ATH_PARAM_BUFF_THRESH = 180, 1369 OL_ATH_PARAM_BLK_REPORT_FLOOD, 1370 OL_ATH_PARAM_DROP_STA_QUERY, 1371 #endif 1372 OL_ATH_PARAM_QBOOST, 1373 OL_ATH_PARAM_SIFS_FRMTYPE, 1374 OL_ATH_PARAM_SIFS_UAPSD = 185, 1375 OL_ATH_PARAM_FW_RECOVERY_ID, 1376 OL_ATH_PARAM_RESET_OL_STATS, 1377 OL_ATH_PARAM_AGGR_BURST, 1378 /* Number of deauth sent in consecutive rx_peer_invalid */ 1379 OL_ATH_PARAM_DEAUTH_COUNT, 1380 OL_ATH_PARAM_BLOCK_INTERBSS = 190, 1381 /* Firmware reset control for Bmiss / timeout / reset */ 1382 OL_ATH_PARAM_FW_DISABLE_RESET, 1383 OL_ATH_PARAM_MSDU_TTL, 1384 OL_ATH_PARAM_PPDU_DURATION, 1385 OL_ATH_PARAM_SET_TXBF_SND_PERIOD, 1386 OL_ATH_PARAM_ALLOW_PROMISC = 195, 1387 OL_ATH_PARAM_BURST_MODE, 1388 OL_ATH_PARAM_DYN_GROUPING, 1389 OL_ATH_PARAM_DPD_ENABLE, 1390 OL_ATH_PARAM_DBGLOG_RATELIM, 1391 /* firmware should intimate us about ps state change for node */ 1392 OL_ATH_PARAM_PS_STATE_CHANGE = 200, 1393 OL_ATH_PARAM_MCAST_BCAST_ECHO, 1394 /* OBSS RSSI threshold for 20/40 coexistence */ 1395 OL_ATH_PARAM_OBSS_RSSI_THRESHOLD, 1396 /* Link/node RX RSSI threshold for 20/40 coexistence */ 1397 OL_ATH_PARAM_OBSS_RX_RSSI_THRESHOLD, 1398 #if ATH_CHANNEL_BLOCKING 1399 OL_ATH_PARAM_ACS_BLOCK_MODE = 205, 1400 #endif 1401 OL_ATH_PARAM_ACS_TX_POWER_OPTION, 1402 /* 1403 * Default Antenna Polarization MSB 8 bits (24:31) specifying 1404 * enable/disable ; LSB 24 bits (0:23) antenna mask value 1405 */ 1406 OL_ATH_PARAM_ANT_POLARIZATION, 1407 /* rate limit mute type error prints */ 1408 OL_ATH_PARAM_PRINT_RATE_LIMIT, 1409 OL_ATH_PARAM_PDEV_RESET, /* Reset FW PDEV*/ 1410 /* Do not crash host when target assert happened*/ 1411 OL_ATH_PARAM_FW_DUMP_NO_HOST_CRASH = 210, 1412 /* Consider OBSS non-erp to change to long slot*/ 1413 OL_ATH_PARAM_CONSIDER_OBSS_NON_ERP_LONG_SLOT = 211, 1414 OL_ATH_PARAM_STATS_FC, 1415 OL_ATH_PARAM_QFLUSHINTERVAL, 1416 OL_ATH_PARAM_TOTAL_Q_SIZE, 1417 OL_ATH_PARAM_TOTAL_Q_SIZE_RANGE0, 1418 OL_ATH_PARAM_TOTAL_Q_SIZE_RANGE1, 1419 OL_ATH_PARAM_TOTAL_Q_SIZE_RANGE2, 1420 OL_ATH_PARAM_TOTAL_Q_SIZE_RANGE3, 1421 OL_ATH_PARAM_MIN_THRESHOLD, 1422 OL_ATH_PARAM_MAX_Q_LIMIT, 1423 OL_ATH_PARAM_MIN_Q_LIMIT, 1424 OL_ATH_PARAM_CONG_CTRL_TIMER_INTV, 1425 OL_ATH_PARAM_STATS_TIMER_INTV, 1426 OL_ATH_PARAM_ROTTING_TIMER_INTV, 1427 OL_ATH_PARAM_LATENCY_PROFILE, 1428 OL_ATH_PARAM_HOSTQ_DUMP, 1429 OL_ATH_PARAM_TIDQ_MAP, 1430 OL_ATH_PARAM_DBG_ARP_SRC_ADDR, /* ARP DEBUG source address*/ 1431 OL_ATH_PARAM_DBG_ARP_DST_ADDR, /* ARP DEBUG destination address*/ 1432 OL_ATH_PARAM_ARP_DBG_CONF, /* ARP debug configuration */ 1433 OL_ATH_PARAM_DISABLE_STA_VAP_AMSDU, /* Disable AMSDU for station vap */ 1434 #if ATH_SUPPORT_DFS && ATH_SUPPORT_STA_DFS 1435 OL_ATH_PARAM_STADFS_ENABLE = 300, /* STA DFS is enabled or not */ 1436 #endif 1437 #if QCA_AIRTIME_FAIRNESS 1438 OL_ATH_PARAM_ATF_STRICT_SCHED = 301, 1439 OL_ATH_PARAM_ATF_GROUP_POLICY = 302, 1440 #endif 1441 #if DBDC_REPEATER_SUPPORT 1442 OL_ATH_PARAM_PRIMARY_RADIO, 1443 OL_ATH_PARAM_DBDC_ENABLE, 1444 #endif 1445 OL_ATH_PARAM_TXPOWER_DBSCALE, 1446 OL_ATH_PARAM_CTL_POWER_SCALE, 1447 #if QCA_AIRTIME_FAIRNESS 1448 OL_ATH_PARAM_ATF_OBSS_SCHED = 307, 1449 OL_ATH_PARAM_ATF_OBSS_SCALE = 308, 1450 #endif 1451 OL_ATH_PARAM_PHY_OFDM_ERR = 309, 1452 OL_ATH_PARAM_PHY_CCK_ERR = 310, 1453 OL_ATH_PARAM_FCS_ERR = 311, 1454 OL_ATH_PARAM_CHAN_UTIL = 312, 1455 #if DBDC_REPEATER_SUPPORT 1456 OL_ATH_PARAM_CLIENT_MCAST, 1457 #endif 1458 OL_ATH_PARAM_EMIWAR_80P80 = 314, 1459 OL_ATH_PARAM_BATCHMODE = 315, 1460 OL_ATH_PARAM_PACK_AGGR_DELAY = 316, 1461 #if UMAC_SUPPORT_ACFG 1462 OL_ATH_PARAM_DIAG_ENABLE = 317, 1463 #endif 1464 #if ATH_SUPPORT_VAP_QOS 1465 OL_ATH_PARAM_VAP_QOS = 318, 1466 #endif 1467 OL_ATH_PARAM_CHAN_STATS_TH = 319, 1468 /* Passive scan is enabled or disabled */ 1469 OL_ATH_PARAM_PASSIVE_SCAN_ENABLE = 320, 1470 OL_ATH_MIN_RSSI_ENABLE = 321, 1471 OL_ATH_MIN_RSSI = 322, 1472 OL_ATH_PARAM_ACS_2G_ALLCHAN = 323, 1473 #if DBDC_REPEATER_SUPPORT 1474 OL_ATH_PARAM_DELAY_STAVAP_UP = 324, 1475 #endif 1476 /* It is used to set the channel switch options */ 1477 OL_ATH_PARAM_CHANSWITCH_OPTIONS = 327, 1478 OL_ATH_BTCOEX_ENABLE = 328, 1479 OL_ATH_BTCOEX_WL_PRIORITY = 329, 1480 OL_ATH_PARAM_TID_OVERRIDE_QUEUE_MAPPING = 330, 1481 OL_ATH_PARAM_CAL_VER_CHECK = 331, 1482 OL_ATH_PARAM_NO_VLAN = 332, 1483 OL_ATH_PARAM_CCA_THRESHOLD = 333, 1484 OL_ATH_PARAM_ATF_LOGGING = 334, 1485 OL_ATH_PARAM_STRICT_DOTH = 335, 1486 OL_ATH_PARAM_DISCONNECTION_TIMEOUT = 336, 1487 OL_ATH_PARAM_RECONFIGURATION_TIMEOUT = 337, 1488 OL_ATH_PARAM_CHANNEL_SWITCH_COUNT = 338, 1489 OL_ATH_PARAM_ALWAYS_PRIMARY = 339, 1490 OL_ATH_PARAM_FAST_LANE = 340, 1491 OL_ATH_GET_BTCOEX_DUTY_CYCLE = 341, 1492 OL_ATH_PARAM_SECONDARY_OFFSET_IE = 342, 1493 OL_ATH_PARAM_WIDE_BAND_SUB_ELEMENT = 343, 1494 OL_ATH_PARAM_PREFERRED_UPLINK = 344, 1495 OL_ATH_PARAM_PRECAC_ENABLE = 345, 1496 OL_ATH_PARAM_PRECAC_TIMEOUT = 346, 1497 OL_ATH_COEX_VER_CFG = 347, 1498 OL_ATH_PARAM_DUMP_TARGET = 348, 1499 OL_ATH_PARAM_PDEV_TO_REO_DEST = 349, 1500 OL_ATH_PARAM_DUMP_CHAINMASK_TABLES = 350, 1501 OL_ATH_PARAM_DUMP_OBJECTS = 351, 1502 OL_ATH_PARAM_ACS_SRLOADVAR = 352, 1503 OL_ATH_PARAM_MGMT_RSSI_THRESHOLD = 353, 1504 OL_ATH_PARAM_EXT_NSS_CAPABLE = 354, 1505 OL_ATH_PARAM_MGMT_PDEV_STATS_TIMER = 355, 1506 OL_ATH_PARAM_TXACKTIMEOUT = 356, 1507 OL_ATH_PARAM_ICM_ACTIVE = 357, 1508 OL_ATH_PARAM_NOMINAL_NOISEFLOOR = 358, 1509 OL_ATH_PARAM_CHAN_INFO = 359, 1510 OL_ATH_PARAM_ACS_RANK = 360, 1511 OL_ATH_PARAM_TXCHAINSOFT = 361, 1512 OL_ATH_PARAM_WIDE_BAND_SCAN = 362, 1513 OL_ATH_PARAM_CCK_TX_ENABLE = 363, 1514 OL_ATH_PARAM_PAPI_ENABLE = 364, 1515 OL_ATH_PARAM_ISOLATION = 365, 1516 OL_ATH_PARAM_MAX_CLIENTS_PER_RADIO = 366, 1517 #if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST) 1518 OL_ATH_PARAM_DFS_HOST_WAIT_TIMEOUT = 367, 1519 #endif 1520 OL_ATH_PARAM_NF_THRESH = 368, 1521 #ifdef OL_ATH_SMART_LOGGING 1522 OL_ATH_PARAM_SMARTLOG_ENABLE = 369, 1523 OL_ATH_PARAM_SMARTLOG_FATAL_EVENT = 370, 1524 OL_ATH_PARAM_SMARTLOG_SKB_SZ = 371, 1525 OL_ATH_PARAM_SMARTLOG_P1PINGFAIL = 372, 1526 #endif /* OL_ATH_SMART_LOGGING */ 1527 #ifdef WLAN_DFS_PRECAC_AUTO_CHAN_SUPPORT 1528 OL_ATH_PARAM_PRECAC_INTER_CHANNEL = 373, 1529 OL_ATH_PARAM_PRECAC_CHAN_STATE = 374, 1530 #endif 1531 OL_ATH_PARAM_DBR_RING_STATUS = 375, 1532 #ifdef QCN_ESP_IE 1533 OL_ATH_PARAM_ESP_PERIODICITY = 376, 1534 OL_ATH_PARAM_ESP_AIRTIME = 377, 1535 OL_ATH_PARAM_ESP_PPDU_DURATION = 378, 1536 OL_ATH_PARAM_ESP_BA_WINDOW = 379, 1537 #endif /* QCN_ESP_IE */ 1538 1539 OL_ATH_PARAM_CBS = 380, 1540 OL_ATH_PARAM_DCS_SIM = 381, 1541 OL_ATH_PARAM_CBS_DWELL_SPLIT_TIME = 382, 1542 OL_ATH_PARAM_CBS_DWELL_REST_TIME = 383, 1543 OL_ATH_PARAM_CBS_WAIT_TIME = 384, 1544 OL_ATH_PARAM_CBS_REST_TIME = 385, 1545 OL_ATH_PARAM_CBS_CSA = 386, 1546 OL_ATH_PARAM_TWICE_ANTENNA_GAIN = 387, 1547 OL_ATH_PARAM_ACTIVITY_FACTOR = 388, 1548 OL_ATH_PARAM_CHAN_AP_RX_UTIL = 389, 1549 OL_ATH_PARAM_CHAN_FREE = 390, 1550 OL_ATH_PARAM_CHAN_AP_TX_UTIL = 391, 1551 OL_ATH_PARAM_CHAN_OBSS_RX_UTIL = 392, 1552 OL_ATH_PARAM_CHAN_NON_WIFI = 393, 1553 #if PEER_FLOW_CONTROL 1554 OL_ATH_PARAM_VIDEO_STATS_FC = 394, 1555 OL_ATH_PARAM_VIDEO_DELAY_STATS_FC = 395, 1556 #endif 1557 OL_ATH_PARAM_ENABLE_PEER_RETRY_STATS = 396, 1558 OL_ATH_PARAM_HE_UL_TRIG_INT = 397, 1559 OL_ATH_PARAM_DFS_NOL_SUBCHANNEL_MARKING = 398, 1560 /* 1561 * Get the band that is tuned for low, high, 1562 * full band freq range or it's 2g 1563 */ 1564 OL_ATH_PARAM_BAND_INFO = 399, 1565 OL_ATH_PARAM_BW_REDUCE = 400, 1566 /* Enable/disable Spatial Reuse */ 1567 OL_ATH_PARAM_HE_SR = 401, 1568 }; 1569 1570 /* Enumeration of PDEV Configuration parameter */ 1571 enum _ol_hal_param_t { 1572 OL_HAL_CONFIG_DMA_BEACON_RESPONSE_TIME = 0 1573 }; 1574 #endif 1575 1576 /* Bitmasks for stats that can block */ 1577 #define EXT_TXRX_FW_STATS 0x0001 1578 #endif 1579