1 /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
3 * Copyright (C) 2012-2014, 2018-2020 Intel Corporation
4 * Copyright (C) 2013-2015 Intel Mobile Communications GmbH
5 * Copyright (C) 2016-2017 Intel Deutschland GmbH
7 #ifndef __iwl_fw_api_datapath_h__
8 #define __iwl_fw_api_datapath_h__
11 * enum iwl_data_path_subcmd_ids - data path group commands
13 enum iwl_data_path_subcmd_ids {
15 * @DQA_ENABLE_CMD: &struct iwl_dqa_enable_cmd
20 * @UPDATE_MU_GROUPS_CMD: &struct iwl_mu_group_mgmt_cmd
22 UPDATE_MU_GROUPS_CMD = 0x1,
25 * @TRIGGER_RX_QUEUES_NOTIF_CMD: &struct iwl_rxq_sync_cmd
27 TRIGGER_RX_QUEUES_NOTIF_CMD = 0x2,
30 * @STA_HE_CTXT_CMD: &struct iwl_he_sta_context_cmd
32 STA_HE_CTXT_CMD = 0x7,
35 * @RFH_QUEUE_CONFIG_CMD: &struct iwl_rfh_queue_config
37 RFH_QUEUE_CONFIG_CMD = 0xD,
40 * @TLC_MNG_CONFIG_CMD: &struct iwl_tlc_config_cmd
42 TLC_MNG_CONFIG_CMD = 0xF,
45 * @HE_AIR_SNIFFER_CONFIG_CMD: &struct iwl_he_monitor_cmd
47 HE_AIR_SNIFFER_CONFIG_CMD = 0x13,
50 * @CHEST_COLLECTOR_FILTER_CONFIG_CMD: Configure the CSI
51 * matrix collection, uses &struct iwl_channel_estimation_cfg
53 CHEST_COLLECTOR_FILTER_CONFIG_CMD = 0x14,
56 * @MONITOR_NOTIF: Datapath monitoring notification, using
57 * &struct iwl_datapath_monitor_notif
62 * @RX_NO_DATA_NOTIF: &struct iwl_rx_no_data
64 RX_NO_DATA_NOTIF = 0xF5,
67 * @THERMAL_DUAL_CHAIN_DISABLE_REQ: firmware request for SMPS mode,
68 * &struct iwl_thermal_dual_chain_request
70 THERMAL_DUAL_CHAIN_REQUEST = 0xF6,
73 * @TLC_MNG_UPDATE_NOTIF: &struct iwl_tlc_update_notif
75 TLC_MNG_UPDATE_NOTIF = 0xF7,
78 * @STA_PM_NOTIF: &struct iwl_mvm_pm_state_notification
83 * @MU_GROUP_MGMT_NOTIF: &struct iwl_mu_group_mgmt_notif
85 MU_GROUP_MGMT_NOTIF = 0xFE,
88 * @RX_QUEUES_NOTIFICATION: &struct iwl_rxq_sync_notification
90 RX_QUEUES_NOTIFICATION = 0xFF,
94 * struct iwl_mu_group_mgmt_cmd - VHT MU-MIMO group configuration
97 * @membership_status: a bitmap of MU groups
98 * @user_position:the position of station in a group. If the station is in the
99 * group then bits (group * 2) is the position -1
101 struct iwl_mu_group_mgmt_cmd {
103 __le32 membership_status[2];
104 __le32 user_position[4];
105 } __packed; /* MU_GROUP_ID_MNG_TABLE_API_S_VER_1 */
108 * struct iwl_mu_group_mgmt_notif - VHT MU-MIMO group id notification
110 * @membership_status: a bitmap of MU groups
111 * @user_position: the position of station in a group. If the station is in the
112 * group then bits (group * 2) is the position -1
114 struct iwl_mu_group_mgmt_notif {
115 __le32 membership_status[2];
116 __le32 user_position[4];
117 } __packed; /* MU_GROUP_MNG_NTFY_API_S_VER_1 */
119 enum iwl_channel_estimation_flags {
120 IWL_CHANNEL_ESTIMATION_ENABLE = BIT(0),
121 IWL_CHANNEL_ESTIMATION_TIMER = BIT(1),
122 IWL_CHANNEL_ESTIMATION_COUNTER = BIT(2),
126 * struct iwl_channel_estimation_cfg - channel estimation reporting config
128 struct iwl_channel_estimation_cfg {
130 * @flags: flags, see &enum iwl_channel_estimation_flags
134 * @timer: if enabled via flags, automatically disable after this many
139 * @count: if enabled via flags, automatically disable after this many
140 * frames with channel estimation matrix were captured
144 * @rate_n_flags_mask: only try to record the channel estimation matrix
145 * if the rate_n_flags value for the received frame (let's call
146 * that rx_rnf) matches the mask/value given here like this:
147 * (rx_rnf & rate_n_flags_mask) == rate_n_flags_val.
149 __le32 rate_n_flags_mask;
151 * @rate_n_flags_val: see @rate_n_flags_mask
153 __le32 rate_n_flags_val;
155 * @reserved: reserved (for alignment)
159 * @frame_types: bitmap of frame types to capture, the received frame's
160 * subtype|type takes 6 bits in the frame and the corresponding bit
161 * in this field must be set to 1 to capture channel estimation for
162 * that frame type. Set to all-ones to enable capturing for all
166 } __packed; /* CHEST_COLLECTOR_FILTER_CMD_API_S_VER_1 */
168 enum iwl_datapath_monitor_notif_type {
169 IWL_DP_MON_NOTIF_TYPE_EXT_CCA,
172 struct iwl_datapath_monitor_notif {
176 } __packed; /* MONITOR_NTF_API_S_VER_1 */
179 * enum iwl_thermal_dual_chain_req_events - firmware SMPS request event
180 * @THERMAL_DUAL_CHAIN_REQ_ENABLE: (re-)enable dual-chain operation
181 * (subject to other constraints)
182 * @THERMAL_DUAL_CHAIN_REQ_DISABLE: disable dual-chain operation
185 enum iwl_thermal_dual_chain_req_events {
186 THERMAL_DUAL_CHAIN_REQ_ENABLE,
187 THERMAL_DUAL_CHAIN_REQ_DISABLE,
188 }; /* THERMAL_DUAL_CHAIN_DISABLE_STATE_API_E_VER_1 */
191 * struct iwl_thermal_dual_chain_request - SMPS request
192 * @event: the type of request, see &enum iwl_thermal_dual_chain_req_events
194 struct iwl_thermal_dual_chain_request {
196 } __packed; /* THERMAL_DUAL_CHAIN_DISABLE_REQ_NTFY_API_S_VER_1 */
198 #endif /* __iwl_fw_api_datapath_h__ */