Loading fw/htt.h +1 −0 Original line number Diff line number Diff line Loading @@ -814,6 +814,7 @@ typedef enum { HTT_STATS_CODEL_MSDUQ_TAG = 189, /* htt_codel_msduq_stats_tlv */ HTT_STATS_MLO_SCHED_STATS_TAG = 190, /* htt_mlo_sched_stats_tlv */ HTT_STATS_PDEV_MLO_IPC_STATS_TAG = 191, /* htt_pdev_mlo_ipc_stats_tlv */ HTT_STATS_WHAL_WSI_TAG = 192, /* htt_stats_whal_wsi_tlv */ HTT_STATS_MAX_TAG, fw/htt_stats.h +108 −12 Original line number Diff line number Diff line Loading @@ -1353,6 +1353,17 @@ typedef struct { /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_whal_tx_tlv htt_hw_stats_whal_tx_tlv; typedef struct { htt_tlv_hdr_t tlv_hdr; A_UINT32 wsib_event_watchdog_timeout; A_UINT32 wsib_event_slave_tlv_length_error; A_UINT32 wsib_event_slave_parity_error; A_UINT32 wsib_event_slave_direct_message; A_UINT32 wsib_event_slave_backpressure_error; A_UINT32 wsib_event_master_tlv_length_error; } htt_stats_whal_wsi_tlv; typedef struct { htt_tlv_hdr_t tlv_hdr; /** Loading Loading @@ -5482,7 +5493,10 @@ typedef htt_stats_tx_pdev_rate_stats_be_ofdma_tlv typedef struct { htt_tlv_hdr_t tlv_hdr; /** Tx PPDU duration histogram **/ /** tx_ppdu_dur_hist: * Tx PPDU duration histogram, which holds the tx duration of PPDUs * under histogram bins of interval 250us */ A_UINT32 tx_ppdu_dur_hist[HTT_PDEV_STATS_PPDU_DUR_HIST_BINS]; A_UINT32 tx_success_time_us_low; A_UINT32 tx_success_time_us_high; Loading @@ -5490,6 +5504,11 @@ typedef struct { A_UINT32 tx_fail_time_us_high; A_UINT32 pdev_up_time_us_low; A_UINT32 pdev_up_time_us_high; /** tx_ofdma_ppdu_dur_hist: * Tx OFDMA PPDU duration histogram, which holds the tx duration of * OFDMA PPDUs under histogram bins of interval 250us */ A_UINT32 tx_ofdma_ppdu_dur_hist[HTT_PDEV_STATS_PPDU_DUR_HIST_BINS]; } htt_stats_tx_pdev_ppdu_dur_tlv; /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_tx_pdev_ppdu_dur_tlv htt_tx_pdev_ppdu_dur_stats_tlv; Loading Loading @@ -8179,6 +8198,41 @@ typedef struct { A_UINT32 fw_run_time; /** per chain runtime noise floor values in dBm */ A_INT32 runTime_nf_chain[HTT_STATS_MAX_CHAINS]; /** DFS SW based progressive stats - start **/ /* current AP operating bandwidth (refer to WLAN_PHY_MODE) */ A_UINT32 current_OBW; /* current AP device bandwidth (refer to WLAN_PHY_MODE) */ A_UINT32 current_DBW; /* last_radar_type: last detected radar type * This last_radar_type field contains a value whose meaning is not * exposed to the host; this field is only provided for debug purposes. */ A_UINT32 last_radar_type; /* dfs_reg_domain: curent DFS regulatory domain * This dfs_reg_domain field contains a value whose meaning is not * exposed to the host; this field is only provided for debug purposes. */ A_UINT32 dfs_reg_domain; /* radar_mask_bit: Radar mask setting programmed in HW registers. * Each bit represents a 20 MHz portion of the channel. * Bit 0 represents the highest 20 MHz portion within the channel. * For example... * For a 80 MHz channel, bit0 = highest 20 MHz, bit3 = lowest 20 MHz * For a 320 MHz channel, bit0 = highest 20 MHz, bit15 = lowest 20 MHz */ A_UINT32 radar_mask_bit; /* DFS radar rssi threshold (units = dBm) */ A_INT32 radar_rssi; /* DFS global flags (refer to IEEE80211_CHAN_* defines) */ A_UINT32 radar_dfs_flags; /* band center frequency of operating bandwidth (units = MHz) */ A_UINT32 band_center_frequency_OBW; /* band center frequency of device bandwidth (units = MHz) */ A_UINT32 band_center_frequency_DBW; /** DFS SW based progressive stats - end **/ } htt_stats_phy_stats_tlv; /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_phy_stats_tlv htt_phy_stats_tlv; Loading Loading @@ -8993,14 +9047,19 @@ typedef htt_stats_ml_link_info_details_tlv htt_ml_link_info_tlv; #define HTT_ML_PEER_DETAILS_LINK_INIT_COUNT_S 19 #define HTT_ML_PEER_DETAILS_NON_STR_M 0x00400000 #define HTT_ML_PEER_DETAILS_NON_STR_S 22 #define HTT_ML_PEER_DETAILS_EMLSR_M 0x00800000 #define HTT_ML_PEER_DETAILS_EMLSR_S 23 #define HTT_ML_PEER_DETAILS_IS_EMLSR_ACTIVE_M 0x00800000 #define HTT_ML_PEER_DETAILS_IS_EMLSR_ACTIVE_S 23 /* for backwards compatibility, retain the old EMLSR name of the bitfield */ #define HTT_ML_PEER_DETAILS_EMLSR_M HTT_ML_PEER_DETAILS_IS_EMLSR_ACTIVE_M #define HTT_ML_PEER_DETAILS_EMLSR_S HTT_ML_PEER_DETAILS_IS_EMLSR_ACTIVE_S #define HTT_ML_PEER_DETAILS_IS_STA_KO_M 0x01000000 #define HTT_ML_PEER_DETAILS_IS_STA_KO_S 24 #define HTT_ML_PEER_DETAILS_NUM_LOCAL_LINKS_M 0x06000000 #define HTT_ML_PEER_DETAILS_NUM_LOCAL_LINKS_S 25 #define HTT_ML_PEER_DETAILS_ALLOCATED_M 0x08000000 #define HTT_ML_PEER_DETAILS_ALLOCATED_S 27 #define HTT_ML_PEER_DETAILS_EMLSR_SUPPORT_M 0x10000000 #define HTT_ML_PEER_DETAILS_EMLSR_SUPPORT_S 28 #define HTT_ML_PEER_DETAILS_PARTICIPATING_CHIPS_BITMAP_M 0x000000ff #define HTT_ML_PEER_DETAILS_PARTICIPATING_CHIPS_BITMAP_S 0 Loading Loading @@ -9071,16 +9130,31 @@ typedef htt_stats_ml_link_info_details_tlv htt_ml_link_info_tlv; ((_var) |= ((_val) << HTT_ML_PEER_DETAILS_NON_STR_S)); \ } while (0) #define HTT_ML_PEER_DETAILS_IS_EMLSR_ACTIVE_GET(_var) \ (((_var) & HTT_ML_PEER_DETAILS_IS_EMLSR_ACTIVE_M) >> \ HTT_ML_PEER_DETAILS_IS_EMLSR_ACTIVE_S) #define HTT_ML_PEER_DETAILS_IS_EMLSR_ACTIVE_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_ML_PEER_DETAILS_IS_EMLSR_ACTIVE, _val); \ ((_var) &= ~(HTT_ML_PEER_DETAILS_IS_EMLSR_ACTIVE_M)); \ ((_var) |= ((_val) << HTT_ML_PEER_DETAILS_IS_EMLSR_ACTIVE_S)); \ } while (0) /* start deprecated: * For backwards compatibility, retain a macro definition that uses * the old EMLSR name of the bitfield */ #define HTT_ML_PEER_DETAILS_EMLSR_GET(_var) \ (((_var) & HTT_ML_PEER_DETAILS_EMLSR_M) >> \ HTT_ML_PEER_DETAILS_EMLSR_S) #define HTT_ML_PEER_DETAILS_EMLSR_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_ML_PEER_DETAILS_EMLSR, _val); \ ((_var) &= ~(HTT_ML_PEER_DETAILS_EMLSR_M)); \ ((_var) |= ((_val) << HTT_ML_PEER_DETAILS_EMLSR_S)); \ } while (0) /* end deprecated */ #define HTT_ML_PEER_DETAILS_IS_STA_KO_GET(_var) \ (((_var) & HTT_ML_PEER_DETAILS_IS_STA_KO_M) >> \ Loading Loading @@ -9115,6 +9189,18 @@ typedef htt_stats_ml_link_info_details_tlv htt_ml_link_info_tlv; ((_var) |= ((_val) << HTT_ML_PEER_DETAILS_ALLOCATED_S)); \ } while (0) #define HTT_ML_PEER_DETAILS_EMLSR_SUPPORT_GET(_var) \ (((_var) & HTT_ML_PEER_DETAILS_EMLSR_SUPPORT_M) >> \ HTT_ML_PEER_DETAILS_EMLSR_SUPPORT_S) #define HTT_ML_PEER_DETAILS_EMLSR_SUPPORT_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_ML_PEER_DETAILS_EMLSR_SUPPORT, _val); \ ((_var) &= ~(HTT_ML_PEER_DETAILS_EMLSR_SUPPORT_M)); \ ((_var) |= ((_val) << HTT_ML_PEER_DETAILS_EMLSR_SUPPORT_S)); \ } while (0) #define HTT_ML_PEER_DETAILS_PARTICIPATING_CHIPS_BITMAP_GET(_var) \ (((_var) & HTT_ML_PEER_DETAILS_PARTICIPATING_CHIPS_BITMAP_M) >> \ HTT_ML_PEER_DETAILS_PARTICIPATING_CHIPS_BITMAP_S) Loading @@ -9137,11 +9223,21 @@ typedef struct { primary_chip_id : 2, link_init_count : 3, non_str : 1, emlsr : 1, is_emlsr_active : 1, is_sta_ko : 1, num_local_links : 2, allocated : 1, reserved : 4; emlsr_support : 1, reserved : 3; }; struct { /* * For backwards compatibility, use a dummy union element to * retain the old "emlsr" name for the "is_emlsr_active" bitfield. */ A_UINT32 dummy1 : 23, emlsr : 1, dummy2 : 8; }; A_UINT32 msg_dword_1; }; Loading fw/wmi_services.h +1 −0 Original line number Diff line number Diff line Loading @@ -647,6 +647,7 @@ typedef enum { WMI_SERVICE_PDEV_PARAM_IN_UTF_WMI = 394, /* FW supports receiving and sending pdev_id parameter in WMI_PDEV_UTF_(CMD/EVENT) */ WMI_SERVICE_SW_PROG_DFS_SUPPORT = 395, /* Indicate FW support SW progressive DFS */ WMI_SERVICE_MULTIPLE_REORDER_QUEUE_SETUP_SUPPORT = 396, /* Indicate FW supports multiple TID reorder queues setup in one cmd */ WMI_SERVICE_MULTIPLE_COEX_CONFIG_SUPPORT = 397, /* FW supports mutiple coex configs in one cmd */ WMI_MAX_EXT2_SERVICE Loading fw/wmi_tlv_defs.h +20 −1 Original line number Diff line number Diff line Loading @@ -1417,6 +1417,10 @@ typedef enum { WMITLV_TAG_STRUC_wmi_dbw_chan_info, WMITLV_TAG_STRUC_wmi_peer_multiple_reorder_queue_setup_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_peer_per_reorder_q_setup_params_t, WMITLV_TAG_STRUC_wmi_coex_multiple_config_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_disallowed_mlo_mode_bitmap_param, WMITLV_TAG_STRUC_wmi_led_blink_rate_table, WMITLV_TAG_STRUC_wmi_enable_led_blink_download_rate_table_fixed_param, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. Loading Loading @@ -1957,6 +1961,8 @@ typedef enum { OP(WMI_VDEV_OOB_CONNECTION_REQ_CMDID) \ OP(WMI_AUDIO_TRANSPORT_SWITCH_RESP_STATUS_CMDID) \ OP(WMI_PEER_MULTIPLE_REORDER_QUEUE_SETUP_CMDID) \ OP(WMI_COEX_MULTIPLE_CONFIG_CMDID) \ OP(WMI_PDEV_ENABLE_LED_BLINK_DOWNLOAD_TABLE_CMDID) \ /* add new CMD_LIST elements above this line */ Loading Loading @@ -5192,7 +5198,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_ENABLE_DURATION_BASED_TX_MODE_SELECTION_CMDID WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, vdev_id_bitmap, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, vdev_id_bitmap2, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, ieee_link_id_bitmap, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, ieee_link_id_bitmap2, WMITLV_SIZE_VAR) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, ieee_link_id_bitmap2, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_disallowed_mlo_mode_bitmap_param, disallow_mode_param, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_SET_ACTIVE_CMDID); /* Request DPD Status */ Loading Loading @@ -5518,6 +5525,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_SWITCH_CONF_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_wsi_stats_info_cmd_fixed_param, wmi_pdev_wsi_stats_info_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_WSI_STATS_INFO_CMDID); /* Data Rate based GPIO LED blink and Rate Table Download command */ #define WMITLV_TABLE_WMI_PDEV_ENABLE_LED_BLINK_DOWNLOAD_TABLE_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_enable_led_blink_download_rate_table_fixed_param, wmi_enable_led_blink_download_rate_table_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC,wmi_led_blink_rate_table, led_blink_rate_table, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_ENABLE_LED_BLINK_DOWNLOAD_TABLE_CMDID); /* CSA status indication command to inform FW about host accepting or rejecting csa event*/ #define WMITLV_TABLE_WMI_CSA_EVENT_STATUS_INDICATION_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_csa_event_status_ind_fixed_param , wmi_csa_event_status_ind_fixed_param,fixed_param, WMITLV_SIZE_FIX) Loading @@ -5531,6 +5544,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_CSA_EVENT_STATUS_INDICATION_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_oob_connection_req_cmd_fixed_param, wmi_vdev_oob_connection_req_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_OOB_CONNECTION_REQ_CMDID); /* Multiple BTCOEX config commands. */ #define WMITLV_TABLE_WMI_COEX_MULTIPLE_CONFIG_CMDID(id,op,buf,len) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_coex_multiple_config_cmd_fixed_param, wmi_coex_multiple_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, WMI_COEX_CONFIG_CMD_fixed_param, config_list, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_COEX_MULTIPLE_CONFIG_CMDID); /************************** TLV definitions of WMI events *******************************/ Loading fw/wmi_unified.h +180 −2 Original line number Diff line number Diff line Loading @@ -516,6 +516,11 @@ typedef enum { WMI_PDEV_SET_RF_PATH_CMDID, /** WSI stats info WMI command */ WMI_PDEV_WSI_STATS_INFO_CMDID, /* * WMI cmd to Enable LED blink based on Tx+Rx Data Rate * and download LED ON/OFF Rate table */ WMI_PDEV_ENABLE_LED_BLINK_DOWNLOAD_TABLE_CMDID, /* VDEV (virtual device) specific commands */ Loading Loading @@ -1379,6 +1384,7 @@ typedef enum { WMI_COEX_DBAM_CMDID, WMI_TAS_POWER_HISTORY_CMDID, WMI_ESL_EGID_CMDID, WMI_COEX_MULTIPLE_CONFIG_CMDID, /** * OBSS scan offload enable/disable commands Loading Loading @@ -4626,7 +4632,12 @@ typedef struct { * Refer to the below definitions of the * WMI_RSRC_CFG_HOST_SERVICE_FLAG_RADAR_FLAGS_FULL_BW_NOL_GET * and _SET macros. * Bits 31:15 - Reserved * Bit 15 * This bit will be set if the has qms_dlkm support enabled. * Refer to the below definitions of the * WMI_RSRC_CFG_HOST_SERVICE_FLAG_QMS_DLKM_SUPPORT_GET * and _SET macros. * Bits 31:16 - Reserved */ A_UINT32 host_service_flags; Loading Loading @@ -5074,6 +5085,11 @@ typedef struct { #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_RADAR_FLAGS_FULL_BW_NOL_SET(host_service_flags, val) \ WMI_SET_BITS(host_service_flags, 14, 1, val) #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_QMS_DLKM_SUPPORT_GET(host_service_flags) \ WMI_GET_BITS(host_service_flags, 15, 1) #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_QMS_DLKM_SUPPORT_SET(host_service_flags, val) \ WMI_SET_BITS(host_service_flags, 15, 1, val) #define WMI_RSRC_CFG_CARRIER_CFG_CHARTER_ENABLE_GET(carrier_config) \ WMI_GET_BITS(carrier_config, 0, 1) Loading Loading @@ -9338,6 +9354,21 @@ typedef enum { /** Parameter to enable/disable tid0 and tid3 mapping to work 3 Link MLO */ WMI_PDEV_PARAM_TID_MAPPING_3LINK_MLO, /** Parameter to enable/disable small OFDMA M-RUs **/ WMI_PDEV_PARAM_ENABLE_SMALL_MRU, /** Parameter to enable/disable large OFDMA M-RUs **/ WMI_PDEV_PARAM_ENABLE_LARGE_MRU, /** Parameter to enable/disable delayed LMR feedback. * Note: Delayed LMR feedback is supported only up to two ranging peers to * enable Location certification * 0 - Immediate LMR feedback is enabled for all ranging peers. * 1 (non zero) - delayed LMR feedback is enabled. Third peer onward will * default to immediate LMR feedback. **/ WMI_PDEV_PARAM_ENABLE_DELAYED_LMR_FEEDBACK, } WMI_PDEV_PARAM; #define WMI_PDEV_ONLY_BSR_TRIG_IS_ENABLED(trig_type) WMI_GET_BITS(trig_type, 0, 1) Loading Loading @@ -31273,8 +31304,16 @@ typedef enum { TSF_TSTAMP_QTIMER_CAPTURE_REQ = 4, TSF_TSTAMP_AUTO_REPORT_ENABLE = 5, TSF_TSTAMP_AUTO_REPORT_DISABLE = 6, TSF_TSTAMP_PERIODIC_REPORT_REQ = 5, } wmi_tsf_tstamp_action; typedef enum { TSF_TSTAMP_REPORT_TTIMER = 0x1, /* bit 0: TSF Timer */ TSF_TSTAMP_REPORT_QTIMER = 0x2, /* bit 1: H/T common Timer */ } wmi_tsf_tstamp_report_flags; #define TSF_TSTAMP_REPORT_PERIOD_MIN 1000 /* ms units */ typedef struct { /** TLV tag and len; tag equals * WMITLV_TAG_STRUC_wmi_vdev_tsf_tstamp_action_cmd_fixed_param */ Loading @@ -31283,6 +31322,12 @@ typedef struct { A_UINT32 vdev_id; /* action type, refer to wmi_tsf_tstamp_action */ A_UINT32 tsf_action; /* * The below fields are valid only when tsf_action is * TSF_TSTAMP_PERIODIC_REPORT_REQ. */ A_UINT32 period; /* the period of report timestamp, ms units */ A_UINT32 flags; /* wmi_tsf_tstamp_report_flags */ } wmi_vdev_tsf_tstamp_action_cmd_fixed_param; typedef struct { Loading Loading @@ -34694,7 +34739,7 @@ typedef enum wmi_coex_config_type { } WMI_COEX_CONFIG_TYPE; typedef struct { A_UINT32 tlv_header; A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_WMI_COEX_CONFIG_CMD_fixed_param */ A_UINT32 vdev_id; A_UINT32 config_type; /* wmi_coex_config_type enum */ A_UINT32 config_arg1; Loading @@ -34705,6 +34750,14 @@ typedef struct { A_UINT32 config_arg6; } WMI_COEX_CONFIG_CMD_fixed_param; typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_coex_multiple_config_cmd_fixed_param */ /* * This struct is followed by other TLVs: * WMI_COEX_CONFIG_CMD_fixed_param config_list[num_config]; */ } wmi_coex_multiple_config_cmd_fixed_param; typedef enum wmi_coex_dbam_mode_type { WMI_COEX_DBAM_DISABLE = 0, WMI_COEX_DBAM_ENABLE = 1, Loading Loading @@ -37054,6 +37107,8 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_VDEV_OOB_CONNECTION_REQ_CMDID); WMI_RETURN_STRING(WMI_AUDIO_TRANSPORT_SWITCH_RESP_STATUS_CMDID); WMI_RETURN_STRING(WMI_PEER_MULTIPLE_REORDER_QUEUE_SETUP_CMDID); WMI_RETURN_STRING(WMI_COEX_MULTIPLE_CONFIG_CMDID); WMI_RETURN_STRING(WMI_PDEV_ENABLE_LED_BLINK_DOWNLOAD_TABLE_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; Loading Loading @@ -40320,6 +40375,14 @@ typedef struct { A_UINT32 scoring_capability_bitmap; } wmi_roam_capability_report_event_fixed_param; /* * Definition of disallow connection modes. */ typedef enum { /* Bit 0: roam to 5GL+5GH MLSR is not allowed if the bit is set. */ WMI_ROAM_MLO_CONNECTION_MODE_5GL_5GH_MLSR = 0x1, } WMI_ROAM_MLO_CONNECTION_MODES; typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_mlo_config_cmd_fixed_param */ wmi_mac_addr partner_link_addr; /* Assigned link address which can be used as self link addr when vdev is not created */ Loading @@ -40339,6 +40402,13 @@ typedef struct { */ A_UINT32 support_link_band; /* Configure the band bitmap of mlo connection supports. */ A_UINT32 max_active_links; /* Max active links supported for STA */ /* * Disallow the specified connection mode(s) when roaming to MLD AP. * Refer to the WMI_ROAM_MLO_CONNECTION_MODES enum for the connection mode * each bit represents. */ A_UINT32 disallow_connect_modes; } wmi_roam_mlo_config_cmd_fixed_param; typedef struct { Loading Loading @@ -43828,6 +43898,7 @@ enum wmi_oem_data_evt_cause { WMI_OEM_DATA_EVT_CAUSE_UNSPECIFIED = 0, WMI_OEM_DATA_EVT_CAUSE_CMD_REQ = 1, WMI_OEM_DATA_EVT_CAUSE_ASYNC = 2, WMI_OEM_DATA_EVT_CAUSE_QMS = 3, }; typedef struct { Loading Loading @@ -44655,6 +44726,7 @@ typedef enum { WMI_MLO_LINK_FORCE_INACTIVE_LINK_NUM = 4, /* Force inactive a number of links, firmware to decide which links to inactive */ WMI_MLO_LINK_NO_FORCE = 5, /* Cancel the force operation of specific links, allow firmware to decide */ WMI_MLO_LINK_FORCE_ACTIVE_INACTIVE = 6, /* combination of force specific links active & force specific links inactive */ WMI_MLO_LINK_NON_FORCE_UPDATE = 7, /* Used when host wants to update other fields like disallow_mlo_mode_bmap */ } WMI_MLO_LINK_FORCE_MODE; typedef enum { Loading Loading @@ -44748,6 +44820,8 @@ typedef struct wmi_mlo_link_set_active_cmd * For force mode WMI_MLO_LINK_FORCE_ACTIVE_INACTIVE ieee_link_id_bitmap2[] * carry the inactive linkid bitmap. * In other cases the length of the array should be 0. *--- * wmi_disallowed_mlo_mode_bitmap_param_t disallow_mlo_mode_bmap[]; */ } wmi_mlo_link_set_active_cmd_fixed_param; Loading @@ -44769,6 +44843,77 @@ typedef struct wmi_mlo_set_active_link_number_param } wmi_mlo_set_active_link_number_param; #define WMI_MLO_MODE_MLMR 0x1; #define WMI_MLO_MODE_EMLSR 0x2; #define WMI_MLO_IEEE_LINK_ID_COMB_GET_LINK_ID1(ieee_link_id_comb) WMI_GET_BITS(ieee_link_id_comb, 0, 8) #define WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID1(ieee_link_id_comb, value) WMI_SET_BITS(ieee_link_id_comb, 0, 8, value) #define WMI_MLO_IEEE_LINK_ID_COMB_GET_LINK_ID2(ieee_link_id_comb) WMI_GET_BITS(ieee_link_id_comb, 8, 8) #define WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID2(ieee_link_id_comb, value) WMI_SET_BITS(ieee_link_id_comb, 8, 8, value) #define WMI_MLO_IEEE_LINK_ID_COMB_GET_LINK_ID3(ieee_link_id_comb) WMI_GET_BITS(ieee_link_id_comb, 16, 8) #define WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID3(ieee_link_id_comb, value) WMI_SET_BITS(ieee_link_id_comb, 16, 8, value) #define WMI_MLO_IEEE_LINK_ID_COMB_GET_LINK_ID4(ieee_link_id_comb) WMI_GET_BITS(ieee_link_id_comb, 24, 8) #define WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID4(ieee_link_id_comb, value) WMI_SET_BITS(ieee_link_id_comb, 24, 8, value) typedef struct wmi_disallowed_mlo_mode_bitmap_param { /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_disallowed_mlo_mode_bitmap_param */ A_UINT32 tlv_header; /** disallowed_mode_bitmap: * Bitmap of MLO Modes like MLMR, eMLSR which are not allowed. * Refer to WMI_MLO_MODE_* * disallowed_mode_bitmap Meaning * ====================== ================= * 0x0 No restriction * 0x1 MLMR is not allowed * 0x2 EMLSR is not allowed * 0x3 MLMR and EMLSR are not allowed */ A_UINT32 disallowed_mode_bitmap; /** ieee_link_id_comb: * Give combination of IEEE link IDs for which above disallowed_mode_bitmap * is applicable. * Each 8-bits in ieee_link_id_comb represents one link ID. * Use WMI_MLO_IEEE_LINK_ID_COMB_GET_LINK_ID* and _SET_LINK_ID* to get/set * link IDs in this field. */ A_UINT32 ieee_link_id_comb; /** Example: * Say there are 3 MLO links with ieee link IDs as 1,2 and 32. * Say host wants to disallow MLMR between links with IDs 1 and 2, * disallow eMLSR between links with IDs 1 and 32, * disallow MLMR and eMLSR for links with IDs 2 and 32. * There will be 3 TLVs of type wmi_disallowed_mlo_mode_bitmap_param * like below. * * wmi_disallowed_mlo_mode_bitmap_param[0]: * disallowed_mode_bitmap = 0x1, * ieee_link_id_comb = 0x00000201 * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID1(ieee_link_id_comb, 0x1) * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID2(ieee_link_id_comb, 0x2) * * wmi_disallowed_mlo_mode_bitmap_param[1] * disallowed_mode_bitmap = 0x2, * ieee_link_id_comb = 0x00002001 * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID1(ieee_link_id_comb, 0x1) * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID2(ieee_link_id_comb, 0x20) * * wmi_disallowed_mlo_mode_bitmap_param[2] * disallowed_mode_bitmap = 0x3, * ieee_link_id_comb = 0x00002002 * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID1(ieee_link_id_comb, 0x2) * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID2(ieee_link_id_comb, 0x20) */ } wmi_disallowed_mlo_mode_bitmap_param; typedef enum { WMI_MLO_LINK_SET_ACTIVE_STATUS_SUCCESS = 0, WMI_MLO_LINK_SET_ACTIVE_STATUS_HOST_REJECT = 1, Loading Loading @@ -47115,6 +47260,39 @@ typedef struct { A_UINT32 pdev_id; } wmi_pdev_utf_event_fixed_param; typedef struct { /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_led_blink_rate_table */ A_UINT32 tlv_header; A_UINT32 on_time; /* units = milliseconds */ A_UINT32 off_time; /* units = milliseconds */ } wmi_led_blink_rate_table; typedef struct { /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_enable_led_blink_download_rate_table_fixed_param */ A_UINT32 tlv_header; /* Pdev Id 0 or 1 based on split phy */ A_UINT32 pdev_id; /* Feature enable or disable flag 0-disable 1-enable */ A_UINT32 blink_enable_flag; /* Bandwidth (Mbps) of each index in the blink rate table. * This quantum specification tells the FW which of the blink rate table * elements to use; the FW will divide the data rate by this bw_per_index * and round down, to obtain the index into the rate table for the blink * rate corresponding to the data rate. */ A_UINT32 bw_per_index; /** * Following this fixed_param TLV are the following additional TLVs: * - wmi_led_blink_rate_table led_blink_rate_table[] * The led_blink_rate_table[] elements need to be ordered by * increasing data rate, so that by dividing the data rate by * bw_per_index, the FW can find which index/element of the * led_blink_rate_table[] array to use. */ } wmi_enable_led_blink_download_rate_table_fixed_param; typedef enum { /* Used when peer attempts connection with vdev */ VDEV_OOB_CONNECT_REQUEST = 0, Loading
fw/htt.h +1 −0 Original line number Diff line number Diff line Loading @@ -814,6 +814,7 @@ typedef enum { HTT_STATS_CODEL_MSDUQ_TAG = 189, /* htt_codel_msduq_stats_tlv */ HTT_STATS_MLO_SCHED_STATS_TAG = 190, /* htt_mlo_sched_stats_tlv */ HTT_STATS_PDEV_MLO_IPC_STATS_TAG = 191, /* htt_pdev_mlo_ipc_stats_tlv */ HTT_STATS_WHAL_WSI_TAG = 192, /* htt_stats_whal_wsi_tlv */ HTT_STATS_MAX_TAG,
fw/htt_stats.h +108 −12 Original line number Diff line number Diff line Loading @@ -1353,6 +1353,17 @@ typedef struct { /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_whal_tx_tlv htt_hw_stats_whal_tx_tlv; typedef struct { htt_tlv_hdr_t tlv_hdr; A_UINT32 wsib_event_watchdog_timeout; A_UINT32 wsib_event_slave_tlv_length_error; A_UINT32 wsib_event_slave_parity_error; A_UINT32 wsib_event_slave_direct_message; A_UINT32 wsib_event_slave_backpressure_error; A_UINT32 wsib_event_master_tlv_length_error; } htt_stats_whal_wsi_tlv; typedef struct { htt_tlv_hdr_t tlv_hdr; /** Loading Loading @@ -5482,7 +5493,10 @@ typedef htt_stats_tx_pdev_rate_stats_be_ofdma_tlv typedef struct { htt_tlv_hdr_t tlv_hdr; /** Tx PPDU duration histogram **/ /** tx_ppdu_dur_hist: * Tx PPDU duration histogram, which holds the tx duration of PPDUs * under histogram bins of interval 250us */ A_UINT32 tx_ppdu_dur_hist[HTT_PDEV_STATS_PPDU_DUR_HIST_BINS]; A_UINT32 tx_success_time_us_low; A_UINT32 tx_success_time_us_high; Loading @@ -5490,6 +5504,11 @@ typedef struct { A_UINT32 tx_fail_time_us_high; A_UINT32 pdev_up_time_us_low; A_UINT32 pdev_up_time_us_high; /** tx_ofdma_ppdu_dur_hist: * Tx OFDMA PPDU duration histogram, which holds the tx duration of * OFDMA PPDUs under histogram bins of interval 250us */ A_UINT32 tx_ofdma_ppdu_dur_hist[HTT_PDEV_STATS_PPDU_DUR_HIST_BINS]; } htt_stats_tx_pdev_ppdu_dur_tlv; /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_tx_pdev_ppdu_dur_tlv htt_tx_pdev_ppdu_dur_stats_tlv; Loading Loading @@ -8179,6 +8198,41 @@ typedef struct { A_UINT32 fw_run_time; /** per chain runtime noise floor values in dBm */ A_INT32 runTime_nf_chain[HTT_STATS_MAX_CHAINS]; /** DFS SW based progressive stats - start **/ /* current AP operating bandwidth (refer to WLAN_PHY_MODE) */ A_UINT32 current_OBW; /* current AP device bandwidth (refer to WLAN_PHY_MODE) */ A_UINT32 current_DBW; /* last_radar_type: last detected radar type * This last_radar_type field contains a value whose meaning is not * exposed to the host; this field is only provided for debug purposes. */ A_UINT32 last_radar_type; /* dfs_reg_domain: curent DFS regulatory domain * This dfs_reg_domain field contains a value whose meaning is not * exposed to the host; this field is only provided for debug purposes. */ A_UINT32 dfs_reg_domain; /* radar_mask_bit: Radar mask setting programmed in HW registers. * Each bit represents a 20 MHz portion of the channel. * Bit 0 represents the highest 20 MHz portion within the channel. * For example... * For a 80 MHz channel, bit0 = highest 20 MHz, bit3 = lowest 20 MHz * For a 320 MHz channel, bit0 = highest 20 MHz, bit15 = lowest 20 MHz */ A_UINT32 radar_mask_bit; /* DFS radar rssi threshold (units = dBm) */ A_INT32 radar_rssi; /* DFS global flags (refer to IEEE80211_CHAN_* defines) */ A_UINT32 radar_dfs_flags; /* band center frequency of operating bandwidth (units = MHz) */ A_UINT32 band_center_frequency_OBW; /* band center frequency of device bandwidth (units = MHz) */ A_UINT32 band_center_frequency_DBW; /** DFS SW based progressive stats - end **/ } htt_stats_phy_stats_tlv; /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_phy_stats_tlv htt_phy_stats_tlv; Loading Loading @@ -8993,14 +9047,19 @@ typedef htt_stats_ml_link_info_details_tlv htt_ml_link_info_tlv; #define HTT_ML_PEER_DETAILS_LINK_INIT_COUNT_S 19 #define HTT_ML_PEER_DETAILS_NON_STR_M 0x00400000 #define HTT_ML_PEER_DETAILS_NON_STR_S 22 #define HTT_ML_PEER_DETAILS_EMLSR_M 0x00800000 #define HTT_ML_PEER_DETAILS_EMLSR_S 23 #define HTT_ML_PEER_DETAILS_IS_EMLSR_ACTIVE_M 0x00800000 #define HTT_ML_PEER_DETAILS_IS_EMLSR_ACTIVE_S 23 /* for backwards compatibility, retain the old EMLSR name of the bitfield */ #define HTT_ML_PEER_DETAILS_EMLSR_M HTT_ML_PEER_DETAILS_IS_EMLSR_ACTIVE_M #define HTT_ML_PEER_DETAILS_EMLSR_S HTT_ML_PEER_DETAILS_IS_EMLSR_ACTIVE_S #define HTT_ML_PEER_DETAILS_IS_STA_KO_M 0x01000000 #define HTT_ML_PEER_DETAILS_IS_STA_KO_S 24 #define HTT_ML_PEER_DETAILS_NUM_LOCAL_LINKS_M 0x06000000 #define HTT_ML_PEER_DETAILS_NUM_LOCAL_LINKS_S 25 #define HTT_ML_PEER_DETAILS_ALLOCATED_M 0x08000000 #define HTT_ML_PEER_DETAILS_ALLOCATED_S 27 #define HTT_ML_PEER_DETAILS_EMLSR_SUPPORT_M 0x10000000 #define HTT_ML_PEER_DETAILS_EMLSR_SUPPORT_S 28 #define HTT_ML_PEER_DETAILS_PARTICIPATING_CHIPS_BITMAP_M 0x000000ff #define HTT_ML_PEER_DETAILS_PARTICIPATING_CHIPS_BITMAP_S 0 Loading Loading @@ -9071,16 +9130,31 @@ typedef htt_stats_ml_link_info_details_tlv htt_ml_link_info_tlv; ((_var) |= ((_val) << HTT_ML_PEER_DETAILS_NON_STR_S)); \ } while (0) #define HTT_ML_PEER_DETAILS_IS_EMLSR_ACTIVE_GET(_var) \ (((_var) & HTT_ML_PEER_DETAILS_IS_EMLSR_ACTIVE_M) >> \ HTT_ML_PEER_DETAILS_IS_EMLSR_ACTIVE_S) #define HTT_ML_PEER_DETAILS_IS_EMLSR_ACTIVE_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_ML_PEER_DETAILS_IS_EMLSR_ACTIVE, _val); \ ((_var) &= ~(HTT_ML_PEER_DETAILS_IS_EMLSR_ACTIVE_M)); \ ((_var) |= ((_val) << HTT_ML_PEER_DETAILS_IS_EMLSR_ACTIVE_S)); \ } while (0) /* start deprecated: * For backwards compatibility, retain a macro definition that uses * the old EMLSR name of the bitfield */ #define HTT_ML_PEER_DETAILS_EMLSR_GET(_var) \ (((_var) & HTT_ML_PEER_DETAILS_EMLSR_M) >> \ HTT_ML_PEER_DETAILS_EMLSR_S) #define HTT_ML_PEER_DETAILS_EMLSR_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_ML_PEER_DETAILS_EMLSR, _val); \ ((_var) &= ~(HTT_ML_PEER_DETAILS_EMLSR_M)); \ ((_var) |= ((_val) << HTT_ML_PEER_DETAILS_EMLSR_S)); \ } while (0) /* end deprecated */ #define HTT_ML_PEER_DETAILS_IS_STA_KO_GET(_var) \ (((_var) & HTT_ML_PEER_DETAILS_IS_STA_KO_M) >> \ Loading Loading @@ -9115,6 +9189,18 @@ typedef htt_stats_ml_link_info_details_tlv htt_ml_link_info_tlv; ((_var) |= ((_val) << HTT_ML_PEER_DETAILS_ALLOCATED_S)); \ } while (0) #define HTT_ML_PEER_DETAILS_EMLSR_SUPPORT_GET(_var) \ (((_var) & HTT_ML_PEER_DETAILS_EMLSR_SUPPORT_M) >> \ HTT_ML_PEER_DETAILS_EMLSR_SUPPORT_S) #define HTT_ML_PEER_DETAILS_EMLSR_SUPPORT_SET(_var, _val) \ do { \ HTT_CHECK_SET_VAL(HTT_ML_PEER_DETAILS_EMLSR_SUPPORT, _val); \ ((_var) &= ~(HTT_ML_PEER_DETAILS_EMLSR_SUPPORT_M)); \ ((_var) |= ((_val) << HTT_ML_PEER_DETAILS_EMLSR_SUPPORT_S)); \ } while (0) #define HTT_ML_PEER_DETAILS_PARTICIPATING_CHIPS_BITMAP_GET(_var) \ (((_var) & HTT_ML_PEER_DETAILS_PARTICIPATING_CHIPS_BITMAP_M) >> \ HTT_ML_PEER_DETAILS_PARTICIPATING_CHIPS_BITMAP_S) Loading @@ -9137,11 +9223,21 @@ typedef struct { primary_chip_id : 2, link_init_count : 3, non_str : 1, emlsr : 1, is_emlsr_active : 1, is_sta_ko : 1, num_local_links : 2, allocated : 1, reserved : 4; emlsr_support : 1, reserved : 3; }; struct { /* * For backwards compatibility, use a dummy union element to * retain the old "emlsr" name for the "is_emlsr_active" bitfield. */ A_UINT32 dummy1 : 23, emlsr : 1, dummy2 : 8; }; A_UINT32 msg_dword_1; }; Loading
fw/wmi_services.h +1 −0 Original line number Diff line number Diff line Loading @@ -647,6 +647,7 @@ typedef enum { WMI_SERVICE_PDEV_PARAM_IN_UTF_WMI = 394, /* FW supports receiving and sending pdev_id parameter in WMI_PDEV_UTF_(CMD/EVENT) */ WMI_SERVICE_SW_PROG_DFS_SUPPORT = 395, /* Indicate FW support SW progressive DFS */ WMI_SERVICE_MULTIPLE_REORDER_QUEUE_SETUP_SUPPORT = 396, /* Indicate FW supports multiple TID reorder queues setup in one cmd */ WMI_SERVICE_MULTIPLE_COEX_CONFIG_SUPPORT = 397, /* FW supports mutiple coex configs in one cmd */ WMI_MAX_EXT2_SERVICE Loading
fw/wmi_tlv_defs.h +20 −1 Original line number Diff line number Diff line Loading @@ -1417,6 +1417,10 @@ typedef enum { WMITLV_TAG_STRUC_wmi_dbw_chan_info, WMITLV_TAG_STRUC_wmi_peer_multiple_reorder_queue_setup_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_peer_per_reorder_q_setup_params_t, WMITLV_TAG_STRUC_wmi_coex_multiple_config_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_disallowed_mlo_mode_bitmap_param, WMITLV_TAG_STRUC_wmi_led_blink_rate_table, WMITLV_TAG_STRUC_wmi_enable_led_blink_download_rate_table_fixed_param, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. Loading Loading @@ -1957,6 +1961,8 @@ typedef enum { OP(WMI_VDEV_OOB_CONNECTION_REQ_CMDID) \ OP(WMI_AUDIO_TRANSPORT_SWITCH_RESP_STATUS_CMDID) \ OP(WMI_PEER_MULTIPLE_REORDER_QUEUE_SETUP_CMDID) \ OP(WMI_COEX_MULTIPLE_CONFIG_CMDID) \ OP(WMI_PDEV_ENABLE_LED_BLINK_DOWNLOAD_TABLE_CMDID) \ /* add new CMD_LIST elements above this line */ Loading Loading @@ -5192,7 +5198,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_ENABLE_DURATION_BASED_TX_MODE_SELECTION_CMDID WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, vdev_id_bitmap, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, vdev_id_bitmap2, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, ieee_link_id_bitmap, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, ieee_link_id_bitmap2, WMITLV_SIZE_VAR) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, ieee_link_id_bitmap2, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_disallowed_mlo_mode_bitmap_param, disallow_mode_param, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_SET_ACTIVE_CMDID); /* Request DPD Status */ Loading Loading @@ -5518,6 +5525,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_SWITCH_CONF_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_wsi_stats_info_cmd_fixed_param, wmi_pdev_wsi_stats_info_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_WSI_STATS_INFO_CMDID); /* Data Rate based GPIO LED blink and Rate Table Download command */ #define WMITLV_TABLE_WMI_PDEV_ENABLE_LED_BLINK_DOWNLOAD_TABLE_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_enable_led_blink_download_rate_table_fixed_param, wmi_enable_led_blink_download_rate_table_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC,wmi_led_blink_rate_table, led_blink_rate_table, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_ENABLE_LED_BLINK_DOWNLOAD_TABLE_CMDID); /* CSA status indication command to inform FW about host accepting or rejecting csa event*/ #define WMITLV_TABLE_WMI_CSA_EVENT_STATUS_INDICATION_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_csa_event_status_ind_fixed_param , wmi_csa_event_status_ind_fixed_param,fixed_param, WMITLV_SIZE_FIX) Loading @@ -5531,6 +5544,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_CSA_EVENT_STATUS_INDICATION_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_oob_connection_req_cmd_fixed_param, wmi_vdev_oob_connection_req_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_OOB_CONNECTION_REQ_CMDID); /* Multiple BTCOEX config commands. */ #define WMITLV_TABLE_WMI_COEX_MULTIPLE_CONFIG_CMDID(id,op,buf,len) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_coex_multiple_config_cmd_fixed_param, wmi_coex_multiple_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, WMI_COEX_CONFIG_CMD_fixed_param, config_list, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_COEX_MULTIPLE_CONFIG_CMDID); /************************** TLV definitions of WMI events *******************************/ Loading
fw/wmi_unified.h +180 −2 Original line number Diff line number Diff line Loading @@ -516,6 +516,11 @@ typedef enum { WMI_PDEV_SET_RF_PATH_CMDID, /** WSI stats info WMI command */ WMI_PDEV_WSI_STATS_INFO_CMDID, /* * WMI cmd to Enable LED blink based on Tx+Rx Data Rate * and download LED ON/OFF Rate table */ WMI_PDEV_ENABLE_LED_BLINK_DOWNLOAD_TABLE_CMDID, /* VDEV (virtual device) specific commands */ Loading Loading @@ -1379,6 +1384,7 @@ typedef enum { WMI_COEX_DBAM_CMDID, WMI_TAS_POWER_HISTORY_CMDID, WMI_ESL_EGID_CMDID, WMI_COEX_MULTIPLE_CONFIG_CMDID, /** * OBSS scan offload enable/disable commands Loading Loading @@ -4626,7 +4632,12 @@ typedef struct { * Refer to the below definitions of the * WMI_RSRC_CFG_HOST_SERVICE_FLAG_RADAR_FLAGS_FULL_BW_NOL_GET * and _SET macros. * Bits 31:15 - Reserved * Bit 15 * This bit will be set if the has qms_dlkm support enabled. * Refer to the below definitions of the * WMI_RSRC_CFG_HOST_SERVICE_FLAG_QMS_DLKM_SUPPORT_GET * and _SET macros. * Bits 31:16 - Reserved */ A_UINT32 host_service_flags; Loading Loading @@ -5074,6 +5085,11 @@ typedef struct { #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_RADAR_FLAGS_FULL_BW_NOL_SET(host_service_flags, val) \ WMI_SET_BITS(host_service_flags, 14, 1, val) #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_QMS_DLKM_SUPPORT_GET(host_service_flags) \ WMI_GET_BITS(host_service_flags, 15, 1) #define WMI_RSRC_CFG_HOST_SERVICE_FLAG_QMS_DLKM_SUPPORT_SET(host_service_flags, val) \ WMI_SET_BITS(host_service_flags, 15, 1, val) #define WMI_RSRC_CFG_CARRIER_CFG_CHARTER_ENABLE_GET(carrier_config) \ WMI_GET_BITS(carrier_config, 0, 1) Loading Loading @@ -9338,6 +9354,21 @@ typedef enum { /** Parameter to enable/disable tid0 and tid3 mapping to work 3 Link MLO */ WMI_PDEV_PARAM_TID_MAPPING_3LINK_MLO, /** Parameter to enable/disable small OFDMA M-RUs **/ WMI_PDEV_PARAM_ENABLE_SMALL_MRU, /** Parameter to enable/disable large OFDMA M-RUs **/ WMI_PDEV_PARAM_ENABLE_LARGE_MRU, /** Parameter to enable/disable delayed LMR feedback. * Note: Delayed LMR feedback is supported only up to two ranging peers to * enable Location certification * 0 - Immediate LMR feedback is enabled for all ranging peers. * 1 (non zero) - delayed LMR feedback is enabled. Third peer onward will * default to immediate LMR feedback. **/ WMI_PDEV_PARAM_ENABLE_DELAYED_LMR_FEEDBACK, } WMI_PDEV_PARAM; #define WMI_PDEV_ONLY_BSR_TRIG_IS_ENABLED(trig_type) WMI_GET_BITS(trig_type, 0, 1) Loading Loading @@ -31273,8 +31304,16 @@ typedef enum { TSF_TSTAMP_QTIMER_CAPTURE_REQ = 4, TSF_TSTAMP_AUTO_REPORT_ENABLE = 5, TSF_TSTAMP_AUTO_REPORT_DISABLE = 6, TSF_TSTAMP_PERIODIC_REPORT_REQ = 5, } wmi_tsf_tstamp_action; typedef enum { TSF_TSTAMP_REPORT_TTIMER = 0x1, /* bit 0: TSF Timer */ TSF_TSTAMP_REPORT_QTIMER = 0x2, /* bit 1: H/T common Timer */ } wmi_tsf_tstamp_report_flags; #define TSF_TSTAMP_REPORT_PERIOD_MIN 1000 /* ms units */ typedef struct { /** TLV tag and len; tag equals * WMITLV_TAG_STRUC_wmi_vdev_tsf_tstamp_action_cmd_fixed_param */ Loading @@ -31283,6 +31322,12 @@ typedef struct { A_UINT32 vdev_id; /* action type, refer to wmi_tsf_tstamp_action */ A_UINT32 tsf_action; /* * The below fields are valid only when tsf_action is * TSF_TSTAMP_PERIODIC_REPORT_REQ. */ A_UINT32 period; /* the period of report timestamp, ms units */ A_UINT32 flags; /* wmi_tsf_tstamp_report_flags */ } wmi_vdev_tsf_tstamp_action_cmd_fixed_param; typedef struct { Loading Loading @@ -34694,7 +34739,7 @@ typedef enum wmi_coex_config_type { } WMI_COEX_CONFIG_TYPE; typedef struct { A_UINT32 tlv_header; A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_WMI_COEX_CONFIG_CMD_fixed_param */ A_UINT32 vdev_id; A_UINT32 config_type; /* wmi_coex_config_type enum */ A_UINT32 config_arg1; Loading @@ -34705,6 +34750,14 @@ typedef struct { A_UINT32 config_arg6; } WMI_COEX_CONFIG_CMD_fixed_param; typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_coex_multiple_config_cmd_fixed_param */ /* * This struct is followed by other TLVs: * WMI_COEX_CONFIG_CMD_fixed_param config_list[num_config]; */ } wmi_coex_multiple_config_cmd_fixed_param; typedef enum wmi_coex_dbam_mode_type { WMI_COEX_DBAM_DISABLE = 0, WMI_COEX_DBAM_ENABLE = 1, Loading Loading @@ -37054,6 +37107,8 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_VDEV_OOB_CONNECTION_REQ_CMDID); WMI_RETURN_STRING(WMI_AUDIO_TRANSPORT_SWITCH_RESP_STATUS_CMDID); WMI_RETURN_STRING(WMI_PEER_MULTIPLE_REORDER_QUEUE_SETUP_CMDID); WMI_RETURN_STRING(WMI_COEX_MULTIPLE_CONFIG_CMDID); WMI_RETURN_STRING(WMI_PDEV_ENABLE_LED_BLINK_DOWNLOAD_TABLE_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; Loading Loading @@ -40320,6 +40375,14 @@ typedef struct { A_UINT32 scoring_capability_bitmap; } wmi_roam_capability_report_event_fixed_param; /* * Definition of disallow connection modes. */ typedef enum { /* Bit 0: roam to 5GL+5GH MLSR is not allowed if the bit is set. */ WMI_ROAM_MLO_CONNECTION_MODE_5GL_5GH_MLSR = 0x1, } WMI_ROAM_MLO_CONNECTION_MODES; typedef struct { A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_mlo_config_cmd_fixed_param */ wmi_mac_addr partner_link_addr; /* Assigned link address which can be used as self link addr when vdev is not created */ Loading @@ -40339,6 +40402,13 @@ typedef struct { */ A_UINT32 support_link_band; /* Configure the band bitmap of mlo connection supports. */ A_UINT32 max_active_links; /* Max active links supported for STA */ /* * Disallow the specified connection mode(s) when roaming to MLD AP. * Refer to the WMI_ROAM_MLO_CONNECTION_MODES enum for the connection mode * each bit represents. */ A_UINT32 disallow_connect_modes; } wmi_roam_mlo_config_cmd_fixed_param; typedef struct { Loading Loading @@ -43828,6 +43898,7 @@ enum wmi_oem_data_evt_cause { WMI_OEM_DATA_EVT_CAUSE_UNSPECIFIED = 0, WMI_OEM_DATA_EVT_CAUSE_CMD_REQ = 1, WMI_OEM_DATA_EVT_CAUSE_ASYNC = 2, WMI_OEM_DATA_EVT_CAUSE_QMS = 3, }; typedef struct { Loading Loading @@ -44655,6 +44726,7 @@ typedef enum { WMI_MLO_LINK_FORCE_INACTIVE_LINK_NUM = 4, /* Force inactive a number of links, firmware to decide which links to inactive */ WMI_MLO_LINK_NO_FORCE = 5, /* Cancel the force operation of specific links, allow firmware to decide */ WMI_MLO_LINK_FORCE_ACTIVE_INACTIVE = 6, /* combination of force specific links active & force specific links inactive */ WMI_MLO_LINK_NON_FORCE_UPDATE = 7, /* Used when host wants to update other fields like disallow_mlo_mode_bmap */ } WMI_MLO_LINK_FORCE_MODE; typedef enum { Loading Loading @@ -44748,6 +44820,8 @@ typedef struct wmi_mlo_link_set_active_cmd * For force mode WMI_MLO_LINK_FORCE_ACTIVE_INACTIVE ieee_link_id_bitmap2[] * carry the inactive linkid bitmap. * In other cases the length of the array should be 0. *--- * wmi_disallowed_mlo_mode_bitmap_param_t disallow_mlo_mode_bmap[]; */ } wmi_mlo_link_set_active_cmd_fixed_param; Loading @@ -44769,6 +44843,77 @@ typedef struct wmi_mlo_set_active_link_number_param } wmi_mlo_set_active_link_number_param; #define WMI_MLO_MODE_MLMR 0x1; #define WMI_MLO_MODE_EMLSR 0x2; #define WMI_MLO_IEEE_LINK_ID_COMB_GET_LINK_ID1(ieee_link_id_comb) WMI_GET_BITS(ieee_link_id_comb, 0, 8) #define WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID1(ieee_link_id_comb, value) WMI_SET_BITS(ieee_link_id_comb, 0, 8, value) #define WMI_MLO_IEEE_LINK_ID_COMB_GET_LINK_ID2(ieee_link_id_comb) WMI_GET_BITS(ieee_link_id_comb, 8, 8) #define WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID2(ieee_link_id_comb, value) WMI_SET_BITS(ieee_link_id_comb, 8, 8, value) #define WMI_MLO_IEEE_LINK_ID_COMB_GET_LINK_ID3(ieee_link_id_comb) WMI_GET_BITS(ieee_link_id_comb, 16, 8) #define WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID3(ieee_link_id_comb, value) WMI_SET_BITS(ieee_link_id_comb, 16, 8, value) #define WMI_MLO_IEEE_LINK_ID_COMB_GET_LINK_ID4(ieee_link_id_comb) WMI_GET_BITS(ieee_link_id_comb, 24, 8) #define WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID4(ieee_link_id_comb, value) WMI_SET_BITS(ieee_link_id_comb, 24, 8, value) typedef struct wmi_disallowed_mlo_mode_bitmap_param { /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_disallowed_mlo_mode_bitmap_param */ A_UINT32 tlv_header; /** disallowed_mode_bitmap: * Bitmap of MLO Modes like MLMR, eMLSR which are not allowed. * Refer to WMI_MLO_MODE_* * disallowed_mode_bitmap Meaning * ====================== ================= * 0x0 No restriction * 0x1 MLMR is not allowed * 0x2 EMLSR is not allowed * 0x3 MLMR and EMLSR are not allowed */ A_UINT32 disallowed_mode_bitmap; /** ieee_link_id_comb: * Give combination of IEEE link IDs for which above disallowed_mode_bitmap * is applicable. * Each 8-bits in ieee_link_id_comb represents one link ID. * Use WMI_MLO_IEEE_LINK_ID_COMB_GET_LINK_ID* and _SET_LINK_ID* to get/set * link IDs in this field. */ A_UINT32 ieee_link_id_comb; /** Example: * Say there are 3 MLO links with ieee link IDs as 1,2 and 32. * Say host wants to disallow MLMR between links with IDs 1 and 2, * disallow eMLSR between links with IDs 1 and 32, * disallow MLMR and eMLSR for links with IDs 2 and 32. * There will be 3 TLVs of type wmi_disallowed_mlo_mode_bitmap_param * like below. * * wmi_disallowed_mlo_mode_bitmap_param[0]: * disallowed_mode_bitmap = 0x1, * ieee_link_id_comb = 0x00000201 * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID1(ieee_link_id_comb, 0x1) * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID2(ieee_link_id_comb, 0x2) * * wmi_disallowed_mlo_mode_bitmap_param[1] * disallowed_mode_bitmap = 0x2, * ieee_link_id_comb = 0x00002001 * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID1(ieee_link_id_comb, 0x1) * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID2(ieee_link_id_comb, 0x20) * * wmi_disallowed_mlo_mode_bitmap_param[2] * disallowed_mode_bitmap = 0x3, * ieee_link_id_comb = 0x00002002 * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID1(ieee_link_id_comb, 0x2) * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID2(ieee_link_id_comb, 0x20) */ } wmi_disallowed_mlo_mode_bitmap_param; typedef enum { WMI_MLO_LINK_SET_ACTIVE_STATUS_SUCCESS = 0, WMI_MLO_LINK_SET_ACTIVE_STATUS_HOST_REJECT = 1, Loading Loading @@ -47115,6 +47260,39 @@ typedef struct { A_UINT32 pdev_id; } wmi_pdev_utf_event_fixed_param; typedef struct { /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_led_blink_rate_table */ A_UINT32 tlv_header; A_UINT32 on_time; /* units = milliseconds */ A_UINT32 off_time; /* units = milliseconds */ } wmi_led_blink_rate_table; typedef struct { /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_enable_led_blink_download_rate_table_fixed_param */ A_UINT32 tlv_header; /* Pdev Id 0 or 1 based on split phy */ A_UINT32 pdev_id; /* Feature enable or disable flag 0-disable 1-enable */ A_UINT32 blink_enable_flag; /* Bandwidth (Mbps) of each index in the blink rate table. * This quantum specification tells the FW which of the blink rate table * elements to use; the FW will divide the data rate by this bw_per_index * and round down, to obtain the index into the rate table for the blink * rate corresponding to the data rate. */ A_UINT32 bw_per_index; /** * Following this fixed_param TLV are the following additional TLVs: * - wmi_led_blink_rate_table led_blink_rate_table[] * The led_blink_rate_table[] elements need to be ordered by * increasing data rate, so that by dividing the data rate by * bw_per_index, the FW can find which index/element of the * led_blink_rate_table[] array to use. */ } wmi_enable_led_blink_download_rate_table_fixed_param; typedef enum { /* Used when peer attempts connection with vdev */ VDEV_OOB_CONNECT_REQUEST = 0,