qcacmn: Add support to fetch min and max tx power
Add support to fetch min and max tx power from target for
a given set of mcs, nss, chainmask, bw, and other rate flags.
Change-Id: Iafe082db81503a52bdc704d4b71d86d23788fddb
CRs-Fixed: 2061802
diff --git a/wmi_unified_param.h b/wmi_unified_param.h
index 3e5d23a..683f4fb 100644
--- a/wmi_unified_param.h
+++ b/wmi_unified_param.h
@@ -4231,14 +4231,78 @@
};
/**
+ * enum wmi_host_packet_power_rate_flags: packer power rate flags
+ * @WMI_HOST_FLAG_RTSENA: RTS enabled
+ * @WMI_HOST_FLAG_CTSENA: CTS enabled
+ * @WMI_HOST_FLAG_STBC: STBC is set
+ * @WMI_HOST_FLAG_LDPC: LDPC is set
+ * @WMI_HOST_FLAG_TXBF: Tx Bf enabled
+ * @WMI_HOST_FLAG_MU2: MU2 data
+ * @WMI_HOST_FLAG_MU3: MU3 data
+ * @WMI_HOST_FLAG_SERIES1: Rate series 1
+ * @WMI_HOST_FLAG_SGI: Short gaurd interval
+ */
+enum wmi_host_packet_power_rate_flags {
+ WMI_HOST_FLAG_RTSENA = 0x0001,
+ WMI_HOST_FLAG_CTSENA = 0x0002,
+ WMI_HOST_FLAG_STBC = 0x0004,
+ WMI_HOST_FLAG_LDPC = 0x0008,
+ WMI_HOST_FLAG_TXBF = 0x0010,
+ WMI_HOST_FLAG_MU2 = 0x0020,
+ WMI_HOST_FLAG_MU3 = 0x0040,
+ WMI_HOST_FLAG_SERIES1 = 0x0080,
+ WMI_HOST_FLAG_SGI = 0x0100,
+};
+
+/**
+ * enum wmi_host_su_mu_ofdma_flags: packer power su mu ofdma flags
+ * @WMI_HOST_FLAG_SU: SU Data
+ * @WMI_HOST_FLAG_DL_MU_MIMO_AC: DL AC MU data
+ * @WMI_HOST_FLAG_DL_MU_MIMO_AX: DL AX MU data
+ * @WMI_HOST_FLAG_DL_OFDMA: DL OFDMA data
+ * @WMI_HOST_FLAG_UL_OFDMA: UL OFDMA data
+ * @WMI_HOST_FLAG_UL_MU_MIMO: UL MU data
+ */
+enum wmi_host_su_mu_ofdma_flags {
+ WMI_HOST_FLAG_SU = 0x0001,
+ WMI_HOST_FLAG_DL_MU_MIMO_AC = 0x0002,
+ WMI_HOST_FLAG_DL_MU_MIMO_AX = 0x0003,
+ WMI_HOST_FLAG_DL_OFDMA = 0x0004,
+ WMI_HOST_FLAG_UL_OFDMA = 0x0005,
+ WMI_HOST_FLAG_UL_MU_MIMO = 0x0006,
+};
+
+/**
+ * enum wmi_host_preamble_type: preamble type
+ * @WMI_HOST_PREAMBLE_OFDM: ofdm rate
+ * @WMI_HOST_PREAMBLE_CCK: cck rate
+ * @WMI_HOST_PREAMBLE_HT: ht rate
+ * @WMI_HOST_PREAMBLE_VHT: vht rate
+ * @WMI_HOST_PREAMBLE_HE: 11ax he rate
+ */
+enum wmi_host_preamble_type {
+ WMI_HOST_PREAMBLE_OFDM = 0,
+ WMI_HOST_PREAMBLE_CCK = 1,
+ WMI_HOST_PREAMBLE_HT = 2,
+ WMI_HOST_PREAMBLE_VHT = 3,
+ WMI_HOST_PREAMBLE_HE = 4,
+};
+
+/**
* struct packet_power_info_params - packet power info params
+ * @chainmask: chain mask
+ * @chan_width: channel bandwidth
* @rate_flags: rate flags
+ * @su_mu_ofdma: su/mu/ofdma flags
* @nss: number of spatial streams
* @preamble: preamble
* @hw_rate:
*/
struct packet_power_info_params {
+ uint16_t chainmask;
+ uint16_t chan_width;
uint16_t rate_flags;
+ uint16_t su_mu_ofdma;
uint16_t nss;
uint16_t preamble;
uint16_t hw_rate;
@@ -5808,13 +5872,25 @@
} wmi_host_pdev_nfcal_power_all_channels_event;
/**
+ * enum wmi_host_pdev_tpc_event_offset: offsets of TPC events
+ * @WMI_HOST_TX_POWER_MAX: offset of max tx power
+ * @WMI_HOST_TX_POWER_MIN: offset of min tx power
+ * @WMI_HOST_TX_POWER_LEN: size of tpc values
+ */
+enum wmi_host_pdev_tpc_event_offset {
+ WMI_HOST_TX_POWER_MAX,
+ WMI_HOST_TX_POWER_MIN,
+ WMI_HOST_TX_POWER_LEN,
+};
+
+/**
* struct wmi_host_pdev_tpc_event - WMI host pdev TPC event
* @pdev_id: pdev_id
* @tpc:
*/
typedef struct {
uint32_t pdev_id;
- uint32_t tpc[1];
+ int32_t tpc[WMI_HOST_TX_POWER_LEN];
} wmi_host_pdev_tpc_event;
/**