From 84d129012b576c1a3b261bd1616ed53c10d46e40 Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 9 Sep 2022 06:01:04 -0700 Subject: [PATCH 1/4] fw-api: CL 19533452 - update fw common interface files Change-Id: I56c6927ed872b15c629a6b7897303eb5be98671f WMI: add transmit_addr field to roam_preauth_start_event msg CRs-Fixed: 2262693 --- fw/wmi_unified.h | 5 +++++ fw/wmi_version.h | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 4d580c9cb2..eabad69184 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -34944,6 +34944,11 @@ typedef struct { A_UINT32 vdev_id; /* AP BSSID for which host needs to start pre-authentication */ wmi_mac_addr candidate_ap_bssid; + /* + * Transmit address for which host needs to start pre-authentication + * in MLO case. In non MLO cases, transmit_addr will be filled with 0x0. + */ + wmi_mac_addr transmit_addr; } wmi_roam_preauth_start_event_fixed_param; typedef struct { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 6b70eb0e67..67cdc53bfd 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_ 1211 +#define __WMI_REVISION_ 1212 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From af36010a2ebbea924e6cfac8ecdc4aae7c13510f Mon Sep 17 00:00:00 2001 From: spuligil Date: Mon, 12 Sep 2022 18:01:00 -0700 Subject: [PATCH 2/4] fw-api: CL 19556986 - update fw common interface files Change-Id: Ida7bdcc2c23e07bef5814a98e26c20fd167b829c WMI: add bitmap showing band support to PDEV_FEATURESET_CMD msg 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 eabad69184..5d84ae9ee1 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -4872,6 +4872,7 @@ typedef enum { } WMI_WIFI_STANDARD; typedef enum { + WMI_HOST_NONE = 0, /* No concurrency mode supported */ WMI_HOST_DBS = 1, /* When 2.4G + 5G & 2.4G + 6G if 6G is supported */ WMI_HOST_DBS_SBS = 2, /* When 2.4G + 5G, 2.4G + 6G, 5G + 6G & 5G + 5G is supported */ } WMI_BAND_CONCURRENCY; @@ -4893,6 +4894,12 @@ typedef enum { WMI_VENDOR1_REQ2_VERSION_3_20 = 2, } WMI_VENDOR1_REQ2_VERSION; +typedef enum { + WMI_HOST_BAND_CAP_2GHZ = 0x01, + WMI_HOST_BAND_CAP_5GHZ = 0x02, + WMI_HOST_BAND_CAP_6GHZ = 0x04, +} WMI_HOST_BAND_CAP; + /* HW features supported info */ /* enum WMI_WIFI_STANDARD are possible values for WiFi standard bitfield */ #define WMI_GET_WIFI_STANDARD(var, feature_bitmap) \ @@ -5156,6 +5163,12 @@ typedef enum { #define WMI_SET_NUM_ANTENNAS(feature_bitmap, val) \ WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 102, 4, val) +/* enum WMI_HOST_BAND_CAP are possible values for below bitfield */ +#define WMI_GET_HOST_BAND_CAP(var, feature_bitmap) \ + WMI_GET_BITS_ARRAY_LEN32_BYTES(var, feature_bitmap, 106, 6) +#define WMI_SET_HOST_BAND_CAP(feature_bitmap, val) \ + WMI_SET_BITS_ARRAY_LEN32_BYTES(feature_bitmap, 106, 6, val) + /* * Specify how many A_UINT32 words are needed to hold the feature bitmap flags. * This value may change over time. diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 67cdc53bfd..22ed7147da 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_ 1212 +#define __WMI_REVISION_ 1213 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work From 08ab1ecdf7a33d2f05e3ca08224bc46464657a99 Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 16 Sep 2022 06:00:58 -0700 Subject: [PATCH 3/4] fw-api: CL 19606967 - update fw common interface files HTT stats: add IBF CV counters to tx_sounding_stats TLV Change-Id: I7a96f5df6820728b0febb940954eaf189eecf120 CRs-Fixed: 2262693 --- fw/htt_stats.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/fw/htt_stats.h b/fw/htt_stats.h index 7d667a72a7..3297d37191 100644 --- a/fw/htt_stats.h +++ b/fw/htt_stats.h @@ -6375,6 +6375,14 @@ typedef struct { A_UINT32 cv_buf_received; /** total times CV bufs fed back to the IPC ring */ A_UINT32 cv_buf_fed_back; + /* Total times CV query happened for IBF case */ + A_UINT32 cv_total_query_ibf; + /* A valid CV has been found for IBF case */ + A_UINT32 cv_found_ibf; + /* A valid CV has not been found for IBF case */ + A_UINT32 cv_not_found_ibf; + /* Expired CV found during query for IBF case */ + A_UINT32 cv_expired_during_query_ibf; } htt_tx_sounding_stats_tlv; /* STATS_TYPE : HTT_DBG_EXT_STATS_TX_SOUNDING_INFO From 0baa6ea4811e9965a26d4637ae2c6152d3ba5d31 Mon Sep 17 00:00:00 2001 From: spuligil Date: Sat, 17 Sep 2022 06:00:58 -0700 Subject: [PATCH 4/4] fw-api: CL 19622099 - update fw common interface files Change-Id: I08a30bd58cc334d09cf9469c72110cf720e4f802 WMI: allow vdev restart to specify bitmap of vdev IDs CRs-Fixed: 2262693 --- fw/wmi_services.h | 1 + fw/wmi_unified.h | 42 +++++++++++++++++++++++++++++++++++++++++- fw/wmi_version.h | 2 +- 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index e027cefe8d..c348d821d5 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -599,6 +599,7 @@ typedef enum { WMI_SERVICE_BANG_RADAR_320_SUPPORT = 346, /* Host to send frequency offset for bang radar in extended field for 320M support */ WMI_SERVICE_XGAP_SUPPORT = 347, /* FW support for XGAP */ WMI_SERVICE_OBSS_PER_PACKET_SR_SUPPORT = 348, /* Spatial Reuse support for per PPDU setting */ + WMI_SERVICE_MULTIPLE_VDEV_RESTART_BITMAP_SUPPORT = 349, /* Extended Multiple VDEV Restart with Bitmap Support */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 5d84ae9ee1..a973e05aec 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -33416,6 +33416,31 @@ typedef struct { #define WMI_MULTIPLE_VDEV_RESTART_FLAG_GET_PHYMODE(phymode) WMI_GET_BITS(phymode, 0, 6) #define WMI_MULTIPLE_VDEV_RESTART_FLAG_SET_PHYMODE(phymode, val) WMI_SET_BITS(phymode, 0, 6, val) +/** Indicates that VDEV ID is in bit-map format + * If this flag is set, FW will determine the vdev IDs from the positions + * of the bits that are set, and use these vdev IDs for vdev restart. + * + * This flag should not be set from host unless FW has set the service bit + * WMI_SERVICE_MULTIPLE_VDEV_RESTART_BITMAP_SUPPORT to indicate it supports + * this interpretation of the vdev IDs as a bitmap. + * + * If this flag is set then below is the way it will be parsed + * vdev_ids[0] = 53 (0011 0101) -> indicates vdev 0,2,4,5 is set + * vdev_ids[1] = 53 (0000 0101) -> indicates vdev 32,34 is set + * similar to this the value can be extended in feature for more vdev's + * + * If flag is not se then default parsing will be as below + * vdev_ids[0] = 0 + * vdev_ids[1] = 2 + * vdev_ids[2] = 4 + * . + * . + * vdev_ids[5] = 34 + */ +#define WMI_MULTIPLE_VDEV_RESTART_FLAG_BITMAP_SUPPORT(flag) WMI_GET_BITS(flag, 2, 1) +#define WMI_MULTIPLE_VDEV_RESTART_FLAG_SET_BITMAP_SUPPORT(flag,val) WMI_SET_BITS(flag, 2, 1, val) + + /* This command is used whenever host wants to restart multiple * VDEVs using single command and the VDEV that are restarted will * need to have same properties they had before restart except for the @@ -33446,7 +33471,22 @@ typedef struct { A_UINT32 puncture_20mhz_bitmap; /* each bit indicates one 20 MHz BW punctured */ /* The TLVs follows this structure: - * A_UINT32 vdev_ids[]; <--- Array of VDEV ids. + * A_UINT32 vdev_ids[]; <--- Array of vdev IDs, or bitmap of vdev IDs + * In flags if WMI_MULTIPLE_VDEV_RESTART_FLAG_BITMAP_SUPPORT is set + * FW will interpret the vdev_ids values as a bitmap, and will use the + * position of all the bits set within the bitmap to determine the + * vdev IDs to use for vdev restart. + * If this flag is set then below is the way it will be parsed + * vdev_ids[0] = 53 (0011 0101) -> indicates vdev 0,2,4,5 is set + * vdev_ids[1] = 53 (0000 0101) -> indicates vdev 32,34 is set + * The array can be extended in feature for more vdevs. + * If this flag is not se then default parsing will be as below + * vdev_ids[0] = 0 + * vdev_ids[1] = 2 + * vdev_ids[2] = 4 + * . + * . + * vdev_ids[5] = 34 * wmi_channel chan; <------ WMI channel * A_UINT32 phymode_list[]; <-- Array of Phymode list, with * each phymode value stored in bits 5:0 of the A_UINT32. diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 22ed7147da..72738680e2 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_ 1213 +#define __WMI_REVISION_ 1214 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work