.. | .. |
---|
5 | 5 | * |
---|
6 | 6 | * GPL LICENSE SUMMARY |
---|
7 | 7 | * |
---|
8 | | - * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. |
---|
9 | 8 | * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH |
---|
10 | 9 | * Copyright(c) 2016 - 2017 Intel Deutschland GmbH |
---|
| 10 | + * Copyright(c) 2012 - 2014, 2018, 2020 Intel Corporation |
---|
11 | 11 | * |
---|
12 | 12 | * This program is free software; you can redistribute it and/or modify |
---|
13 | 13 | * it under the terms of version 2 of the GNU General Public License as |
---|
.. | .. |
---|
27 | 27 | * |
---|
28 | 28 | * BSD LICENSE |
---|
29 | 29 | * |
---|
30 | | - * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. |
---|
31 | 30 | * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH |
---|
| 31 | + * Copyright(c) 2012 - 2014, 2018, 2020 Intel Corporation |
---|
32 | 32 | * All rights reserved. |
---|
33 | 33 | * |
---|
34 | 34 | * Redistribution and use in source and binary forms, with or without |
---|
.. | .. |
---|
363 | 363 | u8 reserved[4 - (NUM_MAC_INDEX % 4)]; |
---|
364 | 364 | } __packed; /* STATISTICS_GENERAL_API_S_VER_8 */ |
---|
365 | 365 | |
---|
366 | | -struct mvm_statistics_general_cdb_v9 { |
---|
367 | | - struct mvm_statistics_general_common_v19 common; |
---|
368 | | - __le32 beacon_counter[NUM_MAC_INDEX_CDB]; |
---|
369 | | - u8 beacon_average_energy[NUM_MAC_INDEX_CDB]; |
---|
370 | | - u8 reserved[4 - (NUM_MAC_INDEX_CDB % 4)]; |
---|
371 | | -} __packed; /* STATISTICS_GENERAL_API_S_VER_9 */ |
---|
372 | | - |
---|
373 | | -struct mvm_statistics_general_cdb { |
---|
| 366 | +struct mvm_statistics_general { |
---|
374 | 367 | struct mvm_statistics_general_common common; |
---|
375 | 368 | __le32 beacon_counter[MAC_INDEX_AUX]; |
---|
376 | 369 | u8 beacon_average_energy[MAC_INDEX_AUX]; |
---|
.. | .. |
---|
388 | 381 | __le32 air_time[MAC_INDEX_AUX]; |
---|
389 | 382 | __le32 byte_count[MAC_INDEX_AUX]; |
---|
390 | 383 | __le32 pkt_count[MAC_INDEX_AUX]; |
---|
391 | | - u8 avg_energy[IWL_MVM_STATION_COUNT]; |
---|
| 384 | + u8 avg_energy[IWL_MVM_STATION_COUNT_MAX]; |
---|
392 | 385 | } __packed; /* STATISTICS_RX_MAC_STATION_S_VER_3 */ |
---|
393 | 386 | |
---|
394 | 387 | struct mvm_statistics_load_v1 { |
---|
395 | 388 | __le32 air_time[NUM_MAC_INDEX]; |
---|
396 | 389 | __le32 byte_count[NUM_MAC_INDEX]; |
---|
397 | 390 | __le32 pkt_count[NUM_MAC_INDEX]; |
---|
398 | | - u8 avg_energy[IWL_MVM_STATION_COUNT]; |
---|
| 391 | + u8 avg_energy[IWL_MVM_STATION_COUNT_MAX]; |
---|
399 | 392 | } __packed; /* STATISTICS_RX_MAC_STATION_S_VER_1 */ |
---|
400 | 393 | |
---|
401 | 394 | struct mvm_statistics_rx { |
---|
.. | .. |
---|
435 | 428 | struct mvm_statistics_load_v1 load_stats; |
---|
436 | 429 | } __packed; /* STATISTICS_NTFY_API_S_VER_11 */ |
---|
437 | 430 | |
---|
438 | | -struct iwl_notif_statistics_cdb { |
---|
| 431 | +struct iwl_notif_statistics { |
---|
439 | 432 | __le32 flag; |
---|
440 | 433 | struct mvm_statistics_rx rx; |
---|
441 | 434 | struct mvm_statistics_tx tx; |
---|
442 | | - struct mvm_statistics_general_cdb general; |
---|
| 435 | + struct mvm_statistics_general general; |
---|
443 | 436 | struct mvm_statistics_load load_stats; |
---|
444 | 437 | } __packed; /* STATISTICS_NTFY_API_S_VER_13 */ |
---|
445 | 438 | |
---|
.. | .. |
---|
471 | 464 | __le32 flags; |
---|
472 | 465 | } __packed; /* STATISTICS_CMD_API_S_VER_1 */ |
---|
473 | 466 | |
---|
| 467 | +#define MAX_BCAST_FILTER_NUM 8 |
---|
| 468 | + |
---|
| 469 | +/** |
---|
| 470 | + * enum iwl_fw_statistics_type |
---|
| 471 | + * |
---|
| 472 | + * @FW_STATISTICS_OPERATIONAL: operational statistics |
---|
| 473 | + * @FW_STATISTICS_PHY: phy statistics |
---|
| 474 | + * @FW_STATISTICS_MAC: mac statistics |
---|
| 475 | + * @FW_STATISTICS_RX: rx statistics |
---|
| 476 | + * @FW_STATISTICS_TX: tx statistics |
---|
| 477 | + * @FW_STATISTICS_DURATION: duration statistics |
---|
| 478 | + * @FW_STATISTICS_HE: he statistics |
---|
| 479 | + */ |
---|
| 480 | +enum iwl_fw_statistics_type { |
---|
| 481 | + FW_STATISTICS_OPERATIONAL, |
---|
| 482 | + FW_STATISTICS_PHY, |
---|
| 483 | + FW_STATISTICS_MAC, |
---|
| 484 | + FW_STATISTICS_RX, |
---|
| 485 | + FW_STATISTICS_TX, |
---|
| 486 | + FW_STATISTICS_DURATION, |
---|
| 487 | + FW_STATISTICS_HE, |
---|
| 488 | +}; /* FW_STATISTICS_TYPE_API_E_VER_1 */ |
---|
| 489 | + |
---|
| 490 | +/** |
---|
| 491 | + * struct iwl_statistics_ntfy_hdr |
---|
| 492 | + * |
---|
| 493 | + * @type: struct type |
---|
| 494 | + * @version: version of the struct |
---|
| 495 | + * @size: size in bytes |
---|
| 496 | + */ |
---|
| 497 | +struct iwl_statistics_ntfy_hdr { |
---|
| 498 | + u8 type; |
---|
| 499 | + u8 version; |
---|
| 500 | + __le16 size; |
---|
| 501 | +}; /* STATISTICS_NTFY_HDR_API_S_VER_1 */ |
---|
| 502 | + |
---|
| 503 | +/** |
---|
| 504 | + * struct iwl_statistics_operational_ntfy |
---|
| 505 | + * |
---|
| 506 | + * @hdr: general statistics header |
---|
| 507 | + * @flags: bitmap of possible notification structures |
---|
| 508 | + * @mac_id: mac on which the beacon was received |
---|
| 509 | + * @beacon_filter_average_energy: Average energy [-dBm] of the 2 |
---|
| 510 | + * antennas. |
---|
| 511 | + * @beacon_filter_reason: beacon filter reason |
---|
| 512 | + * @radio_temperature: radio temperature |
---|
| 513 | + * @air_time: air time |
---|
| 514 | + * @beacon_counter: all beacons (both filtered and not filtered) |
---|
| 515 | + * @beacon_average_energy: all beacons (both filtered and not |
---|
| 516 | + * filtered) |
---|
| 517 | + * @beacon_rssi_a: beacon RSSI on antenna A |
---|
| 518 | + * @beacon_rssi_b: beacon RSSI on antenna B |
---|
| 519 | + * @rx_bytes: per MAC RX byte count |
---|
| 520 | + * @rx_time: rx time |
---|
| 521 | + * @tx_time: usec the radio is transmitting. |
---|
| 522 | + * @on_time_rf: The total time in usec the RF is awake. |
---|
| 523 | + * @on_time_scan: usec the radio is awake due to scan. |
---|
| 524 | + * @average_energy: in fact it is minus the energy.. |
---|
| 525 | + * @reserved: reserved |
---|
| 526 | + */ |
---|
| 527 | +struct iwl_statistics_operational_ntfy { |
---|
| 528 | + struct iwl_statistics_ntfy_hdr hdr; |
---|
| 529 | + __le32 flags; |
---|
| 530 | + __le32 mac_id; |
---|
| 531 | + __le32 beacon_filter_average_energy; |
---|
| 532 | + __le32 beacon_filter_reason; |
---|
| 533 | + __le32 radio_temperature; |
---|
| 534 | + __le32 air_time[MAC_INDEX_AUX]; |
---|
| 535 | + __le32 beacon_counter[MAC_INDEX_AUX]; |
---|
| 536 | + __le32 beacon_average_energy[MAC_INDEX_AUX]; |
---|
| 537 | + __le32 beacon_rssi_a; |
---|
| 538 | + __le32 beacon_rssi_b; |
---|
| 539 | + __le32 rx_bytes[MAC_INDEX_AUX]; |
---|
| 540 | + __le64 rx_time; |
---|
| 541 | + __le64 tx_time; |
---|
| 542 | + __le64 on_time_rf; |
---|
| 543 | + __le64 on_time_scan; |
---|
| 544 | + __le32 average_energy[IWL_MVM_STATION_COUNT_MAX]; |
---|
| 545 | + __le32 reserved; |
---|
| 546 | +} __packed; /* STATISTICS_OPERATIONAL_NTFY_API_S_VER_14 */ |
---|
| 547 | + |
---|
| 548 | +/** |
---|
| 549 | + * struct iwl_statistics_phy_ntfy |
---|
| 550 | + * |
---|
| 551 | + * @hdr: general statistics header |
---|
| 552 | + * RX PHY related statistics |
---|
| 553 | + * @energy_and_config: ??? |
---|
| 554 | + * @rssi_band: @31:24 rssiAllBand_B, 23:16 rssiInBand_B, 15:8 |
---|
| 555 | + * rssiAllBand_A, 7:0 rssiInBand_A |
---|
| 556 | + * @agc_word: @31:16 agcWord_B, 15:0 agcWord_A |
---|
| 557 | + * @agc_gain: @19:10 agcGain_B, 9:0 agcGain_A |
---|
| 558 | + * @dfe_gain: @19:10 dfeGain_B, 9:0 dfeGain_A |
---|
| 559 | + * @snr_calc_main: @18:0 snrCalcMain |
---|
| 560 | + * @energy_calc_main: @18:0 energyCalcMain |
---|
| 561 | + * @snr_calc_aux: @18:0 snrCalcAux |
---|
| 562 | + * @dsp_dc_estim_a: @27:14 dspDcEstimQA, 13:0 dspDcEstimIA |
---|
| 563 | + * @dsp_dc_estim_b: @27:14 dspDcEstimQB, 13:0 dspDcEstimIB |
---|
| 564 | + * @ina_detec_type_and_ofdm_corr_comb: @31:31 inaDetectCckMrc, |
---|
| 565 | + * 30:27 inaDetectType, 26:0 ofdmCorrComb |
---|
| 566 | + * @cw_corr_comb: @26:0 cwCorrComb |
---|
| 567 | + * @rssi_comb: @25:0 rssiComb |
---|
| 568 | + * @auto_corr_cck: @23:12 autoCck, 11:00 crossCck |
---|
| 569 | + * @ofdm_fine_freq_and_pina_freq_err: @18:7 ofdmFineFreq, 6:0 |
---|
| 570 | + * ofdmPinaFreqErr |
---|
| 571 | + * @snrm_evm_main: @31:0 snrmEvmMain |
---|
| 572 | + * @snrm_evm_aux: @31:0 snrmEvmAux |
---|
| 573 | + * @rx_rate: @31:0 rate |
---|
| 574 | + * TX PHY related statistics |
---|
| 575 | + * @per_chain_enums_and_dsp_atten_a: @perChainEnumsAndDspAtten |
---|
| 576 | + * (per version) |
---|
| 577 | + * @target_power_and_power_meas_a: @31:16 targetPower_A, 15:0 |
---|
| 578 | + * powerMeasuredCalc_A |
---|
| 579 | + * @tx_config_as_i_and_ac_a: @31:16 txConfigAsI_A, 15:0 |
---|
| 580 | + * txConfigAc_A |
---|
| 581 | + * @predist_dcq_and_dci_a: @31:16 predist_dci_A, 15:0 |
---|
| 582 | + * predist_dcq_A |
---|
| 583 | + * @per_chain_enums_and_dsp_atten_b: @perChainEnumsAndDspAtten |
---|
| 584 | + * (per version) |
---|
| 585 | + * @target_power_and_power_meas_b: @31:16 targetPower_B, 15:0 |
---|
| 586 | + * powerMeasuredCalc_B |
---|
| 587 | + * @tx_config_as_i_and_ac_b: @31:16 txConfigAsI_B, 15:0 |
---|
| 588 | + * txConfigAc_B |
---|
| 589 | + * @predist_dcq_and_dci_b: @31:16 predist_dci_B, 15:0 |
---|
| 590 | + * predist_dcq_B |
---|
| 591 | + * @tx_rate: @31:0 rate |
---|
| 592 | + * @tlc_backoff: @31:0 tlcBackoff |
---|
| 593 | + * @mpapd_calib_mode_mpapd_calib_type_a: @31:16 |
---|
| 594 | + * mpapdCalibMode_A, 15:0 mpapdCalibType_A |
---|
| 595 | + * @psat_and_phy_power_limit_a: @31:16 psat_A, 15:0 |
---|
| 596 | + * phyPowerLimit_A |
---|
| 597 | + * @sar_and_regulatory_power_limit_a: @31:16 sarPowerLimit_A, |
---|
| 598 | + * 15:0 regulatoryPowerLimit_A |
---|
| 599 | + * @mpapd_calib_mode_mpapd_calib_type_b: @31:16 |
---|
| 600 | + * mpapdCalibMode_B, 15:0 mpapdCalibType_B |
---|
| 601 | + * @psat_and_phy_power_limit_b: @31:16 psat_B, 15:0 |
---|
| 602 | + * phyPowerLimit_B |
---|
| 603 | + * @sar_and_regulatory_power_limit_b: @31:16 sarPowerLimit_B, |
---|
| 604 | + * 15:0 regulatoryPowerLimit_B |
---|
| 605 | + * @srd_and_driver_power_limits: @31:16 srdPowerLimit, 15:0 |
---|
| 606 | + * driverPowerLimit |
---|
| 607 | + * @reserved: reserved |
---|
| 608 | + */ |
---|
| 609 | +struct iwl_statistics_phy_ntfy { |
---|
| 610 | + struct iwl_statistics_ntfy_hdr hdr; |
---|
| 611 | + __le32 energy_and_config; |
---|
| 612 | + __le32 rssi_band; |
---|
| 613 | + __le32 agc_word; |
---|
| 614 | + __le32 agc_gain; |
---|
| 615 | + __le32 dfe_gain; |
---|
| 616 | + __le32 snr_calc_main; |
---|
| 617 | + __le32 energy_calc_main; |
---|
| 618 | + __le32 snr_calc_aux; |
---|
| 619 | + __le32 dsp_dc_estim_a; |
---|
| 620 | + __le32 dsp_dc_estim_b; |
---|
| 621 | + __le32 ina_detec_type_and_ofdm_corr_comb; |
---|
| 622 | + __le32 cw_corr_comb; |
---|
| 623 | + __le32 rssi_comb; |
---|
| 624 | + __le32 auto_corr_cck; |
---|
| 625 | + __le32 ofdm_fine_freq_and_pina_freq_err; |
---|
| 626 | + __le32 snrm_evm_main; |
---|
| 627 | + __le32 snrm_evm_aux; |
---|
| 628 | + __le32 rx_rate; |
---|
| 629 | + __le32 per_chain_enums_and_dsp_atten_a; |
---|
| 630 | + __le32 target_power_and_power_meas_a; |
---|
| 631 | + __le32 tx_config_as_i_and_ac_a; |
---|
| 632 | + __le32 predist_dcq_and_dci_a; |
---|
| 633 | + __le32 per_chain_enums_and_dsp_atten_b; |
---|
| 634 | + __le32 target_power_and_power_meas_b; |
---|
| 635 | + __le32 tx_config_as_i_and_ac_b; |
---|
| 636 | + __le32 predist_dcq_and_dci_b; |
---|
| 637 | + __le32 tx_rate; |
---|
| 638 | + __le32 tlc_backoff; |
---|
| 639 | + __le32 mpapd_calib_mode_mpapd_calib_type_a; |
---|
| 640 | + __le32 psat_and_phy_power_limit_a; |
---|
| 641 | + __le32 sar_and_regulatory_power_limit_a; |
---|
| 642 | + __le32 mpapd_calib_mode_mpapd_calib_type_b; |
---|
| 643 | + __le32 psat_and_phy_power_limit_b; |
---|
| 644 | + __le32 sar_and_regulatory_power_limit_b; |
---|
| 645 | + __le32 srd_and_driver_power_limits; |
---|
| 646 | + __le32 reserved; |
---|
| 647 | +} __packed; /* STATISTICS_PHY_NTFY_API_S_VER_1 */ |
---|
| 648 | + |
---|
| 649 | +/** |
---|
| 650 | + * struct iwl_statistics_mac_ntfy |
---|
| 651 | + * |
---|
| 652 | + * @hdr: general statistics header |
---|
| 653 | + * @bcast_filter_passed_per_mac: bcast filter passed per mac |
---|
| 654 | + * @bcast_filter_dropped_per_mac: bcast filter dropped per mac |
---|
| 655 | + * @bcast_filter_passed_per_filter: bcast filter passed per filter |
---|
| 656 | + * @bcast_filter_dropped_per_filter: bcast filter dropped per filter |
---|
| 657 | + * @reserved: reserved |
---|
| 658 | + */ |
---|
| 659 | +struct iwl_statistics_mac_ntfy { |
---|
| 660 | + struct iwl_statistics_ntfy_hdr hdr; |
---|
| 661 | + __le32 bcast_filter_passed_per_mac[NUM_MAC_INDEX_CDB]; |
---|
| 662 | + __le32 bcast_filter_dropped_per_mac[NUM_MAC_INDEX_CDB]; |
---|
| 663 | + __le32 bcast_filter_passed_per_filter[MAX_BCAST_FILTER_NUM]; |
---|
| 664 | + __le32 bcast_filter_dropped_per_filter[MAX_BCAST_FILTER_NUM]; |
---|
| 665 | + __le32 reserved; |
---|
| 666 | +} __packed; /* STATISTICS_MAC_NTFY_API_S_VER_1 */ |
---|
| 667 | + |
---|
| 668 | +/** |
---|
| 669 | + * struct iwl_statistics_rx_ntfy |
---|
| 670 | + * |
---|
| 671 | + * @hdr: general statistics header |
---|
| 672 | + * @rx_agg_mpdu_cnt: aggregation frame count (number of |
---|
| 673 | + * delimiters) |
---|
| 674 | + * @rx_agg_cnt: number of RX Aggregations |
---|
| 675 | + * @unsupported_mcs: number of PLCP headers that have rate which |
---|
| 676 | + * is unsupported by DSP |
---|
| 677 | + * @bogus_cts: CTS received when not expecting CTS |
---|
| 678 | + * @bogus_ack: ACK received when not expecting ACK |
---|
| 679 | + * @rx_byte_count: ??? |
---|
| 680 | + * @rx_packet_count: ??? |
---|
| 681 | + * @missed_beacons: ??? |
---|
| 682 | + * @unresponded_rts: un-responded RTS, due to NAV not zero |
---|
| 683 | + * @rxe_frame_limit_overrun: RXE got frame limit overrun |
---|
| 684 | + * @sent_ba_rsp_cnt: BA response TX count |
---|
| 685 | + * @late_rx_handle: count the number of times the RX path was |
---|
| 686 | + * aborted due to late entry |
---|
| 687 | + * @num_bt_kills: ??? |
---|
| 688 | + * @reserved: reserved |
---|
| 689 | + */ |
---|
| 690 | +struct iwl_statistics_rx_ntfy { |
---|
| 691 | + struct iwl_statistics_ntfy_hdr hdr; |
---|
| 692 | + __le32 rx_agg_mpdu_cnt; |
---|
| 693 | + __le32 rx_agg_cnt; |
---|
| 694 | + __le32 unsupported_mcs; |
---|
| 695 | + __le32 bogus_cts; |
---|
| 696 | + __le32 bogus_ack; |
---|
| 697 | + __le32 rx_byte_count[MAC_INDEX_AUX]; |
---|
| 698 | + __le32 rx_packet_count[MAC_INDEX_AUX]; |
---|
| 699 | + __le32 missed_beacons; |
---|
| 700 | + __le32 unresponded_rts; |
---|
| 701 | + __le32 rxe_frame_limit_overrun; |
---|
| 702 | + __le32 sent_ba_rsp_cnt; |
---|
| 703 | + __le32 late_rx_handle; |
---|
| 704 | + __le32 num_bt_kills; |
---|
| 705 | + __le32 reserved; |
---|
| 706 | +} __packed; /* STATISTICS_RX_NTFY_API_S_VER_1 */ |
---|
| 707 | + |
---|
| 708 | +/** |
---|
| 709 | + * struct iwl_statistics_tx_ntfy |
---|
| 710 | + * |
---|
| 711 | + * @hdr: general statistics header |
---|
| 712 | + * @cts_timeout: timeout when waiting for CTS |
---|
| 713 | + * @ack_timeout: timeout when waiting for ACK |
---|
| 714 | + * @dump_msdu_cnt: number of MSDUs that were dumped due to any |
---|
| 715 | + * reason |
---|
| 716 | + * @burst_abort_missing_next_frame_cnt: number of times a burst |
---|
| 717 | + * was aborted due to missing next frame bytes in txfifo |
---|
| 718 | + * number of times got timeout when waiting for CTS/ACK/BA and energy was |
---|
| 719 | + * detected just after sending the RTS/DATA. this statistics may help getting |
---|
| 720 | + * interesting indicators, like the likelihood of collision (so the benefit of |
---|
| 721 | + * protection may be estimated Vs. its cost). Or how many of the failures are |
---|
| 722 | + * due to collision and how many due to SNR. |
---|
| 723 | + * For Link-quality the CTS collision indication is more reliable then the ACK |
---|
| 724 | + * collision indication as the RTS frame is short and has more chance that the |
---|
| 725 | + * frame/s which caused the collision continue after the RTS was sent. |
---|
| 726 | + * @cts_timeout_collision: ??? |
---|
| 727 | + * ACK/BA failed and energy as detected after DATA |
---|
| 728 | + * Note: to get the collision ratio need to: |
---|
| 729 | + * ackOrBaTimeoutCollision / (ack_timeout + ba_timeout) |
---|
| 730 | + * @ack_or_ba_timeout_collision: ??? |
---|
| 731 | + * @ba_timeout: timeout when waiting for immediate BA response |
---|
| 732 | + * @ba_reschedule_frames: failed to get BA response and |
---|
| 733 | + * rescheduled all the non-ACKed frames |
---|
| 734 | + * gives the avarage number of frames inside aggregation |
---|
| 735 | + * @scd_query_agg_frame_cnt: ??? |
---|
| 736 | + * @scd_query_no_agg: scheduler query prevented aggregation |
---|
| 737 | + * @scd_query_agg: scheduler query allowed aggregation |
---|
| 738 | + * @scd_query_mismatch: scheduler query inaccurate, either too |
---|
| 739 | + * short or too long |
---|
| 740 | + * @agg_terminated_underrun: aggregation was terminated due to |
---|
| 741 | + * underrun |
---|
| 742 | + * @agg_terminated_bt_prio_kill: aggregation was terminated due |
---|
| 743 | + * to BT |
---|
| 744 | + * @tx_kill_on_long_retry: count the tx frames dropped due to |
---|
| 745 | + * long retry limit (DATA frame failed) |
---|
| 746 | + * @tx_kill_on_short_retry: count the tx frames dropped due to |
---|
| 747 | + * short retry limit (RTS frame failed) |
---|
| 748 | + * TX deffer on energy. This counter is reset on each successful transmit. |
---|
| 749 | + * When timer exceed TX deffer limit than will be uCode assert. |
---|
| 750 | + * @tx_deffer_counter: ??? |
---|
| 751 | + * @tx_deffer_base_time: Keep the time of the last successful |
---|
| 752 | + * transmit |
---|
| 753 | + * @tx_underrun: TX killed due to underrun |
---|
| 754 | + * @bt_defer: TX deferred due to BT priority, so probably TX was |
---|
| 755 | + * not started. |
---|
| 756 | + * @tx_kill_on_dsp_timeout: TX killed on DSP problem detected |
---|
| 757 | + * @tx_kill_on_immediate_quiet: TX killed due to immediate quiet |
---|
| 758 | + * @kill_ba_cnt: number of times sending BA failed |
---|
| 759 | + * @kill_ack_cnt: number of times sending ACK failed |
---|
| 760 | + * @kill_cts_cnt: number of times sending CTS failed |
---|
| 761 | + * @burst_terminated: Count burst or fragmentation termination |
---|
| 762 | + * occurrence |
---|
| 763 | + * @late_tx_vec_wr_cnt: ??? |
---|
| 764 | + * TX is not sent because ucode failed to notify the TRM in SIFS-delta from |
---|
| 765 | + * ON_AIR deassertion. |
---|
| 766 | + * @late_rx2_tx_cnt: ??? |
---|
| 767 | + * @scd_query_cnt: count the times SCD query was done to check |
---|
| 768 | + * for TX AGG |
---|
| 769 | + * @tx_frames_acked_in_agg: count the number of frames |
---|
| 770 | + * transmitted inside AGG and were successful |
---|
| 771 | + * @last_tx_ch_width_indx: ??? |
---|
| 772 | + * number of deferred TX per channel width, 0 - 20, 1/2/3 - 40/80/160 |
---|
| 773 | + * @rx_detected_per_ch_width: ??? |
---|
| 774 | + * @success_per_ch_width: ??? |
---|
| 775 | + * @fail_per_ch_width: ??? |
---|
| 776 | + * @reserved: reserved |
---|
| 777 | + */ |
---|
| 778 | +struct iwl_statistics_tx_ntfy { |
---|
| 779 | + struct iwl_statistics_ntfy_hdr hdr; |
---|
| 780 | + __le32 cts_timeout; |
---|
| 781 | + __le32 ack_timeout; |
---|
| 782 | + __le32 dump_msdu_cnt; |
---|
| 783 | + __le32 burst_abort_missing_next_frame_cnt; |
---|
| 784 | + __le32 cts_timeout_collision; |
---|
| 785 | + __le32 ack_or_ba_timeout_collision; |
---|
| 786 | + __le32 ba_timeout; |
---|
| 787 | + __le32 ba_reschedule_frames; |
---|
| 788 | + __le32 scd_query_agg_frame_cnt; |
---|
| 789 | + __le32 scd_query_no_agg; |
---|
| 790 | + __le32 scd_query_agg; |
---|
| 791 | + __le32 scd_query_mismatch; |
---|
| 792 | + __le32 agg_terminated_underrun; |
---|
| 793 | + __le32 agg_terminated_bt_prio_kill; |
---|
| 794 | + __le32 tx_kill_on_long_retry; |
---|
| 795 | + __le32 tx_kill_on_short_retry; |
---|
| 796 | + __le32 tx_deffer_counter; |
---|
| 797 | + __le32 tx_deffer_base_time; |
---|
| 798 | + __le32 tx_underrun; |
---|
| 799 | + __le32 bt_defer; |
---|
| 800 | + __le32 tx_kill_on_dsp_timeout; |
---|
| 801 | + __le32 tx_kill_on_immediate_quiet; |
---|
| 802 | + __le32 kill_ba_cnt; |
---|
| 803 | + __le32 kill_ack_cnt; |
---|
| 804 | + __le32 kill_cts_cnt; |
---|
| 805 | + __le32 burst_terminated; |
---|
| 806 | + __le32 late_tx_vec_wr_cnt; |
---|
| 807 | + __le32 late_rx2_tx_cnt; |
---|
| 808 | + __le32 scd_query_cnt; |
---|
| 809 | + __le32 tx_frames_acked_in_agg; |
---|
| 810 | + __le32 last_tx_ch_width_indx; |
---|
| 811 | + __le32 rx_detected_per_ch_width[4]; |
---|
| 812 | + __le32 success_per_ch_width[4]; |
---|
| 813 | + __le32 fail_per_ch_width[4]; |
---|
| 814 | + __le32 reserved; |
---|
| 815 | +} __packed; /* STATISTICS_TX_NTFY_API_S_VER_1 */ |
---|
| 816 | + |
---|
| 817 | +/** |
---|
| 818 | + * struct iwl_statistics_duration_ntfy |
---|
| 819 | + * |
---|
| 820 | + * @hdr: general statistics header |
---|
| 821 | + * @cont_burst_chk_cnt: number of times continuation or |
---|
| 822 | + * fragmentation or bursting was checked |
---|
| 823 | + * @cont_burst_cnt: number of times continuation or fragmentation |
---|
| 824 | + * or bursting was successful |
---|
| 825 | + * @wait_for_silence_timeout_cnt: ??? |
---|
| 826 | + * @reserved: reserved |
---|
| 827 | + */ |
---|
| 828 | +struct iwl_statistics_duration_ntfy { |
---|
| 829 | + struct iwl_statistics_ntfy_hdr hdr; |
---|
| 830 | + __le32 cont_burst_chk_cnt; |
---|
| 831 | + __le32 cont_burst_cnt; |
---|
| 832 | + __le32 wait_for_silence_timeout_cnt; |
---|
| 833 | + __le32 reserved; |
---|
| 834 | +} __packed; /* STATISTICS_DURATION_NTFY_API_S_VER_1 */ |
---|
| 835 | + |
---|
| 836 | +/** |
---|
| 837 | + * struct iwl_statistics_he_ntfy |
---|
| 838 | + * |
---|
| 839 | + * @hdr: general statistics header |
---|
| 840 | + * received HE frames |
---|
| 841 | + * @rx_siga_valid_cnt: rx HE SIG-A valid |
---|
| 842 | + * @rx_siga_invalid_cnt: rx HE SIG-A invalid |
---|
| 843 | + * received HE frames w/ valid Sig-A |
---|
| 844 | + * @rx_trig_based_frame_cnt: rx HE-TB (trig-based) |
---|
| 845 | + * @rx_su_frame_cnt: rx HE-SU |
---|
| 846 | + * @rx_sigb_invalid_cnt: rx (suspected) HE-MU w/ bad SIG-B |
---|
| 847 | + * @rx_our_bss_color_cnt: rx valid HE SIG-A w/ our BSS color |
---|
| 848 | + * @rx_other_bss_color_cnt: rx valid HE SIG-A w/ other BSS color |
---|
| 849 | + * @rx_zero_bss_color_cnt: ??? |
---|
| 850 | + * received HE-MU frames w/ good Sig-B |
---|
| 851 | + * @rx_mu_for_us_cnt: match AID |
---|
| 852 | + * @rx_mu_not_for_us_cnt: no matched AID |
---|
| 853 | + * received HE-MU frames for us (w/ our AID) |
---|
| 854 | + * @rx_mu_nss_ar: 0 - SISO, 1 - MIMO2 |
---|
| 855 | + * @rx_mu_mimo_cnt: full BW RU, compressed SIG-B |
---|
| 856 | + * @rx_mu_ru_bw_ar: MU alloc, MHz: 0 - 2, 1 - 5, 2 - 10, 3 - 20, |
---|
| 857 | + * 4 - 40, 5 - 80, 6 - 160 |
---|
| 858 | + * received trigger frames |
---|
| 859 | + * @rx_trig_for_us_cnt: ??? |
---|
| 860 | + * @rx_trig_not_for_us_cnt: ??? |
---|
| 861 | + * trigger for us |
---|
| 862 | + * @rx_trig_with_cs_req_cnt: ??? |
---|
| 863 | + * @rx_trig_type_ar: ??? |
---|
| 864 | + * @rx_trig_in_agg_cnt: ??? |
---|
| 865 | + * basic trigger for us allocations |
---|
| 866 | + * @rx_basic_trig_alloc_nss_ar: ??? |
---|
| 867 | + * @rx_basic_trig_alloc_mu_mimo_cnt: ??? |
---|
| 868 | + * @rx_basic_trig_alloc_ru_bw_ar: ??? |
---|
| 869 | + * @rx_basic_trig_total_byte_cnt: ??? |
---|
| 870 | + * trig-based TX |
---|
| 871 | + * @tx_trig_based_cs_req_fail_cnt: ??? |
---|
| 872 | + * @tx_trig_based_sifs_ok_cnt: ??? |
---|
| 873 | + * @tx_trig_based_sifs_fail_cnt: ??? |
---|
| 874 | + * @tx_trig_based_byte_cnt: ??? |
---|
| 875 | + * @tx_trig_based_pad_byte_cnt: ??? |
---|
| 876 | + * @tx_trig_based_frame_cnt: ??? |
---|
| 877 | + * @tx_trig_based_acked_frame_cnt: ??? |
---|
| 878 | + * @tx_trig_based_ack_timeout_cnt: ??? |
---|
| 879 | + * HE-SU TX |
---|
| 880 | + * @tx_su_frame_cnt: ??? |
---|
| 881 | + * EDCA <--> MU-EDCA transitions |
---|
| 882 | + * @tx_edca_to_mu_edca_cnt: ??? |
---|
| 883 | + * @tx_mu_edca_to_edca_by_timeout_cnt: ??? |
---|
| 884 | + * @tx_mu_edca_to_edca_by_ack_fail_cnt: ??? |
---|
| 885 | + * @tx_mu_edca_to_edca_by_small_alloc_cnt: ??? |
---|
| 886 | + * @reserved: reserved |
---|
| 887 | + */ |
---|
| 888 | +struct iwl_statistics_he_ntfy { |
---|
| 889 | + struct iwl_statistics_ntfy_hdr hdr; |
---|
| 890 | + __le32 rx_siga_valid_cnt; |
---|
| 891 | + __le32 rx_siga_invalid_cnt; |
---|
| 892 | + __le32 rx_trig_based_frame_cnt; |
---|
| 893 | + __le32 rx_su_frame_cnt; |
---|
| 894 | + __le32 rx_sigb_invalid_cnt; |
---|
| 895 | + __le32 rx_our_bss_color_cnt; |
---|
| 896 | + __le32 rx_other_bss_color_cnt; |
---|
| 897 | + __le32 rx_zero_bss_color_cnt; |
---|
| 898 | + __le32 rx_mu_for_us_cnt; |
---|
| 899 | + __le32 rx_mu_not_for_us_cnt; |
---|
| 900 | + __le32 rx_mu_nss_ar[2]; |
---|
| 901 | + __le32 rx_mu_mimo_cnt; |
---|
| 902 | + __le32 rx_mu_ru_bw_ar[7]; |
---|
| 903 | + __le32 rx_trig_for_us_cnt; |
---|
| 904 | + __le32 rx_trig_not_for_us_cnt; |
---|
| 905 | + __le32 rx_trig_with_cs_req_cnt; |
---|
| 906 | + __le32 rx_trig_type_ar[8 + 1]; |
---|
| 907 | + __le32 rx_trig_in_agg_cnt; |
---|
| 908 | + __le32 rx_basic_trig_alloc_nss_ar[2]; |
---|
| 909 | + __le32 rx_basic_trig_alloc_mu_mimo_cnt; |
---|
| 910 | + __le32 rx_basic_trig_alloc_ru_bw_ar[7]; |
---|
| 911 | + __le32 rx_basic_trig_total_byte_cnt; |
---|
| 912 | + __le32 tx_trig_based_cs_req_fail_cnt; |
---|
| 913 | + __le32 tx_trig_based_sifs_ok_cnt; |
---|
| 914 | + __le32 tx_trig_based_sifs_fail_cnt; |
---|
| 915 | + __le32 tx_trig_based_byte_cnt; |
---|
| 916 | + __le32 tx_trig_based_pad_byte_cnt; |
---|
| 917 | + __le32 tx_trig_based_frame_cnt; |
---|
| 918 | + __le32 tx_trig_based_acked_frame_cnt; |
---|
| 919 | + __le32 tx_trig_based_ack_timeout_cnt; |
---|
| 920 | + __le32 tx_su_frame_cnt; |
---|
| 921 | + __le32 tx_edca_to_mu_edca_cnt; |
---|
| 922 | + __le32 tx_mu_edca_to_edca_by_timeout_cnt; |
---|
| 923 | + __le32 tx_mu_edca_to_edca_by_ack_fail_cnt; |
---|
| 924 | + __le32 tx_mu_edca_to_edca_by_small_alloc_cnt; |
---|
| 925 | + __le32 reserved; |
---|
| 926 | +} __packed; /* STATISTICS_HE_NTFY_API_S_VER_1 */ |
---|
| 927 | + |
---|
474 | 928 | #endif /* __iwl_fw_api_stats_h__ */ |
---|