Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 866cdf19 authored by spuligil's avatar spuligil Committed by nshrivas
Browse files

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
parent 19440b92
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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 *******/
+26 −0
Original line number Diff line number Diff line
@@ -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
}
+152 −0
Original line number Diff line number Diff line
@@ -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";
+1 −1
Original line number Diff line number Diff line
@@ -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