From 028e3d7da0f144d812980da1a359327f373ab4d1 Mon Sep 17 00:00:00 2001 From: Srikanth Marepalli Date: Tue, 29 Mar 2022 20:19:56 +0530 Subject: [PATCH] qcacld-3.0: Send the trigger reason as part of roam scan stats Notif_param of Roam event ID carries the trigger reason as part of roam scan start notif. Currently host doesn't read this param. This commit reads the trigger reason and sends it to user-space via vendor attribute whenever the roam event vendor command is enabled. Change-Id: If9fdbc31df149f4f1c9ca196ee74e2fcb3709a1c CRs-Fixed: 3161803 --- core/wma/inc/wma_internal.h | 5 +++-- core/wma/src/wma_scan_roam.c | 18 ++++++++++++------ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/core/wma/inc/wma_internal.h b/core/wma/inc/wma_internal.h index c1ffd432cb11..40fda877feca 100644 --- a/core/wma/inc/wma_internal.h +++ b/core/wma/inc/wma_internal.h @@ -300,6 +300,7 @@ int wma_roam_vdev_disconnect_event_handler(void *handle, uint8_t *event, * @events: Event/Notif type from roam event/roam stats event * @roam_info: Roam stats from the roam stats event * @value: Notif param value from the roam event + * @reason: Notif param value from the roam event that carries trigger reason * * Gathers the roam stats from the roam event and the roam stats event and * sends them to hdd for filling the vendor attributes. @@ -310,7 +311,7 @@ void wma_report_real_time_roam_stats(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id, enum roam_rt_stats_type events, struct mlme_roam_debug_info *roam_info, - uint32_t value); + uint32_t value, uint32_t reason); #else static inline int wma_mlme_roam_synch_event_handler_cb(void *handle, uint8_t *event, @@ -346,7 +347,7 @@ wma_report_real_time_roam_stats(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id, enum roam_rt_stats_type events, struct mlme_roam_debug_info *roam_info, - uint32_t value) + uint32_t value, uint32_t reason) {} #endif diff --git a/core/wma/src/wma_scan_roam.c b/core/wma/src/wma_scan_roam.c index 3c399f826af5..ce2d886c0e6d 100644 --- a/core/wma/src/wma_scan_roam.c +++ b/core/wma/src/wma_scan_roam.c @@ -2200,7 +2200,7 @@ void wma_report_real_time_roam_stats(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id, enum roam_rt_stats_type events, struct mlme_roam_debug_info *roam_info, - uint32_t value) + uint32_t value, uint32_t reason) { struct mac_context *mac = cds_get_context(QDF_MODULE_ID_PE); struct mlme_roam_debug_info *roam_event = NULL; @@ -2216,12 +2216,17 @@ void wma_report_real_time_roam_stats(struct wlan_objmgr_psoc *psoc, if (!roam_event) return; - if (value == WMI_ROAM_NOTIF_SCAN_START) + if (value == WMI_ROAM_NOTIF_SCAN_START) { roam_event->roam_event_param.roam_scan_state = QCA_WLAN_VENDOR_ROAM_SCAN_STATE_START; - else if (value == WMI_ROAM_NOTIF_SCAN_END) + if (reason) { + roam_event->trigger.present = true; + roam_event->trigger.trigger_reason = reason; + } + } else if (value == WMI_ROAM_NOTIF_SCAN_END) { roam_event->roam_event_param.roam_scan_state = QCA_WLAN_VENDOR_ROAM_SCAN_STATE_END; + } if (mac && mac->sme.roam_rt_stats_cb) { wma_debug("Invoke HDD roam events callback for " @@ -2507,7 +2512,7 @@ int wma_roam_stats_event_handler(WMA_HANDLE handle, uint8_t *event, wma_report_real_time_roam_stats( wma->psoc, vdev_id, ROAM_RT_STATS_TYPE_ROAM_SCAN_INFO, - roam_info, 0); + roam_info, 0, 0); qdf_mem_free(roam_info); } @@ -4665,7 +4670,8 @@ int wma_roam_event_callback(WMA_HANDLE handle, uint8_t *event_buf, wma_handle->psoc, wmi_event->vdev_id, ROAM_RT_STATS_TYPE_SCAN_STATE, - NULL, wmi_event->notif); + NULL, wmi_event->notif, + wmi_event->notif_params); break; case WMI_ROAM_REASON_RSO_STATUS: wma_rso_cmd_status_event_handler(wmi_event); @@ -4688,7 +4694,7 @@ int wma_roam_event_callback(WMA_HANDLE handle, uint8_t *event_buf, wma_report_real_time_roam_stats( wma_handle->psoc, wmi_event->vdev_id, ROAM_RT_STATS_TYPE_INVOKE_FAIL_REASON, - NULL, wmi_event->notif_params); + NULL, wmi_event->notif_params, 0); qdf_mem_free(roam_synch_data); break; case WMI_ROAM_REASON_DEAUTH: