diff options
author | Johannes Berg <johannes.berg@intel.com> | 2015-01-14 09:54:18 -0500 |
---|---|---|
committer | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2015-01-22 10:54:07 -0500 |
commit | d19ac5897163aacb9d485a435f4d98f6fb209d77 (patch) | |
tree | 68c350e89f1eccb8d5bf5c661e9671b284927b85 | |
parent | 75e52472add9bb6aa219c491103d240c899cf432 (diff) |
iwlwifi: mvm: move statistics API to new header file
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/fw-api-stats.h | 277 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/fw-api.h | 209 |
2 files changed, 278 insertions, 208 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/fw-api-stats.h b/drivers/net/wireless/iwlwifi/mvm/fw-api-stats.h new file mode 100644 index 000000000000..bda3a3691f20 --- /dev/null +++ b/drivers/net/wireless/iwlwifi/mvm/fw-api-stats.h | |||
@@ -0,0 +1,277 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * This file is provided under a dual BSD/GPLv2 license. When using or | ||
4 | * redistributing this file, you may do so under either license. | ||
5 | * | ||
6 | * GPL LICENSE SUMMARY | ||
7 | * | ||
8 | * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. | ||
9 | * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH | ||
10 | * | ||
11 | * This program is free software; you can redistribute it and/or modify | ||
12 | * it under the terms of version 2 of the GNU General Public License as | ||
13 | * published by the Free Software Foundation. | ||
14 | * | ||
15 | * This program is distributed in the hope that it will be useful, but | ||
16 | * WITHOUT ANY WARRANTY; without even the implied warranty of | ||
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
18 | * General Public License for more details. | ||
19 | * | ||
20 | * You should have received a copy of the GNU General Public License | ||
21 | * along with this program; if not, write to the Free Software | ||
22 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, | ||
23 | * USA | ||
24 | * | ||
25 | * The full GNU General Public License is included in this distribution | ||
26 | * in the file called COPYING. | ||
27 | * | ||
28 | * Contact Information: | ||
29 | * Intel Linux Wireless <ilw@linux.intel.com> | ||
30 | * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 | ||
31 | * | ||
32 | * BSD LICENSE | ||
33 | * | ||
34 | * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. | ||
35 | * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH | ||
36 | * All rights reserved. | ||
37 | * | ||
38 | * Redistribution and use in source and binary forms, with or without | ||
39 | * modification, are permitted provided that the following conditions | ||
40 | * are met: | ||
41 | * | ||
42 | * * Redistributions of source code must retain the above copyright | ||
43 | * notice, this list of conditions and the following disclaimer. | ||
44 | * * Redistributions in binary form must reproduce the above copyright | ||
45 | * notice, this list of conditions and the following disclaimer in | ||
46 | * the documentation and/or other materials provided with the | ||
47 | * distribution. | ||
48 | * * Neither the name Intel Corporation nor the names of its | ||
49 | * contributors may be used to endorse or promote products derived | ||
50 | * from this software without specific prior written permission. | ||
51 | * | ||
52 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||
53 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||
54 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||
55 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | ||
56 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | ||
57 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | ||
58 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
59 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
60 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
61 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||
62 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
63 | * | ||
64 | *****************************************************************************/ | ||
65 | |||
66 | #ifndef __fw_api_stats_h__ | ||
67 | #define __fw_api_stats_h__ | ||
68 | |||
69 | struct mvm_statistics_dbg { | ||
70 | __le32 burst_check; | ||
71 | __le32 burst_count; | ||
72 | __le32 wait_for_silence_timeout_cnt; | ||
73 | __le32 reserved[3]; | ||
74 | } __packed; /* STATISTICS_DEBUG_API_S_VER_2 */ | ||
75 | |||
76 | struct mvm_statistics_div { | ||
77 | __le32 tx_on_a; | ||
78 | __le32 tx_on_b; | ||
79 | __le32 exec_time; | ||
80 | __le32 probe_time; | ||
81 | __le32 rssi_ant; | ||
82 | __le32 reserved2; | ||
83 | } __packed; /* STATISTICS_SLOW_DIV_API_S_VER_2 */ | ||
84 | |||
85 | struct mvm_statistics_rx_non_phy { | ||
86 | __le32 bogus_cts; /* CTS received when not expecting CTS */ | ||
87 | __le32 bogus_ack; /* ACK received when not expecting ACK */ | ||
88 | __le32 non_bssid_frames; /* number of frames with BSSID that | ||
89 | * doesn't belong to the STA BSSID */ | ||
90 | __le32 filtered_frames; /* count frames that were dumped in the | ||
91 | * filtering process */ | ||
92 | __le32 non_channel_beacons; /* beacons with our bss id but not on | ||
93 | * our serving channel */ | ||
94 | __le32 channel_beacons; /* beacons with our bss id and in our | ||
95 | * serving channel */ | ||
96 | __le32 num_missed_bcon; /* number of missed beacons */ | ||
97 | __le32 adc_rx_saturation_time; /* count in 0.8us units the time the | ||
98 | * ADC was in saturation */ | ||
99 | __le32 ina_detection_search_time;/* total time (in 0.8us) searched | ||
100 | * for INA */ | ||
101 | __le32 beacon_silence_rssi_a; /* RSSI silence after beacon frame */ | ||
102 | __le32 beacon_silence_rssi_b; /* RSSI silence after beacon frame */ | ||
103 | __le32 beacon_silence_rssi_c; /* RSSI silence after beacon frame */ | ||
104 | __le32 interference_data_flag; /* flag for interference data | ||
105 | * availability. 1 when data is | ||
106 | * available. */ | ||
107 | __le32 channel_load; /* counts RX Enable time in uSec */ | ||
108 | __le32 dsp_false_alarms; /* DSP false alarm (both OFDM | ||
109 | * and CCK) counter */ | ||
110 | __le32 beacon_rssi_a; | ||
111 | __le32 beacon_rssi_b; | ||
112 | __le32 beacon_rssi_c; | ||
113 | __le32 beacon_energy_a; | ||
114 | __le32 beacon_energy_b; | ||
115 | __le32 beacon_energy_c; | ||
116 | __le32 num_bt_kills; | ||
117 | __le32 mac_id; | ||
118 | __le32 directed_data_mpdu; | ||
119 | } __packed; /* STATISTICS_RX_NON_PHY_API_S_VER_3 */ | ||
120 | |||
121 | struct mvm_statistics_rx_phy { | ||
122 | __le32 ina_cnt; | ||
123 | __le32 fina_cnt; | ||
124 | __le32 plcp_err; | ||
125 | __le32 crc32_err; | ||
126 | __le32 overrun_err; | ||
127 | __le32 early_overrun_err; | ||
128 | __le32 crc32_good; | ||
129 | __le32 false_alarm_cnt; | ||
130 | __le32 fina_sync_err_cnt; | ||
131 | __le32 sfd_timeout; | ||
132 | __le32 fina_timeout; | ||
133 | __le32 unresponded_rts; | ||
134 | __le32 rxe_frame_limit_overrun; | ||
135 | __le32 sent_ack_cnt; | ||
136 | __le32 sent_cts_cnt; | ||
137 | __le32 sent_ba_rsp_cnt; | ||
138 | __le32 dsp_self_kill; | ||
139 | __le32 mh_format_err; | ||
140 | __le32 re_acq_main_rssi_sum; | ||
141 | __le32 reserved; | ||
142 | } __packed; /* STATISTICS_RX_PHY_API_S_VER_2 */ | ||
143 | |||
144 | struct mvm_statistics_rx_ht_phy { | ||
145 | __le32 plcp_err; | ||
146 | __le32 overrun_err; | ||
147 | __le32 early_overrun_err; | ||
148 | __le32 crc32_good; | ||
149 | __le32 crc32_err; | ||
150 | __le32 mh_format_err; | ||
151 | __le32 agg_crc32_good; | ||
152 | __le32 agg_mpdu_cnt; | ||
153 | __le32 agg_cnt; | ||
154 | __le32 unsupport_mcs; | ||
155 | } __packed; /* STATISTICS_HT_RX_PHY_API_S_VER_1 */ | ||
156 | |||
157 | struct mvm_statistics_tx_non_phy { | ||
158 | __le32 preamble_cnt; | ||
159 | __le32 rx_detected_cnt; | ||
160 | __le32 bt_prio_defer_cnt; | ||
161 | __le32 bt_prio_kill_cnt; | ||
162 | __le32 few_bytes_cnt; | ||
163 | __le32 cts_timeout; | ||
164 | __le32 ack_timeout; | ||
165 | __le32 expected_ack_cnt; | ||
166 | __le32 actual_ack_cnt; | ||
167 | __le32 dump_msdu_cnt; | ||
168 | __le32 burst_abort_next_frame_mismatch_cnt; | ||
169 | __le32 burst_abort_missing_next_frame_cnt; | ||
170 | __le32 cts_timeout_collision; | ||
171 | __le32 ack_or_ba_timeout_collision; | ||
172 | } __packed; /* STATISTICS_TX_NON_PHY_API_S_VER_3 */ | ||
173 | |||
174 | #define MAX_CHAINS 3 | ||
175 | |||
176 | struct mvm_statistics_tx_non_phy_agg { | ||
177 | __le32 ba_timeout; | ||
178 | __le32 ba_reschedule_frames; | ||
179 | __le32 scd_query_agg_frame_cnt; | ||
180 | __le32 scd_query_no_agg; | ||
181 | __le32 scd_query_agg; | ||
182 | __le32 scd_query_mismatch; | ||
183 | __le32 frame_not_ready; | ||
184 | __le32 underrun; | ||
185 | __le32 bt_prio_kill; | ||
186 | __le32 rx_ba_rsp_cnt; | ||
187 | __s8 txpower[MAX_CHAINS]; | ||
188 | __s8 reserved; | ||
189 | __le32 reserved2; | ||
190 | } __packed; /* STATISTICS_TX_NON_PHY_AGG_API_S_VER_1 */ | ||
191 | |||
192 | struct mvm_statistics_tx_channel_width { | ||
193 | __le32 ext_cca_narrow_ch20[1]; | ||
194 | __le32 ext_cca_narrow_ch40[2]; | ||
195 | __le32 ext_cca_narrow_ch80[3]; | ||
196 | __le32 ext_cca_narrow_ch160[4]; | ||
197 | __le32 last_tx_ch_width_indx; | ||
198 | __le32 rx_detected_per_ch_width[4]; | ||
199 | __le32 success_per_ch_width[4]; | ||
200 | __le32 fail_per_ch_width[4]; | ||
201 | }; /* STATISTICS_TX_CHANNEL_WIDTH_API_S_VER_1 */ | ||
202 | |||
203 | struct mvm_statistics_tx { | ||
204 | struct mvm_statistics_tx_non_phy general; | ||
205 | struct mvm_statistics_tx_non_phy_agg agg; | ||
206 | struct mvm_statistics_tx_channel_width channel_width; | ||
207 | } __packed; /* STATISTICS_TX_API_S_VER_4 */ | ||
208 | |||
209 | |||
210 | struct mvm_statistics_bt_activity { | ||
211 | __le32 hi_priority_tx_req_cnt; | ||
212 | __le32 hi_priority_tx_denied_cnt; | ||
213 | __le32 lo_priority_tx_req_cnt; | ||
214 | __le32 lo_priority_tx_denied_cnt; | ||
215 | __le32 hi_priority_rx_req_cnt; | ||
216 | __le32 hi_priority_rx_denied_cnt; | ||
217 | __le32 lo_priority_rx_req_cnt; | ||
218 | __le32 lo_priority_rx_denied_cnt; | ||
219 | } __packed; /* STATISTICS_BT_ACTIVITY_API_S_VER_1 */ | ||
220 | |||
221 | struct mvm_statistics_general { | ||
222 | __le32 radio_temperature; | ||
223 | __le32 radio_voltage; | ||
224 | struct mvm_statistics_dbg dbg; | ||
225 | __le32 sleep_time; | ||
226 | __le32 slots_out; | ||
227 | __le32 slots_idle; | ||
228 | __le32 ttl_timestamp; | ||
229 | struct mvm_statistics_div slow_div; | ||
230 | __le32 rx_enable_counter; | ||
231 | /* | ||
232 | * num_of_sos_states: | ||
233 | * count the number of times we have to re-tune | ||
234 | * in order to get out of bad PHY status | ||
235 | */ | ||
236 | __le32 num_of_sos_states; | ||
237 | __le32 beacon_filtered; | ||
238 | __le32 missed_beacons; | ||
239 | __s8 beacon_filter_average_energy; | ||
240 | __s8 beacon_filter_reason; | ||
241 | __s8 beacon_filter_current_energy; | ||
242 | __s8 beacon_filter_reserved; | ||
243 | __le32 beacon_filter_delta_time; | ||
244 | struct mvm_statistics_bt_activity bt_activity; | ||
245 | } __packed; /* STATISTICS_GENERAL_API_S_VER_5 */ | ||
246 | |||
247 | struct mvm_statistics_rx { | ||
248 | struct mvm_statistics_rx_phy ofdm; | ||
249 | struct mvm_statistics_rx_phy cck; | ||
250 | struct mvm_statistics_rx_non_phy general; | ||
251 | struct mvm_statistics_rx_ht_phy ofdm_ht; | ||
252 | } __packed; /* STATISTICS_RX_API_S_VER_3 */ | ||
253 | |||
254 | /* | ||
255 | * STATISTICS_NOTIFICATION = 0x9d (notification only, not a command) | ||
256 | * | ||
257 | * By default, uCode issues this notification after receiving a beacon | ||
258 | * while associated. To disable this behavior, set DISABLE_NOTIF flag in the | ||
259 | * REPLY_STATISTICS_CMD 0x9c, above. | ||
260 | * | ||
261 | * Statistics counters continue to increment beacon after beacon, but are | ||
262 | * cleared when changing channels or when driver issues REPLY_STATISTICS_CMD | ||
263 | * 0x9c with CLEAR_STATS bit set (see above). | ||
264 | * | ||
265 | * uCode also issues this notification during scans. uCode clears statistics | ||
266 | * appropriately so that each notification contains statistics for only the | ||
267 | * one channel that has just been scanned. | ||
268 | */ | ||
269 | |||
270 | struct iwl_notif_statistics { | ||
271 | __le32 flag; | ||
272 | struct mvm_statistics_rx rx; | ||
273 | struct mvm_statistics_tx tx; | ||
274 | struct mvm_statistics_general general; | ||
275 | } __packed; /* STATISTICS_NTFY_API_S_VER_8 */ | ||
276 | |||
277 | #endif /* __fw_api_stats_h__ */ | ||
diff --git a/drivers/net/wireless/iwlwifi/mvm/fw-api.h b/drivers/net/wireless/iwlwifi/mvm/fw-api.h index 1a934a64b358..b56154fe8ec5 100644 --- a/drivers/net/wireless/iwlwifi/mvm/fw-api.h +++ b/drivers/net/wireless/iwlwifi/mvm/fw-api.h | |||
@@ -74,6 +74,7 @@ | |||
74 | #include "fw-api-d3.h" | 74 | #include "fw-api-d3.h" |
75 | #include "fw-api-coex.h" | 75 | #include "fw-api-coex.h" |
76 | #include "fw-api-scan.h" | 76 | #include "fw-api-scan.h" |
77 | #include "fw-api-stats.h" | ||
77 | 78 | ||
78 | /* Tx queue numbers */ | 79 | /* Tx queue numbers */ |
79 | enum { | 80 | enum { |
@@ -1384,214 +1385,6 @@ struct iwl_mvm_marker { | |||
1384 | __le32 metadata[0]; | 1385 | __le32 metadata[0]; |
1385 | } __packed; /* MARKER_API_S_VER_1 */ | 1386 | } __packed; /* MARKER_API_S_VER_1 */ |
1386 | 1387 | ||
1387 | struct mvm_statistics_dbg { | ||
1388 | __le32 burst_check; | ||
1389 | __le32 burst_count; | ||
1390 | __le32 wait_for_silence_timeout_cnt; | ||
1391 | __le32 reserved[3]; | ||
1392 | } __packed; /* STATISTICS_DEBUG_API_S_VER_2 */ | ||
1393 | |||
1394 | struct mvm_statistics_div { | ||
1395 | __le32 tx_on_a; | ||
1396 | __le32 tx_on_b; | ||
1397 | __le32 exec_time; | ||
1398 | __le32 probe_time; | ||
1399 | __le32 rssi_ant; | ||
1400 | __le32 reserved2; | ||
1401 | } __packed; /* STATISTICS_SLOW_DIV_API_S_VER_2 */ | ||
1402 | |||
1403 | struct mvm_statistics_rx_non_phy { | ||
1404 | __le32 bogus_cts; /* CTS received when not expecting CTS */ | ||
1405 | __le32 bogus_ack; /* ACK received when not expecting ACK */ | ||
1406 | __le32 non_bssid_frames; /* number of frames with BSSID that | ||
1407 | * doesn't belong to the STA BSSID */ | ||
1408 | __le32 filtered_frames; /* count frames that were dumped in the | ||
1409 | * filtering process */ | ||
1410 | __le32 non_channel_beacons; /* beacons with our bss id but not on | ||
1411 | * our serving channel */ | ||
1412 | __le32 channel_beacons; /* beacons with our bss id and in our | ||
1413 | * serving channel */ | ||
1414 | __le32 num_missed_bcon; /* number of missed beacons */ | ||
1415 | __le32 adc_rx_saturation_time; /* count in 0.8us units the time the | ||
1416 | * ADC was in saturation */ | ||
1417 | __le32 ina_detection_search_time;/* total time (in 0.8us) searched | ||
1418 | * for INA */ | ||
1419 | __le32 beacon_silence_rssi_a; /* RSSI silence after beacon frame */ | ||
1420 | __le32 beacon_silence_rssi_b; /* RSSI silence after beacon frame */ | ||
1421 | __le32 beacon_silence_rssi_c; /* RSSI silence after beacon frame */ | ||
1422 | __le32 interference_data_flag; /* flag for interference data | ||
1423 | * availability. 1 when data is | ||
1424 | * available. */ | ||
1425 | __le32 channel_load; /* counts RX Enable time in uSec */ | ||
1426 | __le32 dsp_false_alarms; /* DSP false alarm (both OFDM | ||
1427 | * and CCK) counter */ | ||
1428 | __le32 beacon_rssi_a; | ||
1429 | __le32 beacon_rssi_b; | ||
1430 | __le32 beacon_rssi_c; | ||
1431 | __le32 beacon_energy_a; | ||
1432 | __le32 beacon_energy_b; | ||
1433 | __le32 beacon_energy_c; | ||
1434 | __le32 num_bt_kills; | ||
1435 | __le32 mac_id; | ||
1436 | __le32 directed_data_mpdu; | ||
1437 | } __packed; /* STATISTICS_RX_NON_PHY_API_S_VER_3 */ | ||
1438 | |||
1439 | struct mvm_statistics_rx_phy { | ||
1440 | __le32 ina_cnt; | ||
1441 | __le32 fina_cnt; | ||
1442 | __le32 plcp_err; | ||
1443 | __le32 crc32_err; | ||
1444 | __le32 overrun_err; | ||
1445 | __le32 early_overrun_err; | ||
1446 | __le32 crc32_good; | ||
1447 | __le32 false_alarm_cnt; | ||
1448 | __le32 fina_sync_err_cnt; | ||
1449 | __le32 sfd_timeout; | ||
1450 | __le32 fina_timeout; | ||
1451 | __le32 unresponded_rts; | ||
1452 | __le32 rxe_frame_limit_overrun; | ||
1453 | __le32 sent_ack_cnt; | ||
1454 | __le32 sent_cts_cnt; | ||
1455 | __le32 sent_ba_rsp_cnt; | ||
1456 | __le32 dsp_self_kill; | ||
1457 | __le32 mh_format_err; | ||
1458 | __le32 re_acq_main_rssi_sum; | ||
1459 | __le32 reserved; | ||
1460 | } __packed; /* STATISTICS_RX_PHY_API_S_VER_2 */ | ||
1461 | |||
1462 | struct mvm_statistics_rx_ht_phy { | ||
1463 | __le32 plcp_err; | ||
1464 | __le32 overrun_err; | ||
1465 | __le32 early_overrun_err; | ||
1466 | __le32 crc32_good; | ||
1467 | __le32 crc32_err; | ||
1468 | __le32 mh_format_err; | ||
1469 | __le32 agg_crc32_good; | ||
1470 | __le32 agg_mpdu_cnt; | ||
1471 | __le32 agg_cnt; | ||
1472 | __le32 unsupport_mcs; | ||
1473 | } __packed; /* STATISTICS_HT_RX_PHY_API_S_VER_1 */ | ||
1474 | |||
1475 | struct mvm_statistics_tx_non_phy { | ||
1476 | __le32 preamble_cnt; | ||
1477 | __le32 rx_detected_cnt; | ||
1478 | __le32 bt_prio_defer_cnt; | ||
1479 | __le32 bt_prio_kill_cnt; | ||
1480 | __le32 few_bytes_cnt; | ||
1481 | __le32 cts_timeout; | ||
1482 | __le32 ack_timeout; | ||
1483 | __le32 expected_ack_cnt; | ||
1484 | __le32 actual_ack_cnt; | ||
1485 | __le32 dump_msdu_cnt; | ||
1486 | __le32 burst_abort_next_frame_mismatch_cnt; | ||
1487 | __le32 burst_abort_missing_next_frame_cnt; | ||
1488 | __le32 cts_timeout_collision; | ||
1489 | __le32 ack_or_ba_timeout_collision; | ||
1490 | } __packed; /* STATISTICS_TX_NON_PHY_API_S_VER_3 */ | ||
1491 | |||
1492 | #define MAX_CHAINS 3 | ||
1493 | |||
1494 | struct mvm_statistics_tx_non_phy_agg { | ||
1495 | __le32 ba_timeout; | ||
1496 | __le32 ba_reschedule_frames; | ||
1497 | __le32 scd_query_agg_frame_cnt; | ||
1498 | __le32 scd_query_no_agg; | ||
1499 | __le32 scd_query_agg; | ||
1500 | __le32 scd_query_mismatch; | ||
1501 | __le32 frame_not_ready; | ||
1502 | __le32 underrun; | ||
1503 | __le32 bt_prio_kill; | ||
1504 | __le32 rx_ba_rsp_cnt; | ||
1505 | __s8 txpower[MAX_CHAINS]; | ||
1506 | __s8 reserved; | ||
1507 | __le32 reserved2; | ||
1508 | } __packed; /* STATISTICS_TX_NON_PHY_AGG_API_S_VER_1 */ | ||
1509 | |||
1510 | struct mvm_statistics_tx_channel_width { | ||
1511 | __le32 ext_cca_narrow_ch20[1]; | ||
1512 | __le32 ext_cca_narrow_ch40[2]; | ||
1513 | __le32 ext_cca_narrow_ch80[3]; | ||
1514 | __le32 ext_cca_narrow_ch160[4]; | ||
1515 | __le32 last_tx_ch_width_indx; | ||
1516 | __le32 rx_detected_per_ch_width[4]; | ||
1517 | __le32 success_per_ch_width[4]; | ||
1518 | __le32 fail_per_ch_width[4]; | ||
1519 | }; /* STATISTICS_TX_CHANNEL_WIDTH_API_S_VER_1 */ | ||
1520 | |||
1521 | struct mvm_statistics_tx { | ||
1522 | struct mvm_statistics_tx_non_phy general; | ||
1523 | struct mvm_statistics_tx_non_phy_agg agg; | ||
1524 | struct mvm_statistics_tx_channel_width channel_width; | ||
1525 | } __packed; /* STATISTICS_TX_API_S_VER_4 */ | ||
1526 | |||
1527 | |||
1528 | struct mvm_statistics_bt_activity { | ||
1529 | __le32 hi_priority_tx_req_cnt; | ||
1530 | __le32 hi_priority_tx_denied_cnt; | ||
1531 | __le32 lo_priority_tx_req_cnt; | ||
1532 | __le32 lo_priority_tx_denied_cnt; | ||
1533 | __le32 hi_priority_rx_req_cnt; | ||
1534 | __le32 hi_priority_rx_denied_cnt; | ||
1535 | __le32 lo_priority_rx_req_cnt; | ||
1536 | __le32 lo_priority_rx_denied_cnt; | ||
1537 | } __packed; /* STATISTICS_BT_ACTIVITY_API_S_VER_1 */ | ||
1538 | |||
1539 | struct mvm_statistics_general { | ||
1540 | __le32 radio_temperature; | ||
1541 | __le32 radio_voltage; | ||
1542 | struct mvm_statistics_dbg dbg; | ||
1543 | __le32 sleep_time; | ||
1544 | __le32 slots_out; | ||
1545 | __le32 slots_idle; | ||
1546 | __le32 ttl_timestamp; | ||
1547 | struct mvm_statistics_div slow_div; | ||
1548 | __le32 rx_enable_counter; | ||
1549 | /* | ||
1550 | * num_of_sos_states: | ||
1551 | * count the number of times we have to re-tune | ||
1552 | * in order to get out of bad PHY status | ||
1553 | */ | ||
1554 | __le32 num_of_sos_states; | ||
1555 | __le32 beacon_filtered; | ||
1556 | __le32 missed_beacons; | ||
1557 | __s8 beacon_filter_average_energy; | ||
1558 | __s8 beacon_filter_reason; | ||
1559 | __s8 beacon_filter_current_energy; | ||
1560 | __s8 beacon_filter_reserved; | ||
1561 | __le32 beacon_filter_delta_time; | ||
1562 | struct mvm_statistics_bt_activity bt_activity; | ||
1563 | } __packed; /* STATISTICS_GENERAL_API_S_VER_5 */ | ||
1564 | |||
1565 | struct mvm_statistics_rx { | ||
1566 | struct mvm_statistics_rx_phy ofdm; | ||
1567 | struct mvm_statistics_rx_phy cck; | ||
1568 | struct mvm_statistics_rx_non_phy general; | ||
1569 | struct mvm_statistics_rx_ht_phy ofdm_ht; | ||
1570 | } __packed; /* STATISTICS_RX_API_S_VER_3 */ | ||
1571 | |||
1572 | /* | ||
1573 | * STATISTICS_NOTIFICATION = 0x9d (notification only, not a command) | ||
1574 | * | ||
1575 | * By default, uCode issues this notification after receiving a beacon | ||
1576 | * while associated. To disable this behavior, set DISABLE_NOTIF flag in the | ||
1577 | * REPLY_STATISTICS_CMD 0x9c, above. | ||
1578 | * | ||
1579 | * Statistics counters continue to increment beacon after beacon, but are | ||
1580 | * cleared when changing channels or when driver issues REPLY_STATISTICS_CMD | ||
1581 | * 0x9c with CLEAR_STATS bit set (see above). | ||
1582 | * | ||
1583 | * uCode also issues this notification during scans. uCode clears statistics | ||
1584 | * appropriately so that each notification contains statistics for only the | ||
1585 | * one channel that has just been scanned. | ||
1586 | */ | ||
1587 | |||
1588 | struct iwl_notif_statistics { | ||
1589 | __le32 flag; | ||
1590 | struct mvm_statistics_rx rx; | ||
1591 | struct mvm_statistics_tx tx; | ||
1592 | struct mvm_statistics_general general; | ||
1593 | } __packed; /* STATISTICS_NTFY_API_S_VER_8 */ | ||
1594 | |||
1595 | /*********************************** | 1388 | /*********************************** |
1596 | * Smart Fifo API | 1389 | * Smart Fifo API |
1597 | ***********************************/ | 1390 | ***********************************/ |