0001
0002
0003
0004
0005
0006
0007 #ifndef __iwl_fw_api_stats_h__
0008 #define __iwl_fw_api_stats_h__
0009 #include "mac.h"
0010
0011 struct mvm_statistics_dbg {
0012 __le32 burst_check;
0013 __le32 burst_count;
0014 __le32 wait_for_silence_timeout_cnt;
0015 u8 reserved[12];
0016 } __packed;
0017
0018 struct mvm_statistics_div {
0019 __le32 tx_on_a;
0020 __le32 tx_on_b;
0021 __le32 exec_time;
0022 __le32 probe_time;
0023 __le32 rssi_ant;
0024 __le32 reserved2;
0025 } __packed;
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052 struct mvm_statistics_rx_non_phy {
0053 __le32 bogus_cts;
0054 __le32 bogus_ack;
0055 __le32 non_channel_beacons;
0056 __le32 channel_beacons;
0057 __le32 num_missed_bcon;
0058 __le32 adc_rx_saturation_time;
0059 __le32 ina_detection_search_time;
0060 __le32 beacon_silence_rssi_a;
0061 __le32 beacon_silence_rssi_b;
0062 __le32 beacon_silence_rssi_c;
0063 __le32 interference_data_flag;
0064 __le32 channel_load;
0065 __le32 beacon_rssi_a;
0066 __le32 beacon_rssi_b;
0067 __le32 beacon_rssi_c;
0068 __le32 beacon_energy_a;
0069 __le32 beacon_energy_b;
0070 __le32 beacon_energy_c;
0071 __le32 num_bt_kills;
0072 __le32 mac_id;
0073 } __packed;
0074
0075 struct mvm_statistics_rx_non_phy_v3 {
0076 __le32 bogus_cts;
0077 __le32 bogus_ack;
0078 __le32 non_bssid_frames;
0079
0080 __le32 filtered_frames;
0081
0082 __le32 non_channel_beacons;
0083
0084 __le32 channel_beacons;
0085
0086 __le32 num_missed_bcon;
0087 __le32 adc_rx_saturation_time;
0088
0089 __le32 ina_detection_search_time;
0090
0091 __le32 beacon_silence_rssi_a;
0092 __le32 beacon_silence_rssi_b;
0093 __le32 beacon_silence_rssi_c;
0094 __le32 interference_data_flag;
0095
0096
0097 __le32 channel_load;
0098 __le32 dsp_false_alarms;
0099
0100 __le32 beacon_rssi_a;
0101 __le32 beacon_rssi_b;
0102 __le32 beacon_rssi_c;
0103 __le32 beacon_energy_a;
0104 __le32 beacon_energy_b;
0105 __le32 beacon_energy_c;
0106 __le32 num_bt_kills;
0107 __le32 mac_id;
0108 __le32 directed_data_mpdu;
0109 } __packed;
0110
0111 struct mvm_statistics_rx_phy {
0112 __le32 unresponded_rts;
0113 __le32 rxe_frame_lmt_overrun;
0114 __le32 sent_ba_rsp_cnt;
0115 __le32 dsp_self_kill;
0116 __le32 reserved;
0117 } __packed;
0118
0119 struct mvm_statistics_rx_phy_v2 {
0120 __le32 ina_cnt;
0121 __le32 fina_cnt;
0122 __le32 plcp_err;
0123 __le32 crc32_err;
0124 __le32 overrun_err;
0125 __le32 early_overrun_err;
0126 __le32 crc32_good;
0127 __le32 false_alarm_cnt;
0128 __le32 fina_sync_err_cnt;
0129 __le32 sfd_timeout;
0130 __le32 fina_timeout;
0131 __le32 unresponded_rts;
0132 __le32 rxe_frame_lmt_overrun;
0133 __le32 sent_ack_cnt;
0134 __le32 sent_cts_cnt;
0135 __le32 sent_ba_rsp_cnt;
0136 __le32 dsp_self_kill;
0137 __le32 mh_format_err;
0138 __le32 re_acq_main_rssi_sum;
0139 __le32 reserved;
0140 } __packed;
0141
0142 struct mvm_statistics_rx_ht_phy_v1 {
0143 __le32 plcp_err;
0144 __le32 overrun_err;
0145 __le32 early_overrun_err;
0146 __le32 crc32_good;
0147 __le32 crc32_err;
0148 __le32 mh_format_err;
0149 __le32 agg_crc32_good;
0150 __le32 agg_mpdu_cnt;
0151 __le32 agg_cnt;
0152 __le32 unsupport_mcs;
0153 } __packed;
0154
0155 struct mvm_statistics_rx_ht_phy {
0156 __le32 mh_format_err;
0157 __le32 agg_mpdu_cnt;
0158 __le32 agg_cnt;
0159 __le32 unsupport_mcs;
0160 } __packed;
0161
0162 struct mvm_statistics_tx_non_phy_v3 {
0163 __le32 preamble_cnt;
0164 __le32 rx_detected_cnt;
0165 __le32 bt_prio_defer_cnt;
0166 __le32 bt_prio_kill_cnt;
0167 __le32 few_bytes_cnt;
0168 __le32 cts_timeout;
0169 __le32 ack_timeout;
0170 __le32 expected_ack_cnt;
0171 __le32 actual_ack_cnt;
0172 __le32 dump_msdu_cnt;
0173 __le32 burst_abort_next_frame_mismatch_cnt;
0174 __le32 burst_abort_missing_next_frame_cnt;
0175 __le32 cts_timeout_collision;
0176 __le32 ack_or_ba_timeout_collision;
0177 } __packed;
0178
0179 struct mvm_statistics_tx_non_phy {
0180 __le32 bt_prio_defer_cnt;
0181 __le32 bt_prio_kill_cnt;
0182 __le32 few_bytes_cnt;
0183 __le32 cts_timeout;
0184 __le32 ack_timeout;
0185 __le32 dump_msdu_cnt;
0186 __le32 burst_abort_next_frame_mismatch_cnt;
0187 __le32 burst_abort_missing_next_frame_cnt;
0188 __le32 cts_timeout_collision;
0189 __le32 ack_or_ba_timeout_collision;
0190 } __packed;
0191
0192 #define MAX_CHAINS 3
0193
0194 struct mvm_statistics_tx_non_phy_agg {
0195 __le32 ba_timeout;
0196 __le32 ba_reschedule_frames;
0197 __le32 scd_query_agg_frame_cnt;
0198 __le32 scd_query_no_agg;
0199 __le32 scd_query_agg;
0200 __le32 scd_query_mismatch;
0201 __le32 frame_not_ready;
0202 __le32 underrun;
0203 __le32 bt_prio_kill;
0204 __le32 rx_ba_rsp_cnt;
0205 __s8 txpower[MAX_CHAINS];
0206 __s8 reserved;
0207 __le32 reserved2;
0208 } __packed;
0209
0210 struct mvm_statistics_tx_channel_width {
0211 __le32 ext_cca_narrow_ch20[1];
0212 __le32 ext_cca_narrow_ch40[2];
0213 __le32 ext_cca_narrow_ch80[3];
0214 __le32 ext_cca_narrow_ch160[4];
0215 __le32 last_tx_ch_width_indx;
0216 __le32 rx_detected_per_ch_width[4];
0217 __le32 success_per_ch_width[4];
0218 __le32 fail_per_ch_width[4];
0219 };
0220
0221 struct mvm_statistics_tx_v4 {
0222 struct mvm_statistics_tx_non_phy_v3 general;
0223 struct mvm_statistics_tx_non_phy_agg agg;
0224 struct mvm_statistics_tx_channel_width channel_width;
0225 } __packed;
0226
0227 struct mvm_statistics_tx {
0228 struct mvm_statistics_tx_non_phy general;
0229 struct mvm_statistics_tx_non_phy_agg agg;
0230 struct mvm_statistics_tx_channel_width channel_width;
0231 } __packed;
0232
0233
0234 struct mvm_statistics_bt_activity {
0235 __le32 hi_priority_tx_req_cnt;
0236 __le32 hi_priority_tx_denied_cnt;
0237 __le32 lo_priority_tx_req_cnt;
0238 __le32 lo_priority_tx_denied_cnt;
0239 __le32 hi_priority_rx_req_cnt;
0240 __le32 hi_priority_rx_denied_cnt;
0241 __le32 lo_priority_rx_req_cnt;
0242 __le32 lo_priority_rx_denied_cnt;
0243 } __packed;
0244
0245 struct mvm_statistics_general_common_v19 {
0246 __le32 radio_temperature;
0247 __le32 radio_voltage;
0248 struct mvm_statistics_dbg dbg;
0249 __le32 sleep_time;
0250 __le32 slots_out;
0251 __le32 slots_idle;
0252 __le32 ttl_timestamp;
0253 struct mvm_statistics_div slow_div;
0254 __le32 rx_enable_counter;
0255
0256
0257
0258
0259
0260 __le32 num_of_sos_states;
0261 __le32 beacon_filtered;
0262 __le32 missed_beacons;
0263 u8 beacon_filter_average_energy;
0264 u8 beacon_filter_reason;
0265 u8 beacon_filter_current_energy;
0266 u8 beacon_filter_reserved;
0267 __le32 beacon_filter_delta_time;
0268 struct mvm_statistics_bt_activity bt_activity;
0269 __le64 rx_time;
0270 __le64 on_time_rf;
0271 __le64 on_time_scan;
0272 __le64 tx_time;
0273 } __packed;
0274
0275 struct mvm_statistics_general_common {
0276 __le32 radio_temperature;
0277 struct mvm_statistics_dbg dbg;
0278 __le32 sleep_time;
0279 __le32 slots_out;
0280 __le32 slots_idle;
0281 __le32 ttl_timestamp;
0282 struct mvm_statistics_div slow_div;
0283 __le32 rx_enable_counter;
0284
0285
0286
0287
0288
0289 __le32 num_of_sos_states;
0290 __le32 beacon_filtered;
0291 __le32 missed_beacons;
0292 u8 beacon_filter_average_energy;
0293 u8 beacon_filter_reason;
0294 u8 beacon_filter_current_energy;
0295 u8 beacon_filter_reserved;
0296 __le32 beacon_filter_delta_time;
0297 struct mvm_statistics_bt_activity bt_activity;
0298 __le64 rx_time;
0299 __le64 on_time_rf;
0300 __le64 on_time_scan;
0301 __le64 tx_time;
0302 } __packed;
0303
0304 struct mvm_statistics_general_v8 {
0305 struct mvm_statistics_general_common_v19 common;
0306 __le32 beacon_counter[NUM_MAC_INDEX];
0307 u8 beacon_average_energy[NUM_MAC_INDEX];
0308 u8 reserved[4 - (NUM_MAC_INDEX % 4)];
0309 } __packed;
0310
0311 struct mvm_statistics_general {
0312 struct mvm_statistics_general_common common;
0313 __le32 beacon_counter[MAC_INDEX_AUX];
0314 u8 beacon_average_energy[MAC_INDEX_AUX];
0315 u8 reserved[8 - MAC_INDEX_AUX];
0316 } __packed;
0317
0318
0319
0320
0321
0322
0323
0324
0325 struct mvm_statistics_load {
0326 __le32 air_time[MAC_INDEX_AUX];
0327 __le32 byte_count[MAC_INDEX_AUX];
0328 __le32 pkt_count[MAC_INDEX_AUX];
0329 u8 avg_energy[IWL_MVM_STATION_COUNT_MAX];
0330 } __packed;
0331
0332 struct mvm_statistics_load_v1 {
0333 __le32 air_time[NUM_MAC_INDEX];
0334 __le32 byte_count[NUM_MAC_INDEX];
0335 __le32 pkt_count[NUM_MAC_INDEX];
0336 u8 avg_energy[IWL_MVM_STATION_COUNT_MAX];
0337 } __packed;
0338
0339 struct mvm_statistics_rx {
0340 struct mvm_statistics_rx_phy ofdm;
0341 struct mvm_statistics_rx_phy cck;
0342 struct mvm_statistics_rx_non_phy general;
0343 struct mvm_statistics_rx_ht_phy ofdm_ht;
0344 } __packed;
0345
0346 struct mvm_statistics_rx_v3 {
0347 struct mvm_statistics_rx_phy_v2 ofdm;
0348 struct mvm_statistics_rx_phy_v2 cck;
0349 struct mvm_statistics_rx_non_phy_v3 general;
0350 struct mvm_statistics_rx_ht_phy_v1 ofdm_ht;
0351 } __packed;
0352
0353
0354
0355
0356
0357
0358
0359
0360
0361 struct iwl_notif_statistics_v10 {
0362 __le32 flag;
0363 struct mvm_statistics_rx_v3 rx;
0364 struct mvm_statistics_tx_v4 tx;
0365 struct mvm_statistics_general_v8 general;
0366 } __packed;
0367
0368 struct iwl_notif_statistics_v11 {
0369 __le32 flag;
0370 struct mvm_statistics_rx_v3 rx;
0371 struct mvm_statistics_tx_v4 tx;
0372 struct mvm_statistics_general_v8 general;
0373 struct mvm_statistics_load_v1 load_stats;
0374 } __packed;
0375
0376 struct iwl_notif_statistics {
0377 __le32 flag;
0378 struct mvm_statistics_rx rx;
0379 struct mvm_statistics_tx tx;
0380 struct mvm_statistics_general general;
0381 struct mvm_statistics_load load_stats;
0382 } __packed;
0383
0384
0385
0386
0387
0388 enum iwl_statistics_notif_flags {
0389 IWL_STATISTICS_REPLY_FLG_CLEAR = 0x1,
0390 };
0391
0392
0393
0394
0395
0396
0397
0398
0399 enum iwl_statistics_cmd_flags {
0400 IWL_STATISTICS_FLG_CLEAR = 0x1,
0401 IWL_STATISTICS_FLG_DISABLE_NOTIF = 0x2,
0402 };
0403
0404
0405
0406
0407
0408 struct iwl_statistics_cmd {
0409 __le32 flags;
0410 } __packed;
0411
0412 #define MAX_BCAST_FILTER_NUM 8
0413
0414
0415
0416
0417
0418
0419
0420
0421
0422
0423
0424
0425 enum iwl_fw_statistics_type {
0426 FW_STATISTICS_OPERATIONAL,
0427 FW_STATISTICS_PHY,
0428 FW_STATISTICS_MAC,
0429 FW_STATISTICS_RX,
0430 FW_STATISTICS_TX,
0431 FW_STATISTICS_DURATION,
0432 FW_STATISTICS_HE,
0433 };
0434
0435 #define IWL_STATISTICS_TYPE_MSK 0x7f
0436
0437
0438
0439
0440
0441
0442
0443 struct iwl_statistics_ntfy_hdr {
0444 u8 type;
0445 u8 version;
0446 __le16 size;
0447 };
0448
0449
0450
0451
0452
0453
0454
0455
0456
0457
0458
0459
0460
0461
0462 struct iwl_statistics_ntfy_per_mac {
0463 __le32 beacon_filter_average_energy;
0464 __le32 air_time;
0465 __le32 beacon_counter;
0466 __le32 beacon_average_energy;
0467 __le32 beacon_rssi_a;
0468 __le32 beacon_rssi_b;
0469 __le32 rx_bytes;
0470 } __packed;
0471
0472 #define IWL_STATS_MAX_BW_INDEX 5
0473
0474
0475
0476
0477
0478
0479
0480
0481
0482
0483
0484
0485
0486
0487
0488 struct iwl_statistics_ntfy_per_phy {
0489 __le32 channel_load;
0490 __le32 channel_load_by_us;
0491 __le32 channel_load_not_by_us;
0492 __le32 clt;
0493 __le32 act;
0494 __le32 elp;
0495 __le32 rx_detected_per_ch_width[IWL_STATS_MAX_BW_INDEX];
0496 __le32 success_per_ch_width[IWL_STATS_MAX_BW_INDEX];
0497 __le32 fail_per_ch_width[IWL_STATS_MAX_BW_INDEX];
0498 __le32 last_tx_ch_width_indx;
0499 } __packed;
0500
0501
0502
0503
0504
0505
0506 struct iwl_statistics_ntfy_per_sta {
0507 __le32 average_energy;
0508 } __packed;
0509
0510 #define IWL_STATS_MAX_PHY_OPERTINAL 3
0511
0512
0513
0514
0515
0516
0517
0518
0519
0520
0521
0522
0523
0524 struct iwl_statistics_operational_ntfy {
0525 struct iwl_statistics_ntfy_hdr hdr;
0526 __le32 flags;
0527 struct iwl_statistics_ntfy_per_mac per_mac_stats[MAC_INDEX_AUX];
0528 struct iwl_statistics_ntfy_per_phy per_phy_stats[IWL_STATS_MAX_PHY_OPERTINAL];
0529 struct iwl_statistics_ntfy_per_sta per_sta_stats[IWL_MVM_STATION_COUNT_MAX];
0530 __le64 rx_time;
0531 __le64 tx_time;
0532 __le64 on_time_rf;
0533 __le64 on_time_scan;
0534 } __packed;
0535
0536
0537
0538
0539
0540
0541
0542
0543
0544
0545
0546
0547
0548
0549
0550
0551
0552
0553
0554
0555
0556
0557
0558
0559
0560 struct iwl_statistics_operational_ntfy_ver_14 {
0561 struct iwl_statistics_ntfy_hdr hdr;
0562 __le32 flags;
0563 __le32 mac_id;
0564 __le32 beacon_filter_average_energy;
0565 __le32 beacon_filter_reason;
0566 __le32 radio_temperature;
0567 __le32 air_time[MAC_INDEX_AUX];
0568 __le32 beacon_counter[MAC_INDEX_AUX];
0569 __le32 beacon_average_energy[MAC_INDEX_AUX];
0570 __le32 beacon_rssi_a;
0571 __le32 beacon_rssi_b;
0572 __le32 rx_bytes[MAC_INDEX_AUX];
0573 __le64 rx_time;
0574 __le64 tx_time;
0575 __le64 on_time_rf;
0576 __le64 on_time_scan;
0577 __le32 average_energy[IWL_MVM_STATION_COUNT_MAX];
0578 __le32 reserved;
0579 } __packed;
0580
0581
0582
0583
0584
0585
0586
0587
0588
0589
0590
0591
0592
0593
0594
0595
0596
0597
0598
0599
0600
0601
0602
0603
0604
0605
0606
0607
0608
0609
0610
0611
0612
0613
0614
0615
0616
0617
0618
0619
0620
0621
0622
0623
0624
0625
0626
0627
0628
0629
0630
0631
0632
0633
0634
0635
0636
0637
0638
0639
0640
0641
0642 struct iwl_statistics_phy_ntfy {
0643 struct iwl_statistics_ntfy_hdr hdr;
0644 __le32 energy_and_config;
0645 __le32 rssi_band;
0646 __le32 agc_word;
0647 __le32 agc_gain;
0648 __le32 dfe_gain;
0649 __le32 snr_calc_main;
0650 __le32 energy_calc_main;
0651 __le32 snr_calc_aux;
0652 __le32 dsp_dc_estim_a;
0653 __le32 dsp_dc_estim_b;
0654 __le32 ina_detec_type_and_ofdm_corr_comb;
0655 __le32 cw_corr_comb;
0656 __le32 rssi_comb;
0657 __le32 auto_corr_cck;
0658 __le32 ofdm_fine_freq_and_pina_freq_err;
0659 __le32 snrm_evm_main;
0660 __le32 snrm_evm_aux;
0661 __le32 rx_rate;
0662 __le32 per_chain_enums_and_dsp_atten_a;
0663 __le32 target_power_and_power_meas_a;
0664 __le32 tx_config_as_i_and_ac_a;
0665 __le32 predist_dcq_and_dci_a;
0666 __le32 per_chain_enums_and_dsp_atten_b;
0667 __le32 target_power_and_power_meas_b;
0668 __le32 tx_config_as_i_and_ac_b;
0669 __le32 predist_dcq_and_dci_b;
0670 __le32 tx_rate;
0671 __le32 tlc_backoff;
0672 __le32 mpapd_calib_mode_mpapd_calib_type_a;
0673 __le32 psat_and_phy_power_limit_a;
0674 __le32 sar_and_regulatory_power_limit_a;
0675 __le32 mpapd_calib_mode_mpapd_calib_type_b;
0676 __le32 psat_and_phy_power_limit_b;
0677 __le32 sar_and_regulatory_power_limit_b;
0678 __le32 srd_and_driver_power_limits;
0679 __le32 reserved;
0680 } __packed;
0681
0682
0683
0684
0685
0686
0687
0688
0689
0690
0691
0692 struct iwl_statistics_mac_ntfy {
0693 struct iwl_statistics_ntfy_hdr hdr;
0694 __le32 bcast_filter_passed_per_mac[NUM_MAC_INDEX_CDB];
0695 __le32 bcast_filter_dropped_per_mac[NUM_MAC_INDEX_CDB];
0696 __le32 bcast_filter_passed_per_filter[MAX_BCAST_FILTER_NUM];
0697 __le32 bcast_filter_dropped_per_filter[MAX_BCAST_FILTER_NUM];
0698 __le32 reserved;
0699 } __packed;
0700
0701
0702
0703
0704
0705
0706
0707
0708
0709
0710
0711
0712
0713
0714
0715
0716
0717
0718
0719
0720
0721
0722
0723 struct iwl_statistics_rx_ntfy {
0724 struct iwl_statistics_ntfy_hdr hdr;
0725 __le32 rx_agg_mpdu_cnt;
0726 __le32 rx_agg_cnt;
0727 __le32 unsupported_mcs;
0728 __le32 bogus_cts;
0729 __le32 bogus_ack;
0730 __le32 rx_byte_count[MAC_INDEX_AUX];
0731 __le32 rx_packet_count[MAC_INDEX_AUX];
0732 __le32 missed_beacons;
0733 __le32 unresponded_rts;
0734 __le32 rxe_frame_limit_overrun;
0735 __le32 sent_ba_rsp_cnt;
0736 __le32 late_rx_handle;
0737 __le32 num_bt_kills;
0738 __le32 reserved;
0739 } __packed;
0740
0741
0742
0743
0744
0745
0746
0747
0748
0749
0750
0751
0752
0753
0754
0755
0756
0757
0758
0759
0760
0761
0762
0763
0764
0765
0766
0767
0768
0769
0770
0771
0772
0773
0774
0775
0776
0777
0778
0779
0780
0781
0782
0783
0784
0785
0786
0787
0788
0789
0790
0791
0792
0793
0794
0795
0796
0797
0798
0799
0800
0801
0802
0803
0804
0805
0806
0807
0808
0809
0810
0811 struct iwl_statistics_tx_ntfy {
0812 struct iwl_statistics_ntfy_hdr hdr;
0813 __le32 cts_timeout;
0814 __le32 ack_timeout;
0815 __le32 dump_msdu_cnt;
0816 __le32 burst_abort_missing_next_frame_cnt;
0817 __le32 cts_timeout_collision;
0818 __le32 ack_or_ba_timeout_collision;
0819 __le32 ba_timeout;
0820 __le32 ba_reschedule_frames;
0821 __le32 scd_query_agg_frame_cnt;
0822 __le32 scd_query_no_agg;
0823 __le32 scd_query_agg;
0824 __le32 scd_query_mismatch;
0825 __le32 agg_terminated_underrun;
0826 __le32 agg_terminated_bt_prio_kill;
0827 __le32 tx_kill_on_long_retry;
0828 __le32 tx_kill_on_short_retry;
0829 __le32 tx_deffer_counter;
0830 __le32 tx_deffer_base_time;
0831 __le32 tx_underrun;
0832 __le32 bt_defer;
0833 __le32 tx_kill_on_dsp_timeout;
0834 __le32 tx_kill_on_immediate_quiet;
0835 __le32 kill_ba_cnt;
0836 __le32 kill_ack_cnt;
0837 __le32 kill_cts_cnt;
0838 __le32 burst_terminated;
0839 __le32 late_tx_vec_wr_cnt;
0840 __le32 late_rx2_tx_cnt;
0841 __le32 scd_query_cnt;
0842 __le32 tx_frames_acked_in_agg;
0843 __le32 last_tx_ch_width_indx;
0844 __le32 rx_detected_per_ch_width[4];
0845 __le32 success_per_ch_width[4];
0846 __le32 fail_per_ch_width[4];
0847 __le32 reserved;
0848 } __packed;
0849
0850
0851
0852
0853
0854
0855
0856
0857
0858
0859
0860
0861 struct iwl_statistics_duration_ntfy {
0862 struct iwl_statistics_ntfy_hdr hdr;
0863 __le32 cont_burst_chk_cnt;
0864 __le32 cont_burst_cnt;
0865 __le32 wait_for_silence_timeout_cnt;
0866 __le32 reserved;
0867 } __packed;
0868
0869
0870
0871
0872
0873
0874
0875
0876
0877
0878
0879
0880
0881
0882
0883
0884
0885
0886
0887
0888
0889
0890
0891
0892
0893
0894
0895
0896
0897
0898
0899
0900
0901
0902
0903
0904
0905
0906
0907
0908
0909
0910
0911
0912
0913
0914
0915
0916
0917
0918
0919
0920
0921 struct iwl_statistics_he_ntfy {
0922 struct iwl_statistics_ntfy_hdr hdr;
0923 __le32 rx_siga_valid_cnt;
0924 __le32 rx_siga_invalid_cnt;
0925 __le32 rx_trig_based_frame_cnt;
0926 __le32 rx_su_frame_cnt;
0927 __le32 rx_sigb_invalid_cnt;
0928 __le32 rx_our_bss_color_cnt;
0929 __le32 rx_other_bss_color_cnt;
0930 __le32 rx_zero_bss_color_cnt;
0931 __le32 rx_mu_for_us_cnt;
0932 __le32 rx_mu_not_for_us_cnt;
0933 __le32 rx_mu_nss_ar[2];
0934 __le32 rx_mu_mimo_cnt;
0935 __le32 rx_mu_ru_bw_ar[7];
0936 __le32 rx_trig_for_us_cnt;
0937 __le32 rx_trig_not_for_us_cnt;
0938 __le32 rx_trig_with_cs_req_cnt;
0939 __le32 rx_trig_type_ar[8 + 1];
0940 __le32 rx_trig_in_agg_cnt;
0941 __le32 rx_basic_trig_alloc_nss_ar[2];
0942 __le32 rx_basic_trig_alloc_mu_mimo_cnt;
0943 __le32 rx_basic_trig_alloc_ru_bw_ar[7];
0944 __le32 rx_basic_trig_total_byte_cnt;
0945 __le32 tx_trig_based_cs_req_fail_cnt;
0946 __le32 tx_trig_based_sifs_ok_cnt;
0947 __le32 tx_trig_based_sifs_fail_cnt;
0948 __le32 tx_trig_based_byte_cnt;
0949 __le32 tx_trig_based_pad_byte_cnt;
0950 __le32 tx_trig_based_frame_cnt;
0951 __le32 tx_trig_based_acked_frame_cnt;
0952 __le32 tx_trig_based_ack_timeout_cnt;
0953 __le32 tx_su_frame_cnt;
0954 __le32 tx_edca_to_mu_edca_cnt;
0955 __le32 tx_mu_edca_to_edca_by_timeout_cnt;
0956 __le32 tx_mu_edca_to_edca_by_ack_fail_cnt;
0957 __le32 tx_mu_edca_to_edca_by_small_alloc_cnt;
0958 __le32 reserved;
0959 } __packed;
0960
0961 #endif