diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 39f9763b3e65..0e74b74444bc 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -608,6 +608,7 @@ typedef enum { WMI_SERVICE_SLO_SUPPORTED = 355, /* Support for Single Link 11BE */ WMI_SERVICE_RTT_11AZ_TB_RSTA_SUPPORT = 356, /* FW support for 11AZ trigger based ranging Responder (RSTA) role */ WMI_SERVICE_SUPPORT_11D_FOR_HOST_SCAN = 357, + WMI_SERVICE_DETERMINISTIC_SCHEDULER_LEVEL0 = 358, /* FW supports 12.2 level scheduler mode disable commands and stats */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index ef475482e80b..4a9ce0fc29b7 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1330,6 +1330,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_ctrl_path_pmlo_stats_struct, WMITLV_TAG_STRUC_wmi_ctrl_path_cfr_stats_struct, WMITLV_TAG_STRUC_WMI_COEX_FIX_CHANNEL_CAPABILITIES, + WMITLV_TAG_STRUC_wmi_peer_sched_mode_disable_fixed_param, + WMITLV_TAG_STRUC_wmi_per_peer_sched_mode_disable, } WMITLV_TAG_ID; /* @@ -1844,6 +1846,7 @@ typedef enum { OP(WMI_MLO_AP_VDEV_TID_TO_LINK_MAP_CMDID) \ OP(WMI_VDEV_SET_TWT_EDCA_PARAMS_CMDID) \ OP(WMI_TAS_POWER_HISTORY_CMDID) \ + OP(WMI_PEER_SCHED_MODE_DISABLE_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -5240,6 +5243,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_XGAP_ENABLE_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, odd_livedump_id_list, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_ODD_LIVEDUMP_REQUEST_CMDID); +#define WMITLV_TABLE_WMI_PEER_SCHED_MODE_DISABLE_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_sched_mode_disable_fixed_param, wmi_peer_sched_mode_disable_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_per_peer_sched_mode_disable, peer_info, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_PEER_SCHED_MODE_DISABLE_CMDID); + /************************** TLV definitions of WMI events *******************************/ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index ae8e2575fb6d..10b722c933c4 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -736,9 +736,12 @@ typedef enum { /* Mac addr based filtering*/ WMI_PEER_TX_FILTER_CMDID, - /** flush specific tid queues of a peer */ + /** flush specific tid queues of a peer */ WMI_PEER_FLUSH_POLICY_CMDID, + /* Set disabled scheduler modes for one or more peers */ + WMI_PEER_SCHED_MODE_DISABLE_CMDID, + /* beacon/management specific commands */ @@ -7927,6 +7930,21 @@ typedef enum { #define WMI_PDEV_PARAM_IS_HIGHER_MCS_XRETRY_RESTRICTION_SET(word32) WMI_F_MS(word32, WMI_PDEV_PARAM_HIGHER_MCS_XRETRY_RESTRICTION) #define WMI_PDEV_PARAM_GET_XRETRY_THRESHOLD(word32) WMI_F_MS(word32, WMI_PDEV_PARAM_XRETRY_THRESHOLD) +/* + * The WMI_SCHED_MODE_FLAGS enum is used by the following WMI commands: + * + * WMI_VDEV_PARAM_SET_DISABLED_SCHED_MODES + * WMI_PDEV_PARAM_SET_DISABLED_SCHED_MODES + * WMI_PEER_SCHED_MODE_DISABLE_CMDID + * WMI_SAWF_SVC_CLASS_CFG_CMDID + */ +typedef enum { + WMI_SCHED_MODE_DL_MU_MIMO = 0x00000001, + WMI_SCHED_MODE_UL_MU_MIMO = 0x00000002, + WMI_SCHED_MODE_DL_OFDMA = 0x00000004, + WMI_SCHED_MODE_UL_OFDMA = 0x00000008, +} WMI_SCHED_MODE_FLAGS; + typedef enum { /** TX chain mask */ WMI_PDEV_PARAM_TX_CHAIN_MASK = 0x1, @@ -8932,6 +8950,34 @@ typedef enum { * based ranging. */ WMI_PDEV_PARAM_RTT_11AZ_RSID_RANGE, + + /* + * Disable the indicated DL and UL scheduler for the PDEV. + * + * This command is not supported in STA mode. + * + * A value of 1 in a given bit position disables the corresponding mode, + * and a value of 0 enables the mode. The WMI_SCHED_MODE_FLAGS enum defines + * the bit positions for each mode. + * + * A single 32 bit value is used to store the following configuration + * bitmap. + * + * This command differs from WMI_VDEV_PARAM_SET_HEMU_MODE and + * WMI_VDEV_PARAM_SET_EHT_MU_MODE in that it is intended for use during + * normal AP operation, and will never cause a VAP restart or other + * capability bit modification. It simply controls the scheduler + * behavior. + * + * bit | sched mode + * --------------- + * 0 | DL MU-MIMO + * 1 | UL MU-MIMO + * 2 | DL OFDMA + * 3 | UL OFDMA + * 4..31 | RESERVED + */ + WMI_PDEV_PARAM_SET_DISABLED_SCHED_MODES, } WMI_PDEV_PARAM; #define WMI_PDEV_ONLY_BSR_TRIG_IS_ENABLED(trig_type) WMI_GET_BITS(trig_type, 0, 1) @@ -15137,6 +15183,34 @@ typedef enum { */ WMI_VDEV_PARAM_EXTRA_EHT_LTF, /* 0x8011 */ + /* + * Disable the indicated DL and UL scheduler for the VDEV. + * + * This command is not supported in STA mode. + * + * A value of 1 in a given bit position disables the corresponding + * mode, and a value of 0 enables the mode. The WMI_SCHED_MODE_FLAGS + * enum defines the bit positions for each mode. + * + * A single 32 bit value is used to store the following configuration + * bitmap. + * + * This command differs from WMI_VDEV_PARAM_SET_HEMU_MODE and + * WMI_VDEV_PARAM_SET_EHT_MU_MODE in that it is intended for use during + * normal AP operation, and will never cause a VAP restart or other + * capability bit modification. It simply controls the scheduler + * behavior. + * + * bit | sched mode + * --------------- + * 0 | DL MU-MIMO + * 1 | UL MU-MIMO + * 2 | DL OFDMA + * 3 | UL OFDMA + * 4..31 | RESERVED + */ + WMI_VDEV_PARAM_SET_DISABLED_SCHED_MODES, /* 0x8012 */ + /*=== END VDEV_PARAM_PROTOTYPE SECTION ===*/ } WMI_VDEV_PARAM; @@ -40782,6 +40856,7 @@ typedef enum { WMI_SAWF_SVC_CLASS_PARAM_DEFAULT_PRIORITY = 0, WMI_SAWF_SVC_CLASS_PARAM_DEFAULT_TID = 0xffffffff, WMI_SAWF_SVC_CLASS_PARAM_DEFAULT_MSDU_LOSS_RATE = 0, + WMI_SAWF_SVC_CLASS_PARAM_DEFAULT_DISABLED_SCHED_MODE = 0, } WMI_SAWF_SVC_CLASS_PARAM_DEFAULTS; typedef struct { @@ -40863,6 +40938,17 @@ typedef struct { * since 100 / 1000000 = 1 / 10000. */ A_UINT32 msdu_loss_rate_ppm; + /* + * The disabled DL and UL scheduler modes bitmap. + * + * Each bit in the "disabled_sched_modes" bitmap indicates whether a + * specific scheduler mode may be selected by the fast loop scheduler. A + * "1" bit indicates that mode is disabled, and a "0" bit indicates the + * mode is enabled. + * + * The WMI_SCHED_MODE_FLAGS enum defines the bit positions for each mode. + */ + A_UINT32 disabled_sched_modes; } wmi_sawf_svc_class_cfg_cmd_fixed_param; typedef struct { @@ -41167,6 +41253,42 @@ typedef struct { */ } wmi_mlo_link_removal_cmd_fixed_param; +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_per_peer_sched_mode_disable */ + + /* Peer MAC Address */ + wmi_mac_addr peer_macaddr; + + /* + * The disabled DL and UL scheduler modes bitmap. + * + * This command is not supported in STA mode. + * + * A value of 1 in a given bit position disables the corresponding mode, + * and a value of 0 enables the mode. The WMI_SCHED_MODE_FLAGS enum defines + * the bit positions for each mode. + * + * A single 32 bit value is used to store the following configuration + * bitmap. + * + * bit | sched mode + * --------------- + * 0 | DL MU-MIMO + * 1 | UL MU-MIMO + * 2 | DL OFDMA + * 3 | UL OFDMA + * 4..31 | RESERVED + */ + A_UINT32 disabled_sched_modes; +} wmi_per_peer_sched_mode_disable; + +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_sched_mode_disable_fixed_param */ + A_UINT32 pdev_id; + /* The TLVs for each peer follows: + * wmi_per_peer_sched_mode_disable per_peer_sched_mode_disable[]; + */ +} wmi_peer_sched_mode_disable_fixed_param; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index e13522574783..535020e4092b 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_ 1253 +#define __WMI_REVISION_ 1254 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work