Browse Source

qcacmn: Add extract API for UTF event to support TLV and Non-TLV targets

Add extract API for handling UTF event data received from the target
for both TLV and non-TLV cases.

Change-Id: I62525d7c8663fe90e0e3e76cf5286bb9dc86acd0
CRs-Fixed: 1115293
Sathish Kumar 8 years ago
parent
commit
3541df9810

+ 3 - 0
wmi/inc/wmi_unified_api.h

@@ -1362,4 +1362,7 @@ QDF_STATUS wmi_extract_reg_cap_service_ready_ext(
 			void *wmi_hdl,
 			uint8_t *evt_buf, uint8_t phy_idx,
 			struct WMI_HOST_HAL_REG_CAPABILITIES_EXT *param);
+QDF_STATUS wmi_extract_pdev_utf_event(void *wmi_hdl,
+				      uint8_t *evt_buf,
+				      struct wmi_host_pdev_utf_event *param);
 #endif /* _WMI_UNIFIED_API_H_ */

+ 11 - 0
wmi/inc/wmi_unified_param.h

@@ -7214,4 +7214,15 @@ struct action_wakeup_set_param {
 	uint32_t action_category_map[WMI_SUPPORTED_ACTION_CATEGORY_ELE_LIST];
 };
 
+/**
+ * struct wmi_host_pdev_utf_event - Host defined struct to hold utf event data
+ * @data:        Pointer to data
+ * @datalen:     Data length
+ *
+ */
+struct wmi_host_pdev_utf_event {
+	uint8_t *data;
+	uint16_t datalen;
+};
+
 #endif /* _WMI_UNIFIED_PARAM_H_ */

+ 5 - 0
wmi/inc/wmi_unified_priv.h

@@ -1212,6 +1212,11 @@ QDF_STATUS (*extract_reg_cap_service_ready_ext)(
 			wmi_unified_t wmi_handle,
 			uint8_t *evt_buf, uint8_t phy_idx,
 			struct WMI_HOST_HAL_REG_CAPABILITIES_EXT *param);
+
+QDF_STATUS (*extract_pdev_utf_event)(wmi_unified_t wmi_hdl,
+				     uint8_t *evt_buf,
+				     struct wmi_host_pdev_utf_event *param);
+
 uint16_t (*wmi_set_htc_tx_tag)(wmi_unified_t wmi_handle,
 				wmi_buf_t buf, uint32_t cmd_id);
 };

+ 23 - 0
wmi/src/wmi_unified_api.c

@@ -6560,3 +6560,26 @@ QDF_STATUS wmi_extract_reg_cap_service_ready_ext(
 
 	return QDF_STATUS_E_FAILURE;
 }
+
+/**
+ * wmi_extract_pdev_utf_event() -
+ *       extract UTF data from pdev utf event
+ * @wmi_handle: wmi handle
+ * @param evt_buf: pointer to event buffer
+ * @param param: Pointer to hold evt buf
+ *
+ * Return: QDF_STATUS_SUCCESS for success or error code
+ */
+QDF_STATUS wmi_extract_pdev_utf_event(void *wmi_hdl,
+				      uint8_t *evt_buf,
+				      struct wmi_host_pdev_utf_event *param)
+{
+	wmi_unified_t wmi_handle = (wmi_unified_t) wmi_hdl;
+
+	if (wmi_handle->ops->extract_pdev_utf_event)
+		return wmi_handle->ops->extract_pdev_utf_event(
+				wmi_handle,
+				evt_buf, param);
+
+	return QDF_STATUS_E_FAILURE;
+}

+ 19 - 0
wmi/src/wmi_unified_non_tlv.c

@@ -7846,6 +7846,24 @@ static QDF_STATUS extract_atf_token_info_ev_non_tlv(
 	return QDF_STATUS_SUCCESS;
 }
 
+/**
+ * extract_pdev_utf_event_non_tlv() - extract UTF data info from event
+ * @wmi_handle: WMI handle
+ * @param evt_buf: Pointer to event buffer
+ * @param param: Pointer to hold data
+ *
+ * Return : QDF_STATUS_SUCCESS for success or error code
+ */
+static QDF_STATUS extract_pdev_utf_event_non_tlv(
+			wmi_unified_t wmi_handle,
+			uint8_t *evt_buf,
+			struct wmi_host_pdev_utf_event *event)
+{
+	event->data = evt_buf;
+
+	return QDF_STATUS_SUCCESS;
+}
+
 #ifdef WMI_INTERFACE_EVENT_LOGGING
 static bool is_management_record_non_tlv(uint32_t cmd_id)
 {
@@ -8087,6 +8105,7 @@ struct wmi_ops non_tlv_ops =  {
 	.extract_mu_db_entry = extract_mu_db_entry_non_tlv,
 	.extract_atf_peer_stats_ev = extract_atf_peer_stats_ev_non_tlv,
 	.extract_atf_token_info_ev = extract_atf_token_info_ev_non_tlv,
+	.extract_pdev_utf_event = extract_pdev_utf_event_non_tlv,
 	.wmi_set_htc_tx_tag = wmi_set_htc_tx_tag_non_tlv,
 };
 

+ 21 - 0
wmi/src/wmi_unified_tlv.c

@@ -12774,6 +12774,26 @@ static QDF_STATUS extract_chan_info_event_tlv(wmi_unified_t wmi_handle,
 	return QDF_STATUS_SUCCESS;
 }
 
+/**
+ * extract_pdev_utf_event_tlv() - extract UTF data info from event
+ * @wmi_handle: WMI handle
+ * @param evt_buf: Pointer to event buffer
+ * @param param: Pointer to hold data
+ *
+ * Return : QDF_STATUS_SUCCESS for success or error code
+ */
+static QDF_STATUS extract_pdev_utf_event_tlv(wmi_unified_t wmi_handle,
+			     uint8_t *evt_buf,
+			     struct wmi_host_pdev_utf_event *event)
+{
+	WMI_PDEV_UTF_EVENTID_param_tlvs *param_buf;
+
+	param_buf = (WMI_PDEV_UTF_EVENTID_param_tlvs *)evt_buf;
+	event->data = param_buf->data;
+	event->datalen = param_buf->num_data;
+
+	return QDF_STATUS_SUCCESS;
+}
 /**
  * extract_channel_hopping_event_tlv() - extract channel hopping param
  * from event
@@ -13382,6 +13402,7 @@ struct wmi_ops tlv_ops =  {
 				extract_mac_phy_cap_service_ready_ext_tlv,
 	.extract_reg_cap_service_ready_ext =
 				extract_reg_cap_service_ready_ext_tlv,
+	.extract_pdev_utf_event = extract_pdev_utf_event_tlv,
 	.wmi_set_htc_tx_tag = wmi_set_htc_tx_tag_tlv,
 };