diff --git a/wmi/inc/wmi_unified_api.h b/wmi/inc/wmi_unified_api.h index 4775909227..cbcbe386f3 100644 --- a/wmi/inc/wmi_unified_api.h +++ b/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_ */ diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h index 16025fe525..78668f4f57 100644 --- a/wmi/inc/wmi_unified_param.h +++ b/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_ */ diff --git a/wmi/inc/wmi_unified_priv.h b/wmi/inc/wmi_unified_priv.h index c091ad19e3..6c503350ce 100644 --- a/wmi/inc/wmi_unified_priv.h +++ b/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); }; diff --git a/wmi/src/wmi_unified_api.c b/wmi/src/wmi_unified_api.c index d24a715f72..f66c230108 100644 --- a/wmi/src/wmi_unified_api.c +++ b/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; +} diff --git a/wmi/src/wmi_unified_non_tlv.c b/wmi/src/wmi_unified_non_tlv.c index e36c851c89..56d9ee89c3 100644 --- a/wmi/src/wmi_unified_non_tlv.c +++ b/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, }; diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index 49b7fad68b..c82f937b56 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/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, };