fw-api: CL 22946448 - update fw common interface files

WMI: add MLO_LINK SET_BSS_PARAMS+SWITCH_CONF cmd + SWITCH_REQUEST evt msg defs

Change-Id: I340ecdcbc4508c42e6184cdbfee08cbacd18cd9a
CRs-Fixed: 2262693
This commit is contained in:
spuligil 2023-05-12 06:01:06 -07:00 • committed by Gerrit - the friendly Code Review server
commit ad4c764b5f
4 changed files with 170 additions and 5 deletions

View file

@ -631,6 +631,7 @@ typedef enum {
WMI_SERVICE_NAN_PAIRING_PEER_CREATE_BY_HOST = 378, /* Indicate FW supports creation of PASN Peer by Host for NAN pairing usecase */
WMI_SERVICE_MLO_TID_TO_LINK_MAPPING_SUPPORT = 379, /* Indicates FW supports TID-TO-LINK mapping */
WMI_SERVICE_PER_LINK_STATS_SUPPORT = 380, /* Indicates FW supports per link stats for MLO */
WMI_SERVICE_N_LINK_MLO_SUPPORT = 381, /* Indicate FW supports N MLO link & vdev re-purpose between links */
WMI_MAX_EXT2_SERVICE

View file

@ -1377,6 +1377,10 @@ typedef enum {
WMITLV_TAG_STRUC_wmi_gpio_state_res_event_fixed_param,
WMITLV_TAG_STRUC_wmi_ctrl_path_vdev_stats_struct,
WMITLV_TAG_STRUC_wmi_pdev_set_rf_path_event_fixed_param,
WMITLV_TAG_STRUC_wmi_mlo_link_bss_param,
WMITLV_TAG_STRUC_wmi_mlo_set_link_bss_params_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_mlo_link_switch_req_evt_fixed_param,
WMITLV_TAG_STRUC_wmi_mlo_link_switch_cnf_fixed_param,
} WMITLV_TAG_ID;
/*
* IMPORTANT: Please add _ALL_ WMI Commands Here.
@ -5105,7 +5109,9 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_ENABLE_DURATION_BASED_TX_MODE_SELECTION_CMDID
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_set_active_cmd_fixed_param, wmi_mlo_link_set_active_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_set_active_link_number_param, link_number_param, WMITLV_SIZE_VAR) \
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, 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_CREATE_PARAM_STRUC(WMI_MLO_LINK_SET_ACTIVE_CMDID);
/* Request DPD Status */
@ -5397,6 +5403,17 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VENDOR_VDEV_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_vendor_cmd_fixed_param, wmi_peer_vendor_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_VENDOR_PEER_CMDID);
/* SET MLO link BSS param */
#define WMITLV_TABLE_WMI_MLO_LINK_SET_BSS_PARAMS_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_set_link_bss_params_cmd_fixed_param, wmi_mlo_set_link_bss_params_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_link_bss_param, link_bss_params, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_SET_BSS_PARAMS_CMDID);
/* MLO link switch confirmation command to inform FW about host side status and reason code */
#define WMITLV_TABLE_WMI_MLO_LINK_SWITCH_CONF_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_switch_cnf_fixed_param, wmi_mlo_link_switch_cnf_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_SWITCH_CONF_CMDID);
/************************** TLV definitions of WMI events *******************************/
@ -7154,7 +7171,9 @@ WMITLV_CREATE_PARAM_STRUC(WMI_TWT_SESSION_STATS_EVENTID);
#define WMITLV_TABLE_WMI_MLO_LINK_SET_ACTIVE_RESP_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_set_active_resp_event_fixed_param, wmi_mlo_link_set_active_resp_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, force_active_vdev_bitmap, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, force_inactive_vdev_bitmap, WMITLV_SIZE_VAR)
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, force_inactive_vdev_bitmap, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, force_active_ieee_link_id_bitmap, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, force_inactive_ieee_link_id_bitmap, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_SET_ACTIVE_RESP_EVENTID);
/* Get DPD status Event */
@ -7341,6 +7360,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VENDOR_VDEV_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_vendor_event_fixed_param, wmi_peer_vendor_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_VENDOR_PEER_EVENTID);
/* link switch event */
#define WMITLV_TABLE_WMI_MLO_LINK_SWITCH_REQUEST_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_switch_req_evt_fixed_param, wmi_mlo_link_switch_req_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_SWITCH_REQUEST_EVENTID);
#ifdef __cplusplus
}

View file

@ -1563,6 +1563,10 @@ typedef enum {
WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_CMDID,
/** WMI cmd used to get mlo link information */
WMI_MLO_VDEV_GET_LINK_INFO_CMDID,
/** WMI cmd used to set link BSS parameters */
WMI_MLO_LINK_SET_BSS_PARAMS_CMDID,
/** WMI cmd to confirm the status of link switch request handling */
WMI_MLO_LINK_SWITCH_CONF_CMDID,
/** WMI commands specific to Service Aware WiFi (SAWF) */
/** configure or reconfigure the parameters for a service class */
@ -2398,6 +2402,8 @@ typedef enum {
WMI_MLO_VDEV_LINK_INFO_EVENTID,
/** request host to do T2LM neg to the un-disabled link */
WMI_MLO_LINK_DISABLE_REQUEST_EVENTID,
/** request host to switch to new link for specified vdev */
WMI_MLO_LINK_SWITCH_REQUEST_EVENTID,
/* WMI event specific to Quiet handling */
WMI_QUIET_HANDLING_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_QUIET_OFL),
@ -3536,6 +3542,11 @@ typedef struct {
*/
A_UINT32 rx_aggr_ba_win_size_max;
/*
* max link number per MLD FW supports.
*/
A_UINT32 num_max_mlo_link_per_ml_bss_supp;
/* Followed by next TLVs:
* WMI_DMA_RING_CAPABILITIES dma_ring_caps[];
* wmi_spectral_bin_scaling_params wmi_bin_scaling_params[];
@ -4647,6 +4658,18 @@ typedef struct {
* number of max active virtual devices (VAPs) to support
*/
A_UINT32 num_max_active_vdevs;
/**
* @brief num_max_mlo_link_per_ml_bss
* number of max partner links of a ML BSS
*/
A_UINT32 num_max_mlo_link_per_ml_bss;
/**
* @brief num_max_active_mlo_link_per_ml_bss
* number of max active partner links of a ML BSS
*/
A_UINT32 num_max_active_mlo_link_per_ml_bss;
} wmi_resource_config;
#define WMI_MSDU_FLOW_AST_ENABLE_GET(msdu_flow_config0, ast_x) \
@ -15882,6 +15905,8 @@ typedef struct {
#define WMI_MLO_FLAGS_SET_NSTR_BITMAP_PRESENT(mlo_flags, value) WMI_SET_BITS(mlo_flags, 11, 1, value)
#define WMI_MLO_FLAGS_GET_NSTR_BITMAP_SIZE(mlo_flags) WMI_GET_BITS(mlo_flags, 12, 1)
#define WMI_MLO_FLAGS_SET_NSTR_BITMAP_SIZE(mlo_flags, value) WMI_SET_BITS(mlo_flags, 12, 1, value)
#define WMI_MLO_FLAGS_GET_MLO_LINK_SWITCH(mlo_flags) WMI_GET_BITS(mlo_flags, 13, 1)
#define WMI_MLO_FLAGS_SET_MLO_LINK_SWITCH(mlo_flags, value) WMI_SET_BITS(mlo_flags, 13, 1, value)
/* this structure used for pass mlo flags*/
typedef struct {
@ -15906,7 +15931,8 @@ typedef struct {
* Indication Bitmap subfield is equal to 1 octet.
*/
nstr_bitmap_size:1,
unused: 19;
mlo_link_switch: 1, /* indicate the command is a part of link switch procedure */
unused: 18;
};
A_UINT32 mlo_flags;
};
@ -20284,10 +20310,14 @@ enum WMI_PEER_STA_TYPE {
typedef struct {
A_UINT32 tlv_header; /** TLV tag (MITLV_TAG_STRUC_wmi_peer_assoc_mlo_partner_link_params) and len */
A_UINT32 vdev_id; /** unique id identifying the VDEV, generated by the caller */
A_UINT32 vdev_id; /** unique id identifying the VDEV, generated by the caller. Set to 0xFFFFFFFF if no vdev is allocated. */
A_UINT32 hw_mld_link_id; /** Unique link id across SOCs, got as part of QMI handshake. */
wmi_mlo_flags mlo_flags; /** MLO flags */
A_UINT32 logical_link_index; /** Unique index for links of the mlo. Starts with Zero */
A_UINT32 ieee_link_id; /*link id in the 802.11 frames*/
wmi_mac_addr bss_id;
wmi_channel wmi_chan;
wmi_mac_addr self_mac;
} wmi_peer_assoc_mlo_partner_link_params;
/* This TLV structure used to pass mlo Parameters on peer assoc, only apply for mlo-peers */
@ -43593,6 +43623,28 @@ typedef enum {
WMI_MLO_LINK_FORCE_REASON_TDLS = 4, /* Set force specific links because of 11BE MLO TDLS setup/teardown */
} WMI_MLO_LINK_FORCE_REASON;
#define WMI_MLO_CONTROL_FLAGS_GET_OVERWRITE_FORCE_ACTIVE(mlo_flags) WMI_GET_BITS(control_flags, 0, 1)
#define WMI_MLO_CONTROL_FLAGS_SET_OVERWRITE_FORCE_ACTIVE(mlo_flags, value) WMI_SET_BITS(control_flags, 0, 1, value)
#define WMI_MLO_CONTROL_FLAGS_GET_OVERWRITE_FORCE_INACTIVE(mlo_flags) WMI_GET_BITS(control_flags, 1, 1)
#define WMI_MLO_CONTROL_FLAGS_SET_OVERWRITE_FORCE_INACTIVE(mlo_flags, value) WMI_SET_BITS(control_flags, 1, 1, value)
/*
* This structure is used for passing wmi_mlo_control_flags.
* When force_mode is WMI_MLO_LINK_FORCE_ACTIVE or WMI_MLO_LINK_FORCE_INACTIVE
* host can pass below control flags, to indicate if FW need to clear earlier
* force bitmap config.
*/
typedef struct {
union {
struct {
A_UINT32 overwrite_force_active_bitmap:1, /* indicate overwrite all earlier force_active bitmaps */
overwrite_force_inactive_bitmap:1, /* indicate overwrite all earlier force_inactive bitmaps */
unused: 30;
};
A_UINT32 control_flags;
};
} wmi_mlo_control_flags;
typedef struct wmi_mlo_link_set_active_cmd
{
/** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_set_active_cmd_fixed_param; */
@ -43601,12 +43653,21 @@ typedef struct wmi_mlo_link_set_active_cmd
A_UINT32 force_mode;
/** reason of force link active / inactive, enum WMI_MLO_LINK_FORCE_REASON */
A_UINT32 reason;
/* indicate use vdev_id bitmap or link_id_bitmap */
A_UINT32 use_ieee_link_id_bitmap;
wmi_mac_addr ap_mld_mac_addr;
wmi_mlo_control_flags ctrl_flags;
/* The TLVs follows this structure:
* wmi_mlo_set_active_link_number_param link_number_param[];
* Link number parameters, optional TLV.
* Present when force type is WMI_MLO_LINK_FORCE_ACTIVE_LINK_NUM or
* WMI_MLO_LINK_FORCE_INACTIVE_LINK_NUM.
* In other cases the length of array should be 0.
*---
* If use_ieee_link_id_bitmap equals 0 vdev_id_bitmap[] & vdev_id_bitmap2[]
* are valid.
* A_UINT32 vdev_id_bitmap[];
* Optional TLV, present when force type is WMI_MLO_LINK_FORCE_ACTIVE
* or WMI_MLO_LINK_FORCE_INACTIVE or WMI_MLO_LINK_NO_FORCE,
@ -43618,6 +43679,18 @@ typedef struct wmi_mlo_link_set_active_cmd
* For force mode WMI_MLO_LINK_FORCE_ACTIVE_INACTIVE vdev_id_bitmap2[]
* carry the inactive vdev bitmap.
* In other cases the length of the array should be 0.
*---
* If use_ieee_link_id_bitmap equals 1 ieee_link_id_bitmap[] &
* ieee_link_id_bitmap2[] are valid.
* A_UINT32 ieee_link_id_bitmap[];
* present for WMI_MLO_LINK_FORCE_ACTIVE
* or WMI_MLO_LINK_FORCE_INACTIVE or WMI_MLO_LINK_NO_FORCE
* or WMI_MLO_LINK_FORCE_ACTIVE_LINK_NUM or
* WMI_MLO_LINK_FORCE_INACTIVE_LINK_NUM
* A_UINT32 ieee_link_id_bitmap2[];
* 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_mlo_link_set_active_cmd_fixed_param;
@ -43647,9 +43720,20 @@ typedef struct wmi_mlo_link_set_active_resp_event
/** Return status. 0 for success, non-zero otherwise */
A_UINT32 status;
/* indicate use vdev_id bitmap or link_id_bitmap */
A_UINT32 use_ieee_link_id_bitmap;
wmi_mac_addr ap_mld_mac_addr;
/* The TLVs follows this structure:
*---
* If use_ieee_link_id_bitmap equals 0, vdev_bitmap[] are valid.
* A_UINT32 force_active_vdev_bitmap[]; <-- current force active vdev.
* A_UINT32 force_inactive_vdev_bitmap[]; <-- current force inactive vdevs
*---
* If use_ieee_link_id_bitmap equals 1, ieee_link_id_bitmap[] are valid.
* A_UINT32 force_active_ieee_link_id_bitmap[];
* A_UINT32 force_inactive_ieee_link_id_bitmap[];
*/
} wmi_mlo_link_set_active_resp_event_fixed_param;
@ -45449,6 +45533,62 @@ typedef struct {
A_UINT32 pause_dur_ms;
} wmi_vdev_pause_cmd_fixed_param;
typedef struct {
A_UINT32 tlv_header;
A_UINT32 ieee_link_id; /* key to identify a link */
wmi_channel wmi_chan;
} wmi_mlo_link_bss_param;
typedef struct {
A_UINT32 tlv_header;
wmi_mac_addr ap_mld_macaddr;
/*
* The TLVs listed below follow this fixed_param TLV:
* wmi_mlo_link_bss_param link_bss_params[]:
* an array of links to be updated
*/
} wmi_mlo_set_link_bss_params_cmd_fixed_param;
typedef enum _WMI_LINK_SWITCH_REASON{
WMI_MLO_LINK_SWITCH_REASON_RSSI_CHANGE = 1,
WMI_MLO_LINK_SWITCH_REASON_LOW_QUALITY = 2,
WMI_MLO_LINK_SWITCH_REASON_C2_CHANGE = 3,
WMI_MLO_LINK_SWITCH_REASON_HOST_FORCE = 4,
WMI_MLO_LINK_SWITCH_REASON_T2LM = 5,
WMI_MLO_LINK_SWITCH_REASON_MAX,
} WMI_LINK_SWITCH_REASON;
typedef struct {
A_UINT32 tlv_header;
A_UINT32 vdev_id; /*the vdev id assigned to curr_ieee_link_id*/
A_UINT32 curr_ieee_link_id; /*current link id on above vdev_id*/
A_UINT32 new_ieee_link_id; /*new link id on above vdev_id*/
A_UINT32 new_primary_freq; /*primay_freq for the new link on the vdev, in units of MHZ*/
A_UINT32 new_phymode; /*phymode for the new link on the vdev, see WLAN_PHY_MODE for definitions*/
A_UINT32 reason; /*see WMI_LINK_SWITCH_REASON for definition*/
} wmi_mlo_link_switch_req_evt_fixed_param;
typedef enum _WMI_LINK_SWITCH_CNF_REASON{
WMI_MLO_LINK_SWITCH_CNF_REASON_BSS_PARAMS_CHANGED = 1,
WMI_MLO_LINK_SWITCH_CNF_REASON_CONCURRECNY_CONFLICT = 2,
WMI_MLO_LINK_SWITCH_CNF_REASON_HOST_INTERNAL_ERROR = 3,
WMI_MLO_LINK_SWITCH_CNF_REASON_MAX,
} WMI_LINK_SWITCH_CNF_REASON;
typedef enum _WMI_LINK_SWITCH_CNF_STATUS{
WMI_MLO_LINK_SWITCH_CNF_STATUS_ACCEPT = 0,
WMI_MLO_LINK_SWITCH_CNF_STATUS_REJECT = 1,
} WMI_LINK_SWITCH_CNF_STATUS;
typedef struct {
A_UINT32 tlv_header;
A_UINT32 vdev_id;
A_UINT32 status; /*see definition of WMI_LINK_SWITCH_CNF_STATUS*/
A_UINT32 reason; /*see definition of WMI_LINK_SWITCH_CNF_REASON*/
} wmi_mlo_link_switch_cnf_fixed_param;
/* ADD NEW DEFS HERE */

View file

@ -37,7 +37,7 @@
#define __WMI_VER_MINOR_ 0
/** WMI revision number has to be incremented when there is a
* change that may or may not break compatibility. */
#define __WMI_REVISION_ 1334
#define __WMI_REVISION_ 1335
/** The Version Namespace should not be normally changed. Only
* host and firmware of the same WMI namespace will work