Эх сурвалжийг харах

qcacmn: Add wma apis for High Latency systems (Part 4 - HL Datapath)

Initialize bad peer tx control data structure in WMA,
send down the initial configuration info to fw and
configure the peer status update setting in the tx_rx module.

CRs-Fixed: 975526
Change-Id: Ib380e10a0b343b6a8f9c2c0bf6d6dd602d2601c5
Poddar, Siddarth 9 жил өмнө
parent
commit
794b996b00

+ 3 - 0
wmi_unified_api.h

@@ -438,6 +438,9 @@ QDF_STATUS wmi_unified_lro_config_cmd(void *wmi_hdl,
 QDF_STATUS wmi_unified_set_thermal_mgmt_cmd(void *wmi_hdl,
 				struct thermal_cmd_params *thermal_info);
 
+QDF_STATUS wmi_unified_peer_rate_report_cmd(void *wmi_hdl,
+		struct wmi_peer_rate_report_params *rate_report_params);
+
 QDF_STATUS wmi_unified_set_mcc_channel_time_quota_cmd
 	(void *wmi_hdl,
 	uint32_t adapter_1_chan_freq,

+ 62 - 0
wmi_unified_param.h

@@ -197,6 +197,7 @@
 #define WMI_HOST_TPC_TX_NUM_CHAIN	4
 #define WMI_HOST_RXG_CAL_CHAN_MAX	4
 #define WMI_HOST_MAX_NUM_CHAINS	4
+#define WMI_MAX_NUM_OF_RATE_THRESH   4
 
 #include "qdf_atomic.h"
 
@@ -1339,6 +1340,67 @@ struct ocb_config_param {
 	void *dcc_ndl_active_state_list;
 };
 
+enum wmi_peer_rate_report_cond_phy_type {
+	WMI_PEER_RATE_REPORT_COND_11B = 0,
+	WMI_PEER_RATE_REPORT_COND_11A_G,
+	WMI_PEER_RATE_REPORT_COND_11N,
+	WMI_PEER_RATE_REPORT_COND_11AC,
+	WMI_PEER_RATE_REPORT_COND_MAX_NUM
+};
+
+/**
+ * struct report_rate_delta - peer specific parameters
+ * @percent: percentage
+ * @delta_min: rate min delta
+ */
+struct report_rate_delta {
+	A_UINT32 percent; /* in unit of 12.5% */
+	A_UINT32 delta_min;  /* in unit of Mbps */
+};
+
+/**
+ * struct report_rate_per_phy - per phy report parameters
+ * @cond_flags: condition flag val
+ * @delta: rate delta
+ * @report_rate_threshold: rate threshold
+ */
+struct report_rate_per_phy {
+	/*
+	 * PEER_RATE_REPORT_COND_FLAG_DELTA,
+	 * PEER_RATE_REPORT_COND_FLAG_THRESHOLD
+	 * Any of these two conditions or both of
+	 * them can be set.
+	 */
+	A_UINT32 cond_flags;
+	struct report_rate_delta delta;
+	/*
+	 * In unit of Mbps. There are at most 4 thresholds
+	 * If the threshold count is less than 4, set zero to
+	 * the one following the last threshold
+	 */
+	A_UINT32 report_rate_threshold[WMI_MAX_NUM_OF_RATE_THRESH];
+};
+
+/**
+ * struct peer_rate_report_params - peer rate report parameters
+ * @rate_report_enable: enable rate report param
+ * @backoff_time: backoff time
+ * @timer_period: timer
+ * @report_per_phy: report per phy type
+ */
+struct wmi_peer_rate_report_params {
+	A_UINT32 rate_report_enable;
+	A_UINT32 backoff_time;            /* in unit of msecond */
+	A_UINT32 timer_period;            /* in unit of msecond */
+	/*
+	 *In the following field, the array index means the phy type,
+	 * please see enum wmi_peer_rate_report_cond_phy_type for detail
+	 */
+	struct report_rate_per_phy report_per_phy[
+				WMI_PEER_RATE_REPORT_COND_MAX_NUM];
+
+};
+
 /**
  * struct t_thermal_cmd_params - thermal command parameters
  * @min_temp: minimum temprature

+ 3 - 0
wmi_unified_priv.h

@@ -314,6 +314,9 @@ QDF_STATUS (*send_lro_config_cmd)(wmi_unified_t wmi_handle,
 QDF_STATUS (*send_set_thermal_mgmt_cmd)(wmi_unified_t wmi_handle,
 				struct thermal_cmd_params *thermal_info);
 
+QDF_STATUS (*send_peer_rate_report_cmd)(wmi_unified_t wmi_handle,
+	 struct wmi_peer_rate_report_params *rate_report_params);
+
 QDF_STATUS (*send_set_mcc_channel_time_quota_cmd)
 	(wmi_unified_t wmi_handle,
 	uint32_t adapter_1_chan_freq,

+ 3 - 0
wmi_unified_tlv.h

@@ -190,6 +190,9 @@ QDF_STATUS send_lro_config_cmd_tlv(wmi_unified_t wmi_handle,
 QDF_STATUS send_set_thermal_mgmt_cmd_tlv(wmi_unified_t wmi_handle,
 				struct thermal_cmd_params *thermal_info);
 
+QDF_STATUS send_peer_rate_report_cmd_tlv(wmi_unified_t wmi_handle,
+	 struct wmi_peer_rate_report_params *rate_report_params);
+
 QDF_STATUS send_set_mcc_channel_time_quota_cmd_tlv
 	(wmi_unified_t wmi_handle,
 	uint32_t adapter_1_chan_freq,