diff --git a/wmi_unified_api.h b/wmi_unified_api.h index 80dcbfa503..3faa451b42 100644 --- a/wmi_unified_api.h +++ b/wmi_unified_api.h @@ -2331,4 +2331,42 @@ wmi_unified_dfs_send_avg_params_cmd(void *wmi_hdl, QDF_STATUS wmi_extract_dfs_status_from_fw(void *wmi_hdl, void *evt_buf, uint32_t *dfs_status_check); #endif +#ifdef OL_ATH_SMART_LOGGING +/** + * wmi_unified_send_smart_logging_enable_cmd() - send smart logging enable cmd + * @wmi_hdl: wmi handle + * @params: enable/disable + * + * This function enables/disable the smart logging feature + * + * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure + */ +QDF_STATUS wmi_unified_send_smart_logging_enable_cmd(void *wmi_hdl, + uint32_t param); + +/** + * wmi_unified_send_smart_logging_fatal_cmd() - send smart logging fatal cmd + * @wmi_hdl: wmi handle + * @param: Fatal event + * + * This function sends the smart log fatal events to the FW + * + * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure + */ +QDF_STATUS wmi_unified_send_smart_logging_fatal_cmd + (void *wmi_hdl, + struct wmi_debug_fatal_events *param); + +/** + * wmi_extract_smartlog_ev() - extract smartlog event info from event + * @wmi_handle: wmi handle + * @param evt_buf: pointer to event buffer + * @param ev: Pointer to hold fatal events + * + * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure + */ +QDF_STATUS wmi_extract_smartlog_ev + (void *wmi_hdl, void *evt_buf, + struct wmi_debug_fatal_events *ev); +#endif /* OL_ATH_SMART_LOGGING */ #endif /* _WMI_UNIFIED_API_H_ */ diff --git a/wmi_unified_param.h b/wmi_unified_param.h index 38cb6f17e3..995540c32c 100644 --- a/wmi_unified_param.h +++ b/wmi_unified_param.h @@ -5531,6 +5531,9 @@ typedef enum { wmi_twt_enable_complete_event_id, wmi_apf_get_vdev_work_memory_resp_event_id, +#ifdef OL_ATH_SMART_LOGGING + wmi_debug_fatal_condition_eventid, +#endif /* OL_ATH_SMART_LOGGING */ wmi_events_max, } wmi_conv_event_id; @@ -5962,6 +5965,9 @@ typedef enum { wmi_service_twt_responder, wmi_service_listen_interval_offload_support, +#ifdef OL_ATH_SMART_LOGGING + wmi_service_smart_logging_support, +#endif wmi_services_max, } wmi_conv_service_ids; #define WMI_SERVICE_UNAVAILABLE 0xFFFF @@ -7916,6 +7922,33 @@ struct wmi_host_pdev_band_to_mac { }; #define WMI_HOST_MAX_PDEV 3 +#ifdef OL_ATH_SMART_LOGGING +/** + * struct wmi_fatal_condition_event - Fatal condition event param + * @type: Type of event + * @subtype: subtype of event + * @reserved0: reserved + */ +struct wmi_fatal_condition_event { + uint32_t type; + uint32_t subtype; + uint32_t reserved0; +}; + +/*Currently the Max fatal events is 3 */ +#define FATAL_EVENTS_MAX 3 + +/** + * struct wmi_debug_fatal_events: Fatal events list + * @num_events:Number of events + * @event[FATAL_EVENTS_MAX]: Each event data + */ +struct wmi_debug_fatal_events { + uint32_t num_events; + struct wmi_fatal_condition_event event[FATAL_EVENTS_MAX]; +}; +#endif /* OL_ATH_SMART_LOGGING */ + /** * struct wmi_init_cmd_param - INIT command params * @target_resource_config: pointer to resource config diff --git a/wmi_unified_priv.h b/wmi_unified_priv.h index 6cd1555238..78f9e057c0 100644 --- a/wmi_unified_priv.h +++ b/wmi_unified_priv.h @@ -1147,7 +1147,14 @@ QDF_STATUS QDF_STATUS (*send_bcn_offload_control_cmd)(wmi_unified_t wmi_handle, struct bcn_offload_control *bcn_ctrl_param); +#ifdef OL_ATH_SMART_LOGGING +QDF_STATUS +(*send_smart_logging_enable_cmd)(wmi_unified_t wmi_handle, uint32_t param); +QDF_STATUS +(*send_smart_logging_fatal_cmd)(wmi_unified_t wmi_handle, + struct wmi_debug_fatal_events *param); +#endif /* OL_ATH_SMART_LOGGING */ QDF_STATUS (*extract_wds_addr_event)(wmi_unified_t wmi_handle, void *evt_buf, uint16_t len, wds_addr_event_t *wds_ev); @@ -1366,6 +1373,10 @@ QDF_STATUS (*extract_vdev_nac_rssi_stats)(wmi_unified_t wmi_handle, void *evt_bu QDF_STATUS (*extract_bcn_stats)(wmi_unified_t wmi_handle, void *evt_buf, uint32_t index, wmi_host_bcn_stats *bcn_stats); +#ifdef OL_ATH_SMART_LOGGING +QDF_STATUS (*extract_smartlog_event)(wmi_unified_t wmi_handle, void *evt_buf, + struct wmi_debug_fatal_events *event); +#endif /* OL_ATH_SMART_LOGGING */ QDF_STATUS (*send_power_dbg_cmd)(wmi_unified_t wmi_handle, struct wmi_power_dbg_params *param);