/* 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;
struct wmi_acs_passive_scan_complete_event {
__le32 dwell_time; /* valid fields within channel info according to * their appearance in struct order
*/
__le16 filled;
u8 num_scanned_channels;
u8 reserved; struct scan_acs_info scan_info_list[];
} __packed;
/* WMI_BA_STATUS_EVENTID */ enum wmi_vring_ba_status {
WMI_BA_AGREED = 0x00,
WMI_BA_NON_AGREED = 0x01, /* BA_EN in middle of teardown flow */
WMI_BA_TD_WIP = 0x02, /* BA_DIS or BA_EN in middle of BA SETUP flow */
WMI_BA_SETUP_WIP = 0x03, /* BA_EN when the BA session is already active */
WMI_BA_SESSION_ACTIVE = 0x04, /* BA_DIS when the BA session is not active */
WMI_BA_SESSION_NOT_ACTIVE = 0x05,
};
/* WMI_DELBA_EVENTID */ struct wmi_delba_event { /* 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 from_initiator;
__le16 reason; /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
u8 cid; /* Used when cidxtid = CIDXTID_EXTENDED_CID_TID */
u8 tid;
u8 reserved[2];
} __packed;
/* WMI_RCP_ADDBA_RESP_SENT_EVENTID */ struct wmi_rcp_addba_resp_sent_event { /* 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 status; /* 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_EVENTID */ struct wmi_rcp_addba_req_event { /* 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 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_TEMP_SENSE_DONE_EVENTID * * Measure MAC and radio temperatures
*/ struct wmi_temp_sense_done_event { /* Temperature times 1000 (actual temperature will be achieved by * dividing the value by 1000). When temperature cannot be read from * device return WMI_INVALID_TEMPERATURE
*/
__le32 baseband_t1000; /* Temperature times 1000 (actual temperature will be achieved by * dividing the value by 1000). When temperature cannot be read from * device return WMI_INVALID_TEMPERATURE
*/
__le32 rf_t1000;
} __packed;
/* \WMI_SET_CONNECT_SNR_THR_CMDID */ struct wmi_set_connect_snr_thr_cmd {
u8 enable;
u8 reserved; /* 1/4 Db units */
__le16 omni_snr_thr; /* 1/4 Db units */
__le16 direct_snr_thr;
} __packed;
/* WMI_LED_CFG_DONE_EVENTID */ struct wmi_led_cfg_done_event { /* led config status */
__le32 status;
} __packed;
/* Rate search parameters configuration per connection */ struct wmi_rs_cfg { /* The maximal allowed PER for each MCS * MCS will be considered as failed if PER during RS is higher
*/
u8 per_threshold[WMI_NUM_MCS]; /* Number of MPDUs for each MCS * this is the minimal statistic required to make an educated * decision
*/
u8 min_frame_cnt[WMI_NUM_MCS]; /* stop threshold [0-100] */
u8 stop_th; /* MCS1 stop threshold [0-100] */
u8 mcs1_fail_th;
u8 max_back_failure_th; /* Debug feature for disabling internal RS trigger (which is * currently triggered by BF Done)
*/
u8 dbg_disable_internal_trigger;
__le32 back_failure_mask;
__le32 mcs_en_vec;
} __packed;
/* Rate search parameters configuration per MCS */ struct wmi_rs_cfg_ex_mcs { /* The maximal allowed PER for each MCS * MCS will be considered as failed if PER during RS is higher
*/
u8 per_threshold; /* Number of MPDUs for each MCS * this is the minimal statistic required to make an educated * decision
*/
u8 min_frame_cnt;
u8 reserved[2];
} __packed;
/* WMI_RS_CFG_EX_CMDID */ struct wmi_rs_cfg_ex_cmd { /* Configuration for all MCSs */ struct wmi_rs_cfg_ex_common common_cfg;
u8 each_mcs_cfg_size;
u8 reserved[3]; /* Configuration for each MCS */ struct wmi_rs_cfg_ex_mcs each_mcs_cfg[];
} __packed;
struct wmi_sched_scheme_slot { /* in microsecond */
__le32 tbtt_offset; /* wmi_sched_scheme_slot_flags */
u8 flags; /* wmi_sched_scheme_slot_type */
u8 type; /* in microsecond */
__le16 duration; /* frame_exchange_sequence_duration */
__le16 tx_op; /* time in microseconds between two consecutive slots * relevant only if flag WMI_SCHED_SCHEME_SLOT_PERIODIC set
*/
__le16 period; /* relevant only if flag WMI_SCHED_SCHEME_SLOT_PERIODIC set * number of times to repeat allocation
*/
u8 num_of_blocks; /* relevant only if flag WMI_SCHED_SCHEME_SLOT_PERIODIC set * every idle_period allocation will be idle
*/
u8 idle_period;
u8 src_aid;
u8 dest_aid;
__le32 reserved;
} __packed;
enum wmi_sched_scheme_flags { /* should not be set when clearing scheduling scheme */
WMI_SCHED_SCHEME_ENABLE = 0x01,
WMI_SCHED_PROTECTED_SP = 0x02, /* should be set only on first WMI fragment of scheme */
WMI_SCHED_FIRST = 0x04, /* should be set only on last WMI fragment of scheme */
WMI_SCHED_LAST = 0x08,
WMI_SCHED_IMMEDIATE_START = 0x10,
};
enum wmi_sched_scheme_advertisment { /* ESE is not advertised at all, STA has to be configured with WMI * also
*/
WMI_ADVERTISE_ESE_DISABLED = 0x0,
WMI_ADVERTISE_ESE_IN_BEACON = 0x1,
WMI_ADVERTISE_ESE_IN_ANNOUNCE_FRAME = 0x2,
};
/* BRP antenna limit mode */ enum wmi_brp_ant_limit_mode { /* Disable BRP force antenna limit */
WMI_BRP_ANT_LIMIT_MODE_DISABLE = 0x00, /* Define maximal antennas limit. Only effective antennas will be * actually used
*/
WMI_BRP_ANT_LIMIT_MODE_EFFECTIVE = 0x01, /* Force a specific number of antennas */
WMI_BRP_ANT_LIMIT_MODE_FORCE = 0x02, /* number of BRP antenna limit modes */
WMI_BRP_ANT_LIMIT_MODES_NUM = 0x03,
};
/* WMI_BRP_SET_ANT_LIMIT_CMDID */ struct wmi_brp_set_ant_limit_cmd { /* connection id */
u8 cid; /* enum wmi_brp_ant_limit_mode */
u8 limit_mode; /* antenna limit count, 1-27 * disable_mode - ignored * effective_mode - upper limit to number of antennas to be used * force_mode - exact number of antennas to be used
*/
u8 ant_limit;
u8 reserved;
} __packed;
/* WMI_BF_TRIG_CMDID */ struct wmi_bf_trig_cmd { /* enum wmi_bf_type - type of requested beamforming */
u8 bf_type; /* used only for WMI_BF_TYPE_BRP_RX */
u8 cid; /* used only for WMI_BF_TYPE_SLS */
u8 dst_mac[WMI_MAC_LEN];
u8 reserved[4];
} __packed;
/* broadcast connection ID */ #define WMI_LINK_MAINTAIN_CFG_CID_BROADCAST (0xFFFFFFFF)
/* Types wmi_link_maintain_cfg presets for WMI_LINK_MAINTAIN_CFG_WRITE_CMD */ enum wmi_link_maintain_cfg_type { /* AP/PCP default normal (non-FST) configuration settings */
WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_NORMAL_AP = 0x00, /* AP/PCP default FST configuration settings */
WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_FST_AP = 0x01, /* STA default normal (non-FST) configuration settings */
WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_NORMAL_STA = 0x02, /* STA default FST configuration settings */
WMI_LINK_MAINTAIN_CFG_TYPE_DEFAULT_FST_STA = 0x03, /* custom configuration settings */
WMI_LINK_MAINTAIN_CFG_TYPE_CUSTOM = 0x04, /* number of defined configuration types */
WMI_LINK_MAINTAIN_CFG_TYPES_NUM = 0x05,
};
/* Response status codes for WMI_LINK_MAINTAIN_CFG_WRITE/READ commands */ enum wmi_link_maintain_cfg_response_status { /* WMI_LINK_MAINTAIN_CFG_WRITE/READ command successfully accomplished
*/
WMI_LINK_MAINTAIN_CFG_RESPONSE_STATUS_OK = 0x00, /* ERROR due to bad argument in WMI_LINK_MAINTAIN_CFG_WRITE/READ * command request
*/
WMI_LINK_MAINTAIN_CFG_RESPONSE_STATUS_BAD_ARGUMENT = 0x01,
};
/* Link Loss and Keep Alive configuration */ struct wmi_link_maintain_cfg { /* link_loss_enable_detectors_vec */
__le32 link_loss_enable_detectors_vec; /* detectors check period usec */
__le32 check_link_loss_period_usec; /* max allowed tx ageing */
__le32 tx_ageing_threshold_usec; /* keep alive period for high SNR */
__le32 keep_alive_period_usec_high_snr; /* keep alive period for low SNR */
__le32 keep_alive_period_usec_low_snr; /* lower snr limit for keep alive period update */
__le32 keep_alive_snr_threshold_low_db; /* upper snr limit for keep alive period update */
__le32 keep_alive_snr_threshold_high_db; /* num of successive bad bcons causing link-loss */
__le32 bad_beacons_num_threshold; /* SNR limit for bad_beacons_detector */
__le32 bad_beacons_snr_threshold_db; /* timeout for disassoc response frame in uSec */
__le32 disconnect_timeout;
} __packed;
/* WMI_LINK_MAINTAIN_CFG_WRITE_CMDID */ struct wmi_link_maintain_cfg_write_cmd { /* enum wmi_link_maintain_cfg_type_e - type of requested default * configuration to be applied
*/
__le32 cfg_type; /* requested connection ID or WMI_LINK_MAINTAIN_CFG_CID_BROADCAST */
__le32 cid; /* custom configuration settings to be applied (relevant only if * cfg_type==WMI_LINK_MAINTAIN_CFG_TYPE_CUSTOM)
*/ struct wmi_link_maintain_cfg lm_cfg;
} __packed;
/* WMI_LINK_MAINTAIN_CFG_READ_CMDID */ struct wmi_link_maintain_cfg_read_cmd { /* connection ID which configuration settings are requested */
__le32 cid;
} __packed;
/* WMI_PS_DEV_PROFILE_CFG_CMDID * * Power save profile to be used by the device * * Returned event: * - WMI_PS_DEV_PROFILE_CFG_EVENTID
*/ struct wmi_ps_dev_profile_cfg_cmd { /* wmi_ps_profile_type_e */
u8 ps_profile;
u8 reserved[3];
} __packed;
/* WMI_GET_RF_SECTOR_PARAMS_CMD */ struct wmi_get_rf_sector_params_cmd { /* Sector number to be retrieved */
__le16 sector_idx; /* enum wmi_rf_sector_type - type of requested RF sector */
u8 sector_type; /* bitmask vector specifying destination RF modules */
u8 rf_modules_vec;
} __packed;
/* \WMI_GET_RF_SECTOR_PARAMS_DONE_EVENT */ struct wmi_get_rf_sector_params_done_event { /* result status of WMI_GET_RF_SECTOR_PARAMS_CMD (enum * wmi_rf_sector_status)
*/
u8 status; /* align next field to U64 boundary */
u8 reserved[7]; /* TSF timestamp when RF sectors where retrieved */
__le64 tsf; /* Content of RF sector retrieved from each RF module */ struct wmi_rf_sector_info sectors_info[WMI_MAX_RF_MODULES_NUM];
} __packed;
/* WMI_SET_RF_SECTOR_PARAMS_CMD */ struct wmi_set_rf_sector_params_cmd { /* Sector number to be retrieved */
__le16 sector_idx; /* enum wmi_rf_sector_type - type of requested RF sector */
u8 sector_type; /* bitmask vector specifying destination RF modules */
u8 rf_modules_vec; /* Content of RF sector to be written to each RF module */ struct wmi_rf_sector_info sectors_info[WMI_MAX_RF_MODULES_NUM];
} __packed;
/* \WMI_SET_RF_SECTOR_PARAMS_DONE_EVENT */ struct wmi_set_rf_sector_params_done_event { /* result status of WMI_SET_RF_SECTOR_PARAMS_CMD (enum * wmi_rf_sector_status)
*/
u8 status;
} __packed;
/* WMI_GET_SELECTED_RF_SECTOR_INDEX_CMD - Get RF sector index selected by * TXSS/BRP for communication with specified CID
*/ struct wmi_get_selected_rf_sector_index_cmd { /* Connection/Station ID in [0:7] range */
u8 cid; /* type of requested RF sector (enum wmi_rf_sector_type) */
u8 sector_type; /* align to U32 boundary */
u8 reserved[2];
} __packed;
/* \WMI_GET_SELECTED_RF_SECTOR_INDEX_DONE_EVENT - Returns retrieved RF sector * index selected by TXSS/BRP for communication with specified CID
*/ struct wmi_get_selected_rf_sector_index_done_event { /* Retrieved sector index selected in TXSS (for TX sector request) or * BRP (for RX sector request)
*/
__le16 sector_idx; /* result status of WMI_GET_SELECTED_RF_SECTOR_INDEX_CMD (enum * wmi_rf_sector_status)
*/
u8 status; /* align next field to U64 boundary */
u8 reserved[5]; /* TSF timestamp when result was retrieved */
__le64 tsf;
} __packed;
/* WMI_SET_SELECTED_RF_SECTOR_INDEX_CMD - Force RF sector index for * communication with specified CID. Assumes that TXSS/BRP is disabled by * other command
*/ struct wmi_set_selected_rf_sector_index_cmd { /* Connection/Station ID in [0:7] range */
u8 cid; /* type of requested RF sector (enum wmi_rf_sector_type) */
u8 sector_type; /* Forced sector index */
__le16 sector_idx;
} __packed;
/* \WMI_SET_SELECTED_RF_SECTOR_INDEX_DONE_EVENT - Success/Fail status for * WMI_SET_SELECTED_RF_SECTOR_INDEX_CMD
*/ struct wmi_set_selected_rf_sector_index_done_event { /* result status of WMI_SET_SELECTED_RF_SECTOR_INDEX_CMD (enum * wmi_rf_sector_status)
*/
u8 status; /* align to U32 boundary */
u8 reserved[3];
} __packed;
/* WMI_SET_RF_SECTOR_ON_CMD - Activates specified sector for specified rf * modules
*/ struct wmi_set_rf_sector_on_cmd { /* Sector index to be activated */
__le16 sector_idx; /* type of requested RF sector (enum wmi_rf_sector_type) */
u8 sector_type; /* bitmask vector specifying destination RF modules */
u8 rf_modules_vec;
} __packed;
/* \WMI_SET_RF_SECTOR_ON_DONE_EVENT - Success/Fail status for * WMI_SET_RF_SECTOR_ON_CMD
*/ struct wmi_set_rf_sector_on_done_event { /* result status of WMI_SET_RF_SECTOR_ON_CMD (enum * wmi_rf_sector_status)
*/
u8 status; /* align to U32 boundary */
u8 reserved[3];
} __packed;
/* WMI_PRIO_TX_SECTORS_ORDER_CMDID * * Set the order of TX sectors in TXSS and/or Beacon(AP). * * Returned event: * - WMI_PRIO_TX_SECTORS_ORDER_EVENTID
*/ struct wmi_prio_tx_sectors_order_cmd { /* tx sectors order to be applied, 0xFF for end of array */
u8 tx_sectors_priority_array[MAX_NUM_OF_SECTORS]; /* enum wmi_sector_sweep_type, TXSS and/or Beacon */
u8 sector_sweep_type; /* needed only for TXSS configuration */
u8 cid; /* alignment to 32b */
u8 reserved[2];
} __packed;
struct wmi_prio_tx_sectors_num_cmd { /* [0-128], 0 = No changes */
u8 beacon_number_of_sectors; /* [0-128], 0 = No changes */
u8 txss_number_of_sectors; /* [0-8] needed only for TXSS configuration */
u8 cid;
} __packed;
/* WMI_PRIO_TX_SECTORS_NUMBER_CMDID * * Set the number of active sectors in TXSS and/or Beacon. * * Returned event: * - WMI_PRIO_TX_SECTORS_NUMBER_EVENTID
*/ struct wmi_prio_tx_sectors_number_cmd { struct wmi_prio_tx_sectors_num_cmd active_sectors_num; /* alignment to 32b */
u8 reserved;
} __packed;
/* WMI_COMMAND_NOT_SUPPORTED_EVENTID */ struct wmi_command_not_supported_event { /* device id */
u8 mid;
u8 reserved0;
__le16 command_id; /* for UT command only, otherwise reserved */
__le16 command_subtype;
__le16 reserved1;
} __packed;
/* WMI_TSF_SYNC_CMDID */ struct wmi_tsf_sync_cmd { /* The time interval to send announce frame in one BI */
u8 interval_ms; /* The mcs to send announce frame */
u8 mcs;
u8 reserved[6];
} __packed;
/* WMI_GET_CCA_INDICATIONS_EVENTID */ struct wmi_get_cca_indications_event { /* wmi_fw_status */
u8 status; /* CCA-Energy Detect in percentage over last BI (0..100) */
u8 cca_ed_percent; /* Averaged CCA-Energy Detect in percent over number of BIs (0..100) */
u8 cca_ed_avg_percent; /* NAV percent over last BI (0..100) */
u8 nav_percent; /* Averaged NAV percent over number of BIs (0..100) */
u8 nav_avg_percent;
u8 reserved[3];
} __packed;
/* WMI_SET_CCA_INDICATIONS_BI_AVG_NUM_CMDID */ struct wmi_set_cca_indications_bi_avg_num_cmd { /* set the number of bis to average cca_ed (0..255) */
u8 bi_number;
u8 reserved[3];
} __packed;
/* WMI_RADAR_PCI_CTRL_BLOCK struct */ struct wmi_radar_pci_ctrl_block { /* last fw tail address index */
__le32 fw_tail_index; /* last SW head address index known to FW */
__le32 sw_head_index;
__le32 last_wr_pulse_tsf_low;
__le32 last_wr_pulse_count;
__le32 last_wr_in_bytes;
__le32 last_wr_pulse_id;
__le32 last_wr_burst_id; /* When pre overflow detected, advance sw head in unit of pulses */
__le32 sw_head_inc;
__le32 reserved[8];
} __packed;
/* WMI_RBUFCAP_CFG_CMD */ struct wmi_rbufcap_cfg_cmd {
u8 enable;
u8 reserved; /* RBUFCAP indicates rx space unavailable when number of rx * descriptors drops below this threshold. Set 0 to use system * default
*/
__le16 rx_desc_threshold;
} __packed;
/* WMI_TEMP_SENSE_ALL_DONE_EVENTID * Measure MAC and all radio temperatures
*/ struct wmi_temp_sense_all_done_event { /* enum wmi_fw_status */
u8 status; /* Bitmap of connected RFs */
u8 rf_bitmap;
u8 reserved[2]; /* Temperature times 1000 (actual temperature will be achieved by * dividing the value by 1000). When temperature cannot be read from * device return WMI_INVALID_TEMPERATURE
*/
__le32 rf_t1000[WMI_MAX_XIF_PORTS_NUM]; /* Temperature times 1000 (actual temperature will be achieved by * dividing the value by 1000). When temperature cannot be read from * device return WMI_INVALID_TEMPERATURE
*/
__le32 baseband_t1000;
} __packed;
#endif/* __WILOCITY_WMI_H__ */
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.69 Sekunden
(vorverarbeitet am 2026-04-28)
¤
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.