From a87fe16fd0f42a207067a9ba6aa35cdfba2fd1d3 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 2 Dec 2023 06:01:19 -0800 Subject: [PATCH 01/15] fw-api: CL 25526295 - update fw common interface files HTT stats: add arp_[request,response] fields in tx_de_classify TLV struct Change-Id: I49b14415b41cf06738caedfefff01d8c9cd5cd8f CRs-Fixed: 2262693 --- fw/htt_stats.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fw/htt_stats.h b/fw/htt_stats.h index f2fc4f5a75cc..821753e011d2 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -4486,6 +4486,8 @@ typedef struct { * multicast/broadcast packets received on STA side. */ A_UINT32 mec_notify; + A_UINT32 arp_response; + A_UINT32 arp_request; } htt_stats_tx_de_classify_stats_tlv; /* preserve old name alias for new name consistent with the tag name */ typedef htt_stats_tx_de_classify_stats_tlv htt_tx_de_classify_stats_tlv; From 46ffda74d45623dfe29e0f7229de6b9ba568cc92 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sun, 3 Dec 2023 12:01:22 -0800 Subject: [PATCH 02/15] fw-api: CL 25538692 - update fw common interface files WMI: add more feature flags in feature_bitmap field Change-Id: I9a8e47c95a79a0fb37f4ec84452936e21d861c86 CRs-Fixed: 2262693 --- fw/wmi_unified.h | 64 +++++++++++++++++++++++++++++++++++++++++++++++- fw/wmi_version.h | 2 +- 2 files changed, 64 insertions(+), 2 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 564205c70262..6832db36c3b5 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -5450,6 +5450,68 @@ typedef enum { #define WMI_SET_STA_DUMP_SUPPORT(feature_bitmap, val) \ WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 112, 1, val) +/* Peer protocol features supported info (contd) */ +#define WMI_GET_STA_P2P_SUPPORT(var, feature_bitmap) \ + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 113, 1) +#define WMI_SET_STA_P2P_SUPPORT(feature_bitmap, val) \ + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 113, 1, val) +#define WMI_GET_STA_SAP_SUPPORT(var, feature_bitmap) \ + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 114, 1) +#define WMI_SET_STA_SAP_SUPPORT(feature_bitmap, val) \ + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 114, 1, val) +#define WMI_GET_STA_NAN_SUPPORT(var, feature_bitmap) \ + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 115, 1) +#define WMI_SET_STA_NAN_SUPPORT(feature_bitmap, val) \ + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 115, 1, val) +#define WMI_GET_STA_TDLS_SUPPORT(var, feature_bitmap) \ + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 116, 1) +#define WMI_SET_STA_TDLS_SUPPORT(feature_bitmap, val) \ + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 116, 1, val) +/* Reserving 16 bits for accomodating other 2 port concurrencies later */ + +#define WMI_GET_STA_SAP_P2P_SUPPORT(var, feature_bitmap) \ + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 133, 1) +#define WMI_SET_STA_SAP_P2P_SUPPORT(feature_bitmap, val) \ + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 133, 1, val) +#define WMI_GET_STA_SAP_NAN_SUPPORT(var, feature_bitmap) \ + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 134, 1) +#define WMI_SET_STA_SAP_NAN_SUPPORT(feature_bitmap, val) \ + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 134, 1, val) +#define WMI_GET_STA_P2P_NAN_SUPPORT(var, feature_bitmap) \ + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 135, 1) +#define WMI_SET_STA_P2P_NAN_SUPPORT(feature_bitmap, val) \ + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 135, 1, val) +#define WMI_GET_STA_P2P_TDLS_SUPPORT(var, feature_bitmap) \ + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 136, 1) +#define WMI_SET_STA_P2P_TDLS_SUPPORT(feature_bitmap, val) \ + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 136, 1, val) +#define WMI_GET_STA_SAP_TDLS_SUPPORT(var, feature_bitmap) \ + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 137, 1) +#define WMI_SET_STA_SAP_TDLS_SUPPORT(feature_bitmap, val) \ + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 137, 1, val) +#define WMI_GET_STA_NAN_TDLS_SUPPORT(var, feature_bitmap) \ + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 138, 1) +#define WMI_SET_STA_NAN_TDLS_SUPPORT(feature_bitmap, val) \ + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 138, 1, val) +/* Reserving 16 bits for accomodating other 3 port concurrencies later */ + +#define WMI_GET_STA_SAP_P2P_TDLS_SUPPORT(var, feature_bitmap) \ + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 155, 1) +#define WMI_SET_STA_SAP_P2P_TDLS_SUPPORT(feature_bitmap, val) \ + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 155, 1, val) +#define WMI_GET_STA_SAP_NAN_TDLS_SUPPORT(var, feature_bitmap) \ + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 156, 1) +#define WMI_SET_STA_SAP_NAN_TDLS_SUPPORT(feature_bitmap, val) \ + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 156, 1, val) +#define WMI_GET_STA_P2P_P2P_TDLS_SUPPORT(var, feature_bitmap) \ + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 157, 1) +#define WMI_SET_STA_P2P_P2P_TDLS_SUPPORT(feature_bitmap, val) \ + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 157, 1, val) +#define WMI_GET_STA_P2P_NAN_TDLS_SUPPORT(var, feature_bitmap) \ + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 158, 1) +#define WMI_SET_STA_P2P_NAN_TDLS_SUPPORT(feature_bitmap, val) \ + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 158, 1, val) + /* * Specify how many A_UINT32 words are needed to hold the feature bitmap flags. * This value may change over time. @@ -5457,7 +5519,7 @@ typedef enum { * It is provided simply as a convenience for the feature_set_bitmap sender to * know how many 32-bit words to allocate for the bitmap. */ -#define WMI_FEATURE_SET_BITMAP_ARRAY_LEN32 4 +#define WMI_FEATURE_SET_BITMAP_ARRAY_LEN32 6 /** * TLV for channel list diff --git a/fw/wmi_version.h b/fw/wmi_version.h index e5411d6562fc..c3653d5b7cd7 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_ 1422 +#define __WMI_REVISION_ 1423 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 59519c17539f391ba276d75051ae5648b8ffa356 Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 4 Dec 2023 06:01:30 -0800 Subject: [PATCH 03/15] fw-api: CL 25538998 - update fw common interface files add WMI_SERVICE_PCIE_DATA_RATE_LED_BLINK_SUPPORT def Change-Id: I4908a670edc945c6eecd280cd0ef7b57ee81d404 CRs-Fixed: 2262693 --- fw/wmi_services.h | 1 + 1 file changed, 1 insertion(+) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index b0e825a49107..0240349416c2 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -648,6 +648,7 @@ typedef enum { WMI_SERVICE_SW_PROG_DFS_SUPPORT = 395, /* Indicate FW support SW progressive DFS */ WMI_SERVICE_MULTIPLE_REORDER_QUEUE_SETUP_SUPPORT = 396, /* Indicate FW supports multiple TID reorder queues setup in one cmd */ WMI_SERVICE_MULTIPLE_COEX_CONFIG_SUPPORT = 397, /* FW supports mutiple coex configs in one cmd */ + WMI_SERVICE_PCIE_DATA_RATE_LED_BLINK_SUPPORT = 398, /* FW suports Data Rate based LED blinking for PCI chips */ WMI_MAX_EXT2_SERVICE From 0d7cce8402aa341f56b72b5bea0e68a68523e6a4 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 6 Dec 2023 06:01:20 -0800 Subject: [PATCH 04/15] fw-api: CL 25560130 - update fw common interface files LPASS: add XPAN_FLAN_FW state + XPAN_ADSP_WIFI_DRV stat enums Change-Id: I60e850d0687faaf8cc12786dcbf31d74b271f611 CRs-Fixed: 2262693 --- fw/wmi_services.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 0240349416c2..b5a1e740f793 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -648,7 +648,7 @@ typedef enum { WMI_SERVICE_SW_PROG_DFS_SUPPORT = 395, /* Indicate FW support SW progressive DFS */ WMI_SERVICE_MULTIPLE_REORDER_QUEUE_SETUP_SUPPORT = 396, /* Indicate FW supports multiple TID reorder queues setup in one cmd */ WMI_SERVICE_MULTIPLE_COEX_CONFIG_SUPPORT = 397, /* FW supports mutiple coex configs in one cmd */ - WMI_SERVICE_PCIE_DATA_RATE_LED_BLINK_SUPPORT = 398, /* FW suports Data Rate based LED blinking for PCI chips */ + WMI_SERVICE_PCIE_DATA_RATE_LED_BLINK_SUPPORT = 398, /* FW supports Data Rate based LED blinking for PCI chips */ WMI_MAX_EXT2_SERVICE From bd1128622a80946ac799eaef3e668c4324adc6ea Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 8 Dec 2023 18:01:27 -0800 Subject: [PATCH 05/15] fw-api: CL 25582068 - update fw common interface files WMI: add pdev_id fields in ani_[cck,ofdm]_event TLV structs Change-Id: Id5d3e66eb0d74d6109057062a7a29ead817ceb3e CRs-Fixed: 2262693 --- fw/wmi_unified.h | 56 ++++++++++++++++++++++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 6832db36c3b5..b6f82cafeba2 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -34186,9 +34186,37 @@ typedef struct { A_UINT32 freqNum; } wmi_pdev_nfcal_power_all_channels_freqNum; +/* Bit set/unset definitions for valid_bitmap field in ani_cck_event */ +#define WMI_ANI_CCK_EVENT_PDEV_ID_SET(bitmap, val) \ + WMI_SET_BITS(bitmap, 0, 8, val) +#define WMI_ANI_CCK_EVENT_PDEV_ID_GET(bitmap) \ + WMI_GET_BITS(bitmap, 0, 8) + +#define WMI_ANI_CCK_EVENT_PDEV_ID_VALID_BIT_SET(bitmap, val) \ + WMI_SET_BITS(bitmap, 31, 1, val) +#define WMI_ANI_CCK_EVENT_PDEV_ID_VALID_BIT_GET(bitmap) \ + WMI_GET_BITS(bitmap, 31, 1) + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_ani_cck_event_fixed_param */ A_UINT32 cck_level; + union { + A_UINT32 pdev_id_valid__pdev_id__word; + struct { + /** + * word containng the pdev_id for identifying the MAC + * Contents: + * bits 7:0 - pdev ID + * bits 30:8 - reserved + * bit 31 - pdev ID valid flag + * See macros starting with WMI_ANI_CCK_EVENT_PDEV_ID_ for values. + * pdev_id is valid when pdev_id_valid is set. + */ + A_UINT32 pdev_id: 8, + reserved: 23, + pdev_id_valid: 1; + }; + }; } wmi_ani_cck_event_fixed_param; typedef enum wmi_power_debug_reg_fmt_type { @@ -34551,9 +34579,37 @@ typedef struct { A_UINT32 protocol_wake_lock_bitmap[4]; /* bitmap with bits set for modules (from WLAN_MODULE_ID enum) voting against sleep for prolonged duration */ } wmi_chip_power_save_failure_detected_fixed_param; +/* Bit set/unset definitions for valid_bitmap field in ani_ofdm_event */ +#define WMI_ANI_OFDM_EVENT_PDEV_ID_BIT_SET(bitmap, val) \ + WMI_SET_BITS(bitmap, 0, 8, val) +#define WMI_ANI_OFDM_EVENT_PDEV_ID_BIT_GET(bitmap) \ + WMI_GET_BITS(bitmap, 0, 8) + +#define WMI_ANI_OFDM_EVENT_PDEV_ID_VALID_BIT_SET(bitmap, val) \ + WMI_SET_BITS(bitmap, 31, 1, val) +#define WMI_ANI_OFDM_EVENT_PDEV_ID_VALID_BIT_GET(bitmap) \ + WMI_GET_BITS(bitmap, 31, 1) + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_ani_ofdm_event_fixed_param */ A_UINT32 ofdm_level; + union { + A_UINT32 pdev_id_valid__pdev_id__word; + struct { + /** + * word containng the pdev_id for identifying the MAC + * Contents: + * bits 7:0 - pdev ID + * bits 30:8 - reserved + * bit 31 - pdev ID valid flag + * See macros starting with WMI_ANI_OFDM_EVENT_PDEV_ID_ for values. + * pdev_id is valid when pdev_id_valid is set. + */ + A_UINT32 pdev_id: 8, + reserved: 23, + pdev_id_valid: 1; + }; + }; } wmi_ani_ofdm_event_fixed_param; /* When a bit is set it specifies the particular WLAN traffic type is high priority. diff --git a/fw/wmi_version.h b/fw/wmi_version.h index c3653d5b7cd7..31584d312c84 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_ 1423 +#define __WMI_REVISION_ 1424 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 862868c648ff2eb122877df12a26e8cc598e4177 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 9 Dec 2023 12:01:10 -0800 Subject: [PATCH 06/15] fw-api: CL 25582070 - update fw common interface files HTT PPDU stats: add is_primary_link_peer field in user_common TLV struct Change-Id: Ida2fbf405259636d84cb89a8ec368bbc483fda97 CRs-Fixed: 2262693 --- fw/htt_ppdu_stats.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/fw/htt_ppdu_stats.h b/fw/htt_ppdu_stats.h index fed6e2d63975..8425b487ccb0 100644 --- a/fw/htt_ppdu_stats.h +++ b/fw/htt_ppdu_stats.h @@ -1192,8 +1192,6 @@ typedef struct { */ A_UINT32 sw_rts_prot_dur_us; - /* Data fields related to Transmit power */ - /* tx_pwr_multiplier: * Hawkeye now supports power accuracy in 0.25 dBm steps, * so all powers are x4. @@ -1216,7 +1214,8 @@ typedef struct { A_UINT32 tx_pwr_multiplier : 8, chain_enable_bits : 8, is_smart_ulofdma_basic_trig: 1, - reserved2 : 15; + is_primary_link_peer : 1, + reserved2 : 14; /* * Transmit powers (signed values packed into unsigned bitfields) From 5007e713f916574426b05a5abb18c57c7257701d Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 9 Dec 2023 12:02:06 -0800 Subject: [PATCH 07/15] fw-api: CL 25585821 - update fw common interface files WMI: add VDEV_GET_TWT_SESSION_STATS_INFO_CMD msg def, TSFs Change-Id: I9c38a945360ee3fb427e117487cf04eb205ff697 CRs-Fixed: 2262693 --- fw/wmi_services.h | 1 + fw/wmi_tlv_defs.h | 7 +++++++ fw/wmi_unified.h | 23 +++++++++++++++++++++++ 3 files changed, 31 insertions(+) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index b5a1e740f793..4e17e75c78e4 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -649,6 +649,7 @@ typedef enum { WMI_SERVICE_MULTIPLE_REORDER_QUEUE_SETUP_SUPPORT = 396, /* Indicate FW supports multiple TID reorder queues setup in one cmd */ WMI_SERVICE_MULTIPLE_COEX_CONFIG_SUPPORT = 397, /* FW supports mutiple coex configs in one cmd */ WMI_SERVICE_PCIE_DATA_RATE_LED_BLINK_SUPPORT = 398, /* FW supports Data Rate based LED blinking for PCI chips */ + WMI_SERVICE_VDEV_DCS_STATS_SUPPORT = 399, /* FW supports VDEV level DCS stats reporting */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index ce93e5939ecf..479baf68e910 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1421,6 +1421,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_disallowed_mlo_mode_bitmap_param, WMITLV_TAG_STRUC_wmi_led_blink_rate_table, WMITLV_TAG_STRUC_wmi_enable_led_blink_download_rate_table_fixed_param, + WMITLV_TAG_STRUC_wmi_vdev_get_twt_session_stats_info_cmd_fixed_param, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -1963,6 +1964,7 @@ typedef enum { OP(WMI_PEER_MULTIPLE_REORDER_QUEUE_SETUP_CMDID) \ OP(WMI_COEX_MULTIPLE_CONFIG_CMDID) \ OP(WMI_PDEV_ENABLE_LED_BLINK_DOWNLOAD_TABLE_CMDID) \ + OP(WMI_VDEV_GET_TWT_SESSION_STATS_INFO_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -3627,6 +3629,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SET_WMM_PARAMS_CMDID); WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SET_TWT_EDCA_PARAMS_CMDID); +#define WMITLV_TABLE_WMI_VDEV_GET_TWT_SESSION_STATS_INFO_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_get_twt_session_stats_info_cmd_fixed_param, wmi_vdev_get_twt_session_stats_info_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) + +WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_GET_TWT_SESSION_STATS_INFO_CMDID); + #define WMITLV_TABLE_WMI_VDEV_SET_GTX_PARAMS_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_set_gtx_params_cmd_fixed_param, wmi_vdev_set_gtx_params_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index b6f82cafeba2..67d1ab6e8f70 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1514,6 +1514,7 @@ typedef enum { WMI_TWT_BTWT_REMOVE_STA_CMDID, WMI_TWT_NUDGE_DIALOG_CMDID, WMI_VDEV_SET_TWT_EDCA_PARAMS_CMDID, /* XPAN TWT */ + WMI_VDEV_GET_TWT_SESSION_STATS_INFO_CMDID, /** WMI commands related to motion detection **/ WMI_MOTION_DET_CONFIG_PARAM_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_MOTION_DET), @@ -10498,6 +10499,12 @@ typedef struct { */ } wmi_vdev_set_twt_edca_params_cmd_fixed_param; +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_get_twt_session_stats_info_cmd_fixed_param */ + A_UINT32 tlv_header; + A_UINT32 vdev_id; +} wmi_vdev_get_twt_session_stats_info_cmd_fixed_param; + typedef enum { WMI_REQUEST_PEER_STAT = 0x00001, WMI_REQUEST_AP_STAT = 0x00002, @@ -17064,6 +17071,9 @@ typedef struct { A_UINT32 mbssid_multi_group_flag; /* Flag to identify whether multi group mbssid is supported */ A_UINT32 mbssid_multi_group_id; /* Group id of current vdev only valid when multi group mbssid is supported */ + /* Target TSF value by which VDEV restart procedure should be completed in FW */ + A_UINT32 target_tsf_us_lo; /* bits 31:0 */ + A_UINT32 target_tsf_us_hi; /* bits 63:32 */ /* The TLVs follows this structure: * wmi_channel chan; <-- WMI channel @@ -18339,6 +18349,9 @@ typedef enum { */ WMI_VDEV_PARAM_MLO_MAX_RECOM_ACTIVE_LINKS, /* 0xC1 */ + /* DCS stats enable configuration at VDEV level */ + WMI_VDEV_PARAM_DCS, /* 0xC2 */ + /*=== ADD NEW VDEV PARAM TYPES ABOVE THIS LINE === * The below vdev param types are used for prototyping, and are @@ -21289,6 +21302,12 @@ typedef struct { * See macros starting with WMI_PDEV_ID_ for values. */ A_UINT32 pdev_id; + /** VDEV ID for identifying DCS stats reported at VDEV level. + * Should be interpreted only when WMI_SERVICE_VDEV_DCS_STATS_SUPPORT + * service cap is advertized by target. + * And value would be 0xFF if DCS stats is still configured at PDEV level. + */ + A_UINT32 vdev_id; /* * Following this struct are these TLVs. Note that they are both array of structures * but can have at most one element. Which TLV is empty or has one element depends @@ -44657,12 +44676,16 @@ typedef struct { /* service period start TSF */ A_UINT32 sp_tsf_us_lo; /* bits 31:0 */ A_UINT32 sp_tsf_us_hi; /* bits 63:32 */ + /* Current TSF */ + A_UINT32 curr_tsf_us_lo; /* bits 31:0 */ + A_UINT32 curr_tsf_us_hi; /* bits 63:32 */ } wmi_twt_session_stats_info; enum wmi_twt_session_stats_type { WMI_TWT_SESSION_SETUP = 1, WMI_TWT_SESSION_TEARDOWN = 2, WMI_TWT_SESSION_UPDATE = 3, + WMI_TWT_SESSION_QUERY_RSP = 4, }; typedef struct { From 4302b1b969f969daa389c0bb5790965914c95720 Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 12 Dec 2023 18:01:26 -0800 Subject: [PATCH 08/15] fw-api: CL 25598308 - update fw common interface files WMI: add disabled_link_bitmap field in mlo_ap_vdev_tid_to_link_map_ie_info Change-Id: Ife235e47acc533decd9b383fa8a6f34d9cf882ed CRs-Fixed: 2262693 --- fw/wmi_unified.h | 7 +++++-- fw/wmi_version.h | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 67d1ab6e8f70..8148afd6c728 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -45342,8 +45342,8 @@ typedef struct{ A_UINT32 pdev_id; /** vdev_id for identifying the MLO Vap */ A_UINT32 vdev_id; - /** disabled link bits */ - A_UINT32 disabled_link_bitmap; + /** DEPRECATED: disabled link bits */ + A_UINT32 disabled_link_bitmap; /* DEPRECATED */ /** * Following this structure is the TLV: * struct wmi_mlo_ap_vdev_tid_to_link_map_ie_info[]; @@ -45701,6 +45701,9 @@ typedef struct { * hw_tid_7_link_map:16 */ A_UINT32 hw_tid_6_7_link_map; + + /* Indicates the disabled link map for 802.11be T2LM */ + A_UINT32 disabled_link_bitmap; } wmi_mlo_ap_vdev_tid_to_link_map_ie_info; #define WMI_IGMP_OFFLOAD_SUPPORT_DISABLE_BITMASK 0x0 diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 31584d312c84..9a2f624c80b1 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_ 1424 +#define __WMI_REVISION_ 1425 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From e9cdfb520f1c0036d141437c1e5982eacbb3b42e Mon Sep 17 00:00:00 2001 From: spuligil Date: Tue, 12 Dec 2023 18:02:34 -0800 Subject: [PATCH 09/15] fw-api: CL 25601210 - update fw common interface files WMI: add wifi_radar_meta_data in DMA_RING_BUF_REL, PDEV_ENABLE_WIFI_RADAR_CMD Change-Id: I0528b5fc71317bd6c33e805b962cf00b57f6417c CRs-Fixed: 2262693 --- fw/wmi_services.h | 1 + fw/wmi_tlv_defs.h | 11 +++++++- fw/wmi_unified.h | 64 +++++++++++++++++++++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 4 files changed, 76 insertions(+), 2 deletions(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 4e17e75c78e4..067019f70ace 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -650,6 +650,7 @@ typedef enum { WMI_SERVICE_MULTIPLE_COEX_CONFIG_SUPPORT = 397, /* FW supports mutiple coex configs in one cmd */ WMI_SERVICE_PCIE_DATA_RATE_LED_BLINK_SUPPORT = 398, /* FW supports Data Rate based LED blinking for PCI chips */ WMI_SERVICE_VDEV_DCS_STATS_SUPPORT = 399, /* FW supports VDEV level DCS stats reporting */ + WMI_SERVICE_WIFI_RADAR_SUPPORT = 400, /* FW supports wifi radar */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 479baf68e910..8744b9cc8117 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1422,6 +1422,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_led_blink_rate_table, WMITLV_TAG_STRUC_wmi_enable_led_blink_download_rate_table_fixed_param, WMITLV_TAG_STRUC_wmi_vdev_get_twt_session_stats_info_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_enable_wifi_radar_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_dma_buf_release_wifi_radar_meta_data, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -1965,6 +1967,7 @@ typedef enum { OP(WMI_COEX_MULTIPLE_CONFIG_CMDID) \ OP(WMI_PDEV_ENABLE_LED_BLINK_DOWNLOAD_TABLE_CMDID) \ OP(WMI_VDEV_GET_TWT_SESSION_STATS_INFO_CMDID) \ + OP(WMI_PDEV_ENABLE_WIFI_RADAR_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -5557,6 +5560,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_OOB_CONNECTION_REQ_CMDID); WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, WMI_COEX_CONFIG_CMD_fixed_param, config_list, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_COEX_MULTIPLE_CONFIG_CMDID); +/* Wifi radar enable command */ +#define WMITLV_TABLE_WMI_PDEV_ENABLE_WIFI_RADAR_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_enable_wifi_radar_cmd_fixed_param, wmi_pdev_enable_wifi_radar_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_ENABLE_WIFI_RADAR_CMDID); + /************************** TLV definitions of WMI events *******************************/ @@ -7104,7 +7112,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_DMA_RING_CFG_RSP_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_dma_buf_release_entry, entries, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_dma_buf_release_spectral_meta_data, meta_data, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_dma_buf_release_cv_upload_meta_data, cv_meta_data, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_dma_buf_release_cqi_upload_meta_data, cqi_meta_data, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_dma_buf_release_cqi_upload_meta_data, cqi_meta_data, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_dma_buf_release_wifi_radar_meta_data, wifi_radar_meta_data, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_DMA_RING_BUF_RELEASE_EVENTID); /* ctl failsafe check event */ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 8148afd6c728..71ef9c9d7084 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -521,6 +521,8 @@ typedef enum { * and download LED ON/OFF Rate table */ WMI_PDEV_ENABLE_LED_BLINK_DOWNLOAD_TABLE_CMDID, + /** WMI Command to enable wifi radar */ + WMI_PDEV_ENABLE_WIFI_RADAR_CMDID, /* VDEV (virtual device) specific commands */ @@ -37248,6 +37250,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_PEER_MULTIPLE_REORDER_QUEUE_SETUP_CMDID); WMI_RETURN_STRING(WMI_COEX_MULTIPLE_CONFIG_CMDID); WMI_RETURN_STRING(WMI_PDEV_ENABLE_LED_BLINK_DOWNLOAD_TABLE_CMDID); + WMI_RETURN_STRING(WMI_PDEV_ENABLE_WIFI_RADAR_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; @@ -39126,6 +39129,7 @@ typedef enum { WMI_DMA_RING_CONFIG_MODULE_SPECTRAL, WMI_DMA_RING_CONFIG_MODULE_RTT, WMI_DMA_RING_CONFIG_MODULE_CV_UPLOAD, + WMI_DMA_RING_CONFIG_MODULE_WIFI_RADAR, } WMI_DMA_RING_SUPPORTED_MODULE; typedef struct { @@ -39287,6 +39291,8 @@ typedef struct { * wmi_dma_buf_release_cv_upload_meta_data cv_meta_data[num_meta_data_entry] * wmi_dma_buf_release_cqi_upload_meta_data * cqi_meta_data[num_meta_data_entry] + * wmi_dma_buf_release_wifi_radar_meta_data + * wifi_radar_meta_data[num_meta_data_entry] */ } wmi_dma_buf_release_fixed_param; @@ -46865,6 +46871,30 @@ typedef struct { A_UINT32 fb_params; } wmi_dma_buf_release_cv_upload_meta_data; +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_dma_buf_release_radar_meta_data */ + /* timestamp at the time of the capture */ + A_UINT32 timestamp_us; + /* phy mode WLAN_PHY_MODE of the channel defined in wlan_defs.h */ + A_UINT32 phy_mode; + /* frequency (in MHz) of the primary 20 MHz channel */ + A_UINT32 chan_mhz; + /* Center frequency 1 in MHz */ + A_UINT32 band_center_freq1; + /* Center frequency 2 in MHz - valid only for 11acvht 80plus80 mode */ + A_UINT32 band_center_freq2; + /* tx chain mask */ + A_UINT32 tx_chain_mask; + /* rx chain mask */ + A_UINT32 rx_chain_mask; + /* number of LTFs sent for capture */ + A_UINT32 num_ltf_tx; + /* number of LTFs skipped in rx */ + A_UINT32 num_skip_ltf_rx; + /* number of LTFs used for accumulation */ + A_UINT32 num_ltf_accumulation; +} wmi_dma_buf_release_wifi_radar_meta_data; + typedef struct { /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_dma_buf_release_cqi_upload_meta_data */ A_UINT32 tlv_header; @@ -47515,6 +47545,40 @@ typedef struct { A_UINT32 switch_type; /* see definition of WMI_AUDIO_TRANSPORT_SWITCH_TYPE */ } wmi_audio_transport_switch_resp_status_cmd_fixed_param; +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_enable_wifi_radar_cmd_fixed_param + */ + A_UINT32 tlv_header; + /* host pdev id */ + A_UINT32 pdev_id; + /* tx_chain_mask: + * tx chain mask to use for wifi radar tx. + * Only one chain is supposed to be set. + */ + A_UINT32 tx_chain_mask; + /* rx chain mask for wifi radar capture. Can have multiple bits set. */ + A_UINT32 rx_chain_mask; + /* number of LTFs to send for capture */ + A_UINT32 num_ltf_tx; + /* number of extra LTFs that are to be skipped for accumulation */ + A_UINT32 num_skip_ltf_rx; + /* number of LTFs to use for accumulation. Must be power of 2. */ + A_UINT32 num_ltf_accumulation; + /* bandwidth to use for capture + * 0 = 20 MHz + * 1 = 40 MHz + * 2 = 80 MHz + * 3 = 160 MHz + * 4 = 320 MHz + */ + A_UINT32 bw; + /* 0 to stop capture, 1 to start periodic capture, 2 to do calibration */ + A_UINT32 capture_calibrate; + /* periodicity of capture in milliseconds */ + A_UINT32 capture_interval_ms; +} wmi_pdev_enable_wifi_radar_cmd_fixed_param; + /* ADD NEW DEFS HERE */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 9a2f624c80b1..43bedfc46208 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_ 1425 +#define __WMI_REVISION_ 1426 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From c57836b33b503cb325392b734a43e8c97f43ff4c Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 13 Dec 2023 12:01:26 -0800 Subject: [PATCH 10/15] fw-api: CL 25612024 - update fw common interface files WMI: add + use WMI_MLO_IEEE_LINK_ID_INVALID def Change-Id: I43cae6b4fb229a71e3e0b0e174e6171fb3e03d4e CRs-Fixed: 2262693 --- fw/wmi_unified.h | 27 +++++++++++++++------------ fw/wmi_version.h | 2 +- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 71ef9c9d7084..9c47ebcebb9c 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -44995,6 +44995,7 @@ typedef struct wmi_mlo_set_active_link_number_param #define WMI_MLO_MODE_MLMR 0x1; #define WMI_MLO_MODE_EMLSR 0x2; +#define WMI_MLO_IEEE_LINK_ID_INVALID 0xFF #define WMI_MLO_IEEE_LINK_ID_COMB_GET_LINK_ID1(ieee_link_id_comb) WMI_GET_BITS(ieee_link_id_comb, 0, 8) #define WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID1(ieee_link_id_comb, value) WMI_SET_BITS(ieee_link_id_comb, 0, 8, value) @@ -45029,6 +45030,8 @@ typedef struct wmi_disallowed_mlo_mode_bitmap_param * Give combination of IEEE link IDs for which above disallowed_mode_bitmap * is applicable. * Each 8-bits in ieee_link_id_comb represents one link ID. + * A link ID is an integer value between 0 and 14. + * Please set WMI_MLO_IEEE_LINK_ID_INVALID (0xff) if 8-bits is not used. * Use WMI_MLO_IEEE_LINK_ID_COMB_GET_LINK_ID* and _SET_LINK_ID* to get/set * link IDs in this field. */ @@ -45036,30 +45039,30 @@ typedef struct wmi_disallowed_mlo_mode_bitmap_param /** Example: - * Say there are 3 MLO links with ieee link IDs as 1,2 and 32. + * Say there are 3 MLO links with ieee link IDs as 1,2 and 10. * Say host wants to disallow MLMR between links with IDs 1 and 2, - * disallow eMLSR between links with IDs 1 and 32, - * disallow MLMR and eMLSR for links with IDs 2 and 32. + * disallow eMLSR between links with IDs 1 and 10, + * disallow MLMR and eMLSR for links with IDs 2 and 10. * There will be 3 TLVs of type wmi_disallowed_mlo_mode_bitmap_param * like below. * * wmi_disallowed_mlo_mode_bitmap_param[0]: * disallowed_mode_bitmap = 0x1, - * ieee_link_id_comb = 0x00000201 - * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID1(ieee_link_id_comb, 0x1) - * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID2(ieee_link_id_comb, 0x2) + * ieee_link_id_comb = 0xFFFF0201 + * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID1(ieee_link_id_comb, 0x01) + * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID2(ieee_link_id_comb, 0x02) * * wmi_disallowed_mlo_mode_bitmap_param[1] * disallowed_mode_bitmap = 0x2, - * ieee_link_id_comb = 0x00002001 - * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID1(ieee_link_id_comb, 0x1) - * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID2(ieee_link_id_comb, 0x20) + * ieee_link_id_comb = 0xFFFF0A01 + * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID1(ieee_link_id_comb, 0x01) + * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID2(ieee_link_id_comb, 0x0a) * * wmi_disallowed_mlo_mode_bitmap_param[2] * disallowed_mode_bitmap = 0x3, - * ieee_link_id_comb = 0x00002002 - * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID1(ieee_link_id_comb, 0x2) - * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID2(ieee_link_id_comb, 0x20) + * ieee_link_id_comb = 0xFFFF0A02 + * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID1(ieee_link_id_comb, 0x02) + * WMI_MLO_IEEE_LINK_ID_COMB_SET_LINK_ID2(ieee_link_id_comb, 0x0a) */ } wmi_disallowed_mlo_mode_bitmap_param; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 43bedfc46208..9d02650e1852 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_ 1426 +#define __WMI_REVISION_ 1427 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From e5bf4a0d1ead6daffc6dd5f53527dbb62778dd83 Mon Sep 17 00:00:00 2001 From: spuligil Date: Thu, 14 Dec 2023 18:01:25 -0800 Subject: [PATCH 11/15] fw-api: CL 25618622 - update fw common interface files WMI: add mlo_link_info TLV array in ROAM_STATS_EVENT msg Change-Id: Ic15545d592b64d94cd2e4dcaeb6c77e0b50a7a4e CRs-Fixed: 2262693 --- fw/wmi_tlv_defs.h | 4 +++- fw/wmi_unified.h | 35 ++++++++++++++++++++++++++++++++++- fw/wmi_version.h | 2 +- 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 8744b9cc8117..ba7225dd062d 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1424,6 +1424,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_vdev_get_twt_session_stats_info_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_pdev_enable_wifi_radar_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_dma_buf_release_wifi_radar_meta_data, + WMITLV_TAG_STRUC_wmi_mlo_link_info, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -4836,7 +4837,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_WLM_CONFIG_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_trigger_kickout, roam_trigger_kickout, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_trigger_per, roam_trigger_per, WMITLV_SIZE_VAR) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_trigger_periodic, roam_trigger_periodic, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_trigger_hi_rssi, roam_trigger_hi_rssi, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_trigger_hi_rssi, roam_trigger_hi_rssi, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_link_info, mlo_link_info, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_STATS_EVENTID); /* Motion detection cmd */ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 9c47ebcebb9c..bd5e55b4287c 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -29042,6 +29042,7 @@ typedef struct { A_UINT32 reassoc_rsp_len; /** the length of reassoc req */ A_UINT32 reassoc_req_len; + A_INT32 bcn_probe_resp_rssi; /* RSSI units dBm */ /** * TLV (tag length value) parameters follows roam_synch_event * The TLV's are: @@ -40016,6 +40017,7 @@ typedef struct { * bit 1-31: reserved. */ A_UINT32 flags; + wmi_mac_addr mld_addr; } wmi_roam_ap_info; typedef enum { @@ -40204,6 +40206,9 @@ typedef struct { #define WMI_GET_TX_FAILED_REASON(frame_info_ext) WMI_GET_BITS(frame_info_ext, 22, 4) #define WMI_SET_TX_FAILED_REASON(frame_info_ext, val) WMI_SET_BITS(frame_info_ext, 22, 4, val) +#define WMI_GET_MAP_ID(frame_info_ext) WMI_GET_BITS(frame_info_ext, 26, 6) +#define WMI_SET_MAP_ID(frame_info_ext, val) WMI_SET_BITS(frame_info_ext, 26, 6, val) + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_frame_info_tlv_param */ /* timestamp is the absolute time w.r.t host timer which is synchronized between the host and target */ @@ -40258,7 +40263,8 @@ typedef struct { * Refer to WMI_[GET,SET]_RX_INDICATE macros. * Bit 22-25 : opaque tx failure reason * Refer to WMI_[GET,SET]_TX_FAILED_REASON macros. - * Bit 26-31 : reserved for future use. + * Bit 26-31 : Indicate the map id, used to identify the all the + * ML link info corresponding to current roaming candidate. */ A_UINT32 frame_info_ext; } wmi_roam_frame_info; @@ -40463,6 +40469,33 @@ typedef struct { A_UINT32 hi_rssi_threshold; } wmi_roam_trigger_hi_rssi; +#define WMI_MLO_LINK_INFO_GET_MAP_ID(link_info) WMI_GET_BITS(link_info, 0, 6) +#define WMI_MLO_LINK_INFO_SET_MAP_ID(link_info, val) WMI_SET_BITS(link_info, 0, 6, val) + +#define WMI_MLO_LINK_INFO_GET_STATUS(link_info) WMI_GET_BITS(link_info, 6, 1) +#define WMI_MLO_LINK_INFO_SET_STATUS(link_info, val) WMI_SET_BITS(link_info, 6, 1, val) + +#define WMI_MLO_LINK_INFO_GET_BAND(link_info) WMI_GET_BITS(link_info, 7, 3) +#define WMI_MLO_LINK_INFO_SET_BAND(link_info, val) WMI_SET_BITS(link_info, 7, 3, val) + +#define WMI_MLO_LINK_INFO_GET_IEEE_LINK_ID(link_info) WMI_GET_BITS(link_info, 10, 4) +#define WMI_MLO_LINK_INFO_SET_IEEE_LINK_ID(link_info, val) WMI_SET_BITS(link_info, 10, 4, val) + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_info_tlv_param */ + wmi_mac_addr link_addr; + A_UINT32 link_info; + /* + * b[0-5] : Map Id - maps the corresponding candidate AP for which + * re-assoc resp received. + * b[6] : Status - link status, AP accepted/rejected this link + * 0 - accepted + * 1 - rejected + * b[7-9] : Band - link band info (band value is from wmi_mlo_band_info) + * b[10-13] : IEEE link id - Link id associated with AP + */ +} wmi_mlo_link_info; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_get_scan_channel_list_cmd_fixed_param */ A_UINT32 vdev_id; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 9d02650e1852..a07a05e52066 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_ 1427 +#define __WMI_REVISION_ 1428 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From dfa825984780aa4fe0f0c9bce6f9b1ad8220aff8 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 16 Dec 2023 12:01:22 -0800 Subject: [PATCH 12/15] fw-api: CL 25636238 - update fw common interface files WMI: add WLM_FLAGS_PS_DISABLE_ULL_FORCED_MLMR flag Change-Id: Ia49470d226fee519667b82c08c15c2ea4acd5762 CRs-Fixed: 2262693 --- fw/wmi_unified.h | 7 +++++++ fw/wmi_version.h | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index bd5e55b4287c..b28f0d6d01c5 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -38466,6 +38466,11 @@ typedef struct { */ #define WLM_FLAGS_PS_DISABLE_MLO_PROBE_SCAN 1 /* disable MLO probe scan */ +/* bit 24: WLM_FLAGS_PS_DISABLE_ULL_FORCED_MLMR, + * disable forced MLMR on ULL if bit is set + */ +#define WLM_FLAGS_PS_DISABLE_ULL_FORCED_MLMR 1 /* disable forced MLMR on ULL */ + #define WLM_FLAGS_SCAN_IS_SUPPRESS(flag) WMI_GET_BITS(flag, 0, 1) #define WLM_FLAGS_SCAN_SET_SUPPRESS(flag, val) WMI_SET_BITS(flag, 0, 1, val) #define WLM_FLAGS_SCAN_IS_SKIP_DFS(flag) WMI_GET_BITS(flag, 1, 1) @@ -38501,6 +38506,8 @@ typedef struct { #define WLM_FLAGS_SCAN_SET_ADAPT_SCAN_ENABLE(flag, val) WMI_SET_BITS(flag, 22, 1, val) #define WLM_FLAGS_PS_IS_MLO_PROBE_SCAN_DISABLED(flag) WMI_GET_BITS(flag, 23, 1) #define WLM_FLAGS_PS_SET_MLO_PROBE_SCAN_DISABLE(flag, val) WMI_SET_BITS(flag, 23, 1, val) +#define WLM_FLAGS_PS_IS_ULL_FORCED_MLMR_DISABLED(flag) WMI_GET_BITS(flag, 24, 1) +#define WLM_FLAGS_PS_SET_ULL_FORCED_MLMR_DISABLE(flag, val) WMI_SET_BITS(flag, 24, 1, val) #define WLM_FLAGS_SET_FORCE_DEFAULT_LATENCY(flag, val) WMI_SET_BITS(flag, 0, 1, val) #define WLM_FLAGS_GET_FORCE_DEFAULT_LATENCY(flag) WMI_GET_BITS(flag, 0, 1) diff --git a/fw/wmi_version.h b/fw/wmi_version.h index a07a05e52066..5d44b0015a0b 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_ 1428 +#define __WMI_REVISION_ 1429 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 2bb3a851cf1e45c1815f014c3709cd2876e63aaa Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 16 Dec 2023 18:01:22 -0800 Subject: [PATCH 13/15] fw-api: CL 25637760 - update fw common interface files add WMI_SERVICE_P2P_DEVICE_UPDATE_MAC_ADDR_SUPPORT def Change-Id: I2926fcba78167bad2fb3b4786fd095636cb89758 CRs-Fixed: 2262693 --- fw/wmi_services.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 067019f70ace..1890f9182450 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -651,6 +651,8 @@ typedef enum { WMI_SERVICE_PCIE_DATA_RATE_LED_BLINK_SUPPORT = 398, /* FW supports Data Rate based LED blinking for PCI chips */ WMI_SERVICE_VDEV_DCS_STATS_SUPPORT = 399, /* FW supports VDEV level DCS stats reporting */ WMI_SERVICE_WIFI_RADAR_SUPPORT = 400, /* FW supports wifi radar */ + WMI_SERVICE_P2P_DEVICE_UPDATE_MAC_ADDR_SUPPORT = 401, /* indicate FW support dynamic update mac address for P2P device */ + WMI_MAX_EXT2_SERVICE From 28deb78d134e3849cab39d5df393734eb24bbbc8 Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 18 Dec 2023 06:01:13 -0800 Subject: [PATCH 14/15] fw-api: CL 25638846 - update fw common interface files WMI: add num_max_mlo_link_per_ml_sap_supp in service_ready_ext2_event Change-Id: I0b7b5fe0cd7ea290c0776eb6518d3298ec1cb979 CRs-Fixed: 2262693 --- fw/wmi_unified.h | 7 ++++++- fw/wmi_version.h | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index b28f0d6d01c5..7e98268e9506 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -3593,10 +3593,15 @@ typedef struct { A_UINT32 rx_aggr_ba_win_size_max; /* - * max link number per MLD FW supports. + * max link number per STA MLD FW supports. */ A_UINT32 num_max_mlo_link_per_ml_bss_supp; + /* + * max link number per SAP MLD FW supports. + */ + A_UINT32 num_max_mlo_link_per_ml_sap_supp; + /* Followed by next TLVs: * WMI_DMA_RING_CAPABILITIES dma_ring_caps[]; * wmi_spectral_bin_scaling_params wmi_bin_scaling_params[]; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 5d44b0015a0b..566d2ea09fee 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_ 1429 +#define __WMI_REVISION_ 1430 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From b32bf002dbff7510cd71f37bc44c71818cf0a3dd Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 18 Dec 2023 06:02:18 -0800 Subject: [PATCH 15/15] fw-api: CL 25639871 - update fw common interface files add WMI_PDEV_PARAM_DFS_RADAR_MASK def Change-Id: I7a39c0f5d4e28fbc42bfb987af0e84f9de1dea85 CRs-Fixed: 2262693 --- fw/wmi_unified.h | 13 +++++++++++++ fw/wmi_version.h | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 7e98268e9506..ac9342cd35e7 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -9439,6 +9439,19 @@ typedef enum { * default to immediate LMR feedback. **/ WMI_PDEV_PARAM_ENABLE_DELAYED_LMR_FEEDBACK, + + /* DFS_RADAR_MASK: Radar mask setting programmed in HW registers. + * bit | config_mode + * ----------------------- + * 0 - 15 | Each bit represents a 20 MHz portion of the channel. + * | 0-Unmasked 1-Masked + * 16 - 31 | Reserved. + * Bit 0 represents the highest 20 MHz portion within the channel. + * For example... + * For a 80 MHz channel, bit0 = highest 20 MHz, bit3 = lowest 20 MHz + * For a 320 MHz channel, bit0 = highest 20 MHz, bit15 = lowest 20 MHz + */ + WMI_PDEV_PARAM_DFS_RADAR_MASK, } WMI_PDEV_PARAM; #define WMI_PDEV_ONLY_BSR_TRIG_IS_ENABLED(trig_type) WMI_GET_BITS(trig_type, 0, 1) diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 566d2ea09fee..3ba4c9227c65 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_ 1430 +#define __WMI_REVISION_ 1431 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work