From a93a0ebc2fcba3b6c6c95b448afb6d7558632575 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 26 Mar 2026 18:02:43 -0700 Subject: [PATCH] fw-api: CL 32045293 - update fw common interface files Change-Id: I99b4d4de1f311438743136de4dabd118c4c7bc18 CRs-Fixed: 3830439 --- fw/wmi_tlv_defs.h | 10 +++-- fw/wmi_unified.h | 104 ++++++++++++++++++++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 3 files changed, 112 insertions(+), 4 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index a5a94c79fea3..a5e7b230197e 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1612,6 +1612,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_pdev_set_cumac_chip_id_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_pdev_set_cumac_chip_id_confirmation_event_fixed_param, WMITLV_TAG_STRUC_wmi_iface_ipi_stats, + WMITLV_TAG_STRUC_wmi_peer_uhr_npca_op_params, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -3160,7 +3161,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ASSOC_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_create_mlo_params, create_mlo_params, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_assoc_cfp_params, wmi_peer_assoc_cfp_params, cfp_params, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_assoc_smd_params, wmi_peer_assoc_smd_params, smd_params, WMITLV_SIZE_FIX) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_uhr_rate_set, peer_uhr_rates, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_uhr_rate_set, peer_uhr_rates, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_uhr_npca_op_params, npca_op_params, WMITLV_SIZE_VAR) /* NOTE: * To maintain compatibility, any new TLV added in WMI_PEER_ASSOC_V2_CMDID * needs to be also included as a TLV in WMI_VDEV_UNIFIED_CONNECT_CMDID and @@ -6307,7 +6309,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_WLAN_MODE_REQ_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_assoc_smd_params, wmi_peer_assoc_smd_params, smd_params, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_start_smd_params, vdev_smd_params, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_assoc_smd_params, wmi_peer_assoc_smd_params, peer_assoc_v2_smd_params, WMITLV_SIZE_FIX) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_uhr_rate_set, peer_uhr_rates, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_uhr_rate_set, peer_uhr_rates, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_uhr_npca_op_params, npca_op_params, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_UNIFIED_CONNECT_CMDID); /* WMI command for unified disconnect cmd */ @@ -6400,7 +6403,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_UHR_CU_CMDID); /*---*/ \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_install_key_cmd_fixed_param, wmi_vdev_install_key_cmd_fixed_param, key_install_fixed_param, WMITLV_SIZE_FIX)\ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, key_data, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_uhr_rate_set, peer_uhr_rates, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_uhr_rate_set, peer_uhr_rates, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_uhr_npca_op_params, npca_op_params, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_SMD_ROAM_PEER_UNIFIED_SETUP_CMDID); /* WMI command for unified SMD Config cmd */ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index f312fd43ee06..8dc8885037b2 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -23576,6 +23576,10 @@ typedef struct { * to be used. * wmi_peer_assoc_smd_params peer_assoc_smd_params; * wmi_uhr_rate_set peer_uhr_rates; <-- UHR capabilities of the peer + * wmi_peer_uhr_npca_op_params npca_op_params[0,1] + * Only present if NPCA enable is set in peer_uhr_ops & + * NPCA support is set in peer_uhr_cap_mac of fixed_param. + * Otherwise, array length should be 0. */ } wmi_peer_assoc_complete_cmd_fixed_param; @@ -23637,6 +23641,105 @@ typedef struct { */ } wmi_peer_uhr_mode_update_cmd_fixed_param; + +/* npca_op_param macros */ +#define WMI_PEER_UHR_NPCA_OP_PARAM_PRIMARY_CHANNEL_GET(_var) \ + WMI_GET_BITS(_var, 0, 4) +#define WMI_PEER_UHR_NPCA_OP_PARAM_PRIMARY_CHANNEL_SET(_var, _val) \ + WMI_SET_BITS(_var, 0, 4, _val) + +#define WMI_PEER_UHR_NPCA_OP_PARAM_MIN_DURATION_THRESHOLD_GET(_var) \ + WMI_GET_BITS(_var, 4, 4) +#define WMI_PEER_UHR_NPCA_OP_PARAM_MIN_DURATION_THRESHOLD_SET(_var, _val) \ + WMI_SET_BITS(_var, 4, 4, _val) + +#define WMI_PEER_UHR_NPCA_OP_PARAM_SWITCH_DELAY_GET(_var) \ + WMI_GET_BITS(_var, 8, 6) +#define WMI_PEER_UHR_NPCA_OP_PARAM_SWITCH_DELAY_SET(_var, _val) \ + WMI_SET_BITS(_var, 8, 6, _val) + +#define WMI_PEER_UHR_NPCA_OP_PARAM_SWITCH_BACK_DELAY_GET(_var) \ + WMI_GET_BITS(_var, 14, 6) +#define WMI_PEER_UHR_NPCA_OP_PARAM_SWITCH_BACK_DELAY_SET(_var, _val) \ + WMI_SET_BITS(_var, 14, 6, _val) + +#define WMI_PEER_UHR_NPCA_OP_PARAM_INITIAL_QSRC_GET(_var) \ + WMI_GET_BITS(_var, 20, 2) +#define WMI_PEER_UHR_NPCA_OP_PARAM_INITIAL_QSRC_SET(_var, _val) \ + WMI_SET_BITS(_var, 20, 2, _val) + +#define WMI_PEER_UHR_NPCA_OP_PARAM_MOPLEN_NPCA_GET(_var) \ + WMI_GET_BITS(_var, 22, 1) +#define WMI_PEER_UHR_NPCA_OP_PARAM_MOPLEN_NPCA_SET(_var, _val) \ + WMI_SET_BITS(_var, 22, 1, _val) + +#define WMI_PEER_UHR_NPCA_OP_PARAM_DIS_SUBCHAN_BMAP_PRESENT_GET(_var) \ + WMI_GET_BITS(_var, 23, 1) +#define WMI_PEER_UHR_NPCA_OP_PARAM_DIS_SUBCHAN_BMAP_PRESENT_SET(_var, _val) \ + WMI_SET_BITS(_var, 23, 1, _val) + +/* npca_op_param1 macros */ +#define WMI_PEER_UHR_NPCA_OP_PARAM1_DISABLED_SUBCHAN_BITMAP_GET(_var) \ + WMI_GET_BITS(_var, 0, 16) +#define WMI_PEER_UHR_NPCA_OP_PARAM1_DISABLED_SUBCHAN_BITMAP_SET(_var, _val) \ + WMI_SET_BITS(_var, 0, 16, _val) + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_uhr_npca_op_params */ + /* + * All below fields are advertised by UHR AP in UHR NPCA Op Param Field + * in UHR Operation IE + * + * Bit 0-3 : NPCA Primary Channel. + * Indicates the channel number of a channel within BSS + * bandwidth that both STA and AP switch to for NPCA operation. + * + * Bit 4-7 : NPCA Minimum Duration Threshold (NMDT). + * FW to convert this value into microsecs using + * 512 + (NMDT * 128) usec. + * + * Bit 8-13 : NPCA Switch Delay, in units of 4 us. + * The time needed by an NPCA AP to switch from the BSS + * primary channel to the NPCA primary channel. + * + * Bit 14-19: NPCA Switch Back Delay, in units of 4 us. + * The time needed by an NPCA AP to switch from the NPCA + * primary channel to the BSS primary channel. + * + * Bit 20-21: Initial NPCA QSRC. + * Indicates the value that is used to initialize the EDCAF + * QSRC[AC] variables when an NPCA STA in the BSS switches + * to NPCA operation. + * + * Bit 22 : MOPLEN NPCA. + * Indicates which conditions can be used to initiate an + * NPCA operation. + * Value 1 means both PHYLEN and MOPLEN operations are + * permitted in BSS. + * Value 0 means only PHYLEN operation is allowed in the BSS. + * + * Bit 23 : NPCA Disabled Subchannel Bitmap Present + * + * Bit 24-31: Reserved + */ + /* Use WMI_PEER_UHR_NPCA_OP_PARAM_ GET/SET macros for each field */ + A_UINT32 npca_op_param; + + /* + * Bit 0-15 : NPCA Disabled Subchannel Bitmap. Valid only when + * WMI_PEER_UHR_NPCA_OP_PARAM_DIS_SUBCHAN_BMAP_PRESENT_GET is + * TRUE. + * The bitmap indexes 20 MHz subchannels in ascending frequency + * order, with the LSB representing the lowest frequency. + * A bit set to 1 indicates the subchannel is punctured, + * while 0 indicates it is not. + * + * Bit 16-31: Reserved + */ + /* Use WMI_PEER_UHR_NPCA_OP_PARAM1_ GET/SET macros for each field */ + A_UINT32 npca_op_param1; +} wmi_peer_uhr_npca_op_params; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_get_ap_oper_bw_cmd_fixed_param */ A_UINT32 vdev_id; @@ -55492,6 +55595,7 @@ typedef struct { * wmi_vdev_install_key_cmd_fixed_param key_install_fixed_param; * A_UINT8 key_data[]; * wmi_uhr_rate_set peer_uhr_rates[]; + * wmi_peer_uhr_npca_op_params npca_op_params[0,1] */ } wmi_smd_roam_peer_unified_setup_cmd_fixed_param; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index c35dbd4adf4e..abf09c736e9e 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_ 1736 +#define __WMI_REVISION_ 1737 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work