diff --git a/wmi/inc/wmi_unified_api.h b/wmi/inc/wmi_unified_api.h index 330506c5dd..8bb983fd99 100644 --- a/wmi/inc/wmi_unified_api.h +++ b/wmi/inc/wmi_unified_api.h @@ -100,6 +100,10 @@ #include "wmi_unified_fwol_api.h" #endif +#ifdef WLAN_FEATURE_PKT_CAPTURE +#include "wlan_pkt_capture_public_structs.h" +#endif + typedef qdf_nbuf_t wmi_buf_t; #define wmi_buf_data(_buf) qdf_nbuf_data(_buf) @@ -3830,6 +3834,22 @@ QDF_STATUS wmi_unified_extract_ani_level(wmi_unified_t wmi_handle, uint32_t *num_freqs); #endif /* FEATURE_ANI_LEVEL_REQUEST */ +#ifdef WLAN_FEATURE_PKT_CAPTURE +/** + * wmi_unified_extract_vdev_mgmt_offload_event() - Extract mgmt offload params + * @wmi: WMI handle + * @evt_buf: Event buffer + * @params: Management offload event params + * + * WMI function to extract management offload event params + * + * Return: QDF_STATUS + */ +QDF_STATUS +wmi_unified_extract_vdev_mgmt_offload_event(wmi_unified_t wmi, void *evt_buf, + struct mgmt_offload_event_params *params); +#endif + #ifdef FEATURE_WLAN_TIME_SYNC_FTM /** * wmi_unified_send_wlan_time_sync_ftm_trigger() - send ftm timesync trigger cmd diff --git a/wmi/inc/wmi_unified_priv.h b/wmi/inc/wmi_unified_priv.h index 90c6832c58..65346ebe40 100644 --- a/wmi/inc/wmi_unified_priv.h +++ b/wmi/inc/wmi_unified_priv.h @@ -73,6 +73,10 @@ #include #endif +#ifdef WLAN_FEATURE_PKT_CAPTURE +#include "wlan_pkt_capture_public_structs.h" +#endif + #define WMI_UNIFIED_MAX_EVENT 0x100 #ifdef WMI_EXT_DBG @@ -2220,6 +2224,13 @@ QDF_STATUS (*extract_multi_vdev_restart_resp_event)( wmi_unified_t wmi_handle, void *evt_buf, struct multi_vdev_restart_resp *restart_rsp); +#ifdef WLAN_FEATURE_PKT_CAPTURE +QDF_STATUS (*extract_vdev_mgmt_offload_event)( + void *handle, + void *event_buf, + struct mgmt_offload_event_params *params); +#endif /* WLAN_FEATURE_PKT_CAPTURE */ + #ifdef FEATURE_WLAN_TIME_SYNC_FTM QDF_STATUS (*send_wlan_time_sync_ftm_trigger_cmd)(wmi_unified_t wmi_handle, uint32_t vdev_id, diff --git a/wmi/src/wmi_unified_api.c b/wmi/src/wmi_unified_api.c index 94fca521d6..a8eb23e07e 100644 --- a/wmi/src/wmi_unified_api.c +++ b/wmi/src/wmi_unified_api.c @@ -3112,6 +3112,20 @@ wmi_unified_extract_roam_scan_stats(wmi_unified_t wmi, void *evt_buf, return QDF_STATUS_E_FAILURE; } +#ifdef WLAN_FEATURE_PKT_CAPTURE +QDF_STATUS +wmi_unified_extract_vdev_mgmt_offload_event( + wmi_unified_t wmi, void *evt_buf, + struct mgmt_offload_event_params *params) +{ + if (wmi->ops->extract_vdev_mgmt_offload_event) + return wmi->ops->extract_vdev_mgmt_offload_event(wmi, evt_buf, + params); + + return QDF_STATUS_E_FAILURE; +} +#endif /* WLAN_FEATURE_PKT_CAPTURE */ + QDF_STATUS wmi_unified_extract_roam_result_stats(wmi_unified_t wmi, void *buf, struct wmi_roam_result *dst, diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index c94b4ca01e..57aa7fe0b2 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -13219,6 +13219,36 @@ extract_roam_scan_stats_tlv(wmi_unified_t wmi_handle, void *evt_buf, } #endif +#ifdef WLAN_FEATURE_PKT_CAPTURE +static QDF_STATUS +extract_vdev_mgmt_offload_event_tlv(void *handle, void *evt_buf, + struct mgmt_offload_event_params *params) +{ + WMI_VDEV_MGMT_OFFLOAD_EVENTID_param_tlvs *param_tlvs; + wmi_mgmt_hdr *hdr; + + param_tlvs = (WMI_VDEV_MGMT_OFFLOAD_EVENTID_param_tlvs *)evt_buf; + if (!param_tlvs) + return QDF_STATUS_E_INVAL; + + hdr = param_tlvs->fixed_param; + if (!hdr) + return QDF_STATUS_E_INVAL; + + if (hdr->buf_len > param_tlvs->num_bufp) + return QDF_STATUS_E_INVAL; + + params->tsf_l32 = hdr->tsf_l32; + params->chan_freq = hdr->chan_freq; + params->rate_kbps = hdr->rate_kbps; + params->rssi = hdr->rssi; + params->buf_len = hdr->buf_len; + params->tx_status = hdr->tx_status; + params->buf = param_tlvs->bufp; + return QDF_STATUS_SUCCESS; +} +#endif /* WLAN_FEATURE_PKT_CAPTURE */ + #ifdef FEATURE_WLAN_TIME_SYNC_FTM /** * send_wlan_ts_ftm_trigger_cmd_tlv(): send wlan time sync cmd to FW @@ -13683,6 +13713,9 @@ struct wmi_ops tlv_ops = { .extract_roam_scan_stats = extract_roam_scan_stats_tlv, .extract_roam_result_stats = extract_roam_result_stats_tlv, .extract_roam_11kv_stats = extract_roam_11kv_stats_tlv, +#ifdef WLAN_FEATURE_PKT_CAPTURE + .extract_vdev_mgmt_offload_event = extract_vdev_mgmt_offload_event_tlv, +#endif #ifdef FEATURE_WLAN_TIME_SYNC_FTM .send_wlan_time_sync_ftm_trigger_cmd = send_wlan_ts_ftm_trigger_cmd_tlv,