Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
[platform/kernel/linux-starfive.git] / drivers / net / wireless / intel / iwlwifi / fw / api / commands.h
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          * @DC2DC_CONFIG_CMD:
327          * Set/Get DC2DC frequency tune
328          * Command is &struct iwl_dc2dc_config_cmd,
329          * response is &struct iwl_dc2dc_config_resp
330          */
331         DC2DC_CONFIG_CMD = 0x83,
332
333         /**
334          * @NVM_ACCESS_CMD: using &struct iwl_nvm_access_cmd
335          */
336         NVM_ACCESS_CMD = 0x88,
337
338         /**
339          * @BEACON_NOTIFICATION: &struct iwl_extended_beacon_notif
340          */
341         BEACON_NOTIFICATION = 0x90,
342
343         /**
344          * @BEACON_TEMPLATE_CMD:
345          *      Uses one of &struct iwl_mac_beacon_cmd_v6,
346          *      &struct iwl_mac_beacon_cmd_v7 or &struct iwl_mac_beacon_cmd
347          *      depending on the device version.
348          */
349         BEACON_TEMPLATE_CMD = 0x91,
350         /**
351          * @TX_ANT_CONFIGURATION_CMD: &struct iwl_tx_ant_cfg_cmd
352          */
353         TX_ANT_CONFIGURATION_CMD = 0x98,
354
355         /**
356          * @STATISTICS_CMD:
357          * one of &struct iwl_statistics_cmd,
358          * &struct iwl_notif_statistics_v11,
359          * &struct iwl_notif_statistics_v10,
360          * &struct iwl_notif_statistics,
361          * &struct iwl_statistics_operational_ntfy_ver_14
362          */
363         STATISTICS_CMD = 0x9c,
364
365         /**
366          * @STATISTICS_NOTIFICATION:
367          * one of &struct iwl_notif_statistics_v10,
368          * &struct iwl_notif_statistics_v11,
369          * &struct iwl_notif_statistic,
370          * &struct iwl_statistics_operational_ntfy_ver_14
371          * &struct iwl_statistics_operational_ntfy
372          */
373         STATISTICS_NOTIFICATION = 0x9d,
374
375         /**
376          * @EOSP_NOTIFICATION:
377          * Notify that a service period ended,
378          * &struct iwl_mvm_eosp_notification
379          */
380         EOSP_NOTIFICATION = 0x9e,
381
382         /**
383          * @REDUCE_TX_POWER_CMD:
384          * &struct iwl_dev_tx_power_cmd
385          */
386         REDUCE_TX_POWER_CMD = 0x9f,
387
388         /**
389          * @MISSED_BEACONS_NOTIFICATION: &struct iwl_missed_beacons_notif
390          */
391         MISSED_BEACONS_NOTIFICATION = 0xa2,
392
393         /**
394          * @MAC_PM_POWER_TABLE: using &struct iwl_mac_power_cmd
395          */
396         MAC_PM_POWER_TABLE = 0xa9,
397
398         /**
399          * @MFUART_LOAD_NOTIFICATION: &struct iwl_mfuart_load_notif
400          */
401         MFUART_LOAD_NOTIFICATION = 0xb1,
402
403         /**
404          * @RSS_CONFIG_CMD: &struct iwl_rss_config_cmd
405          */
406         RSS_CONFIG_CMD = 0xb3,
407
408         /**
409          * @REPLY_RX_PHY_CMD: &struct iwl_rx_phy_info
410          */
411         REPLY_RX_PHY_CMD = 0xc0,
412
413         /**
414          * @REPLY_RX_MPDU_CMD:
415          * &struct iwl_rx_mpdu_res_start or &struct iwl_rx_mpdu_desc
416          */
417         REPLY_RX_MPDU_CMD = 0xc1,
418
419         /**
420          * @BAR_FRAME_RELEASE: Frame release from BAR notification, used for
421          *      multi-TID BAR (previously, the BAR frame itself was reported
422          *      instead). Uses &struct iwl_bar_frame_release.
423          */
424         BAR_FRAME_RELEASE = 0xc2,
425
426         /**
427          * @FRAME_RELEASE:
428          * Frame release (reorder helper) notification, uses
429          * &struct iwl_frame_release
430          */
431         FRAME_RELEASE = 0xc3,
432
433         /**
434          * @BA_NOTIF:
435          * BlockAck notification, uses &struct iwl_mvm_compressed_ba_notif
436          * or &struct iwl_mvm_ba_notif depending on the HW
437          */
438         BA_NOTIF = 0xc5,
439
440         /* Location Aware Regulatory */
441         /**
442          * @MCC_UPDATE_CMD: using &struct iwl_mcc_update_cmd
443          */
444         MCC_UPDATE_CMD = 0xc8,
445
446         /**
447          * @MCC_CHUB_UPDATE_CMD: using &struct iwl_mcc_chub_notif
448          */
449         MCC_CHUB_UPDATE_CMD = 0xc9,
450
451         /**
452          * @MARKER_CMD: trace marker command, uses &struct iwl_mvm_marker
453          * with &struct iwl_mvm_marker_rsp
454          */
455         MARKER_CMD = 0xcb,
456
457         /**
458          * @BT_PROFILE_NOTIFICATION: &struct iwl_bt_coex_profile_notif
459          */
460         BT_PROFILE_NOTIFICATION = 0xce,
461
462         /**
463          * @BT_CONFIG: &struct iwl_bt_coex_cmd
464          */
465         BT_CONFIG = 0x9b,
466
467         /**
468          * @BT_COEX_UPDATE_REDUCED_TXP:
469          * &struct iwl_bt_coex_reduced_txp_update_cmd
470          */
471         BT_COEX_UPDATE_REDUCED_TXP = 0x5c,
472
473         /**
474          * @BT_COEX_CI: &struct iwl_bt_coex_ci_cmd
475          */
476         BT_COEX_CI = 0x5d,
477
478         /**
479          * @REPLY_SF_CFG_CMD: &struct iwl_sf_cfg_cmd
480          */
481         REPLY_SF_CFG_CMD = 0xd1,
482         /**
483          * @REPLY_BEACON_FILTERING_CMD: &struct iwl_beacon_filter_cmd
484          */
485         REPLY_BEACON_FILTERING_CMD = 0xd2,
486
487         /**
488          * @DTS_MEASUREMENT_NOTIFICATION:
489          * &struct iwl_dts_measurement_notif_v1 or
490          * &struct iwl_dts_measurement_notif_v2
491          */
492         DTS_MEASUREMENT_NOTIFICATION = 0xdd,
493
494         /**
495          * @LDBG_CONFIG_CMD: configure continuous trace recording
496          */
497         LDBG_CONFIG_CMD = 0xf6,
498
499         /**
500          * @DEBUG_LOG_MSG: Debugging log data from firmware
501          */
502         DEBUG_LOG_MSG = 0xf7,
503
504         /**
505          * @MCAST_FILTER_CMD: &struct iwl_mcast_filter_cmd
506          */
507         MCAST_FILTER_CMD = 0xd0,
508
509         /**
510          * @D3_CONFIG_CMD: &struct iwl_d3_manager_config
511          */
512         D3_CONFIG_CMD = 0xd3,
513
514         /**
515          * @PROT_OFFLOAD_CONFIG_CMD: Depending on firmware, uses one of
516          * &struct iwl_proto_offload_cmd_v1, &struct iwl_proto_offload_cmd_v2,
517          * &struct iwl_proto_offload_cmd_v3_small,
518          * &struct iwl_proto_offload_cmd_v3_large
519          */
520         PROT_OFFLOAD_CONFIG_CMD = 0xd4,
521
522         /**
523          * @OFFLOADS_QUERY_CMD:
524          * No data in command, response in &struct iwl_wowlan_status
525          */
526         OFFLOADS_QUERY_CMD = 0xd5,
527
528         /**
529          * @D0I3_END_CMD: End D0i3/D3 state, no command data
530          */
531         D0I3_END_CMD = 0xed,
532
533         /**
534          * @WOWLAN_PATTERNS: &struct iwl_wowlan_patterns_cmd
535          */
536         WOWLAN_PATTERNS = 0xe0,
537
538         /**
539          * @WOWLAN_CONFIGURATION: &struct iwl_wowlan_config_cmd
540          */
541         WOWLAN_CONFIGURATION = 0xe1,
542
543         /**
544          * @WOWLAN_TSC_RSC_PARAM: &struct iwl_wowlan_rsc_tsc_params_cmd_v4,
545          *      &struct iwl_wowlan_rsc_tsc_params_cmd
546          */
547         WOWLAN_TSC_RSC_PARAM = 0xe2,
548
549         /**
550          * @WOWLAN_TKIP_PARAM: &struct iwl_wowlan_tkip_params_cmd
551          */
552         WOWLAN_TKIP_PARAM = 0xe3,
553
554         /**
555          * @WOWLAN_KEK_KCK_MATERIAL: &struct iwl_wowlan_kek_kck_material_cmd
556          */
557         WOWLAN_KEK_KCK_MATERIAL = 0xe4,
558
559         /**
560          * @WOWLAN_GET_STATUSES: response in &struct iwl_wowlan_status
561          */
562         WOWLAN_GET_STATUSES = 0xe5,
563
564         /**
565          * @SCAN_OFFLOAD_PROFILES_QUERY_CMD:
566          * No command data, response is &struct iwl_scan_offload_profiles_query
567          */
568         SCAN_OFFLOAD_PROFILES_QUERY_CMD = 0x56,
569 };
570
571 /**
572  * enum iwl_system_subcmd_ids - system group command IDs
573  */
574 enum iwl_system_subcmd_ids {
575         /**
576          * @SHARED_MEM_CFG_CMD:
577          * response in &struct iwl_shared_mem_cfg or
578          * &struct iwl_shared_mem_cfg_v2
579          */
580         SHARED_MEM_CFG_CMD = 0x0,
581
582         /**
583          * @SOC_CONFIGURATION_CMD: &struct iwl_soc_configuration_cmd
584          */
585         SOC_CONFIGURATION_CMD = 0x01,
586
587         /**
588          * @INIT_EXTENDED_CFG_CMD: &struct iwl_init_extended_cfg_cmd
589          */
590         INIT_EXTENDED_CFG_CMD = 0x03,
591
592         /**
593          * @FW_ERROR_RECOVERY_CMD: &struct iwl_fw_error_recovery_cmd
594          */
595         FW_ERROR_RECOVERY_CMD = 0x7,
596
597         /**
598          * @RFI_CONFIG_CMD: &struct iwl_rfi_config_cmd
599          */
600         RFI_CONFIG_CMD = 0xb,
601
602         /**
603          * @RFI_GET_FREQ_TABLE_CMD: &struct iwl_rfi_config_cmd
604          */
605         RFI_GET_FREQ_TABLE_CMD = 0xc,
606
607         /**
608          * @SYSTEM_FEATURES_CONTROL_CMD: &struct iwl_system_features_control_cmd
609          */
610         SYSTEM_FEATURES_CONTROL_CMD = 0xd,
611 };
612
613 #endif /* __iwl_fw_api_commands_h__ */