浏览代码

qcacmn: Remove dependency on WMA layer for green AP component

Remove dependency on WMA layer for green AP component by registering
green AP events through target_if layer.

Change-Id: I8fe9079c6ba6b23cd5f1d98a7d1b333fde31f19b
CRs-Fixed: 2178143
Himanshu Agarwal 7 年之前
父节点
当前提交
157e47813d
共有 2 个文件被更改,包括 46 次插入0 次删除
  1. 15 0
      wmi_unified_api.c
  2. 31 0
      wmi_unified_tlv.c

+ 15 - 0
wmi_unified_api.c

@@ -7351,3 +7351,18 @@ QDF_STATUS wmi_unified_invoke_neighbor_report_cmd(void *wmi_hdl,
 
 
 	return QDF_STATUS_E_FAILURE;
 	return QDF_STATUS_E_FAILURE;
 }
 }
+
+#ifdef WLAN_SUPPORT_GREEN_AP
+QDF_STATUS wmi_extract_green_ap_egap_status_info(
+		void *wmi_hdl, uint8_t *evt_buf,
+		struct wlan_green_ap_egap_status_info *egap_status_info_params)
+{
+	wmi_unified_t wmi_handle = (wmi_unified_t)wmi_hdl;
+
+	if (wmi_handle->ops->extract_green_ap_egap_status_info)
+		return wmi_handle->ops->extract_green_ap_egap_status_info(
+				evt_buf, egap_status_info_params);
+
+	return QDF_STATUS_E_FAILURE;
+}
+#endif

+ 31 - 0
wmi_unified_tlv.c

@@ -21665,6 +21665,35 @@ static QDF_STATUS send_invoke_neighbor_report_cmd_tlv(wmi_unified_t wmi_handle,
 	return status;
 	return status;
 }
 }
 
 
+#ifdef WLAN_SUPPORT_GREEN_AP
+static QDF_STATUS extract_green_ap_egap_status_info_tlv(
+		uint8_t *evt_buf,
+		struct wlan_green_ap_egap_status_info *egap_status_info_params)
+{
+	WMI_AP_PS_EGAP_INFO_EVENTID_param_tlvs *param_buf;
+	wmi_ap_ps_egap_info_event_fixed_param  *egap_info_event;
+	wmi_ap_ps_egap_info_chainmask_list *chainmask_event;
+
+	param_buf = (WMI_AP_PS_EGAP_INFO_EVENTID_param_tlvs *)evt_buf;
+	if (!param_buf) {
+		WMI_LOGE("Invalid EGAP Info status event buffer");
+		return QDF_STATUS_E_INVAL;
+	}
+
+	egap_info_event = (wmi_ap_ps_egap_info_event_fixed_param *)
+				param_buf->fixed_param;
+	chainmask_event = (wmi_ap_ps_egap_info_chainmask_list *)
+				param_buf->chainmask_list;
+
+	egap_status_info_params->status = egap_info_event->status;
+	egap_status_info_params->mac_id = chainmask_event->mac_id;
+	egap_status_info_params->tx_chainmask = chainmask_event->tx_chainmask;
+	egap_status_info_params->rx_chainmask = chainmask_event->rx_chainmask;
+
+	return QDF_STATUS_SUCCESS;
+}
+#endif
+
 struct wmi_ops tlv_ops =  {
 struct wmi_ops tlv_ops =  {
 	.send_vdev_create_cmd = send_vdev_create_cmd_tlv,
 	.send_vdev_create_cmd = send_vdev_create_cmd_tlv,
 	.send_vdev_delete_cmd = send_vdev_delete_cmd_tlv,
 	.send_vdev_delete_cmd = send_vdev_delete_cmd_tlv,
@@ -21842,6 +21871,8 @@ struct wmi_ops tlv_ops =  {
 #ifdef WLAN_SUPPORT_GREEN_AP
 #ifdef WLAN_SUPPORT_GREEN_AP
 	.send_egap_conf_params_cmd = send_egap_conf_params_cmd_tlv,
 	.send_egap_conf_params_cmd = send_egap_conf_params_cmd_tlv,
 	.send_green_ap_ps_cmd = send_green_ap_ps_cmd_tlv,
 	.send_green_ap_ps_cmd = send_green_ap_ps_cmd_tlv,
+	.extract_green_ap_egap_status_info =
+			extract_green_ap_egap_status_info_tlv,
 #endif
 #endif
 	.send_fw_profiling_cmd = send_fw_profiling_cmd_tlv,
 	.send_fw_profiling_cmd = send_fw_profiling_cmd_tlv,
 	.send_csa_offload_enable_cmd = send_csa_offload_enable_cmd_tlv,
 	.send_csa_offload_enable_cmd = send_csa_offload_enable_cmd_tlv,