diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 5a3b02d8f6..9430e12d0b 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1339,6 +1339,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_pdev_set_tgtr2p_table_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_pdev_set_tgtr2p_table_event_fixed_param, WMITLV_TAG_STRUC_wmi_peer_bulk_set_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_peer_preferred_link_map, } WMITLV_TAG_ID; /* @@ -5077,7 +5078,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MLO_TEARDOWN_CMDID); /** WMI cmd used to setup Tid to Link Mapping for a MLO Peer */ #define WMITLV_TABLE_WMI_MLO_PEER_TID_TO_LINK_MAP_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_tid_to_link_map_fixed_param, wmi_peer_tid_to_link_map_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_tid_to_link_map, tid_to_link_map, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_tid_to_link_map, tid_to_link_map, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_preferred_link_map, peer_preferred_link_map, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_MLO_PEER_TID_TO_LINK_MAP_CMDID); /** WMI cmd used to setup Tid to Link Mapping for a vdev */ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index e2860a47c0..1a3d00f8bc 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -40486,6 +40486,31 @@ typedef struct { A_UINT32 tid_to_link_map_info; } wmi_tid_to_link_map; +#define WMI_MAX_NUM_PREFERRED_LINKS 4 + +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_preferred_link_map */ + A_UINT32 tlv_header; + + /* num_preferred_links: + * If it is 0, all links are equally preferred and which link to be used + * in each schedule is decided by FW. + */ + A_UINT32 num_preferred_links; + + /* [0] - highest preferred link, [1] - 2nd preferred link, etc. */ + A_UINT32 preferred_link_order[WMI_MAX_NUM_PREFERRED_LINKS]; + + /* expected_max_latency_ms: + * 0 - Expected Max Latency to be estimated in Firmware + * Non 0 - Firmware should try to achieve given max latency + * in first preferred link. + * If unable to meet in first preferred link, start scheduling + * in next preferred link and so on. + */ + A_UINT32 expected_max_latency_ms[WLAN_MAX_AC]; +} wmi_peer_preferred_link_map; + typedef struct { /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_tid_to_link_map_fixed_param */ A_UINT32 tlv_header; @@ -40497,7 +40522,10 @@ typedef struct { /** * Following this structure is the TLV: - * struct wmi_tid_to_link_map tid_to_link_map[]; + * - struct wmi_tid_to_link_map tid_to_link_map[]; + * - struct wmi_peer_preferred_link_map peer_preferred_link_map[]; + * Note - TLV array of peer_preferred_link_map has either 0 or 1 + * entries, not multiple entries. */ } wmi_peer_tid_to_link_map_fixed_param; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index aa4ad232d4..e3b2398695 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_ 1265 +#define __WMI_REVISION_ 1266 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work