1 /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ 2 /* 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 6 */ 7 #ifndef __iwl_fw_api_datapath_h__ 8 #define __iwl_fw_api_datapath_h__ 9 10 /** 11 * enum iwl_data_path_subcmd_ids - data path group commands 12 */ 13 enum iwl_data_path_subcmd_ids { 14 /** 15 * @DQA_ENABLE_CMD: &struct iwl_dqa_enable_cmd 16 */ 17 DQA_ENABLE_CMD = 0x0, 18 19 /** 20 * @UPDATE_MU_GROUPS_CMD: &struct iwl_mu_group_mgmt_cmd 21 */ 22 UPDATE_MU_GROUPS_CMD = 0x1, 23 24 /** 25 * @TRIGGER_RX_QUEUES_NOTIF_CMD: &struct iwl_rxq_sync_cmd 26 */ 27 TRIGGER_RX_QUEUES_NOTIF_CMD = 0x2, 28 29 /** 30 * @STA_HE_CTXT_CMD: &struct iwl_he_sta_context_cmd 31 */ 32 STA_HE_CTXT_CMD = 0x7, 33 34 /** 35 * @RFH_QUEUE_CONFIG_CMD: &struct iwl_rfh_queue_config 36 */ 37 RFH_QUEUE_CONFIG_CMD = 0xD, 38 39 /** 40 * @TLC_MNG_CONFIG_CMD: &struct iwl_tlc_config_cmd 41 */ 42 TLC_MNG_CONFIG_CMD = 0xF, 43 44 /** 45 * @HE_AIR_SNIFFER_CONFIG_CMD: &struct iwl_he_monitor_cmd 46 */ 47 HE_AIR_SNIFFER_CONFIG_CMD = 0x13, 48 49 /** 50 * @CHEST_COLLECTOR_FILTER_CONFIG_CMD: Configure the CSI 51 * matrix collection, uses &struct iwl_channel_estimation_cfg 52 */ 53 CHEST_COLLECTOR_FILTER_CONFIG_CMD = 0x14, 54 55 /** 56 * @MONITOR_NOTIF: Datapath monitoring notification, using 57 * &struct iwl_datapath_monitor_notif 58 */ 59 MONITOR_NOTIF = 0xF4, 60 61 /** 62 * @RX_NO_DATA_NOTIF: &struct iwl_rx_no_data 63 */ 64 RX_NO_DATA_NOTIF = 0xF5, 65 66 /** 67 * @TLC_MNG_UPDATE_NOTIF: &struct iwl_tlc_update_notif 68 */ 69 TLC_MNG_UPDATE_NOTIF = 0xF7, 70 71 /** 72 * @STA_PM_NOTIF: &struct iwl_mvm_pm_state_notification 73 */ 74 STA_PM_NOTIF = 0xFD, 75 76 /** 77 * @MU_GROUP_MGMT_NOTIF: &struct iwl_mu_group_mgmt_notif 78 */ 79 MU_GROUP_MGMT_NOTIF = 0xFE, 80 81 /** 82 * @RX_QUEUES_NOTIFICATION: &struct iwl_rxq_sync_notification 83 */ 84 RX_QUEUES_NOTIFICATION = 0xFF, 85 }; 86 87 /** 88 * struct iwl_mu_group_mgmt_cmd - VHT MU-MIMO group configuration 89 * 90 * @reserved: reserved 91 * @membership_status: a bitmap of MU groups 92 * @user_position:the position of station in a group. If the station is in the 93 * group then bits (group * 2) is the position -1 94 */ 95 struct iwl_mu_group_mgmt_cmd { 96 __le32 reserved; 97 __le32 membership_status[2]; 98 __le32 user_position[4]; 99 } __packed; /* MU_GROUP_ID_MNG_TABLE_API_S_VER_1 */ 100 101 /** 102 * struct iwl_mu_group_mgmt_notif - VHT MU-MIMO group id notification 103 * 104 * @membership_status: a bitmap of MU groups 105 * @user_position: the position of station in a group. If the station is in the 106 * group then bits (group * 2) is the position -1 107 */ 108 struct iwl_mu_group_mgmt_notif { 109 __le32 membership_status[2]; 110 __le32 user_position[4]; 111 } __packed; /* MU_GROUP_MNG_NTFY_API_S_VER_1 */ 112 113 enum iwl_channel_estimation_flags { 114 IWL_CHANNEL_ESTIMATION_ENABLE = BIT(0), 115 IWL_CHANNEL_ESTIMATION_TIMER = BIT(1), 116 IWL_CHANNEL_ESTIMATION_COUNTER = BIT(2), 117 }; 118 119 /** 120 * struct iwl_channel_estimation_cfg - channel estimation reporting config 121 */ 122 struct iwl_channel_estimation_cfg { 123 /** 124 * @flags: flags, see &enum iwl_channel_estimation_flags 125 */ 126 __le32 flags; 127 /** 128 * @timer: if enabled via flags, automatically disable after this many 129 * microseconds 130 */ 131 __le32 timer; 132 /** 133 * @count: if enabled via flags, automatically disable after this many 134 * frames with channel estimation matrix were captured 135 */ 136 __le32 count; 137 /** 138 * @rate_n_flags_mask: only try to record the channel estimation matrix 139 * if the rate_n_flags value for the received frame (let's call 140 * that rx_rnf) matches the mask/value given here like this: 141 * (rx_rnf & rate_n_flags_mask) == rate_n_flags_val. 142 */ 143 __le32 rate_n_flags_mask; 144 /** 145 * @rate_n_flags_val: see @rate_n_flags_mask 146 */ 147 __le32 rate_n_flags_val; 148 /** 149 * @reserved: reserved (for alignment) 150 */ 151 __le32 reserved; 152 /** 153 * @frame_types: bitmap of frame types to capture, the received frame's 154 * subtype|type takes 6 bits in the frame and the corresponding bit 155 * in this field must be set to 1 to capture channel estimation for 156 * that frame type. Set to all-ones to enable capturing for all 157 * frame types. 158 */ 159 __le64 frame_types; 160 } __packed; /* CHEST_COLLECTOR_FILTER_CMD_API_S_VER_1 */ 161 162 enum iwl_datapath_monitor_notif_type { 163 IWL_DP_MON_NOTIF_TYPE_EXT_CCA, 164 }; 165 166 struct iwl_datapath_monitor_notif { 167 __le32 type; 168 u8 mac_id; 169 u8 reserved[3]; 170 } __packed; /* MONITOR_NTF_API_S_VER_1 */ 171 172 #endif /* __iwl_fw_api_datapath_h__ */ 173