diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index a37efe035e27..e6138c762ed6 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -44618,11 +44618,32 @@ typedef struct { #define TWT_EN_DIS_FLAGS_SET_DIS_BTWT_AUTO_DELETE(flag, val) \ WMI_SET_BITS(flag, 7, 1, val) +/* bits 8-15: unused / reserved */ + +/* + * Bit 16: indicates whether pdev_id is valid or vdev_id is valid. + * 0: pdev_id is valid (MAC-level TWT enable/disable) + * 1: vdev_id is valid (STA vdev-level TWT enable/disable) + */ +#define TWT_EN_DIS_FLAGS_GET_VDEV_ID(flag) WMI_GET_BITS(flag, 16, 1) +#define TWT_EN_DIS_FLAGS_SET_VDEV_ID(flag, val) WMI_SET_BITS(flag, 16, 1, val) + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_twt_enable_cmd_fixed_param */ - /** pdev_id for identifying the MAC. See macros starting with WMI_PDEV_ID_ for values. In non-DBDC case host should set it to 0 + /** + * pdev_id or vdev_id depending on bit 16 of flags. + * When TWT_EN_DIS_FLAGS_GET_VDEV_ID(flags) == 0: + * pdev_id identifies the MAC. + * See macros starting with WMI_PDEV_ID_ for values. + * In non-DBDC case host should set it to 0. + * When TWT_EN_DIS_FLAGS_GET_VDEV_ID(flags) == 1: + * vdev_id is for STA vdev-level TWT enable. + * TWT enable applies only to that specific STA vdev. */ - A_UINT32 pdev_id; + union { + A_UINT32 pdev_id; + A_UINT32 vdev_id; + }; A_UINT32 sta_cong_timer_ms; /* STA TWT congestion timer TO value in terms of ms */ A_UINT32 mbss_support; /* Reserved */ A_UINT32 default_slot_size; /* This is the default value for the TWT slot setup by AP (units = microseconds) */ @@ -44672,8 +44693,20 @@ typedef struct { typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_twt_disable_cmd_fixed_param */ - /** pdev_id for identifying the MAC. See macros starting with WMI_PDEV_ID_ for values. In non-DBDC case host should set it to 0 */ - A_UINT32 pdev_id; /* host should never set it to WMI_PDEV_ID_SOC */ + /** + * pdev_id or vdev_id depending on bit 16 of flags. + * When TWT_EN_DIS_FLAGS_GET_VDEV_ID(flags) == 0: + * pdev_id identifies the MAC. + * See macros starting with WMI_PDEV_ID_ for values. + * In non-DBDC case host should set it to 0. + * When TWT_EN_DIS_FLAGS_GET_VDEV_ID(flags) == 1: + * vdev_id is for STA vdev-level TWT disable. + * TWT disable applies only to that specific STA vdev. + */ + union { + A_UINT32 pdev_id; /* host should never set it to WMI_PDEV_ID_SOC */ + A_UINT32 vdev_id; + }; A_UINT32 flags; /* enable/disable flags, refer to MACROs TWT_EN_DIS_FLAGS_* (TWT_EN_DIS_FLAGS_GET_BTWT etc.) */ A_UINT32 reason_code; /* refer to WMI_DISABLE_TWT_REASON_T */ } wmi_twt_disable_cmd_fixed_param; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 8eed6aba6b00..ae86a7759307 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_ 1761 +#define __WMI_REVISION_ 1762 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work