From e043aef256c729a5ada023ce0525278bbc9b067c Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 5 Mar 2026 12:01:52 -0800 Subject: [PATCH 1/2] fw-api: CL 31882288 - update fw common interface files Change-Id: I5c64aca8f6bb122fc8a74a232f7954dc4f0dca4c CRs-Fixed: 3830439 --- fw/wmi_services.h | 2 ++ fw/wmi_tlv_defs.h | 4 +++- fw/wmi_unified.h | 22 ++++++++++++++++++++++ fw/wmi_version.h | 2 +- 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 5f44def7f263..08ea702c2428 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -767,6 +767,8 @@ typedef enum { /* Indicates FW support for populating vdev operating param stats */ WMI_SERVICE_VDEV_OPERATING_PARAMS_EVENT_SUPPORT = 494, WMI_SERVICE_SUPPORT_WOW_OLE_DAL = 495, + /* Indicate FW support for PASSTHRU VDEV Channel Hopping Schedule */ + WMI_SERVICE_PASSTHRU_VDEV_CHAN_HOP_SCHEDULE_SUPPORT = 496, WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 396962c2b3d6..4292a1afc555 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1594,6 +1594,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_ch_usage_add_dialog_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_coex_policy_stats_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_coex_policy_stats_event_fixed_param, + WMITLV_TAG_STRUC_wmi_channel_hopping_channel_params, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -6392,7 +6393,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_ENERGY_MGMT_OEM_DATA_CMDID); #define WMITLV_TABLE_WMI_VDEV_CHANNEL_HOPPING_SCHEDULE_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_channel_hopping_schedule_fixed_param, wmi_vdev_channel_hopping_schedule_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, channel_list, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, channel_list, WMITLV_SIZE_VAR) /* DEPRECATED - POPULATE WITH ZERO ELEMS */ \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_channel_hopping_channel_params, channel_param_list, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_CHANNEL_HOPPING_SCHEDULE_CMDID); /* WMI Command for start ch usage session */ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index a25d59332a71..a05d2f1da946 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -54913,9 +54913,31 @@ typedef struct { /* This fixed param TLV will be followed by the below TLVs * - A_UINT32 channel_list[num_chan]; // in MHz + * // DEPRECATED - POPULATE WITH ZERO ELEMS. + * // Use channel_param_list instead. + * - wmi_channel_hopping_channel_params channel_param_list[num_chan]; */ } wmi_vdev_channel_hopping_schedule_fixed_param; +typedef enum { + /* Channel is designated for PASSTHRU VDEV */ + WMI_CHANNEL_HOPPING_ROLE_PASSTHRU = 0, + /* Channel is designated for any other interfaces besides PASSTHRU VDEV */ + WMI_CHANNEL_HOPPING_ROLE_NON_PASSTHRU, +} wmi_channel_hopping_role; + +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_channel_hopping_channel_params */ + A_UINT32 tlv_header; + A_UINT32 chan_mhz; /* in MHz. Valid only when role is PASSTHRU */ + /* bandwidth: + * Holds a wmi_channel_width enum value. + * Valid only when role is PASSTHRU. + */ + A_UINT32 bandwidth; + A_UINT32 role; /* holds wmi_channel_hopping_role enum value */ +} wmi_channel_hopping_channel_params; + typedef enum { WMI_SMD_ROAM_CONFIG_ROLE_SERVING_AP = 1, WMI_SMD_ROAM_CONFIG_ROLE_TARGET_AP, diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 50b7ed57ba48..33fe4382252c 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_ 1727 +#define __WMI_REVISION_ 1728 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 9db1eb05c4e5f72b2578779c98d00deff52716c2 Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 6 Mar 2026 12:01:47 -0800 Subject: [PATCH 2/2] fw-api: CL 31897484 - update fw common interface files Change-Id: Iea1788c371bead966e53e4a057e6e8debefb38c1 CRs-Fixed: 3830439 --- fw/htt.h | 55 ++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 42 insertions(+), 13 deletions(-) diff --git a/fw/htt.h b/fw/htt.h index 87efcf7a49b3..344b93e2665a 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -280,9 +280,10 @@ * 3.150 Add htt_reg_write_selection definitions. * 3.151 Add HTT_H2T DAL_MODE_INFO def. * 3.152 Add decap_type in htt_rx_peer_metadata_v1b. + * 3.153 Add passthru_pkt flag in rx_peer_metadata structs. */ #define HTT_CURRENT_VERSION_MAJOR 3 -#define HTT_CURRENT_VERSION_MINOR 152 +#define HTT_CURRENT_VERSION_MINOR 153 #define HTT_NUM_TX_FRAG_DESC 1024 @@ -21830,10 +21831,12 @@ PREPACK struct htt_rx_peer_metadata_v1 { * * The following diagram shows the format of the RX PEER METADATA V1A format. * - * |31 29|28 26|25 22|21 14| 13 |12 0| - * |-------------------------------------------------------------------| - * |Rsvd2|CHIP ID|logical_link_id|VDEV ID|ML PEER|SW PEER ID/ML PEER ID| - * |-------------------------------------------------------------------| + * |31 |29|28 26|25 22|21 14| 13 |12 0| + * |----------------------------------------------------------------------| + * |Rsvd2|PT|CHIP ID|logical_link_id|VDEV ID|ML PEER|SW PEER ID/ML PEER ID| + * |----------------------------------------------------------------------| + * Where: + * PT = passthrough packet */ PREPACK struct htt_rx_peer_metadata_v1a { A_UINT32 @@ -21843,7 +21846,8 @@ PREPACK struct htt_rx_peer_metadata_v1a { logical_link_id: 4, chip_id: 3, qdata_refill: 1, - reserved2: 2; + passthru_pkt: 1, + reserved2: 1; } POSTPACK; #define HTT_RX_PEER_META_DATA_V1A_PEER_ID_S 0 @@ -21912,6 +21916,17 @@ PREPACK struct htt_rx_peer_metadata_v1a { ((_var) |= ((_val) << HTT_RX_PEER_META_DATA_V1A_QDATA_REFILL_S)); \ } while (0) +#define HTT_RX_PEER_META_DATA_V1A_PASSTHRU_PKT_S 30 +#define HTT_RX_PEER_META_DATA_V1A_PASSTHRU_PKT_M 0x40000000 +#define HTT_RX_PEER_META_DATA_V1A_PASSTHRU_PKT_GET(_var) \ + (((_var) & HTT_RX_PEER_META_DATA_V1A_PASSTHRU_PKT_M) >> HTT_RX_PEER_META_DATA_V1A_PASSTHRU_PKT_S) + +#define HTT_RX_PEER_META_DATA_V1A_PASSTHRU_PKT_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_PEER_META_DATA_V1A_PASSTHRU_PKT, _val); \ + ((_var) |= ((_val) << HTT_RX_PEER_META_DATA_V1A_PASSTHRU_PKT_S)); \ + } while (0) + /** * @brief target -> RX PEER METADATA V1B format @@ -22007,14 +22022,15 @@ PREPACK struct htt_rx_peer_metadata_v1b { /* * htt_rx_peer_metadata_v2 - HTT RX peer metadata version 2 * - * |31 21|20 13|12|11 9|8 6| 5 |4 0| - * |------------+--------+--+-----+-----+-----+-----| - * | reserved |peer |Q | Log |VDEV | ML |Peer | - * | |session |D |Link | ID |Peer | ID | - * | |ID |R | ID | |Valid| | - * |------------+--------+--+-----+-----+-----+-----| + * |31 22|21|20 13|12|11 9|8 6| 5 |4 0| + * |---------+--+--------+--+-----+-----+-----+-----| + * |reserved |PT|peer |Q | Log |VDEV | ML |Peer | + * | | |session |D |Link | ID |Peer | ID | + * | | |ID |R | ID | |Valid| | + * |---------+--+--------+--+-----+-----+-----+-----| * Where: * QDR = queue data refill + * PT = passthrough packet */ PREPACK struct htt_rx_peer_metadata_v2 { A_UINT32 @@ -22024,7 +22040,8 @@ PREPACK struct htt_rx_peer_metadata_v2 { logical_link_id: 3, qdata_refill: 1, peer_session_id: 8, - reserved: 11; + passthru_pkt: 1, + reserved: 10; } POSTPACK; #define HTT_RX_PEER_META_DATA_V2_PEER_ID_S 0 @@ -22098,6 +22115,18 @@ PREPACK struct htt_rx_peer_metadata_v2 { ((_var) |= ((_val) << HTT_RX_PEER_META_DATA_V2_PEER_SESSION_ID_S)); \ } while (0) +#define HTT_RX_PEER_META_DATA_V2_PASSTHRU_PKT_S 21 +#define HTT_RX_PEER_META_DATA_V2_PASSTHRU_PKT_M 0x00200000 + +#define HTT_RX_PEER_META_DATA_V2_PASSTHRU_PKT_GET(_var) \ + (((_var) & HTT_RX_PEER_META_DATA_V2_PASSTHRU_PKT_M) >> \ + HTT_RX_PEER_META_DATA_V2_PASSTHRU_PKT_S) +#define HTT_RX_PEER_META_DATA_V2_PASSTHRU_PKT_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_PEER_META_DATA_V2_PASSTHRU_PKT, _val); \ + ((_var) |= ((_val) << HTT_RX_PEER_META_DATA_V2_PASSTHRU_PKT_S)); \ + } while (0) + /* generic variables for masks and shifts for various fields */ extern A_UINT32 HTT_RX_PEER_META_DATA_PEER_ID_S;