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
This commit is contained in:
spuligil 2020-06-04 12:00:35 -07:00 • committed by nshrivas
commit 866cdf19f5
4 changed files with 180 additions and 1 deletions

View file

@ -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 *******/

View file

@ -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
}

View file

@ -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";

View file

@ -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