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

Change-Id: I8b4c576c97b49c820de3b146687e80fffa11da2c
WMI: add MLO_SETUP, READY, TEARDOWN msg defs
CRs-Fixed: 2262693
This commit is contained in:
spuligil
2021-03-20 12:00:47 -07:00
parent a58e75f96b
commit cbd92e8ec1
3 changed files with 208 additions and 24 deletions

View File

@@ -1141,6 +1141,14 @@ typedef enum {
WMITLV_TAG_STRUC_wmi_pdev_get_dpd_status_evt_fixed_param, WMITLV_TAG_STRUC_wmi_pdev_get_dpd_status_evt_fixed_param,
WMITLV_TAG_STRUC_wmi_eht_rate_set, WMITLV_TAG_STRUC_wmi_eht_rate_set,
WMITLV_TAG_STRUC_wmi_dcs_awgn_int_t, WMITLV_TAG_STRUC_wmi_dcs_awgn_int_t,
WMITLV_TAG_STRUC_wmi_mlo_tx_send_params,
WMITLV_TAG_STRUC_wmi_partner_link_params,
WMITLV_TAG_STRUC_wmi_peer_assoc_mlo_partner_link_params,
WMITLV_TAG_STRUC_wmi_mlo_setup_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_mlo_setup_complete_event_fixed_param,
WMITLV_TAG_STRUC_wmi_mlo_ready_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_mlo_teardown_fixed_param,
WMITLV_TAG_STRUC_wmi_mlo_teardown_complete_fixed_param,
} WMITLV_TAG_ID; } WMITLV_TAG_ID;
/* /*
@@ -1599,6 +1607,9 @@ typedef enum {
OP(WMI_PEER_TID_LATENCY_CONFIG_CMDID) \ OP(WMI_PEER_TID_LATENCY_CONFIG_CMDID) \
OP(WMI_MLO_LINK_SET_ACTIVE_CMDID) \ OP(WMI_MLO_LINK_SET_ACTIVE_CMDID) \
OP(WMI_PDEV_GET_DPD_STATUS_CMDID) \ OP(WMI_PDEV_GET_DPD_STATUS_CMDID) \
OP(WMI_MLO_SETUP_CMDID) \
OP(WMI_MLO_READY_CMDID) \
OP(WMI_MLO_TEARDOWN_CMDID) \
/* add new CMD_LIST elements above this line */ /* add new CMD_LIST elements above this line */
@@ -1862,6 +1873,8 @@ typedef enum {
OP(WMI_TWT_NOTIFY_EVENTID) \ OP(WMI_TWT_NOTIFY_EVENTID) \
OP(WMI_MLO_LINK_SET_ACTIVE_RESP_EVENTID) \ OP(WMI_MLO_LINK_SET_ACTIVE_RESP_EVENTID) \
OP(WMI_PDEV_GET_DPD_STATUS_EVENTID) \ OP(WMI_PDEV_GET_DPD_STATUS_EVENTID) \
OP(WMI_MLO_SETUP_COMPLETE_EVENTID) \
OP(WMI_MLO_TEARDOWN_COMPLETE_EVENTID) \
/* add new EVT_LIST elements above this line */ /* add new EVT_LIST elements above this line */
@@ -2241,7 +2254,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_WMM_PARAMS_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_start_request_cmd_fixed_param, wmi_vdev_start_request_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_start_request_cmd_fixed_param, wmi_vdev_start_request_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_channel, wmi_channel, chan, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_channel, wmi_channel, chan, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_p2p_noa_descriptor, noa_descriptors, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_p2p_noa_descriptor, noa_descriptors, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_start_mlo_params, mlo_params, WMITLV_SIZE_VAR) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_start_mlo_params, mlo_params, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_partner_link_params, partner_link_params, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_START_REQUEST_CMDID); WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_START_REQUEST_CMDID);
@@ -2336,7 +2350,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_IPSEC_NATKEEPALIVE_FILTER_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vht_rate_set, wmi_vht_rate_set, peer_vht_rates, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vht_rate_set, wmi_vht_rate_set, peer_vht_rates, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_he_rate_set, peer_he_rates, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_he_rate_set, peer_he_rates, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_assoc_mlo_params, mlo_params, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_assoc_mlo_params, mlo_params, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_eht_rate_set, peer_eht_rates, WMITLV_SIZE_VAR) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_eht_rate_set, peer_eht_rates, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_assoc_mlo_partner_link_params, partner_link_params, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ASSOC_CMDID); WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ASSOC_CMDID);
@@ -2708,7 +2723,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_TX_CMDID);
#define WMITLV_TABLE_WMI_MGMT_TX_SEND_CMDID(id,op,buf,len) \ #define WMITLV_TABLE_WMI_MGMT_TX_SEND_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mgmt_tx_send_cmd_fixed_param, wmi_mgmt_tx_send_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mgmt_tx_send_cmd_fixed_param, wmi_mgmt_tx_send_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_tx_send_params, wmi_tx_send_params, tx_send_params, WMITLV_SIZE_FIX) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_tx_send_params, wmi_tx_send_params, tx_send_params, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_tx_send_params, mlo_tx_send_params, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_TX_SEND_CMDID); WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_TX_SEND_CMDID);
@@ -4610,6 +4626,22 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_SET_ACTIVE_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_get_dpd_status_cmd_fixed_param, wmi_pdev_get_dpd_status_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_get_dpd_status_cmd_fixed_param, wmi_pdev_get_dpd_status_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_GET_DPD_STATUS_CMDID); WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_GET_DPD_STATUS_CMDID);
/** WMI cmd used to indicate hw_links part of MLO */
#define WMITLV_TABLE_WMI_MLO_SETUP_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_setup_cmd_fixed_param, wmi_mlo_setup_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, hw_link_ids, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_MLO_SETUP_CMDID);
/** WMI cmd used for init synchronization of hw_links part of MLO */
#define WMITLV_TABLE_WMI_MLO_READY_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_ready_cmd_fixed_param, wmi_mlo_ready_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_MLO_READY_CMDID);
/** WMI cmd used for tearing down a hw_link part of MLO */
#define WMITLV_TABLE_WMI_MLO_TEARDOWN_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_teardown_fixed_param, wmi_mlo_teardown_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_MLO_TEARDOWN_CMDID);
/************************** TLV definitions of WMI events *******************************/ /************************** TLV definitions of WMI events *******************************/
@@ -6224,6 +6256,16 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_SET_ACTIVE_RESP_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_get_dpd_status_evt_fixed_param, wmi_pdev_get_dpd_status_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_get_dpd_status_evt_fixed_param, wmi_pdev_get_dpd_status_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_GET_DPD_STATUS_EVENTID); WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_GET_DPD_STATUS_EVENTID);
/* Response event for MLO setup cmd */
#define WMITLV_TABLE_WMI_MLO_SETUP_COMPLETE_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_setup_complete_event_fixed_param, wmi_mlo_setup_complete_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_MLO_SETUP_COMPLETE_EVENTID);
/* Response event for MLO teardown cmd */
#define WMITLV_TABLE_WMI_MLO_TEARDOWN_COMPLETE_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_teardown_complete_fixed_param, wmi_mlo_teardown_complete_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_MLO_TEARDOWN_COMPLETE_EVENTID);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@@ -1366,6 +1366,12 @@ typedef enum {
/** WMI commands specific to MLO **/ /** WMI commands specific to MLO **/
/** MLO link active / inactive Request command */ /** MLO link active / inactive Request command */
WMI_MLO_LINK_SET_ACTIVE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_MLO), WMI_MLO_LINK_SET_ACTIVE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_MLO),
/** WMI cmd used to indicate hw_links part of MLO */
WMI_MLO_SETUP_CMDID,
/** WMI cmd used for init synchronization of hw_links part of MLO */
WMI_MLO_READY_CMDID,
/** WMI cmd used for tearing down a hw_link part of MLO */
WMI_MLO_TEARDOWN_CMDID,
} WMI_CMD_ID; } WMI_CMD_ID;
typedef enum { typedef enum {
@@ -2077,6 +2083,10 @@ typedef enum {
/** WMI event specific to MLO **/ /** WMI event specific to MLO **/
/** MLO link active / inactive response event */ /** MLO link active / inactive response event */
WMI_MLO_LINK_SET_ACTIVE_RESP_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_MLO), WMI_MLO_LINK_SET_ACTIVE_RESP_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_MLO),
/* Response event for MLO setup cmd */
WMI_MLO_SETUP_COMPLETE_EVENTID,
/* Response event for MLO teardown cmd */
WMI_MLO_TEARDOWN_COMPLETE_EVENTID,
} WMI_EVT_ID; } WMI_EVT_ID;
/* defines for OEM message sub-types */ /* defines for OEM message sub-types */
@@ -5659,6 +5669,14 @@ typedef struct {
}; };
} wmi_tx_send_params; } wmi_tx_send_params;
typedef struct {
A_UINT32 tlv_header; /* TLV tag (WMITLV_TAG_STRUC_wmi_mlo_tx_send_params) and len */
A_UINT32 hw_link_id; /** Unique link id across SOCs, provided by QMI handshake.
* If 0xFFFF then the frame will be queued in the MLO queue
* If valid hw_link_id
*/
} wmi_mlo_tx_send_params;
typedef struct { typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mgmt_tx_send_cmd_fixed_param */ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mgmt_tx_send_cmd_fixed_param */
A_UINT32 vdev_id; A_UINT32 vdev_id;
@@ -5699,6 +5717,7 @@ typedef struct {
*/ */
/* This TLV is followed by wmi_tx_send_params /* This TLV is followed by wmi_tx_send_params
* wmi_tx_send_params tx_send_params; * wmi_tx_send_params tx_send_params;
* wmi_mlo_tx_send_params mlo_tx_send_params[];
*/ */
} wmi_mgmt_tx_send_cmd_fixed_param; } wmi_mgmt_tx_send_cmd_fixed_param;
@@ -10352,6 +10371,8 @@ typedef struct {
* bits 0 - mlo enable flag; * bits 0 - mlo enable flag;
* bits 1 - assoc link flag; * bits 1 - assoc link flag;
* bits 2 - primary_umac flag; * bits 2 - primary_umac flag;
* bits 3 - is logical link index valid
* bits 4 - is mlo peer id valid
*/ */
#define WMI_MLO_FLAGS_GET_ENABLED(mlo_flags) WMI_GET_BITS(mlo_flags, 0, 1) #define WMI_MLO_FLAGS_GET_ENABLED(mlo_flags) WMI_GET_BITS(mlo_flags, 0, 1)
#define WMI_MLO_FLAGS_SET_ENABLED(mlo_flags, value) WMI_SET_BITS(mlo_flags, 0, 1, value) #define WMI_MLO_FLAGS_SET_ENABLED(mlo_flags, value) WMI_SET_BITS(mlo_flags, 0, 1, value)
@@ -10359,6 +10380,10 @@ typedef struct {
#define WMI_MLO_FLAGS_SET_ASSOC_LINK(mlo_flags, value) WMI_SET_BITS(mlo_flags, 1, 1, value) #define WMI_MLO_FLAGS_SET_ASSOC_LINK(mlo_flags, value) WMI_SET_BITS(mlo_flags, 1, 1, value)
#define WMI_MLO_FLAGS_GET_PRIMARY_UMAC(mlo_flags) WMI_GET_BITS(mlo_flags, 2, 1) #define WMI_MLO_FLAGS_GET_PRIMARY_UMAC(mlo_flags) WMI_GET_BITS(mlo_flags, 2, 1)
#define WMI_MLO_FLAGS_SET_PRIMARY_UMAC(mlo_flags, value) WMI_SET_BITS(mlo_flags, 2, 1, value) #define WMI_MLO_FLAGS_SET_PRIMARY_UMAC(mlo_flags, value) WMI_SET_BITS(mlo_flags, 2, 1, value)
#define WMI_MLO_FLAGS_GET_LINK_INDEX_VALID(mlo_flags) WMI_GET_BITS(mlo_flags, 3, 1)
#define WMI_MLO_FLAGS_SET_LINK_INDEX_VALID(mlo_flags, value) WMI_SET_BITS(mlo_flags, 3, 1, value)
#define WMI_MLO_FLAGS_GET_PEER_ID_VALID(mlo_flags) WMI_GET_BITS(mlo_flags, 4, 1)
#define WMI_MLO_FLAGS_SET_PEER_ID_VALID(mlo_flags, value) WMI_SET_BITS(mlo_flags, 4, 1, value)
/* this structure used for pass mlo flags*/ /* this structure used for pass mlo flags*/
typedef struct { typedef struct {
@@ -10367,12 +10392,21 @@ typedef struct {
A_UINT32 mlo_enabled:1, /* indicate is MLO enabled */ A_UINT32 mlo_enabled:1, /* indicate is MLO enabled */
mlo_assoc_link:1, /* indicate is the link used to initialize the association of mlo connection */ mlo_assoc_link:1, /* indicate is the link used to initialize the association of mlo connection */
mlo_primary_umac:1, /* indicate is the link on primary UMAC, WIN only flag */ mlo_primary_umac:1, /* indicate is the link on primary UMAC, WIN only flag */
unused: 29; mlo_logical_link_index_valid:1, /* indicate if the logial link index in wmi_peer_assoc_mlo_params is valid */
mlo_peer_id_valid:1, /* indicate if the mlo peer id in wmi_peer_assoc_mlo_params is valid */
unused: 27;
}; };
A_UINT32 mlo_flags; A_UINT32 mlo_flags;
}; };
} wmi_mlo_flags; } wmi_mlo_flags;
typedef struct {
A_UINT32 tlv_header;/** TLV tag (WMITLV_TAG_STRUC_wmi_partner_link_params) and len;*/
A_UINT32 vdev_id; /** partner vdev_id */
A_UINT32 hw_link_id; /** hw_link_id: Unique link id across SOCs, got as part of QMI handshake */
wmi_mac_addr vdev_macaddr; /** VDEV MAC address */
} wmi_partner_link_params;
/* this TLV structure used for pass mlo parameters on vdev create*/ /* this TLV structure used for pass mlo parameters on vdev create*/
typedef struct { typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; */ A_UINT32 tlv_header; /** TLV tag and len; */
@@ -11147,6 +11181,9 @@ typedef struct {
* wmi_vdev_start_mlo_params mlo_params[0,1]; <-- vdev start MLO parameters * wmi_vdev_start_mlo_params mlo_params[0,1]; <-- vdev start MLO parameters
* optional TLV, only present for MLO vdevs, * optional TLV, only present for MLO vdevs,
* If the vdev is non-MLO the array length should be 0. * If the vdev is non-MLO the array length should be 0.
* wmi_partner_link_info link_info[]; <-- partner link info
* optional TLV, only present for MLO vdevs,
* If the vdev is non-MLO the array length should be 0.
*/ */
} wmi_vdev_start_request_cmd_fixed_param; } wmi_vdev_start_request_cmd_fixed_param;
@@ -14234,6 +14271,12 @@ enum WMI_PEER_STA_TYPE {
#define WMI_PEER_ASSOC_GET_BSS_MAX_IDLE_PERIOD(_dword) \ #define WMI_PEER_ASSOC_GET_BSS_MAX_IDLE_PERIOD(_dword) \
WMI_GET_BITS(_dword, WMI_PEER_ASSOC_BSS_MAX_IDLE_PERIOD_BITPOS, 16) WMI_GET_BITS(_dword, WMI_PEER_ASSOC_BSS_MAX_IDLE_PERIOD_BITPOS, 16)
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 hw_mld_link_id; /** Unique link id across SOCs, got as part of QMI handshake. */
} wmi_peer_assoc_mlo_partner_link_params;
/* This TLV structure used to pass mlo Parameters on peer assoc, only apply for mlo-peers */ /* This TLV structure used to pass mlo Parameters on peer assoc, only apply for mlo-peers */
typedef struct { typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; */ A_UINT32 tlv_header; /** TLV tag and len; */
@@ -14241,6 +14284,13 @@ typedef struct {
wmi_mlo_flags mlo_flags; wmi_mlo_flags mlo_flags;
/** MLD MAC address */ /** MLD MAC address */
wmi_mac_addr mld_macaddr; wmi_mac_addr mld_macaddr;
/** Unique index for links of the mlo. Starts with Zero */
A_UINT32 logical_link_index;
/** ML Peer ID
* In WIN systems, mld_peer_id is generated by Host.
* In MCL systems, mld_peer_id will be set to invalid peer id.
*/
A_UINT32 mld_peer_id;
} wmi_peer_assoc_mlo_params; } wmi_peer_assoc_mlo_params;
typedef struct { typedef struct {
@@ -14383,6 +14433,7 @@ typedef struct {
* Only present for MLO peers. * Only present for MLO peers.
* For non-MLO peers the array length should be 0. * For non-MLO peers the array length should be 0.
* wmi_eht_rate_set_peer_eht_rates; <-- EHT capabilities of the peer * wmi_eht_rate_set_peer_eht_rates; <-- EHT capabilities of the peer
* wmi_peer_assoc_mlo_partner_link_params link_info[] <-- partner link info
*/ */
} wmi_peer_assoc_complete_cmd_fixed_param; } wmi_peer_assoc_complete_cmd_fixed_param;
@@ -26907,7 +26958,7 @@ typedef enum wmi_hw_mode_config_type {
/* /*
* Per HW mode MLO capability flags * Per HW mode MLO capability flags
* use bits 31:28 of A_UINT32 hw_mode_config_type for Per HW mode MLO * use bits 31:27 of A_UINT32 hw_mode_config_type for Per HW mode MLO
* capability flags... * capability flags...
* WMI_MLO_CAP_FLAG_NONE: Do not support MLO for the specific HW mode * WMI_MLO_CAP_FLAG_NONE: Do not support MLO for the specific HW mode
* WMI_MLO_CAP_FLAG_NON_STR_IN_DBS: Support STR MLO when DBS for the specific * WMI_MLO_CAP_FLAG_NON_STR_IN_DBS: Support STR MLO when DBS for the specific
@@ -26918,22 +26969,35 @@ typedef enum wmi_hw_mode_config_type {
* HW mode * HW mode
* WMI_MLO_CAP_FLAG_STR_IN_SBS: Support Non-STR MLO when SBS for the * WMI_MLO_CAP_FLAG_STR_IN_SBS: Support Non-STR MLO when SBS for the
* specific HW mode * specific HW mode
* WMI_MLO_CAP_FLAG_STR: Support STR for the specific HW mode.
*/ */
#define WMI_MLO_CAP_FLAG_NONE 0x0 #define WMI_MLO_CAP_FLAG_NONE 0x00
#define WMI_MLO_CAP_FLAG_NON_STR_IN_DBS 0x1 #define WMI_MLO_CAP_FLAG_NON_STR_IN_DBS 0x01
#define WMI_MLO_CAP_FLAG_STR_IN_DBS 0x2 #define WMI_MLO_CAP_FLAG_STR_IN_DBS 0x02
#define WMI_MLO_CAP_FLAG_NON_STR_IN_SBS 0x4 #define WMI_MLO_CAP_FLAG_NON_STR_IN_SBS 0x04
#define WMI_MLO_CAP_FLAG_STR_IN_SBS 0x8 #define WMI_MLO_CAP_FLAG_STR_IN_SBS 0x08
#define WMI_MLO_CAP_FLAG_STR 0x10
/* /*
* hw_mode_config_type sub-fields for chips that support 802.11BE/MLO: * hw_mode_config_type sub-fields for chips that support 802.11BE/MLO:
* bits 28:0 - hw_mode_config * bits 26:0 - hw_mode_config
* bits 31:28 - per HW mode MLO capability flags * bits 31:27 - per HW mode MLO capability flags
*/ */
#define WMI_BECAP_PHY_GET_HW_MODE_CFG(hw_mode_config_type) WMI_GET_BITS(hw_mode_config_type, 0, 28) #define WMI_BECAP_PHY_GET_HW_MODE_CFG(hw_mode_config_type) WMI_GET_BITS(hw_mode_config_type, 0, 27)
#define WMI_BECAP_PHY_SET_HW_MODE_CFG(hw_mode_config_type, value) WMI_SET_BITS(hw_mode_config_type, 0, 28, value) #define WMI_BECAP_PHY_SET_HW_MODE_CFG(hw_mode_config_type, value) WMI_SET_BITS(hw_mode_config_type, 0, 27, value)
#define WMI_BECAP_PHY_GET_MLO_CAP(hw_mode_config_type) WMI_GET_BITS(hw_mode_config_type, 28, 4) #define WMI_BECAP_PHY_GET_MLO_CAP(hw_mode_config_type) WMI_GET_BITS(hw_mode_config_type, 27, 5)
#define WMI_BECAP_PHY_SET_MLO_CAP(hw_mode_config_type, value) WMI_SET_BITS(hw_mode_config_type, 28, 4, value) #define WMI_BECAP_PHY_SET_MLO_CAP(hw_mode_config_type, value) WMI_SET_BITS(hw_mode_config_type, 27, 5, value)
/*
* pdev_id sub-fields for chips that support 802.11BE/MLO
* as part of WMI_MAC_PHY_CAPABILITIES and WMI_MAC_PHY_CAPABILITIES_EXT:
* bits 16:0 - pdev_id
* bits 32:16 - Unique link id across SOCs, got as part of QMI handshake.
*/
#define WMI_PHY_GET_PDEV_ID(pdev_id) WMI_GET_BITS(pdev_id, 0, 16)
#define WMI_PHY_SET_PDEV_ID(pdev_id, value) WMI_SET_BITS(pdev_id, 0, 16, value)
#define WMI_PHY_GET_HW_LINK_ID(pdev_id) WMI_GET_BITS(pdev_id, 16, 16)
#define WMI_PHY_SET_HW_LINK_ID(pdev_id, value) WMI_SET_BITS(pdev_id, 16, 16, value)
#define WMI_SUPPORT_11B_GET(flags) WMI_GET_BITS(flags, 0, 1) #define WMI_SUPPORT_11B_GET(flags) WMI_GET_BITS(flags, 0, 1)
#define WMI_SUPPORT_11B_SET(flags, value) WMI_SET_BITS(flags, 0, 1, value) #define WMI_SUPPORT_11B_SET(flags, value) WMI_SET_BITS(flags, 0, 1, value)
@@ -27035,8 +27099,20 @@ typedef struct {
* No particular ordering of WMI_MAC_PHY_CAPABILITIES elements should be assumed, * No particular ordering of WMI_MAC_PHY_CAPABILITIES elements should be assumed,
* though in practice the elements may always be ordered by hw_mode_id */ * though in practice the elements may always be ordered by hw_mode_id */
A_UINT32 hw_mode_id; A_UINT32 hw_mode_id;
/* pdev_id starts with 1. pdev_id 1 => phy_id 0, pdev_id 2 => phy_id 1 */ /*
A_UINT32 pdev_id; * pdev_id starts with 1. pdev_id 1 => phy_id 0, pdev_id 2 => phy_id 1
* hw_link_id: Unique link id across SOCs, got as part of QMI handshake.
* For legacy chips which do not support MLO, these top bits will always
* be set to 0, so it won't impact the legacy chips which treat pdev_id
* as 32 bits.
*/
union {
struct {
A_UINT32 pdev_id:16,
hw_link_id:16;
} wmi_pdev_to_link_map;
A_UINT32 pdev_id;
};
/* phy id. Starts with 0 */ /* phy id. Starts with 0 */
A_UINT32 phy_id; A_UINT32 phy_id;
/* supported modulations and number of MU beamformees */ /* supported modulations and number of MU beamformees */
@@ -27211,8 +27287,20 @@ typedef struct {
* No particular ordering of WMI_MAC_PHY_CAPABILITIES elements should be assumed, * No particular ordering of WMI_MAC_PHY_CAPABILITIES elements should be assumed,
* though in practice the elements may always be ordered by hw_mode_id */ * though in practice the elements may always be ordered by hw_mode_id */
A_UINT32 hw_mode_id; A_UINT32 hw_mode_id;
/* pdev_id starts with 1. pdev_id 1 => phy_id 0, pdev_id 2 => phy_id 1 */ /*
A_UINT32 pdev_id; * pdev_id starts with 1. pdev_id 1 => phy_id 0, pdev_id 2 => phy_id 1
* hw_link_id: Unique link id across SOCs, got as part of QMI handshake.
* For legacy chips which do not support MLO, these top bits will always
* be set to 0, so it won't impact the legacy chips which treat pdev_id
* as 32 bits.
*/
union {
struct {
A_UINT32 pdev_id:16,
hw_link_id:16;
} wmi_pdev_to_link_map;
A_UINT32 pdev_id;
};
/* phy id. Starts with 0 */ /* phy id. Starts with 0 */
A_UINT32 phy_id; A_UINT32 phy_id;
A_UINT32 wireless_modes_ext; /* REGDMN MODE EXT, see REGDMN_MODE_ enum */ A_UINT32 wireless_modes_ext; /* REGDMN MODE EXT, see REGDMN_MODE_ enum */
@@ -27253,7 +27341,7 @@ typedef struct {
* Identify a particular type of HW mode such as SBS, DBS etc. * Identify a particular type of HW mode such as SBS, DBS etc.
* Refer to WMI_HW_MODE_CONFIG_TYPE values. * Refer to WMI_HW_MODE_CONFIG_TYPE values.
* *
* Use bits 31:28 of hw_mode_config_type for Per HW mode MLO capability * Use bits 31:27 of hw_mode_config_type for Per HW mode MLO capability
* flags. * flags.
* Refer to WMI_MLO_CAP_FLAG_XXX. For legacy chips which do not support * Refer to WMI_MLO_CAP_FLAG_XXX. For legacy chips which do not support
* MLO, these top bits will always be set to 0, so it won't impact the * MLO, these top bits will always be set to 0, so it won't impact the
@@ -27261,8 +27349,8 @@ typedef struct {
*/ */
union { union {
struct { struct {
A_UINT32 hw_mode_config :28, A_UINT32 hw_mode_config :27,
mlo_cap_flag :4; /* see WMI_MLO_CAP_FLAG_ defs */ mlo_cap_flag :5; /* see WMI_MLO_CAP_FLAG_ defs */
}; };
A_UINT32 hw_mode_config_type; A_UINT32 hw_mode_config_type;
}; };
@@ -28380,6 +28468,9 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command)
WMI_RETURN_STRING(WMI_PEER_TID_LATENCY_CONFIG_CMDID); WMI_RETURN_STRING(WMI_PEER_TID_LATENCY_CONFIG_CMDID);
WMI_RETURN_STRING(WMI_MLO_LINK_SET_ACTIVE_CMDID); WMI_RETURN_STRING(WMI_MLO_LINK_SET_ACTIVE_CMDID);
WMI_RETURN_STRING(WMI_PDEV_GET_DPD_STATUS_CMDID); WMI_RETURN_STRING(WMI_PDEV_GET_DPD_STATUS_CMDID);
WMI_RETURN_STRING(WMI_MLO_SETUP_CMDID);
WMI_RETURN_STRING(WMI_MLO_READY_CMDID);
WMI_RETURN_STRING(WMI_MLO_TEARDOWN_CMDID);
} }
return "Invalid WMI cmd"; return "Invalid WMI cmd";
@@ -33819,6 +33910,57 @@ typedef struct wmi_mlo_link_set_active_resp_event
*/ */
} wmi_mlo_link_set_active_resp_event_fixed_param; } wmi_mlo_link_set_active_resp_event_fixed_param;
typedef struct {
/** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_setup_cmd_fixed_param; */
A_UINT32 tlv_header;
/** Unique ID reprsenting the hw_links part of the MLD */
A_UINT32 mld_group_id;
/** pdev_id for identifying the MAC, See macros starting with WMI_PDEV_ID_ for values. */
A_UINT32 pdev_id;
/*
* Followed by TLVs:
* A_UINT32 hw_link_ids[];
*/
} wmi_mlo_setup_cmd_fixed_param;
typedef struct {
/** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_setup_complete_event_fixed_param; */
A_UINT32 tlv_header;
/** pdev_id for identifying the MAC, See macros starting with WMI_PDEV_ID_ for values. */
A_UINT32 pdev_id;
/** Return status. 0 for success, non-zero otherwise */
A_UINT32 status;
} wmi_mlo_setup_complete_event_fixed_param;
typedef struct {
/** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_ready_cmd_fixed_param; */
A_UINT32 tlv_header;
/** pdev_id for identifying the MAC, See macros starting with WMI_PDEV_ID_ for values. */
A_UINT32 pdev_id;
} wmi_mlo_ready_cmd_fixed_param;
typedef enum wmi_mlo_tear_down_reason_code_type {
WMI_MLO_TEARDOWN_SSR_REASON,
} WMI_MLO_TEARDOWN_REASON_TYPE;
typedef struct {
/** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_teardown_fixed_param; */
A_UINT32 tlv_header;
/** pdev_id for identifying the MAC, See macros starting with WMI_PDEV_ID_ for values. */
A_UINT32 pdev_id;
/** reason_code: of type WMI_TEARDOWN_REASON_TYPE */
A_UINT32 reason_code;
} wmi_mlo_teardown_fixed_param;
typedef struct {
/** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_teardown_complete_fixed_param; */
A_UINT32 tlv_header;
/** pdev_id for identifying the MAC, See macros starting with WMI_PDEV_ID_ for values. */
A_UINT32 pdev_id;
/** Return status. 0 for success, non-zero otherwise */
A_UINT32 status;
} wmi_mlo_teardown_complete_fixed_param;
/* ADD NEW DEFS HERE */ /* ADD NEW DEFS HERE */

View File

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