From 1960d8ebf22ea6fe11d8b2dd35f82223f8458f58 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 23 Oct 2024 06:01:43 -0700 Subject: [PATCH] fw-api: CL 27902326 - update fw common interface files Change-Id: I39a9848dea227f254166c2255a1cba75ed30a790 CRs-Fixed: 3830439 --- fw/wmi_tlv_defs.h | 27 ++++++++++++ fw/wmi_unified.h | 105 ++++++++++++++++++++++++++++++++++++++++++++-- fw/wmi_version.h | 2 +- 3 files changed, 130 insertions(+), 4 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index cf4ceb7a9a3a..175b657ac57f 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1459,6 +1459,11 @@ typedef enum { WMITLV_TAG_STRUC_wmi_scan_cache_info, WMITLV_TAG_STRUC_wmi_POWER_BOOST_CAPABILITIES, WMITLV_TAG_STRUC_wmi_RSSI_ACCURACY_IMPROVEMENT_CAPABILITIES, + WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_start_indication_event_fixed_param, + WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_fixed_param, + WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_complete_fixed_param, + WMITLV_TAG_STRUC_wmi_mlo_link_add_param, + WMITLV_TAG_STRUC_wmi_mlo_link_del_param, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -2016,6 +2021,8 @@ typedef enum { OP(WMI_PDEV_POWER_BOOST_CMDID) \ OP(WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID) \ OP(WMI_GET_SCAN_CACHE_RESULT_CMDID) \ + OP(WMI_MLO_LINK_RECONFIG_CMDID) \ + OP(WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -2347,6 +2354,7 @@ typedef enum { OP(WMI_PDEV_POWER_BOOST_EVENTID) \ OP(WMI_C2C_DETECT_EVENTID) \ OP(WMI_SCAN_CACHE_RESULT_EVENTID) \ + OP(WMI_MLO_LINK_RECONFIG_START_INDICATION_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -5340,6 +5348,18 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_peer_recommended_links, mlo_peer_recommended_links, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_RECOMMENDATION_CMDID); +/** WMI cmd to start STA initialized link reconfig */ +#define WMITLV_TABLE_WMI_MLO_LINK_RECONFIG_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_fixed_param, wmi_mlo_link_reconfig_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_link_add_param, link_add_param, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_link_del_param, link_del_param, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_RECONFIG_CMDID); + +/** WMI cmd to notify fw completion of link reconfig */ +#define WMITLV_TABLE_WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_complete_fixed_param, wmi_mlo_link_reconfig_complete_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID); + /* Mcast ipv4 address filter list cmd */ #define WMITLV_TABLE_WMI_VDEV_IGMP_OFFLOAD_CMDID(id,op,buf,len) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_igmp_offload_fixed_param, wmi_igmp_offload_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ @@ -7766,6 +7786,13 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_SRNG_REAP_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_peer_tid_to_link_map_event_fixed_param, wmi_mlo_peer_tid_to_link_map_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_MLO_PEER_TID_TO_LINK_MAP_EVENTID); +/** Indicate host to start link reconfigure */ +#define WMITLV_TABLE_WMI_MLO_LINK_RECONFIG_START_INDICATION_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_start_indication_event_fixed_param, wmi_mlo_link_reconfig_start_indication_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_link_add_param, link_add_param, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_link_del_param, link_del_param, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_RECONFIG_START_INDICATION_EVENTID); + /* USD Service Event */ #define WMITLV_TABLE_WMI_USD_SERVICE_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_usd_service_event_fixed_param, wmi_usd_service_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 67c54b959e33..c4da83c42cea 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1696,6 +1696,10 @@ typedef enum { WMI_MLO_PRIMARY_LINK_PEER_MIGRATION_CMDID, /** WMI cmd to recommand preferred link */ WMI_MLO_LINK_RECOMMENDATION_CMDID, + /** WMI cmd to start STA initialized link reconfig */ + WMI_MLO_LINK_RECONFIG_CMDID, + /** WMI cmd to notify fw completion of link reconfig */ + WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID, /** WMI commands specific to Service Aware WiFi (SAWF) */ /** configure or reconfigure the parameters for a service class */ @@ -2582,6 +2586,8 @@ typedef enum { WMI_MLO_TLT_SELECTION_FOR_TID_SPRAY_EVENTID, /** WMI Event to send the status of T2LM configured */ WMI_MLO_PEER_TID_TO_LINK_MAP_EVENTID, + /** Indicate host to start link reconfigure */ + WMI_MLO_LINK_RECONFIG_START_INDICATION_EVENTID, /* WMI event specific to Quiet handling */ WMI_QUIET_HANDLING_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_QUIET_OFL), @@ -36715,12 +36721,29 @@ typedef enum wmi_hw_mode_config_type { #define WMI_SUPPORT_AAR_GET(mld_capability) WMI_GET_BITS(mld_capability, 12, 1) #define WMI_SUPPORT_AAR_SET(mld_capability, value) WMI_SET_BITS(mld_capability, 12, 1, value) +#define WMI_SUPPORT_LINK_RECONFIG_SUPPORT_GET(mld_capability) WMI_GET_BITS(mld_capability, 13, 1) +#define WMI_SUPPORT_LINK_RECONFIG_SUPPORT_SET(mld_capability, value) WMI_SET_BITS(mld_capability, 13, 1, value) + + /* * 11BE Ext MLD Capability Set and Get macros */ #define WMI_EXT_MLD_OPERATION_PARAMETER_UPDATE_SUPP_GET(ext_mld_capability) WMI_GET_BITS(ext_mld_capability, 0, 1) #define WMI_EXT_MLD_OPERATION_PARAMETER_UPDATE_SUPP_SET(ext_mld_capability, value) WMI_SET_BITS(ext_mld_capability, 0, 1, value) +#define WMI_EXT_MLD_RECOMMENDED_MAX_SIMULTANEOUS_LINKS_GET(ext_mld_capability) WMI_GET_BITS(ext_mld_capability, 1, 4) +#define WMI_EXT_MLD_RECOMMENDED_MAX_SIMULTANEOUS_LINKS_SET(ext_mld_capability, value) WMI_SET_BITS(ext_mld_capability, 1, 4, value) + +#define WMI_EXT_MLD_NSTR_STATUS_UPDATE_SUPPORT_GET(ext_mld_capability) WMI_GET_BITS(ext_mld_capability, 5, 1) +#define WMI_EXT_MLD_NSTR_STATUS_UPDATE_SUPPORT_SET(ext_mld_capability, value) WMI_SET_BITS(ext_mld_capability, 1, 5, value) + +#define WMI_EXT_MLD_EMLSR_ONE_LINK_SUPPORT_GET(ext_mld_capability) WMI_GET_BITS(ext_mld_capability, 6, 1) +#define WMI_EXT_MLD_EMLSR_ONE_LINK_SUPPORT_SET(ext_mld_capability, value) WMI_SET_BITS(ext_mld_capability, 6, 1, value) + +#define WMI_EXT_MLD_BTM_MLD_RECOMMEND_FOR_MULTI_AP_SUPPORT_GET(ext_mld_capability) WMI_GET_BITS(ext_mld_capability, 7, 1) +#define WMI_EXT_MLD_BTM_MLD_RECOMMEND_FOR_MULTI_AP_SUPPORT_SET(ext_mld_capability, value) WMI_SET_BITS(ext_mld_capability, 7, 1, value) + + /* * 11BE MSD Capability Set and Get macros */ @@ -37004,7 +37027,8 @@ typedef struct { * Value 3 is reserved */ freq_separation_str:5, aar_support:1, - reserved2: 19; + link_reconfig_support:1, + reserved2: 18; }; A_UINT32 mld_capability; }; @@ -37012,7 +37036,11 @@ typedef struct { struct { A_UINT32 op_update_para_support:1, /* Indicates support of operation parameter update negotiation */ - reserved3: 31; + recommended_max_simultaneous_links:4, + nstr_status_update_support:1, + emlsr_one_link_support:1, + btm_recommended_for_multi_ap:1, + reserved3: 24; }; A_UINT32 ext_mld_capability; }; @@ -38423,6 +38451,8 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_PDEV_POWER_BOOST_CMDID); WMI_RETURN_STRING(WMI_PDEV_POWER_BOOST_MEM_ADDR_CMDID); WMI_RETURN_STRING(WMI_GET_SCAN_CACHE_RESULT_CMDID); + WMI_RETURN_STRING(WMI_MLO_LINK_RECONFIG_CMDID); + WMI_RETURN_STRING(WMI_MLO_LINK_RECONFIG_COMPLETE_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; @@ -46598,6 +46628,31 @@ typedef struct { */ } wmi_mlo_link_recommendation_fixed_param; +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_fixed_param */ + A_UINT32 tlv_header; + /* unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + wmi_mac_addr mld_addr; /* MLD address of AP */ + /* The TLVs follows this structure: + * wmi_mlo_link_add_param link_add_param[]; + * wmi_mlo_link_del_param link_del_param[]; + */ +} wmi_mlo_link_reconfig_fixed_param; + +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_complete_fixed_param */ + A_UINT32 tlv_header; + /* unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + /* MLD address of AP */ + wmi_mac_addr mld_addr; + /* any non-zero values of status indicate link reconfig failure. */ + A_UINT32 status; + /* valid only when status is non-zero. fw will do reassociation if link reconfig failure */ + A_UINT32 reassoc_if_failure; +} wmi_mlo_link_reconfig_complete_fixed_param; + #define WMI_TID_TO_LINK_MAP_TID_NUM_GET(_var) WMI_GET_BITS(_var, 0, 5) #define WMI_TID_TO_LINK_MAP_TID_NUM_SET(_var, _val) WMI_SET_BITS(_var, 0, 5, _val) @@ -46752,7 +46807,7 @@ typedef struct { */ } wmi_peer_tid_to_link_map_fixed_param; -typedef struct{ +typedef struct { /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_ap_vdev_tid_to_link_map_cmd_fixed_param */ A_UINT32 tlv_header; /** pdev_id for identifying the MAC, See macros starting with WMI_PDEV_ID_ for values. */ @@ -49282,6 +49337,50 @@ typedef struct { A_UINT32 vdev_id; } wmi_mlo_peer_tid_to_link_map_event_fixed_param; +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_mlo_link_reconfig_start_indication_event_fixed_param */ + A_UINT32 tlv_header; + /* vdev_id on which link reconfig indicate event is received */ + A_UINT32 vdev_id; + /* MLD MAC address */ + wmi_mac_addr mld_mac_address; + /* trigger reason of request link reconfig to host, + * enum of WMI_ROAM_TRIGGER_REASON_ID. + * WMI_ROAM_TRIGGER_REASON_FORCED will be used for STA(User/Host) + * initiated link reconfig. + * WMI_ROAM_TRIGGER_REASON_BTM will be used for AP initiated link reconfig. + * Other will be used for STA(fw) initiated link reconfig. + */ + A_UINT32 trigger_reason; + /* trigger_result: + * This field is only valid when trigger_reason == + * WMI_ROAM_TRIGGER_REASON_FORCED. + * Any non-zero values of trigger_result indicate link reconfig failure. + */ + A_UINT32 trigger_result; + /* The TLVs follows this structure: + * wmi_mlo_link_add_param link_add_param[]; + * wmi_mlo_link_del_param link_del_param[]; + */ +} wmi_mlo_link_reconfig_start_indication_event_fixed_param; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_add_param */ + A_UINT32 link_id; /* AP's link ID of add link */ + wmi_mac_addr link_addr; /* AP's link address of add link */ + /* vdev_id: + * which vdev to repurpose on with add link_id if it's not 0xff + */ + A_UINT32 vdev_id; +} wmi_mlo_link_add_param; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_del_param */ + A_UINT32 link_id; /* AP's link id of delete link */ + wmi_mac_addr link_addr; /* AP's link address of delete link */ +} wmi_mlo_link_del_param; + typedef enum { WMI_EVENT_POWER_BOOST_START_TRAINING = 0, WMI_EVENT_POWER_BOOST_ABORT, diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 493a0644e416..d9ca0a52c84e 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -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_ 1539 +#define __WMI_REVISION_ 1540 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work