diff options
author | spuligil <spuligil@codeaurora.org> | 2020-06-04 12:00:35 -0700 |
---|---|---|
committer | Victor Hsu <hsuvictor@google.com> | 2020-07-01 06:10:22 +0000 |
commit | 9c92d4ee6eac1585f64eb22fcef1d663c1bb2184 (patch) | |
tree | acfa6a68289f3464fc1125c9b04dcee291e44e96 | |
parent | ac31ff7c211f8f1df2e18b965dba18155657fb9f (diff) | |
download | wlan-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.h | 1 | ||||
-rw-r--r-- | fw/wmi_tlv_defs.h | 26 | ||||
-rw-r--r-- | fw/wmi_unified.h | 152 | ||||
-rw-r--r-- | fw/wmi_version.h | 2 |
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 |