Переглянути джерело

qcacmn: Add chipset stats for STA connect/disconnect event

Add chipset stats for STA connect/disconnect event

Change-Id: I28ea3fa265d27162b8a381b0c1d39093694b1cc7
CRs-Fixed: 3782996
Prasanna JS 1 рік тому
батько
коміт
ae5253bcd4

+ 1 - 0
umac/mlme/connection_mgr/core/src/wlan_cm_connect.c

@@ -2726,6 +2726,7 @@ cm_resume_connect_after_peer_create(struct cnx_mgr *cm_ctx, wlan_cm_id *cm_id)
 		       req.is_osen_connection, req.force_rsne_override,
 		       country_code[0],
 		       country_code[1]);
+	cm_cp_stats_cstats_log_connecting_event(cm_ctx->vdev, &req, cm_req);
 connect_req:
 	status = mlme_cm_connect_req(cm_ctx->vdev, &req);
 	if (QDF_IS_STATUS_ERROR(status)) {

+ 22 - 1
umac/mlme/connection_mgr/core/src/wlan_cm_main_api.h

@@ -32,6 +32,7 @@
 #ifdef WLAN_CM_USE_SPINLOCK
 #include <scheduler_api.h>
 #endif
+#include <wlan_cp_stats_chipset_stats.h>
 
 #define CONNECT_REQ_PREFIX          0x0C000000
 #define DISCONNECT_REQ_PREFIX       0x0D000000
@@ -1643,5 +1644,25 @@ cm_bss_mlo_type(struct wlan_objmgr_psoc *psoc,
 void cm_bearer_switch_resp(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
 			   wlan_cm_id cm_id, QDF_STATUS status);
 #endif
-
+#ifdef WLAN_CHIPSET_STATS
+/**
+ * cm_cp_stats_cstats_log_connecting_event : Chipset stats connecting event
+ * @vdev: pointer to vdev object
+ * @req: pointer to wlan_cm_vdev_connect_req object
+ * @cm_req: pointer to cm_req object
+ *
+ * Return: void
+ */
+void
+cm_cp_stats_cstats_log_connecting_event(struct wlan_objmgr_vdev *vdev,
+					struct wlan_cm_vdev_connect_req *req,
+					struct cm_req *cm_req);
+#else
+static inline void
+cm_cp_stats_cstats_log_connecting_event(struct wlan_objmgr_vdev *vdev,
+					struct wlan_cm_vdev_connect_req *req,
+					struct cm_req *cm_req)
+{
+}
+#endif /* WLAN_CHIPSET_STATS */
 #endif /* __WLAN_CM_MAIN_API_H__ */

+ 25 - 0
umac/mlme/connection_mgr/core/src/wlan_cm_util.c

@@ -2291,3 +2291,28 @@ void cm_store_n_send_failed_candidate(struct cnx_mgr *cm_ctx, wlan_cm_id cm_id)
 	mlme_cm_osif_failed_candidate_ind(cm_ctx->vdev, &resp);
 }
 #endif /* CONN_MGR_ADV_FEATURE */
+
+#ifdef WLAN_CHIPSET_STATS
+void
+cm_cp_stats_cstats_log_connecting_event(struct wlan_objmgr_vdev *vdev,
+					struct wlan_cm_vdev_connect_req *req,
+					struct cm_req *cm_req)
+{
+	struct cstats_sta_connect_req stat = {0};
+
+	stat.cmn.hdr.evt_id = WLAN_CHIPSET_STATS_STA_CONNECTING_EVENT_ID;
+	stat.cmn.hdr.length = sizeof(struct cstats_sta_connect_req) -
+			      sizeof(struct cstats_hdr);
+	stat.cmn.opmode = wlan_vdev_mlme_get_opmode(vdev);
+	stat.cmn.vdev_id = wlan_vdev_get_id(vdev);
+	stat.cmn.timestamp_us = qdf_get_time_of_the_day_us();
+	stat.cmn.time_tick = qdf_get_log_timestamp();
+	stat.freq = req->bss->entry->channel.chan_freq;
+	stat.ssid_len = cm_req->connect_req.req.ssid.length;
+	qdf_mem_copy(&stat.ssid, cm_req->connect_req.req.ssid.ssid,
+		     cm_req->connect_req.req.ssid.length);
+	CSTATS_MAC_COPY(stat.bssid, req->bss->entry->bssid.bytes);
+
+	wlan_cstats_host_stats(sizeof(struct cstats_sta_connect_req), &stat);
+}
+#endif /* WLAN_CHIPSET_STATS */