1 /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ 2 /* 3 * Copyright (C) 2012-2014, 2018-2019 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 * @RX_NO_DATA_NOTIF: &struct iwl_rx_no_data 57 */ 58 RX_NO_DATA_NOTIF = 0xF5, 59 60 /** 61 * @TLC_MNG_UPDATE_NOTIF: &struct iwl_tlc_update_notif 62 */ 63 TLC_MNG_UPDATE_NOTIF = 0xF7, 64 65 /** 66 * @STA_PM_NOTIF: &struct iwl_mvm_pm_state_notification 67 */ 68 STA_PM_NOTIF = 0xFD, 69 70 /** 71 * @MU_GROUP_MGMT_NOTIF: &struct iwl_mu_group_mgmt_notif 72 */ 73 MU_GROUP_MGMT_NOTIF = 0xFE, 74 75 /** 76 * @RX_QUEUES_NOTIFICATION: &struct iwl_rxq_sync_notification 77 */ 78 RX_QUEUES_NOTIFICATION = 0xFF, 79 }; 80 81 /** 82 * struct iwl_mu_group_mgmt_cmd - VHT MU-MIMO group configuration 83 * 84 * @reserved: reserved 85 * @membership_status: a bitmap of MU groups 86 * @user_position:the position of station in a group. If the station is in the 87 * group then bits (group * 2) is the position -1 88 */ 89 struct iwl_mu_group_mgmt_cmd { 90 __le32 reserved; 91 __le32 membership_status[2]; 92 __le32 user_position[4]; 93 } __packed; /* MU_GROUP_ID_MNG_TABLE_API_S_VER_1 */ 94 95 /** 96 * struct iwl_mu_group_mgmt_notif - VHT MU-MIMO group id notification 97 * 98 * @membership_status: a bitmap of MU groups 99 * @user_position: the position of station in a group. If the station is in the 100 * group then bits (group * 2) is the position -1 101 */ 102 struct iwl_mu_group_mgmt_notif { 103 __le32 membership_status[2]; 104 __le32 user_position[4]; 105 } __packed; /* MU_GROUP_MNG_NTFY_API_S_VER_1 */ 106 107 enum iwl_channel_estimation_flags { 108 IWL_CHANNEL_ESTIMATION_ENABLE = BIT(0), 109 IWL_CHANNEL_ESTIMATION_TIMER = BIT(1), 110 IWL_CHANNEL_ESTIMATION_COUNTER = BIT(2), 111 }; 112 113 /** 114 * struct iwl_channel_estimation_cfg - channel estimation reporting config 115 */ 116 struct iwl_channel_estimation_cfg { 117 /** 118 * @flags: flags, see &enum iwl_channel_estimation_flags 119 */ 120 __le32 flags; 121 /** 122 * @timer: if enabled via flags, automatically disable after this many 123 * microseconds 124 */ 125 __le32 timer; 126 /** 127 * @count: if enabled via flags, automatically disable after this many 128 * frames with channel estimation matrix were captured 129 */ 130 __le32 count; 131 /** 132 * @rate_n_flags_mask: only try to record the channel estimation matrix 133 * if the rate_n_flags value for the received frame (let's call 134 * that rx_rnf) matches the mask/value given here like this: 135 * (rx_rnf & rate_n_flags_mask) == rate_n_flags_val. 136 */ 137 __le32 rate_n_flags_mask; 138 /** 139 * @rate_n_flags_val: see @rate_n_flags_mask 140 */ 141 __le32 rate_n_flags_val; 142 /** 143 * @reserved: reserved (for alignment) 144 */ 145 __le32 reserved; 146 /** 147 * @frame_types: bitmap of frame types to capture, the received frame's 148 * subtype|type takes 6 bits in the frame and the corresponding bit 149 * in this field must be set to 1 to capture channel estimation for 150 * that frame type. Set to all-ones to enable capturing for all 151 * frame types. 152 */ 153 __le64 frame_types; 154 } __packed; /* CHEST_COLLECTOR_FILTER_CMD_API_S_VER_1 */ 155 156 #endif /* __iwl_fw_api_datapath_h__ */ 157