Răsfoiți Sursa

qcacmn: Send vendor attributes with the Roam stats

As part of commit I7a08635a7912cbd940d90a2d62433296740ad913
a vendor command is added to enable roam stats event.
This change registers callback to send the added vendor
command event to userspace.

Change-Id: I6dc3f8357ace5bb3fa41b4aa116652a91b9fd924
CRs-Fixed: 3427397
Sai Pavan Akhil Remella 2 ani în urmă
părinte
comite
5d62197747

+ 24 - 0
os_if/linux/mlme/inc/osif_cm_util.h

@@ -28,6 +28,9 @@
 #include <qca_vendor.h>
 #include "wlan_cm_ucfg_api.h"
 #include "wlan_cm_public_struct.h"
+#ifdef WLAN_FEATURE_ROAM_OFFLOAD
+#include "wlan_cm_roam_public_struct.h"
+#endif
 #ifdef CONN_MGR_ADV_FEATURE
 #include <cdp_txrx_mob_def.h>
 #endif
@@ -299,6 +302,23 @@ void osif_cm_unlink_bss(struct wlan_objmgr_vdev *vdev,
 			uint8_t *ssid, uint8_t ssid_len) {}
 #endif
 
+#ifdef WLAN_FEATURE_ROAM_OFFLOAD
+/**
+ * typedef osif_cm_roam_rt_stats_cb: Callback to send roam
+ * stats event
+ * @roam_stats: roam_stats_event pointer
+ * @idx: TLV idx for roam stats event
+ *
+ * This callback sends roam_stats_event to userspace
+ *
+ * Context: Any context.
+ * Return: void
+ */
+typedef void
+	(*osif_cm_roam_rt_stats_cb)(struct roam_stats_event *roam_stats,
+				    uint8_t idx);
+#endif
+
 #ifdef WLAN_FEATURE_PREAUTH_ENABLE
 /**
  * typedef osif_cm_ft_preauth_complete_cb: Callback to send fast
@@ -347,6 +367,7 @@ typedef QDF_STATUS
  * @send_vdev_keys_cb: callback to send vdev keys
  * @get_scan_ie_params_cb: callback to get scan ie params
  * @set_hlp_data_cb: callback to legacy module to save hlp data
+ * @roam_rt_stats_event_cb: callback to send roam stats to userspace
  * @ft_preauth_complete_cb: callback to legacy module to send fast
  * transition event
  * @cckm_preauth_complete_cb: callback to legacy module to send cckm
@@ -367,6 +388,9 @@ struct osif_cm_ops {
 #ifdef WLAN_FEATURE_FILS_SK
 	osif_cm_set_hlp_data_cb set_hlp_data_cb;
 #endif
+#ifdef WLAN_FEATURE_ROAM_OFFLOAD
+	osif_cm_roam_rt_stats_cb roam_rt_stats_event_cb;
+#endif
 #ifdef WLAN_FEATURE_PREAUTH_ENABLE
 	osif_cm_ft_preauth_complete_cb ft_preauth_complete_cb;
 #ifdef FEATURE_WLAN_ESE

+ 22 - 0
os_if/linux/mlme/src/osif_cm_util.c

@@ -465,6 +465,27 @@ osif_cm_get_scan_ie_info_cb(struct wlan_objmgr_vdev *vdev,
 {
 	return osif_cm_get_scan_ie_params(vdev, scan_ie, dot11mode_filter);
 }
+
+/**
+ * osif_cm_roam_rt_stats_evt_cb() - Roam stats callback
+ * @roam_stats: roam_stats_event pointer
+ * @idx: TLV idx for roam_stats_event
+ *
+ * This callback indicates os_if that roam stats event is received
+ * so that os_if can send the event
+ *
+ * Return: void
+ */
+
+static void
+osif_cm_roam_rt_stats_evt_cb(struct roam_stats_event *roam_stats,
+		      uint8_t idx)
+{
+	if (osif_cm_legacy_ops &&
+	    osif_cm_legacy_ops->roam_rt_stats_event_cb)
+		osif_cm_legacy_ops->roam_rt_stats_event_cb(roam_stats, idx);
+}
+
 #endif
 
 #ifdef WLAN_FEATURE_PREAUTH_ENABLE
@@ -540,6 +561,7 @@ static struct mlme_cm_ops cm_ops = {
 	.mlme_cm_roam_abort_cb = osif_cm_roam_abort_cb,
 	.mlme_cm_roam_cmpl_cb = osif_cm_roam_cmpl_cb,
 	.mlme_cm_roam_get_scan_ie_cb = osif_cm_get_scan_ie_info_cb,
+	.mlme_cm_roam_rt_stats_cb = osif_cm_roam_rt_stats_evt_cb,
 #endif
 #ifdef WLAN_FEATURE_PREAUTH_ENABLE
 	.mlme_cm_ft_preauth_cmpl_cb = osif_cm_ft_preauth_cmpl_cb,

+ 17 - 0
umac/mlme/include/wlan_mlme_cmn.h

@@ -25,6 +25,9 @@
 #include <include/wlan_pdev_mlme.h>
 #include <include/wlan_vdev_mlme.h>
 #include "wlan_cm_public_struct.h"
+#ifdef WLAN_FEATURE_ROAM_OFFLOAD
+#include "wlan_cm_roam_public_struct.h"
+#endif
 #include "wlan_twt_public_structs.h"
 
 /**
@@ -79,6 +82,10 @@
  * @scan_ie: scan ie element pointer
  * @dot11mode_filter: dot11mode filter enumn pointer
  *
+ * @mlme_cm_roam_rt_stats_cb: Roam stats cb
+ * @roam_stats_event: roam_stats_event pointer
+ * @idx: TLV idx for roam_stats_event
+ *
  * @mlme_cm_ft_preauth_cmpl_cb: Roam ft preauth complete cb
  * @vdev: vdev pointer
  * @rsp: preauth response pointer
@@ -125,6 +132,8 @@ struct mlme_cm_ops {
 	QDF_STATUS (*mlme_cm_roam_get_scan_ie_cb)(struct wlan_objmgr_vdev *vdev,
 				struct element_info *scan_ie,
 				enum dot11_mode_filter *dot11mode_filter);
+	void (*mlme_cm_roam_rt_stats_cb)(struct roam_stats_event *roam_stats,
+					 uint8_t idx);
 #endif
 #ifdef WLAN_FEATURE_PREAUTH_ENABLE
 	QDF_STATUS (*mlme_cm_ft_preauth_cmpl_cb)(
@@ -932,6 +941,14 @@ QDF_STATUS mlme_cm_osif_roam_abort_ind(struct wlan_objmgr_vdev *vdev);
  */
 QDF_STATUS mlme_cm_osif_roam_complete(struct wlan_objmgr_vdev *vdev);
 
+/**
+ * mlme_cm_osif_roam_rt_stats() - osif Roam stats callback
+ * @roam_stats: roam_stats_event pointer
+ * @idx: TLV idx for roam_stats_event
+ *
+ * Return: void
+ */
+void mlme_cm_osif_roam_rt_stats(struct roam_stats_event *roam_stats, uint8_t idx);
 /**
  * mlme_cm_osif_roam_get_scan_params() - osif Roam get scan params callback
  * @vdev: vdev pointer

+ 10 - 0
umac/mlme/mlme_objmgr/dispatcher/src/wlan_cmn_mlme_main.c

@@ -602,6 +602,16 @@ mlme_cm_osif_roam_complete(struct wlan_objmgr_vdev *vdev)
 	return ret;
 }
 
+void
+mlme_cm_osif_roam_rt_stats(struct roam_stats_event *roam_stats,
+			   uint8_t idx)
+{
+	if (glbl_cm_ops &&
+	    glbl_cm_ops->mlme_cm_roam_rt_stats_cb)
+		glbl_cm_ops->mlme_cm_roam_rt_stats_cb(roam_stats,
+						      idx);
+}
+
 QDF_STATUS
 mlme_cm_osif_roam_get_scan_params(struct wlan_objmgr_vdev *vdev,
 				  struct element_info *scan_ie,