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 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 4d580c9cb2..a973e05aec 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. @@ -33403,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 @@ -33433,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. @@ -34944,6 +34997,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..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_ 1211 +#define __WMI_REVISION_ 1214 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work