summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorspuligil <spuligil@codeaurora.org>2020-06-04 12:00:35 -0700
committerVictor Hsu <hsuvictor@google.com>2020-07-01 06:10:22 +0000
commit9c92d4ee6eac1585f64eb22fcef1d663c1bb2184 (patch)
treeacfa6a68289f3464fc1125c9b04dcee291e44e96
parentac31ff7c211f8f1df2e18b965dba18155657fb9f (diff)
downloadwlan-fw-api-9c92d4ee6eac1585f64eb22fcef1d663c1bb2184.tar.gz
fw-api: CL 10576300 - update fw common interface files
Change-Id: Ida2132ec17ed16d5c0b3cd4d5c6ff016e7ac4588 WMI: add PDEV_GET_TPC_STATS CMD,EVENT msg defs CRs-Fixed: 2262693 Signed-off-by: Victor Hsu <hsuvictor@google.com>
-rw-r--r--fw/wmi_services.h1
-rw-r--r--fw/wmi_tlv_defs.h26
-rw-r--r--fw/wmi_unified.h152
-rw-r--r--fw/wmi_version.h2
4 files changed, 180 insertions, 1 deletions
diff --git a/fw/wmi_services.h b/fw/wmi_services.h
index b2b02cb..92cecb5 100644
--- a/fw/wmi_services.h
+++ b/fw/wmi_services.h
@@ -443,6 +443,7 @@ typedef enum {
WMI_SERVICE_MU_PREAMBLE_PUNCTURE_SUPPORT = 248, /* Indicates FW supports MU preamble puncture */
WMI_SERVICE_SRG_SRP_SPATIAL_REUSE_SUPPORT = 249, /* Support for SRG, SRP based spatial reuse support */
WMI_REQUEST_CTRL_PATH_STATS_REQUEST = 250, /* FW supports control path stats */
+ WMI_SERVICE_TPC_STATS_EVENT = 251, /* FW support to dump the TPC tables */
/******* ADD NEW SERVICES UP TO 256 HERE *******/
diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h
index c9bdc6f..33ce585 100644
--- a/fw/wmi_tlv_defs.h
+++ b/fw/wmi_tlv_defs.h
@@ -199,6 +199,7 @@ typedef enum {
WMITLV_TAG_ARRAY_BYTE,
WMITLV_TAG_ARRAY_STRUC,
WMITLV_TAG_ARRAY_FIXED_STRUC,
+ WMITLV_TAG_ARRAY_INT16,
WMITLV_TAG_LAST_ARRAY_ENUM = 31, /* Last entry of ARRAY type tags */
WMITLV_TAG_STRUC_wmi_service_ready_event_fixed_param,
WMITLV_TAG_STRUC_HAL_REG_CAPABILITIES,
@@ -1081,6 +1082,12 @@ typedef enum {
WMITLV_TAG_STRUC_wmi_request_ctrl_path_stats_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_ctrl_path_stats_event_fixed_param,
WMITLV_TAG_STRUC_wmi_ctrl_path_pdev_stats_struct,
+ WMITLV_TAG_STRUC_wmi_pdev_get_tpc_stats_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_pdev_get_tpc_stats_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_tpc_configs,
+ WMITLV_TAG_STRUC_wmi_max_reg_power_allowed,
+ WMITLV_TAG_STRUC_wmi_tpc_rates_array,
+ WMITLV_TAG_STRUC_wmi_tpc_ctl_pwr_table,
} WMITLV_TAG_ID;
/*
@@ -1526,6 +1533,7 @@ typedef enum {
OP(WMI_PDEV_SET_NON_SRG_OBSS_COLOR_ENABLE_BITMAP_CMDID) \
OP(WMI_PDEV_SET_NON_SRG_OBSS_BSSID_ENABLE_BITMAP_CMDID) \
OP(WMI_REQUEST_CTRL_PATH_STATS_CMDID) \
+ OP(WMI_PDEV_GET_TPC_STATS_CMDID) \
/* add new CMD_LIST elements above this line */
@@ -1777,6 +1785,7 @@ typedef enum {
OP(WMI_PDEV_SSCAN_FW_PARAM_EVENTID) \
OP(WMI_ROAM_CAPABILITY_REPORT_EVENTID) \
OP(WMI_CTRL_PATH_STATS_EVENTID) \
+ OP(WMI_PDEV_GET_TPC_STATS_EVENTID) \
/* add new EVT_LIST elements above this line */
@@ -4428,6 +4437,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_NON_SRG_OBSS_COLOR_ENABLE_BITMAP_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_non_srg_obss_bssid_enable_bitmap_cmd_fixed_param, wmi_pdev_non_srg_obss_bssid_enable_bitmap_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_NON_SRG_OBSS_BSSID_ENABLE_BITMAP_CMDID);
+/* PDEV Get TPC STATS Cmd */
+#define WMITLV_TABLE_WMI_PDEV_GET_TPC_STATS_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_get_tpc_stats_cmd_fixed_param, wmi_pdev_get_tpc_stats_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_GET_TPC_STATS_CMDID);
+
/************************** TLV definitions of WMI events *******************************/
@@ -5963,6 +5977,18 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SSCAN_FW_PARAM_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_capability_report_event_fixed_param, wmi_roam_capability_report_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_CAPABILITY_REPORT_EVENTID);
+/* PDEV TPC STATS Event */
+#define WMITLV_TABLE_WMI_PDEV_GET_TPC_STATS_EVENTID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_get_tpc_stats_event_fixed_param, wmi_pdev_get_tpc_stats_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_tpc_configs, tpc_configs, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_max_reg_power_allowed, regulatory_power, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_INT16, A_INT16, reg_buf, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_tpc_rates_array, tpc_rates, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_INT16, A_UINT16, rates_buf, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_tpc_ctl_pwr_table, ctl_power, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_INT8, ctl_buf, WMITLV_SIZE_VAR)
+WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_GET_TPC_STATS_EVENTID);
+
#ifdef __cplusplus
}
diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h
index c2bdb29..5317398 100644
--- a/fw/wmi_unified.h
+++ b/fw/wmi_unified.h
@@ -434,6 +434,8 @@ typedef enum {
WMI_PDEV_SET_NON_SRG_OBSS_COLOR_ENABLE_BITMAP_CMDID,
/** OBSS BSSID enable bitmap for NON_SRG based spatial reuse feature */
WMI_PDEV_SET_NON_SRG_OBSS_BSSID_ENABLE_BITMAP_CMDID,
+ /** TPC stats display command */
+ WMI_PDEV_GET_TPC_STATS_CMDID,
/* VDEV (virtual device) specific commands */
/** vdev create */
@@ -1446,6 +1448,10 @@ typedef enum {
*/
WMI_PDEV_MULTIPLE_VDEV_RESTART_RESP_EVENTID,
+ /** WMI event in response to TPC STATS command */
+ WMI_PDEV_GET_TPC_STATS_EVENTID,
+
+
/* VDEV specific events */
/** VDEV started event in response to VDEV_START request */
WMI_VDEV_START_RESP_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_VDEV),
@@ -6940,6 +6946,151 @@ typedef struct {
wmi_mac_addr macaddr;
} wmi_pdev_div_get_rssi_antid_fixed_param;
+typedef enum {
+ WMI_TPC_STATS_EVENT_SEND_REG = 0x00000001,
+ WMI_TPC_STATS_EVENT_SEND_RATE = 0x00000002,
+ WMI_TPC_STATS_EVENT_SEND_CTL = 0x00000004,
+ WMI_TPC_STATS_EVENT_SEND_REG_RATE_CTL = 0x00000007, /* REG | RATE | CTL */
+} WMI_PDEV_TPC_STATS_PARAMS;
+
+typedef struct {
+ A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_get_tpc_stats_cmd_fixed_param */
+ /** pdev_id for identifying the MAC
+ * See macros starting with WMI_PDEV_ID_ for values.
+ */
+ A_UINT32 pdev_id;
+ /** parameter -
+ * This is to specify whether we want only the target power
+ * information (rates array) or the CTL power or the regulatory
+ * power information. At present, we send all of them.
+ */
+ A_UINT32 param; /* Currently expect WMI_TPC_STATS_EVENT_SEND_REG_RATE_CTL
+ * as a host specification that rates array, regulatory
+ * power array, and ctl power array are all to be sent.
+ * See WMI_PDEV_TPC_STATS_PARAMS.
+ */
+} wmi_pdev_get_tpc_stats_cmd_fixed_param;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_pdev_get_tpc_stats_event_fixed_param */
+ A_UINT32 pdev_id; /* pdev_id for identifying the MAC. See macros starting with WMI_PDEV_ID_ for values */
+ A_UINT32 end_of_event; /* The total response to the WMI command will be split into multiple event chunks to fit into the WMI svc msg size limit: 0 indicates more events to follow: 1 indicates end of event */
+ A_UINT32 event_count; /* Incremented for every event chunk for Host to know the sequence */
+ /* wmi_tpc_configs TLV to optionally follow */
+ /* wmi_max_reg_power_allowed TLVs to optionally follow */
+ /* wmi_tpc_rates_array TLVs to optionally follow */
+ /* wmi_tpc_ctl_pwr_table TLVs to optionally follow */
+} wmi_pdev_get_tpc_stats_event_fixed_param;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_tpc_configs */
+ A_UINT32 regDomain;
+ A_UINT32 chanFreq; /* current channel in MHz */
+ A_UINT32 phyMode; /* current phy mode - See WLAN_PHY_MODE for the different phy modes */
+ A_UINT32 maxAntennaGain; /* Maximum antenna gain for the current regulatory in 0.25 dBm steps */
+ A_UINT32 twiceMaxRDPower; /* Maximum transmit power allowed in the regulatory domain in 0.25 dBm steps */
+ A_INT32 userAntennaGain; /* User specified antenna gain in 0.25 dBm steps */
+ A_UINT32 powerLimit; /* The overall power limit in 0.25 dBm steps */
+ A_UINT32 rateMax; /* The total number of rates supported */
+ A_UINT32 numTxChain; /* The total number of active chains */
+ A_UINT32 ctl; /* See CONFORMANCE_TEST_LIMITS enumeration */
+ A_UINT32 flags; /* See WMI_TPC_CONFIG_EVENT_FLAG */
+} wmi_tpc_configs;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_max_reg_power_allowed */
+ A_UINT32 reg_power_type; /* 0: maxRegAllowedPower (1D array),
+ * 1: maxRegAllowedPowerAGCDD (2D array),
+ * 2: maxRegAllowedPowerAGSTBC (2D array),
+ * 3: maxRegAllowedPowerAGTXBF (2D array)
+ */
+ A_UINT32 reg_power_array_len; /* Length of the regulatory power array being sent in bytes */
+ A_UINT32 d1; /* the length of 1st (innermost) dimension array */
+ A_UINT32 d2; /* the length of 2nd dimension array */
+ A_UINT32 d3; /* the length of 3rd dimension array (for future use) */
+ A_UINT32 d4; /* the length of 4th dimension array (for future use) */
+ /*
+ * This TLV is followed by an A_INT16 TLV-array that will carry
+ * one of the four types of regulatory power arrays.
+ *
+ * The multi-dimensional regulatory power array will be communicated
+ * as a flat array: Host to stitch it back as 2D array.
+ * For an array[a][b][c][d], d1 = d, d2 = c, d3 = b, d4 = a
+ * For a 2D array, array[a][b], d1 = b, d2 = a, d3 = 1, d4 = 1
+ * The possible types of following A_INT16 TLV arrays are
+ * 1. A_INT16 maxRegAllowedPower[WHAL_TPC_TX_NUM_CHAIN];
+ * 2. A_INT16 maxRegAllowedPowerAGCDD[WHAL_TPC_TX_NUM_CHAIN - 1][WHAL_TPC_TX_NUM_CHAIN - 1];
+ * 3. A_INT16 maxRegAllowedPowerAGSTBC[WHAL_TPC_TX_NUM_CHAIN - 1][WHAL_TPC_TX_NUM_CHAIN - 1];
+ * 4. A_INT16 maxRegAllowedPowerAGTXBF[WHAL_TPC_TX_NUM_CHAIN - 1][WHAL_TPC_TX_NUM_CHAIN - 1];
+ * where WHAL_TPC_TX_NUM_CHAIN=2 for CYP and 8 for HK.
+ */
+} wmi_max_reg_power_allowed;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_tpc_rates_array */
+ A_UINT32 rate_array_type; /* 0: ratesArray,
+ * 1: ratesArray2 (for chain > 4),
+ * 2: dl_ofdma rate array
+ */
+ A_UINT32 rate_array_len;
+ /* This TLV will be followed by an A_UINT16 TLV array that will
+ * carry one of the types of TPC rate arrays.
+ * All the rates arrays are 1D arrays.
+ * The possible types of following A_UINT16 TLV arrays are
+ * 1. A_UINT16 ratesArray[WHAL_TPC_RATE_MAX];
+ * This array has to be referred when number of active chains is < 4
+ * 2. A_UINT16 ratesArray2[WHAL_TPC_RATE_MAX];
+ * This array has to be referred when number of active chains is > 4
+ * 3. A_UINT16 ratesArray_DL_OFDMA[72];
+ * WHAL_TPC_RATE_MAX is 748 for HK (considering PHY A0 8x8)
+ * WHAL_TPC_RATE_MAX is 188 for CYP (considering PHY A0 2x2)
+ * Each 16 bit value in the rates array carries both SU and MU
+ * target power information.
+ * Bits 0:7 contained the SU target power (signed value, 0.25 dBm units),
+ * bits 8:15 denote the MU target power (signed value, 0.25 dBm units).
+ */
+} wmi_tpc_rates_array;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_tpc_ctl_pwr_table */
+ A_UINT32 ctl_array_type; /* 0: ctl_array,
+ * 1: ctl_160 array,
+ * 2: ctl_dlOfdma array,
+ * 3: ctl_ulOfdma array
+ */
+ A_UINT32 ctl_array_len; /* Length of the CTL array being sent in bytes */
+ A_UINT32 end_of_ctl_pwr; /* Message MAY be split into smaller chunks
+ * to fit in the WMI svc msg size limit:
+ * 0 indicates more chunks of CTL info to follow,
+ * 1 indicates end of CTL info.
+ */
+ A_UINT32 ctl_pwr_count; /* Incremented for every CTL info chunk
+ * for Host to know the sequence.
+ */
+ A_UINT32 d1; /* the length of 1st (innermost) dimension array */
+ A_UINT32 d2; /* the length of 2nd dimension array */
+ A_UINT32 d3; /* the length of 3rd dimension array */
+ A_UINT32 d4; /* the length of 4th dimension array */
+ /* This TLV will be followed by an A_INT8 TLV-array that will
+ * carry one the types of CTL power arrays.
+ * The CTL array will be multi-dimensional, but will be communicated as
+ * a flat array; the host has to stitch it back into a 4D array.
+ * The possible types of following A_INT8 arrays are
+ * 1. A_INT8 ctlEdgePwrBF[WHAL_MAX_NUM_CHAINS][2][10][8];
+ * 2. A_INT8 ctlEdgePwr160[WHAL_MAX_NUM_CHAINS/2][2][2][4];
+ * 3. A_INT8 ctlEdgePwrBF_dlOFDMA[WHAL_MAX_NUM_CHAINS][2][3][8];
+ * For e.g., in ctlEdgePwrBF
+ * D4 = WHAL_MAX_NUM_CHAINS = 8 for HK, 2 for CYP, 4 for Pine
+ * D3 = BF on/off = 2
+ * D2 = 10 which the number of different tx modes,
+ * like cck, legacy, HT20, HT40, VHT80, etc.
+ * D1 = NSS = 8, number of spatial streams
+ * Total number of elements = D4*D3*D2*D1
+ * The same will apply for ctl_dlOfdma array, except that the values
+ * of d1,d2,d3,d4 will be different.
+ */
+} wmi_tpc_ctl_pwr_table;
+
typedef struct {
A_UINT32 tlv_header; /* WMITLV_TAG_STRUC_wmi_pdev_bss_chan_info_request_fixed_param */
A_UINT32 param; /* 1 = read only, 2= read and clear */
@@ -26324,6 +26475,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command)
WMI_RETURN_STRING(WMI_SIMULATION_TEST_CMDID);
WMI_RETURN_STRING(WMI_AUDIO_AGGR_SET_RTSCTS_CONFIG_CMDID);
WMI_RETURN_STRING(WMI_REQUEST_CTRL_PATH_STATS_CMDID);
+ WMI_RETURN_STRING(WMI_PDEV_GET_TPC_STATS_CMDID);
}
return "Invalid WMI cmd";
diff --git a/fw/wmi_version.h b/fw/wmi_version.h
index cc16442..a22508c 100644
--- a/fw/wmi_version.h
+++ b/fw/wmi_version.h
@@ -36,7 +36,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_ 844
+#define __WMI_REVISION_ 845
/** The Version Namespace should not be normally changed. Only
* host and firmware of the same WMI namespace will work