ソースを参照

qcacld-3.0: CL 1491974 - update fw common interface files

qcacld-2.0 to qcacld-3.0 propagation

Add new WMI event for tx power stats.

Change-Id: Ic14b1c3c3538f5e1a62b69535c27108152f7076d
CRs-Fixed: 865207
Anurag Chouhan 9 年 前
コミット
90c1a18590
3 ファイル変更49 行追加33 行削除
  1. 10 3
      target/inc/wmi_tlv_defs.h
  2. 38 29
      target/inc/wmi_unified.h
  3. 1 1
      target/inc/wmi_version.h

+ 10 - 3
target/inc/wmi_tlv_defs.h

@@ -699,6 +699,7 @@ typedef enum {
 	WMITLV_TAG_STRUC_WMI_HAL_REG_CAPABILITIES_EXT,
 	WMITLV_TAG_STRUC_WMI_SOC_HAL_REG_CAPABILITIES,
 	WMITLV_TAG_STRUC_wmi_vdev_wisa_cmd_fixed_param,
+	WMITLV_TAG_STRUC_wmi_tx_power_level_stats_evt_fixed_param,
 } WMITLV_TAG_ID;
 
 /*
@@ -1129,7 +1130,8 @@ typedef enum {
 	OP(WMI_NDP_END_INDICATION_EVENTID) \
 	OP(WMI_PDEV_SET_HW_MODE_RESP_EVENTID) \
 	OP(WMI_PDEV_HW_MODE_TRANSITION_EVENTID) \
-	OP(WMI_PDEV_SET_MAC_CONFIG_RESP_EVENTID)
+	OP(WMI_PDEV_SET_MAC_CONFIG_RESP_EVENTID) \
+	OP(WMI_RADIO_TX_POWER_LEVEL_STATS_EVENTID)
 
 /* TLV definitions of WMI commands */
 
@@ -3198,8 +3200,7 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_LINK_STATS_EVENTID);
 #define WMITLV_TABLE_WMI_RADIO_LINK_STATS_EVENTID(id,op,buf,len) \
 	WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_radio_link_stats_event_fixed_param, wmi_radio_link_stats_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
 	WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_radio_link_stats, radio_stats, WMITLV_SIZE_VAR) \
-	WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, wmi_channel_stats, channel_stats, WMITLV_SIZE_VAR) \
-	WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, ext_tx_time_per_power_level, WMITLV_SIZE_VAR)
+	WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_STRUC, wmi_channel_stats, channel_stats, WMITLV_SIZE_VAR)
 
 WMITLV_CREATE_PARAM_STRUC(WMI_RADIO_LINK_STATS_EVENTID);
 
@@ -3637,6 +3638,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PEER_STA_PS_STATECHG_EVENTID);
 	WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_inst_rssi_stats_resp_fixed_param, wmi_inst_rssi_stats_resp_fixed_param, fixed_param, WMITLV_SIZE_FIX)
 WMITLV_CREATE_PARAM_STRUC(WMI_INST_RSSI_STATS_EVENTID);
 
+#define WMITLV_TABLE_WMI_RADIO_TX_POWER_LEVEL_STATS_EVENTID(id, op, buf, len) \
+	WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_tx_power_level_stats_evt_fixed_param, wmi_tx_power_level_stats_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+	WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, tx_time_per_power_level, WMITLV_SIZE_VAR)
+WMITLV_CREATE_PARAM_STRUC(WMI_RADIO_TX_POWER_LEVEL_STATS_EVENTID)
+
+
 #ifdef __cplusplus
 }
 #endif

+ 38 - 29
target/inc/wmi_unified.h

@@ -1168,9 +1168,12 @@ typedef enum {
 	/** Event indicating the DIAG logs/events supported by FW */
 	WMI_DIAG_EVENT_LOG_SUPPORTED_EVENTID,
 
-	/* Instantaneous RSSI event */
+	/** Instantaneous RSSI event */
 	WMI_INST_RSSI_STATS_EVENTID,
 
+	/** FW update tx power levels event */
+	WMI_RADIO_TX_POWER_LEVEL_STATS_EVENTID,
+
 	/** NLO specific events */
 	/** NLO match event after the first match */
 	WMI_NLO_MATCH_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_NLO_OFL),
@@ -4425,42 +4428,48 @@ typedef struct {
 	/** number of channels */
 	A_UINT32 num_channels;
 	/*
-	 * tx time (in milliseconds) per TPC level
-	 * TPC levels require a board-specific translation to determine what
-	 * actual power corresponds to each power level.
-	 * Just as the host has a BDF file available, the host should also have
-	 * a data file available that provides the
-	 *     power level --> power
-	 * translations.
+	 * tx time per TPC level - DEPRECATED
+	 * This field is deprecated.
+	 * It is superseded by the WMI_RADIO_TX_POWER_LEVEL_STATS_EVENTID
+	 * message.
 	 */
 	A_UINT32 tx_time_per_tpc[MAX_TPC_LEVELS];
+} wmi_radio_link_stats;
+
+/** tx time per power level statistics */
+typedef struct {
 	/*
-	 * number of tx power levels, including both tx_time_per_tpc and
-	 * ext_tx_time_per_power_level
-	 * Each power level consumes one A_UINT32.
-	 * If num_tx_power_levels <= MAX_TPC_LEVELs, only tx_time_per_tpc is
-	 * used.
-	 * If num_tx_power_levels > MAX_TPC_LEVELS, the first MAX_TPC_LEVELS
-	 * values
-	 * are stored in tx_time_per_tpc, and the remaining
-	 * (num_tx_power_levels - MAX_TPC_LEVELS) values are stored in
-	 * ext_tx_time_per_power_level.
+	 * TLV tag and len; tag equals
+	 * WMITLV_TAG_STRUC_wmi_tx_power_level_stats_evt_fixed_param
 	 */
+	A_UINT32 tlv_header;
+	/* total number of tx power levels */
+	A_UINT32 total_num_tx_power_levels;
+	/* number of tx power levels that are carried in this event */
 	A_UINT32 num_tx_power_levels;
+	/*
+	 * offset of current stats
+	 * If ((num_tx_power_levels + power_level_offset)) ==
+	 *     total_num_tx_power_levels)
+	 * this message completes the report of tx time per power levels.
+	 * Otherwise, additional WMI_RADIO_TX_POWER_LEVEL_STATS_EVENTID
+	 * messages will be sent by the target to deliver the remainder of the
+	 * tx time per power level stats.
+	 */
+	A_UINT32 power_level_offset;
 	/*
 	 * This TLV will be followed by a TLV containing a variable-length
-	 * array of A_UINT32 with any additional tx time per power level data,
-	 * if there are more than MAX_TPC_LEVELS elements of tx time per TPC to
-	 * report. Note that at most one wmi_radio_link_stats object will be
-	 * present in the WMI_RADIO_LINK_STATS message. Thus, even though there
-	 * is only one ext_tx_time_per_power_level array in the
-	 * WMI_RADIO_LINK_STATS message, it only holds the extra data for a
-	 * single wmi_radio_link_stats object.
-	 *
-	 * A_UINT32
-	 * ext_tx_time_per_power_level[num_tx_power_levels - MAX_TPC_LEVELS]
+	 * array of A_UINT32 with tx time per power level data
+	 *  A_UINT32 tx_time_per_power_level[num_tx_power_levels]
+	 * The tx time is in units of milliseconds.
+	 * The power levels are board-specific values; a board-specific
+	 * translation has to be applied to determine what actual power
+	 * corresponds to each power level.
+	 * Just as the host has a BDF file available, the host should also have
+	 * a data file available that provides the power level to power
+	 * translations.
 	 */
-} wmi_radio_link_stats;
+} wmi_tx_power_level_stats_evt_fixed_param;
 
 /** Radio statistics (once started) do not stop or get reset unless wifi_clear_link_stats is invoked */
 typedef struct {

+ 1 - 1
target/inc/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_ 235
+#define __WMI_REVISION_ 236
 
 /** The Version Namespace should not be normally changed. Only
  *  host and firmware of the same WMI namespace will work