/* SPDX-License-Identifier: ISC */ /* * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. * Copyright (c) 2012-2017 Qualcomm Atheros, Inc. * Copyright (c) 2006-2012 Wilocity
*/
/* * This file contains the definitions of the WMI protocol specified in the * Wireless Module Interface (WMI) for the Qualcomm * 60 GHz wireless solution. * It includes definitions of all the commands and events. * Commands are messages from the host to the WM. * Events are messages from the WM to the host. * * This is an automatically generated file.
*/
/* WMI_RADAR_GENERAL_CONFIG_CMDID */ struct wmi_radar_general_config_cmd { /* Number of pulses (CIRs) in FW FIFO to initiate pulses transfer * from FW to Host
*/
__le32 fifo_watermark; /* In unit of us, in the range [100, 1000000] */
__le32 t_burst; /* Valid in the range [1, 32768], 0xFFFF means infinite */
__le32 n_bursts; /* In unit of 330Mhz clk, in the range [4, 2000]*330 */
__le32 t_pulse; /* In the range of [1,4096] */
__le16 n_pulses; /* Number of taps after cTap per CIR */
__le16 n_samples; /* Offset from the main tap (0 = zero-distance). In the range of [0, * 255]
*/
u8 first_sample_offset; /* Number of Pulses to average, 1, 2, 4, 8 */
u8 pulses_to_avg; /* Number of adjacent taps to average, 1, 2, 4, 8 */
u8 samples_to_avg; /* The index to config general params */
u8 general_index;
u8 reserved[4];
} __packed;
/* WMI_RADAR_CONFIG_SELECT_CMDID */ struct wmi_radar_config_select_cmd { /* Select the general params index to use */
u8 general_index;
u8 reserved[3]; /* 0 means don't update burst_active_vector */
__le32 burst_active_vector; /* 0 means don't update pulse_active_vector */
__le32 pulse_active_vector;
} __packed;
/* WMI_RADAR_PARAMS_CONFIG_CMDID */ struct wmi_radar_params_config_cmd { /* The burst index selected to config */
u8 burst_index; /* 0-not active, 1-active */
u8 burst_en; /* The pulse index selected to config */
u8 pulse_index; /* 0-not active, 1-active */
u8 pulse_en; /* TX RF to use on current pulse */
u8 tx_rfc_idx;
u8 tx_sector; /* Offset from calibrated value.(expected to be 0)(value is row in * Gain-LUT, not dB)
*/
s8 tx_rf_gain_comp; /* expected to be 0 */
s8 tx_bb_gain_comp; /* RX RF to use on current pulse */
u8 rx_rfc_idx;
u8 rx_sector; /* Offset from calibrated value.(expected to be 0)(value is row in * Gain-LUT, not dB)
*/
s8 rx_rf_gain_comp; /* Value in dB.(expected to be 0) */
s8 rx_bb_gain_comp; /* Offset from calibrated value.(expected to be 0) */
s8 rx_timing_offset;
u8 reserved[3];
} __packed;
/* WMI_RADAR_SET_MODE_CMDID */ struct wmi_radar_set_mode_cmd { /* 0-disable/1-enable */
u8 enable; /* enum wmi_channel */
u8 channel; /* In the range of [0,7], 0xff means use default */
u8 tx_rfc_idx; /* In the range of [0,7], 0xff means use default */
u8 rx_rfc_idx;
} __packed;
/* WMI_TRAFFIC_SUSPEND_CMDID */ struct wmi_traffic_suspend_cmd { /* Bit vector: bit[0] - wake on Unicast, bit[1] - wake on Broadcast */
u8 wakeup_trigger;
} __packed;
/* WMI_PCP_START_CMDID */ enum wmi_ap_sme_offload_mode { /* Full AP SME in FW */
WMI_AP_SME_OFFLOAD_FULL = 0x00, /* Probe AP SME in FW */
WMI_AP_SME_OFFLOAD_PARTIAL = 0x01, /* AP SME in host */
WMI_AP_SME_OFFLOAD_NONE = 0x02,
};
struct wmi_vring_cfg { struct wmi_sw_ring_cfg tx_sw_ring; /* 0-23 vrings */
u8 ringid; /* Used for cid less than 8. For higher cid set * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead
*/
u8 cidxtid;
u8 encap_trans_type; /* 802.3 DS cfg */
u8 ds_cfg;
u8 nwifi_ds_trans_type;
u8 mac_ctrl;
u8 to_resolution;
u8 agg_max_wsize; struct wmi_vring_cfg_schd schd_params; /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
u8 cid; /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
u8 tid; /* Update the vring's priority for Qos purpose. Set to * WMI_QOS_DEFAULT_PRIORITY to use MID's QoS priority
*/
u8 qos_priority;
u8 reserved;
} __packed;
/* WMI_LO_POWER_CALIB_FROM_OTP_CMDID */ struct wmi_lo_power_calib_from_otp_cmd { /* index to read from OTP. zero based */
u8 index;
u8 reserved[3];
} __packed;
/* WMI_RCP_ADDBA_RESP_CMDID */ struct wmi_rcp_addba_resp_cmd { /* Used for cid less than 8. For higher cid set * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead
*/
u8 cidxtid;
u8 dialog_token;
__le16 status_code; /* ieee80211_ba_parameterset field to send */
__le16 ba_param_set;
__le16 ba_timeout; /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
u8 cid; /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
u8 tid;
u8 reserved[2];
} __packed;
/* WMI_RCP_DELBA_CMDID */ struct wmi_rcp_delba_cmd { /* Used for cid less than 8. For higher cid set * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead
*/
u8 cidxtid;
u8 reserved;
__le16 reason; /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
u8 cid; /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
u8 tid;
u8 reserved2[2];
} __packed;
/* WMI_RCP_ADDBA_REQ_CMDID */ struct wmi_rcp_addba_req_cmd { /* Used for cid less than 8. For higher cid set * CIDXTID_EXTENDED_CID_TID here and use cid and tid members instead
*/
u8 cidxtid;
u8 dialog_token; /* ieee80211_ba_parameterset field as it received */
__le16 ba_param_set;
__le16 ba_timeout; /* ieee80211_ba_seqstrl field as it received */
__le16 ba_seq_ctrl; /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
u8 cid; /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
u8 tid;
u8 reserved[2];
} __packed;
/* WMI_ECHO_CMDID * Check FW is alive * Returned event: WMI_ECHO_RSP_EVENTID
*/ struct wmi_echo_cmd {
__le32 value;
} __packed;
/* WMI_DEEP_ECHO_CMDID * Check FW and uCode is alive * Returned event: WMI_DEEP_ECHO_RSP_EVENTID
*/ struct wmi_deep_echo_cmd {
__le32 value;
} __packed;
/* WMI_RF_PWR_ON_DELAY_CMDID * set FW time parameters used through RF resetting * RF reset consists of bringing its power down for a period of time, then * bringing the power up * Returned event: WMI_RF_PWR_ON_DELAY_RSP_EVENTID
*/ struct wmi_rf_pwr_on_delay_cmd { /* time in usec the FW waits after bringing the RF PWR down, * set 0 for default
*/
__le16 down_delay_usec; /* time in usec the FW waits after bringing the RF PWR up, * set 0 for default
*/
__le16 up_delay_usec;
} __packed;
/* WMI_SET_HIGH_POWER_TABLE_PARAMS_CMDID * This API controls the Tx and Rx gain over temperature. * It controls the Tx D-type, Rx D-type and Rx E-type amplifiers. * It also controls the Tx gain index, by controlling the Rx to Tx gain index * offset. * The control is divided by 3 temperature values to 4 temperature ranges. * Each parameter uses its own temperature values. * Returned event: WMI_SET_HIGH_POWER_TABLE_PARAMS_EVENTID
*/ struct wmi_set_high_power_table_params_cmd { /* Temperature range for Tx D-type parameters */
u8 tx_dtype_temp[WMI_RF_DTYPE_LENGTH];
u8 reserved0; /* Tx D-type values to be used for each temperature range */
__le32 tx_dtype_conf[WMI_RF_DTYPE_CONF_LENGTH]; /* Temperature range for Tx E-type parameters */
u8 tx_etype_temp[WMI_RF_ETYPE_LENGTH];
u8 reserved1; /* Tx E-type values to be used for each temperature range. * The last 4 values of any range are the first 4 values of the next * range and so on
*/
__le32 tx_etype_conf[WMI_RF_ETYPE_CONF_LENGTH]; /* Temperature range for Rx D-type parameters */
u8 rx_dtype_temp[WMI_RF_DTYPE_LENGTH];
u8 reserved2; /* Rx D-type values to be used for each temperature range */
__le32 rx_dtype_conf[WMI_RF_DTYPE_CONF_LENGTH]; /* Temperature range for Rx E-type parameters */
u8 rx_etype_temp[WMI_RF_ETYPE_LENGTH];
u8 reserved3; /* Rx E-type values to be used for each temperature range. * The last 4 values of any range are the first 4 values of the next * range and so on
*/
__le32 rx_etype_conf[WMI_RF_ETYPE_CONF_LENGTH]; /* Temperature range for rx_2_tx_offs parameters */
u8 rx_2_tx_temp[WMI_RF_RX2TX_LENGTH];
u8 reserved4; /* Rx to Tx gain index offset */
s8 rx_2_tx_offs[WMI_RF_RX2TX_CONF_LENGTH];
} __packed;
/* WMI_FIXED_SCHEDULING_UL_CONFIG_CMDID * This API sets rd parameter per mcs. * Relevant only in Fixed Scheduling mode. * Returned event: WMI_FIXED_SCHEDULING_UL_CONFIG_EVENTID
*/ struct wmi_fixed_scheduling_ul_config_cmd { /* Use mcs -1 to set for every mcs */
s8 mcs; /* Number of frames with rd bit set in a single virtual slot */
u8 rd_count_per_slot;
u8 reserved[2];
} __packed;
/* CMD: WMI_RF_XPM_READ_CMDID */ struct wmi_rf_xpm_read_cmd {
u8 rf_id;
u8 reserved[3]; /* XPM bit start address in range [0,8191]bits - rounded by FW to * multiple of 8bits
*/
__le32 xpm_bit_address;
__le32 num_bytes;
} __packed;
/* CMD: WMI_RF_XPM_WRITE_CMDID */ struct wmi_rf_xpm_write_cmd {
u8 rf_id;
u8 reserved0[3]; /* XPM bit start address in range [0,8191]bits - rounded by FW to * multiple of 8bits
*/
__le32 xpm_bit_address;
__le32 num_bytes; /* boolean flag indicating whether FW should verify the write * operation
*/
u8 verify;
u8 reserved1[3]; /* actual size=num_bytes */
u8 data_bytes[];
} __packed;
/* Possible modes for temperature measurement */ enum wmi_temperature_measure_mode {
TEMPERATURE_USE_OLD_VALUE = 0x01,
TEMPERATURE_MEASURE_NOW = 0x02,
};
struct wmi_tt_zone_limits { /* Above this temperature this zone is active */
u8 temperature_high; /* Below this temperature the adjacent lower zone is active */
u8 temperature_low;
u8 reserved[2];
} __packed;
/* Struct used for both configuration and status commands of thermal * throttling
*/ struct wmi_tt_data { /* Enable/Disable TT algorithm for baseband */
u8 bb_enabled;
u8 reserved0[3]; /* Define zones for baseband */ struct wmi_tt_zone_limits bb_zones[WMI_NUM_OF_TT_ZONES]; /* Enable/Disable TT algorithm for radio */
u8 rf_enabled;
u8 reserved1[3]; /* Define zones for all radio chips */ struct wmi_tt_zone_limits rf_zones[WMI_NUM_OF_TT_ZONES];
} __packed;
/* WMI_TOF_SET_TX_RX_OFFSET_CMDID */ struct wmi_tof_set_tx_rx_offset_cmd { /* TX delay offset */
__le32 tx_offset; /* RX delay offset */
__le32 rx_offset; /* Mask to define which RFs to configure. 0 means all RFs */
__le32 rf_mask; /* Offset to strongest tap of CIR */
__le32 precursor;
} __packed;
/* WMI_TOF_GET_TX_RX_OFFSET_CMDID */ struct wmi_tof_get_tx_rx_offset_cmd { /* rf index to read offsets from */
u8 rf_index;
u8 reserved[3];
} __packed;
/* WMI_FIXED_SCHEDULING_CONFIG_CMDID */ struct wmi_map_mcs_to_schd_params {
u8 mcs; /* time in usec from start slot to start tx flow - default 15 */
u8 time_in_usec_before_initiate_tx; /* RD enable - if yes consider RD according to STA mcs */
u8 rd_enabled;
u8 reserved; /* time in usec from start slot to stop vring */
__le16 time_in_usec_to_stop_vring; /* timeout to force flush from start of slot */
__le16 flush_to_in_usec; /* per mcs the mac buffer limit size in bytes */
__le32 mac_buff_size_in_bytes;
} __packed;
/* This value exists for backwards compatibility only. * Do not use it in new commands. * Use dynamic arrays where possible.
*/ #define WMI_NUM_MCS (13)
/* WMI_FIXED_SCHEDULING_CONFIG_CMDID */ struct wmi_fixed_scheduling_config_cmd { /* defaults in the SAS table */ struct wmi_map_mcs_to_schd_params mcs_to_schd_params_map[WMI_NUM_MCS]; /* default 150 uSec */
__le16 max_sta_rd_ppdu_duration_in_usec; /* default 300 uSec */
__le16 max_sta_grant_ppdu_duration_in_usec; /* default 1000 uSec */
__le16 assoc_slot_duration_in_usec; /* default 360 uSec */
__le16 virtual_slot_duration_in_usec; /* each this field value slots start with grant frame to the station * - default 2
*/
u8 number_of_ap_slots_for_initiate_grant;
u8 reserved[3];
} __packed;
/* WMI_SET_MULTI_DIRECTED_OMNIS_CONFIG_CMDID */ struct wmi_set_multi_directed_omnis_config_cmd { /* number of directed omnis at destination AP */
u8 dest_ap_num_directed_omnis;
u8 reserved[3];
} __packed;
/* WMI_INTERNAL_FW_IOCTL_CMDID */ struct wmi_internal_fw_ioctl_cmd { /* enum wmi_internal_fw_ioctl_code */
__le16 code;
__le16 length; /* payload max size is WMI_MAX_IOCTL_PAYLOAD_SIZE * Must be the last member of the struct
*/
__le32 payload[];
} __packed;
/* WMI_INTERNAL_FW_IOCTL_EVENTID */ struct wmi_internal_fw_ioctl_event { /* wmi_fw_status */
u8 status;
u8 reserved;
__le16 length; /* payload max size is WMI_MAX_IOCTL_REPLY_PAYLOAD_SIZE * Must be the last member of the struct
*/
__le32 payload[];
} __packed;
/* WMI_INTERNAL_FW_EVENT_EVENTID */ struct wmi_internal_fw_event_event {
__le16 id;
__le16 length; /* payload max size is WMI_MAX_INTERNAL_EVENT_PAYLOAD_SIZE * Must be the last member of the struct
*/
__le32 payload[];
} __packed;
/* WMI_SET_VRING_PRIORITY_WEIGHT_CMDID */ struct wmi_set_vring_priority_weight_cmd { /* Array of weights. Valid values are * WMI_QOS_MIN_DEFAULT_WEIGHT...WMI_QOS_MAX_WEIGHT. Weight #0 is * hard-coded WMI_QOS_MIN_WEIGHT. This array provide the weights * #1..#3
*/
u8 weight[3];
u8 reserved;
} __packed;
/* WMI_SET_VRING_PRIORITY_CMDID */ struct wmi_set_vring_priority_cmd { /* number of entries in vring_priority. Set to * WMI_QOS_SET_VIF_PRIORITY to update the VIF's priority, and there * will be only one entry in vring_priority
*/
u8 num_of_vrings;
u8 reserved[3]; struct wmi_vring_priority vring_priority[];
} __packed;
/* WMI_BF_CONTROL_CMDID - deprecated */ struct wmi_bf_control_cmd { /* wmi_bf_triggers */
__le32 triggers;
u8 cid; /* DISABLED = 0, ENABLED = 1 , DRY_RUN = 2 */
u8 txss_mode; /* DISABLED = 0, ENABLED = 1, DRY_RUN = 2 */
u8 brp_mode; /* Max cts threshold (correspond to * WMI_BF_TRIGGER_MAX_CTS_FAILURE_IN_TXOP)
*/
u8 bf_trigger_max_cts_failure_thr; /* Max cts threshold in dense (correspond to * WMI_BF_TRIGGER_MAX_CTS_FAILURE_IN_TXOP)
*/
u8 bf_trigger_max_cts_failure_dense_thr; /* Max b-ack threshold (correspond to * WMI_BF_TRIGGER_MAX_BACK_FAILURE)
*/
u8 bf_trigger_max_back_failure_thr; /* Max b-ack threshold in dense (correspond to * WMI_BF_TRIGGER_MAX_BACK_FAILURE)
*/
u8 bf_trigger_max_back_failure_dense_thr;
u8 reserved0; /* Wrong sectors threshold */
__le32 wrong_sector_bis_thr; /* BOOL to enable/disable long term trigger */
u8 long_term_enable; /* 1 = Update long term thresholds from the long_term_mbps_th_tbl and * long_term_trig_timeout_per_mcs arrays, 0 = Ignore
*/
u8 long_term_update_thr; /* Long term throughput threshold [Mbps] */
u8 long_term_mbps_th_tbl[WMI_NUM_MCS];
u8 reserved1; /* Long term timeout threshold table [msec] */
__le16 long_term_trig_timeout_per_mcs[WMI_NUM_MCS];
u8 reserved2[2];
} __packed;
/* BF configuration for each MCS */ struct wmi_bf_control_ex_mcs { /* Long term throughput threshold [Mbps] */
u8 long_term_mbps_th_tbl;
u8 reserved; /* Long term timeout threshold table [msec] */
__le16 long_term_trig_timeout_per_mcs;
} __packed;
/* WMI_BF_CONTROL_EX_CMDID */ struct wmi_bf_control_ex_cmd { /* wmi_bf_triggers */
__le32 triggers; /* enum wmi_edmg_tx_mode */
u8 tx_mode; /* DISABLED = 0, ENABLED = 1 , DRY_RUN = 2 */
u8 txss_mode; /* DISABLED = 0, ENABLED = 1, DRY_RUN = 2 */
u8 brp_mode; /* Max cts threshold (correspond to * WMI_BF_TRIGGER_MAX_CTS_FAILURE_IN_TXOP)
*/
u8 bf_trigger_max_cts_failure_thr; /* Max cts threshold in dense (correspond to * WMI_BF_TRIGGER_MAX_CTS_FAILURE_IN_TXOP)
*/
u8 bf_trigger_max_cts_failure_dense_thr; /* Max b-ack threshold (correspond to * WMI_BF_TRIGGER_MAX_BACK_FAILURE)
*/
u8 bf_trigger_max_back_failure_thr; /* Max b-ack threshold in dense (correspond to * WMI_BF_TRIGGER_MAX_BACK_FAILURE)
*/
u8 bf_trigger_max_back_failure_dense_thr;
u8 reserved0; /* Wrong sectors threshold */
__le32 wrong_sector_bis_thr; /* BOOL to enable/disable long term trigger */
u8 long_term_enable; /* 1 = Update long term thresholds from the long_term_mbps_th_tbl and * long_term_trig_timeout_per_mcs arrays, 0 = Ignore
*/
u8 long_term_update_thr;
u8 each_mcs_cfg_size;
u8 reserved1; /* Configuration for each MCS */ struct wmi_bf_control_ex_mcs each_mcs_cfg[];
} __packed;
/* WMI_DISCONNECT_EVENTID */ struct wmi_disconnect_event { /* reason code, see 802.11 spec. */
__le16 protocol_reason_status; /* set if known */
u8 bssid[WMI_MAC_LEN]; /* see enum wmi_disconnect_reason */
u8 disconnect_reason; /* last assoc req may passed to host - not in used */
u8 assoc_resp_len; /* last assoc req may passed to host - not in used */
u8 assoc_info[];
} __packed;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.