1 /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
2 /*
3 * Copyright (C) 2013-2015 Intel Mobile Communications GmbH
4 * Copyright (C) 2016-2017 Intel Deutschland GmbH
5 * Copyright (C) 2018-2020 Intel Corporation
6 */
7 #ifndef __iwl_fw_api_commands_h__
8 #define __iwl_fw_api_commands_h__
9
10 /**
11 * enum iwl_mvm_command_groups - command groups for the firmware
12 * @LEGACY_GROUP: legacy group, uses command IDs from &enum iwl_legacy_cmds
13 * @LONG_GROUP: legacy group with long header, also uses command IDs
14 * from &enum iwl_legacy_cmds
15 * @SYSTEM_GROUP: system group, uses command IDs from
16 * &enum iwl_system_subcmd_ids
17 * @MAC_CONF_GROUP: MAC configuration group, uses command IDs from
18 * &enum iwl_mac_conf_subcmd_ids
19 * @PHY_OPS_GROUP: PHY operations group, uses command IDs from
20 * &enum iwl_phy_ops_subcmd_ids
21 * @DATA_PATH_GROUP: data path group, uses command IDs from
22 * &enum iwl_data_path_subcmd_ids
23 * @NAN_GROUP: NAN group, uses command IDs from &enum iwl_nan_subcmd_ids
24 * @LOCATION_GROUP: location group, uses command IDs from
25 * &enum iwl_location_subcmd_ids
26 * @PROT_OFFLOAD_GROUP: protocol offload group, uses command IDs from
27 * &enum iwl_prot_offload_subcmd_ids
28 * @REGULATORY_AND_NVM_GROUP: regulatory/NVM group, uses command IDs from
29 * &enum iwl_regulatory_and_nvm_subcmd_ids
30 * @DEBUG_GROUP: Debug group, uses command IDs from &enum iwl_debug_cmds
31 */
32 enum iwl_mvm_command_groups {
33 LEGACY_GROUP = 0x0,
34 LONG_GROUP = 0x1,
35 SYSTEM_GROUP = 0x2,
36 MAC_CONF_GROUP = 0x3,
37 PHY_OPS_GROUP = 0x4,
38 DATA_PATH_GROUP = 0x5,
39 NAN_GROUP = 0x7,
40 LOCATION_GROUP = 0x8,
41 PROT_OFFLOAD_GROUP = 0xb,
42 REGULATORY_AND_NVM_GROUP = 0xc,
43 DEBUG_GROUP = 0xf,
44 };
45
46 /**
47 * enum iwl_legacy_cmds - legacy group command IDs
48 */
49 enum iwl_legacy_cmds {
50 /**
51 * @UCODE_ALIVE_NTFY:
52 * Alive data from the firmware, as described in
53 * &struct iwl_alive_ntf_v3 or &struct iwl_alive_ntf_v4 or
54 * &struct iwl_alive_ntf_v5 or &struct iwl_alive_ntf_v6.
55 */
56 UCODE_ALIVE_NTFY = 0x1,
57
58 /**
59 * @REPLY_ERROR: Cause an error in the firmware, for testing purposes.
60 */
61 REPLY_ERROR = 0x2,
62
63 /**
64 * @ECHO_CMD: Send data to the device to have it returned immediately.
65 */
66 ECHO_CMD = 0x3,
67
68 /**
69 * @INIT_COMPLETE_NOTIF: Notification that initialization is complete.
70 */
71 INIT_COMPLETE_NOTIF = 0x4,
72
73 /**
74 * @PHY_CONTEXT_CMD:
75 * Add/modify/remove a PHY context, using &struct iwl_phy_context_cmd
76 * or &struct iwl_phy_context_cmd_v1.
77 */
78 PHY_CONTEXT_CMD = 0x8,
79
80 /**
81 * @DBG_CFG: Debug configuration command.
82 */
83 DBG_CFG = 0x9,
84
85 /**
86 * @SCAN_ITERATION_COMPLETE_UMAC:
87 * Firmware indicates a scan iteration completed, using
88 * &struct iwl_umac_scan_iter_complete_notif.
89 */
90 SCAN_ITERATION_COMPLETE_UMAC = 0xb5,
91
92 /**
93 * @SCAN_CFG_CMD:
94 * uses &struct iwl_scan_config_v1, &struct iwl_scan_config_v2
95 * or &struct iwl_scan_config
96 */
97 SCAN_CFG_CMD = 0xc,
98
99 /**
100 * @SCAN_REQ_UMAC: uses &struct iwl_scan_req_umac
101 */
102 SCAN_REQ_UMAC = 0xd,
103
104 /**
105 * @SCAN_ABORT_UMAC: uses &struct iwl_umac_scan_abort
106 */
107 SCAN_ABORT_UMAC = 0xe,
108
109 /**
110 * @SCAN_COMPLETE_UMAC: uses &struct iwl_umac_scan_complete
111 */
112 SCAN_COMPLETE_UMAC = 0xf,
113
114 /**
115 * @BA_WINDOW_STATUS_NOTIFICATION_ID:
116 * uses &struct iwl_ba_window_status_notif
117 */
118 BA_WINDOW_STATUS_NOTIFICATION_ID = 0x13,
119
120 /**
121 * @ADD_STA_KEY:
122 * &struct iwl_mvm_add_sta_key_cmd_v1 or
123 * &struct iwl_mvm_add_sta_key_cmd.
124 */
125 ADD_STA_KEY = 0x17,
126
127 /**
128 * @ADD_STA:
129 * &struct iwl_mvm_add_sta_cmd or &struct iwl_mvm_add_sta_cmd_v7.
130 */
131 ADD_STA = 0x18,
132
133 /**
134 * @REMOVE_STA: &struct iwl_mvm_rm_sta_cmd
135 */
136 REMOVE_STA = 0x19,
137
138 /**
139 * @FW_GET_ITEM_CMD: uses &struct iwl_fw_get_item_cmd
140 */
141 FW_GET_ITEM_CMD = 0x1a,
142
143 /**
144 * @TX_CMD: uses &struct iwl_tx_cmd or &struct iwl_tx_cmd_gen2 or
145 * &struct iwl_tx_cmd_gen3,
146 * response in &struct iwl_mvm_tx_resp or
147 * &struct iwl_mvm_tx_resp_v3
148 */
149 TX_CMD = 0x1c,
150
151 /**
152 * @TXPATH_FLUSH: &struct iwl_tx_path_flush_cmd
153 */
154 TXPATH_FLUSH = 0x1e,
155
156 /**
157 * @MGMT_MCAST_KEY:
158 * &struct iwl_mvm_mgmt_mcast_key_cmd or
159 * &struct iwl_mvm_mgmt_mcast_key_cmd_v1
160 */
161 MGMT_MCAST_KEY = 0x1f,
162
163 /* scheduler config */
164 /**
165 * @SCD_QUEUE_CFG: &struct iwl_scd_txq_cfg_cmd for older hardware,
166 * &struct iwl_tx_queue_cfg_cmd with &struct iwl_tx_queue_cfg_rsp
167 * for newer (22000) hardware.
168 */
169 SCD_QUEUE_CFG = 0x1d,
170
171 /**
172 * @WEP_KEY: uses &struct iwl_mvm_wep_key_cmd
173 */
174 WEP_KEY = 0x20,
175
176 /**
177 * @SHARED_MEM_CFG:
178 * retrieve shared memory configuration - response in
179 * &struct iwl_shared_mem_cfg
180 */
181 SHARED_MEM_CFG = 0x25,
182
183 /**
184 * @TDLS_CHANNEL_SWITCH_CMD: uses &struct iwl_tdls_channel_switch_cmd
185 */
186 TDLS_CHANNEL_SWITCH_CMD = 0x27,
187
188 /**
189 * @TDLS_CHANNEL_SWITCH_NOTIFICATION:
190 * uses &struct iwl_tdls_channel_switch_notif
191 */
192 TDLS_CHANNEL_SWITCH_NOTIFICATION = 0xaa,
193
194 /**
195 * @TDLS_CONFIG_CMD:
196 * &struct iwl_tdls_config_cmd, response in &struct iwl_tdls_config_res
197 */
198 TDLS_CONFIG_CMD = 0xa7,
199
200 /**
201 * @MAC_CONTEXT_CMD: &struct iwl_mac_ctx_cmd
202 */
203 MAC_CONTEXT_CMD = 0x28,
204
205 /**
206 * @TIME_EVENT_CMD:
207 * &struct iwl_time_event_cmd, response in &struct iwl_time_event_resp
208 */
209 TIME_EVENT_CMD = 0x29, /* both CMD and response */
210
211 /**
212 * @TIME_EVENT_NOTIFICATION: &struct iwl_time_event_notif
213 */
214 TIME_EVENT_NOTIFICATION = 0x2a,
215
216 /**
217 * @BINDING_CONTEXT_CMD:
218 * &struct iwl_binding_cmd or &struct iwl_binding_cmd_v1
219 */
220 BINDING_CONTEXT_CMD = 0x2b,
221
222 /**
223 * @TIME_QUOTA_CMD: &struct iwl_time_quota_cmd
224 */
225 TIME_QUOTA_CMD = 0x2c,
226
227 /**
228 * @NON_QOS_TX_COUNTER_CMD:
229 * command is &struct iwl_nonqos_seq_query_cmd
230 */
231 NON_QOS_TX_COUNTER_CMD = 0x2d,
232
233 /**
234 * @LEDS_CMD: command is &struct iwl_led_cmd
235 */
236 LEDS_CMD = 0x48,
237
238 /**
239 * @LQ_CMD: using &struct iwl_lq_cmd
240 */
241 LQ_CMD = 0x4e,
242
243 /**
244 * @FW_PAGING_BLOCK_CMD:
245 * &struct iwl_fw_paging_cmd
246 */
247 FW_PAGING_BLOCK_CMD = 0x4f,
248
249 /**
250 * @SCAN_OFFLOAD_REQUEST_CMD: uses &struct iwl_scan_req_lmac
251 */
252 SCAN_OFFLOAD_REQUEST_CMD = 0x51,
253
254 /**
255 * @SCAN_OFFLOAD_ABORT_CMD: abort the scan - no further contents
256 */
257 SCAN_OFFLOAD_ABORT_CMD = 0x52,
258
259 /**
260 * @HOT_SPOT_CMD: uses &struct iwl_hs20_roc_req
261 */
262 HOT_SPOT_CMD = 0x53,
263
264 /**
265 * @SCAN_OFFLOAD_COMPLETE:
266 * notification, &struct iwl_periodic_scan_complete
267 */
268 SCAN_OFFLOAD_COMPLETE = 0x6D,
269
270 /**
271 * @SCAN_OFFLOAD_UPDATE_PROFILES_CMD:
272 * update scan offload (scheduled scan) profiles/blocklist/etc.
273 */
274 SCAN_OFFLOAD_UPDATE_PROFILES_CMD = 0x6E,
275
276 /**
277 * @MATCH_FOUND_NOTIFICATION: scan match found
278 */
279 MATCH_FOUND_NOTIFICATION = 0xd9,
280
281 /**
282 * @SCAN_ITERATION_COMPLETE:
283 * uses &struct iwl_lmac_scan_complete_notif
284 */
285 SCAN_ITERATION_COMPLETE = 0xe7,
286
287 /* Phy */
288 /**
289 * @PHY_CONFIGURATION_CMD: &struct iwl_phy_cfg_cmd_v1 or &struct iwl_phy_cfg_cmd_v3
290 */
291 PHY_CONFIGURATION_CMD = 0x6a,
292
293 /**
294 * @CALIB_RES_NOTIF_PHY_DB: &struct iwl_calib_res_notif_phy_db
295 */
296 CALIB_RES_NOTIF_PHY_DB = 0x6b,
297
298 /**
299 * @PHY_DB_CMD: &struct iwl_phy_db_cmd
300 */
301 PHY_DB_CMD = 0x6c,
302
303 /**
304 * @POWER_TABLE_CMD: &struct iwl_device_power_cmd
305 */
306 POWER_TABLE_CMD = 0x77,
307
308 /**
309 * @PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION:
310 * &struct iwl_uapsd_misbehaving_ap_notif
311 */
312 PSM_UAPSD_AP_MISBEHAVING_NOTIFICATION = 0x78,
313
314 /**
315 * @LTR_CONFIG: &struct iwl_ltr_config_cmd
316 */
317 LTR_CONFIG = 0xee,
318
319 /**
320 * @REPLY_THERMAL_MNG_BACKOFF:
321 * Thermal throttling command
322 */
323 REPLY_THERMAL_MNG_BACKOFF = 0x7e,
324
325 /**
326 * @NVM_ACCESS_CMD: using &struct iwl_nvm_access_cmd
327 */
328 NVM_ACCESS_CMD = 0x88,
329
330 /**
331 * @BEACON_NOTIFICATION: &struct iwl_extended_beacon_notif
332 */
333 BEACON_NOTIFICATION = 0x90,
334
335 /**
336 * @BEACON_TEMPLATE_CMD:
337 * Uses one of &struct iwl_mac_beacon_cmd_v6,
338 * &struct iwl_mac_beacon_cmd_v7 or &struct iwl_mac_beacon_cmd
339 * depending on the device version.
340 */
341 BEACON_TEMPLATE_CMD = 0x91,
342 /**
343 * @TX_ANT_CONFIGURATION_CMD: &struct iwl_tx_ant_cfg_cmd
344 */
345 TX_ANT_CONFIGURATION_CMD = 0x98,
346
347 /**
348 * @STATISTICS_CMD:
349 * one of &struct iwl_statistics_cmd,
350 * &struct iwl_notif_statistics_v11,
351 * &struct iwl_notif_statistics_v10,
352 * &struct iwl_notif_statistics,
353 * &struct iwl_statistics_operational_ntfy_ver_14
354 */
355 STATISTICS_CMD = 0x9c,
356
357 /**
358 * @STATISTICS_NOTIFICATION:
359 * one of &struct iwl_notif_statistics_v10,
360 * &struct iwl_notif_statistics_v11,
361 * &struct iwl_notif_statistic,
362 * &struct iwl_statistics_operational_ntfy_ver_14
363 * &struct iwl_statistics_operational_ntfy
364 */
365 STATISTICS_NOTIFICATION = 0x9d,
366
367 /**
368 * @EOSP_NOTIFICATION:
369 * Notify that a service period ended,
370 * &struct iwl_mvm_eosp_notification
371 */
372 EOSP_NOTIFICATION = 0x9e,
373
374 /**
375 * @REDUCE_TX_POWER_CMD:
376 * &struct iwl_dev_tx_power_cmd
377 */
378 REDUCE_TX_POWER_CMD = 0x9f,
379
380 /**
381 * @MISSED_BEACONS_NOTIFICATION: &struct iwl_missed_beacons_notif
382 */
383 MISSED_BEACONS_NOTIFICATION = 0xa2,
384
385 /**
386 * @MAC_PM_POWER_TABLE: using &struct iwl_mac_power_cmd
387 */
388 MAC_PM_POWER_TABLE = 0xa9,
389
390 /**
391 * @MFUART_LOAD_NOTIFICATION: &struct iwl_mfuart_load_notif
392 */
393 MFUART_LOAD_NOTIFICATION = 0xb1,
394
395 /**
396 * @RSS_CONFIG_CMD: &struct iwl_rss_config_cmd
397 */
398 RSS_CONFIG_CMD = 0xb3,
399
400 /**
401 * @REPLY_RX_PHY_CMD: &struct iwl_rx_phy_info
402 */
403 REPLY_RX_PHY_CMD = 0xc0,
404
405 /**
406 * @REPLY_RX_MPDU_CMD:
407 * &struct iwl_rx_mpdu_res_start or &struct iwl_rx_mpdu_desc
408 */
409 REPLY_RX_MPDU_CMD = 0xc1,
410
411 /**
412 * @BAR_FRAME_RELEASE: Frame release from BAR notification, used for
413 * multi-TID BAR (previously, the BAR frame itself was reported
414 * instead). Uses &struct iwl_bar_frame_release.
415 */
416 BAR_FRAME_RELEASE = 0xc2,
417
418 /**
419 * @FRAME_RELEASE:
420 * Frame release (reorder helper) notification, uses
421 * &struct iwl_frame_release
422 */
423 FRAME_RELEASE = 0xc3,
424
425 /**
426 * @BA_NOTIF:
427 * BlockAck notification, uses &struct iwl_mvm_compressed_ba_notif
428 * or &struct iwl_mvm_ba_notif depending on the HW
429 */
430 BA_NOTIF = 0xc5,
431
432 /* Location Aware Regulatory */
433 /**
434 * @MCC_UPDATE_CMD: using &struct iwl_mcc_update_cmd
435 */
436 MCC_UPDATE_CMD = 0xc8,
437
438 /**
439 * @MCC_CHUB_UPDATE_CMD: using &struct iwl_mcc_chub_notif
440 */
441 MCC_CHUB_UPDATE_CMD = 0xc9,
442
443 /**
444 * @MARKER_CMD: trace marker command, uses &struct iwl_mvm_marker
445 * with &struct iwl_mvm_marker_rsp
446 */
447 MARKER_CMD = 0xcb,
448
449 /**
450 * @BT_PROFILE_NOTIFICATION: &struct iwl_bt_coex_profile_notif
451 */
452 BT_PROFILE_NOTIFICATION = 0xce,
453
454 /**
455 * @BT_CONFIG: &struct iwl_bt_coex_cmd
456 */
457 BT_CONFIG = 0x9b,
458
459 /**
460 * @BT_COEX_UPDATE_REDUCED_TXP:
461 * &struct iwl_bt_coex_reduced_txp_update_cmd
462 */
463 BT_COEX_UPDATE_REDUCED_TXP = 0x5c,
464
465 /**
466 * @BT_COEX_CI: &struct iwl_bt_coex_ci_cmd
467 */
468 BT_COEX_CI = 0x5d,
469
470 /**
471 * @REPLY_SF_CFG_CMD: &struct iwl_sf_cfg_cmd
472 */
473 REPLY_SF_CFG_CMD = 0xd1,
474 /**
475 * @REPLY_BEACON_FILTERING_CMD: &struct iwl_beacon_filter_cmd
476 */
477 REPLY_BEACON_FILTERING_CMD = 0xd2,
478
479 /**
480 * @DTS_MEASUREMENT_NOTIFICATION:
481 * &struct iwl_dts_measurement_notif_v1 or
482 * &struct iwl_dts_measurement_notif_v2
483 */
484 DTS_MEASUREMENT_NOTIFICATION = 0xdd,
485
486 /**
487 * @LDBG_CONFIG_CMD: configure continuous trace recording
488 */
489 LDBG_CONFIG_CMD = 0xf6,
490
491 /**
492 * @DEBUG_LOG_MSG: Debugging log data from firmware
493 */
494 DEBUG_LOG_MSG = 0xf7,
495
496 /**
497 * @MCAST_FILTER_CMD: &struct iwl_mcast_filter_cmd
498 */
499 MCAST_FILTER_CMD = 0xd0,
500
501 /**
502 * @D3_CONFIG_CMD: &struct iwl_d3_manager_config
503 */
504 D3_CONFIG_CMD = 0xd3,
505
506 /**
507 * @PROT_OFFLOAD_CONFIG_CMD: Depending on firmware, uses one of
508 * &struct iwl_proto_offload_cmd_v1, &struct iwl_proto_offload_cmd_v2,
509 * &struct iwl_proto_offload_cmd_v3_small,
510 * &struct iwl_proto_offload_cmd_v3_large
511 */
512 PROT_OFFLOAD_CONFIG_CMD = 0xd4,
513
514 /**
515 * @OFFLOADS_QUERY_CMD:
516 * No data in command, response in &struct iwl_wowlan_status
517 */
518 OFFLOADS_QUERY_CMD = 0xd5,
519
520 /**
521 * @D0I3_END_CMD: End D0i3/D3 state, no command data
522 */
523 D0I3_END_CMD = 0xed,
524
525 /**
526 * @WOWLAN_PATTERNS: &struct iwl_wowlan_patterns_cmd
527 */
528 WOWLAN_PATTERNS = 0xe0,
529
530 /**
531 * @WOWLAN_CONFIGURATION: &struct iwl_wowlan_config_cmd
532 */
533 WOWLAN_CONFIGURATION = 0xe1,
534
535 /**
536 * @WOWLAN_TSC_RSC_PARAM: &struct iwl_wowlan_rsc_tsc_params_cmd_v4,
537 * &struct iwl_wowlan_rsc_tsc_params_cmd
538 */
539 WOWLAN_TSC_RSC_PARAM = 0xe2,
540
541 /**
542 * @WOWLAN_TKIP_PARAM: &struct iwl_wowlan_tkip_params_cmd
543 */
544 WOWLAN_TKIP_PARAM = 0xe3,
545
546 /**
547 * @WOWLAN_KEK_KCK_MATERIAL: &struct iwl_wowlan_kek_kck_material_cmd
548 */
549 WOWLAN_KEK_KCK_MATERIAL = 0xe4,
550
551 /**
552 * @WOWLAN_GET_STATUSES: response in &struct iwl_wowlan_status
553 */
554 WOWLAN_GET_STATUSES = 0xe5,
555
556 /**
557 * @SCAN_OFFLOAD_PROFILES_QUERY_CMD:
558 * No command data, response is &struct iwl_scan_offload_profiles_query
559 */
560 SCAN_OFFLOAD_PROFILES_QUERY_CMD = 0x56,
561 };
562
563 /**
564 * enum iwl_system_subcmd_ids - system group command IDs
565 */
566 enum iwl_system_subcmd_ids {
567 /**
568 * @SHARED_MEM_CFG_CMD:
569 * response in &struct iwl_shared_mem_cfg or
570 * &struct iwl_shared_mem_cfg_v2
571 */
572 SHARED_MEM_CFG_CMD = 0x0,
573
574 /**
575 * @SOC_CONFIGURATION_CMD: &struct iwl_soc_configuration_cmd
576 */
577 SOC_CONFIGURATION_CMD = 0x01,
578
579 /**
580 * @INIT_EXTENDED_CFG_CMD: &struct iwl_init_extended_cfg_cmd
581 */
582 INIT_EXTENDED_CFG_CMD = 0x03,
583
584 /**
585 * @FW_ERROR_RECOVERY_CMD: &struct iwl_fw_error_recovery_cmd
586 */
587 FW_ERROR_RECOVERY_CMD = 0x7,
588
589 /**
590 * @RFI_CONFIG_CMD: &struct iwl_rfi_config_cmd
591 */
592 RFI_CONFIG_CMD = 0xb,
593
594 /**
595 * @RFI_GET_FREQ_TABLE_CMD: &struct iwl_rfi_config_cmd
596 */
597 RFI_GET_FREQ_TABLE_CMD = 0xc,
598
599 /**
600 * @SYSTEM_FEATURES_CONTROL_CMD: &struct iwl_system_features_control_cmd
601 */
602 SYSTEM_FEATURES_CONTROL_CMD = 0xd,
603
604 /**
605 * @RFI_DEACTIVATE_NOTIF: &struct iwl_rfi_deactivate_notif
606 */
607 RFI_DEACTIVATE_NOTIF = 0xff,
608 };
609
610 #endif /* __iwl_fw_api_commands_h__ */
Cache object: 7d17fe7a1f684fc7a0000625b0429aad
|