diff --git a/fw/wmi_services.h b/fw/wmi_services.h index e027cefe8d9f..c348d821d56c 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 5d84ae9ee180..a973e05aeccb 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 22ed7147da61..72738680e292 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