From bc9846320f341ec9af0fbd5770d67a5b814b68f5 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 14 Apr 2022 10:43:31 -0700 Subject: [PATCH] fw-api: CL 17808556 - update fw common interface files Change-Id: Ibcb346cdcb3772775d356f5b241864edecfaaccc WMI: VDEV_LATENCY_LEVEL_EVENT msg def CRs-Fixed: 2262693 --- fw/wmi_services.h | 1 + fw/wmi_tlv_defs.h | 7 ++++ fw/wmi_unified.h | 93 +++++++++++++++++++++++++++++++++++++++-------- fw/wmi_version.h | 2 +- 4 files changed, 86 insertions(+), 17 deletions(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 40f9db0829ed..b5fd37e15afb 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -585,6 +585,7 @@ typedef enum { WMI_SERVICE_PDEV_TELEMETRY_STATS_SUPPORT = 332, WMI_SERVICE_ROAM_STAT_PER_CANDIDATE_FRAME_INFO_SUPPORT = 333, /* FW supports to send frame info for each candidate in roam stat */ WMI_SERVICE_HW_TX_POWER_CAPS_SIGNED_SUPPORT = 334, /* Indicates FW supports updating of Tx power capabilities as signed value */ + WMI_SERVICE_MULTI_CLIENT_LL_SUPPORT = 335, /* FW supports set param cmd combined for multiple params */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 9ac19257bf63..b91810c142bc 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1264,6 +1264,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_peer_tx_filter_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_pdev_telemetry_stats, WMITLV_TAG_STRUC_wmi_mgmt_ml_info, + WMITLV_TAG_STRUC_wmi_vdev_latency_event_fixed_param, } WMITLV_TAG_ID; /* @@ -2042,6 +2043,7 @@ typedef enum { OP(WMI_PEER_RX_PN_RESPONSE_EVENTID) \ OP(WMI_PMM_AVAILABLE_SCRATCH_REG_EVENTID) \ OP(WMI_PMM_SCRATCH_REG_ALLOCATION_COMPLETE_EVENTID) \ + OP(WMI_VDEV_LATENCY_LEVEL_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -6681,6 +6683,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_GET_TPC_STATS_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_bcn_latency_fixed_param, wmi_vdev_bcn_latency_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_BCN_LATENCY_EVENTID); +/* Latency Level Event */ +#define WMITLV_TABLE_WMI_VDEV_LATENCY_LEVEL_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_latency_event_fixed_param, wmi_vdev_latency_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_LATENCY_LEVEL_EVENTID); + /* TWT Stats session event */ #define WMITLV_TABLE_WMI_TWT_SESSION_STATS_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_twt_session_stats_event_fixed_param, wmi_pdev_twt_session_stats_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 3f045107e5e6..4cbce8fc9853 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1695,6 +1695,8 @@ typedef enum { WMI_VDEV_SMART_MONITOR_EVENTID, /** Send status of vdev mac address update request to host */ WMI_VDEV_UPDATE_MAC_ADDR_CONF_EVENTID, + /** event to report latency level honored by FW */ + WMI_VDEV_LATENCY_LEVEL_EVENTID, /* peer specific events */ /** FW reauet to kick out the station for reasons like inactivity,lack of response ..etc */ @@ -13973,6 +13975,35 @@ typedef enum { */ WMI_VDEV_PARAM_11AZ_SECURITY_CONFIG, /* 0xAB */ + /* + * Latency Level Flags + */ + WMI_VDEV_PARAM_NORMAL_LATENCY_FLAGS_CONFIGURATION, /* 0xAC */ + WMI_VDEV_PARAM_XR_LATENCY_FLAGS_CONFIGURATION, /* 0xAD */ + WMI_VDEV_PARAM_LOW_LATENCY_FLAGS_CONFIGURATION, /* 0xAE */ + WMI_VDEV_PARAM_ULTRA_LOW_LATENCY_FLAGS_CONFIGURATION, /* 0xAF */ + + /* + * Latency level UL/DL + * 0-15 bits: UL + * 16-31 bits: DL + */ + WMI_VDEV_PARAM_NORMAL_LATENCY_UL_DL_CONFIGURATION, /* 0xB0 */ + WMI_VDEV_PARAM_XR_LATENCY_UL_DL_CONFIGURATION, /* 0xB1 */ + WMI_VDEV_PARAM_LOW_LATENCY_UL_DL_CONFIGURATION, /* 0xB2 */ + WMI_VDEV_PARAM_ULTRA_LOW_LATENCY_UL_DL_CONFIGURATION, /* 0xB3 */ + /* + * Ini to + * Configure default latency level for all clients + */ + WMI_VDEV_PARAM_DEFAULT_LATENCY_LEVEL_CONFIGURATION, /* 0xB4 */ + + /* + * Ini to + * Configure multi client Low latency Feature + */ + WMI_VDEV_PARAM_MULTI_CLIENT_LL_FEATURE_CONFIGURATION, /* 0xB5 */ + /*=== ADD NEW VDEV PARAM TYPES ABOVE THIS LINE === * The below vdev param types are used for prototyping, and are @@ -32290,6 +32321,14 @@ typedef enum { WMI_WLM_LL_ULTRA_LOW = 0x3, } WMI_WLM_LATENCY_LEVEL; +typedef struct { + A_UINT32 tlv_header; /* WMITLV_TAG_STRUC_wmi_vdev_latency_event_fixed_param */ + /** The latency level for specified vdev_id */ + A_UINT32 vdev_id; + /** latency level enum WMI_WLM_LATENCY_LEVEL honored by FW */ + A_UINT32 latency_level; +} wmi_vdev_latency_event_fixed_param; + /* * Lay out of flags in wmi_wlm_config_cmd_fixed_param * @@ -32402,31 +32441,53 @@ typedef enum { #define WLM_FLAGS_SCAN_SET_SPLIT_PAS_CH_ENABLE(flag, val) WMI_SET_BITS(flag, 21, 1, val) #define WLM_FLAGS_SCAN_IS_ADAPT_SCAN_ENABLED(flag) WMI_GET_BITS(flag, 22, 1) #define WLM_FLAGS_SCAN_SET_ADAPT_SCAN_ENABLE(flag, val) WMI_SET_BITS(flag, 22, 1, val) +#define WLM_FLAGS_SET_FORCE_DEFAULT_LATENCY(flag, val) WMI_SET_BITS(flag, 0, 1, val) +#define WLM_FLAGS_GET_FORCE_DEFAULT_LATENCY(flag) WMI_GET_BITS(flag, 0, 1) + +#define WLM_MAX_HOST_CLIENTS 5 typedef struct { - /** TLV tag and len; tag equals - * WMI_WLM_CONFIG_CMD_fixed_param */ + /** TLV tag and len; tag equals WMI_WLM_CONFIG_CMD_fixed_param */ A_UINT32 tlv_header; /* VDEV identifier */ A_UINT32 vdev_id; - /* Refer to WMI_WLM_LATENCY_LEVEL - * Once latency change detected, WLM will notify modules e.g. STAPS or SCAN/ROAM, - * who subscribed this event. And subscribers, like SCAN, may disable/cutoff offchan - * operation to support lower latency of WLAN. - */ + /* + * Refer to WMI_WLM_LATENCY_LEVEL + * Once latency change detected, WLM will notify modules e.g. STAPS or SCAN/ROAM, + * who subscribed this event. And subscribers, like SCAN, may disable/cutoff offchan + * operation to support lower latency of WLAN. + */ A_UINT32 latency_level; - /* represent uplink latency in ms - * This parameter will be used by STAPS module to decide timing parameters, like - * ITO or SPEC wakeup interval. For SCAN/ROAM, it may used to calculate offchan - * durations. - */ + /* + * represent uplink latency in ms + * This parameter will be used by STAPS module to decide timing parameters, like + * ITO or SPEC wakeup interval. For SCAN/ROAM, it may used to calculate offchan + * durations. + * For host and FW with multi client LL feature enabled, this field is obsolete. + */ A_UINT32 ul_latency; - /* represent downlink latency in ms - * Similar usage as ul_latency - */ + /* + * represent downlink latency in ms + * Similar usage as ul_latency + * For host and FW with multi client LL feature enabled, this field is obsolete. + */ A_UINT32 dl_latency; - /* flags for each client of WLM, refer to WLM_FLAGS_ definitions above */ + /* + * flags for each client of WLM, refer to WLM_FLAGS_ definitions above. + * For host and FW with multi client LL feature enabled, this field is obsolete. + */ A_UINT32 flags; + /* + * bit 0 used as force reset: + * to override the latency level as default + * for all the wlm clients + */ + A_UINT32 flags_ext; + /* + * clients of WLM Arbiter + * WLM_MAX_HOST_CLIENTS 5 + */ + A_UINT32 client_id_bitmask; } wmi_wlm_config_cmd_fixed_param; /* Broadcast TWT enable/disable for both REQUESTER and RESPONDER */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index d5688900ce2f..de8829f104fd 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_ 1143 +#define __WMI_REVISION_ 1144 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work