소스 검색

qcacmn: Send unified ll_stats and get_station request over qmi

Send unified ll_stats and get_stats request over qmi based on INI
configuration.

Change-Id: Icc43352c1ba19696148619100ee27fda4d5ffb41
CRs-Fixed: 2791043
Bapiraju Alla 4 년 전
부모
커밋
7af72345b6
4개의 변경된 파일26개의 추가작업 그리고 10개의 파일을 삭제
  1. 3 1
      wmi/inc/wmi_unified_api.h
  2. 2 1
      wmi/inc/wmi_unified_priv.h
  3. 4 2
      wmi/src/wmi_unified_api.c
  4. 17 6
      wmi/src/wmi_unified_tlv.c

+ 3 - 1
wmi/inc/wmi_unified_api.h

@@ -1473,12 +1473,14 @@ QDF_STATUS wmi_unified_process_ll_stats_get_cmd(wmi_unified_t wmi_handle,
  *                                              get station request
  * @wmi_handle: wmi handle
  * @get_req: unified ll stats and get station request command params
+ * @is_always_over_qmi: flag to send stats request always over qmi
  *
  * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
  */
 QDF_STATUS wmi_process_unified_ll_stats_get_sta_cmd(
 				wmi_unified_t wmi_handle,
-				const struct ll_stats_get_params *get_req);
+				const struct ll_stats_get_params *get_req,
+				bool is_always_over_qmi);
 #endif /* FEATURE_CLUB_LL_STATS_AND_GET_STATION */
 #endif /* WLAN_FEATURE_LINK_LAYER_STATS */
 

+ 2 - 1
wmi/inc/wmi_unified_priv.h

@@ -820,7 +820,8 @@ QDF_STATUS (*send_process_ll_stats_get_cmd)(wmi_unified_t wmi_handle,
 				const struct ll_stats_get_params *get_req);
 #ifdef FEATURE_CLUB_LL_STATS_AND_GET_STATION
 QDF_STATUS (*send_unified_ll_stats_get_sta_cmd)(wmi_unified_t wmi_handle,
-				const struct ll_stats_get_params *get_req);
+				const struct ll_stats_get_params *get_req,
+				bool is_always_over_qmi);
 #endif
 #endif
 

+ 4 - 2
wmi/src/wmi_unified_api.c

@@ -773,11 +773,13 @@ QDF_STATUS wmi_unified_process_ll_stats_get_cmd(wmi_unified_t wmi_handle,
 #ifdef FEATURE_CLUB_LL_STATS_AND_GET_STATION
 QDF_STATUS wmi_process_unified_ll_stats_get_sta_cmd(
 				wmi_unified_t wmi_handle,
-				const struct ll_stats_get_params *get_req)
+				const struct ll_stats_get_params *get_req,
+				bool is_always_over_qmi)
 {
 	if (wmi_handle->ops->send_unified_ll_stats_get_sta_cmd)
 		return wmi_handle->ops->send_unified_ll_stats_get_sta_cmd(
-						wmi_handle, get_req);
+						wmi_handle, get_req,
+						is_always_over_qmi);
 
 	return QDF_STATUS_E_FAILURE;
 }

+ 17 - 6
wmi/src/wmi_unified_tlv.c

@@ -5229,18 +5229,20 @@ static QDF_STATUS send_process_ll_stats_get_cmd_tlv(wmi_unified_t wmi_handle,
  *                                           station request
  * @wmi_handle: wmi handle
  * @get_req: ll stats get request command params
+ * @is_always_over_qmi: flag to send stats request always over qmi
  *
  * Return: QDF_STATUS_SUCCESS for success or error code
  */
 static QDF_STATUS send_unified_ll_stats_get_sta_cmd_tlv(
 				wmi_unified_t wmi_handle,
-				const struct ll_stats_get_params *get_req)
+				const struct ll_stats_get_params *get_req,
+				bool is_always_over_qmi)
 {
 	wmi_request_unified_ll_get_sta_cmd_fixed_param *unified_cmd;
 	int32_t len;
 	wmi_buf_t buf;
 	void *buf_ptr;
-	int ret;
+	QDF_STATUS ret;
 
 	len = sizeof(*unified_cmd);
 	buf = wmi_buf_alloc(wmi_handle, len);
@@ -5279,14 +5281,23 @@ static QDF_STATUS send_unified_ll_stats_get_sta_cmd_tlv(
 		  QDF_MAC_ADDR_REF(get_req->peer_macaddr.bytes));
 
 	wmi_mtrace(WMI_REQUEST_UNIFIED_LL_GET_STA_CMDID, get_req->vdev_id, 0);
-	ret = wmi_unified_cmd_send_pm_chk(wmi_handle, buf, len,
-					  WMI_REQUEST_UNIFIED_LL_GET_STA_CMDID);
-	if (ret) {
+
+	if (is_always_over_qmi && wmi_is_qmi_stats_enabled(wmi_handle)) {
+		ret = wmi_unified_cmd_send_over_qmi(
+					wmi_handle, buf, len,
+					WMI_REQUEST_UNIFIED_LL_GET_STA_CMDID);
+	} else {
+		ret = wmi_unified_cmd_send_pm_chk(
+					wmi_handle, buf, len,
+					WMI_REQUEST_UNIFIED_LL_GET_STA_CMDID);
+	}
+
+	if (QDF_IS_STATUS_ERROR(ret)) {
 		wmi_buf_free(buf);
 		return QDF_STATUS_E_FAILURE;
 	}
 
-	return QDF_STATUS_SUCCESS;
+	return ret;
 }
 #endif
 #endif /* WLAN_FEATURE_LINK_LAYER_STATS */