Bläddra i källkod

qcacmn: Add SON ops structure definitions

Move SON Tx operations structure definition to lmac interface.
Add SON Rx operations structure.

CRs-Fixed: 2987042
Change-Id: Ice7c0dc81a60627f3d26897646b754780e498d6e
Balaganapathy Palanisamy 4 år sedan
förälder
incheckning
96fec42073

+ 13 - 1
global_lmac_if/inc/wlan_global_lmac_if_api.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
  *
  *
  * Permission to use, copy, modify, and/or distribute this software for
@@ -97,4 +97,16 @@ QDF_STATUS wlan_lmac_if_sptrl_set_rx_ops_register_cb(void (*handler)
 QDF_STATUS wlan_lmac_if_iot_sim_set_rx_ops_register_cb(void (*handler)
 				(struct wlan_lmac_if_rx_ops *));
 #endif
+
+/**
+ * wlan_lmac_if_son_set_rx_ops_register_cb ()- SON Rx ops
+ * registration callback assignment
+ * @handler: Handler to be called for SON rx ops registration
+ *
+ * API to assign appropriate SON rx ops registration callback handler
+ *
+ * Return: QDF_STATUS_SUCCESS - in case of success
+ */
+QDF_STATUS wlan_lmac_if_son_set_rx_ops_register_cb(void (*handler)
+				(struct wlan_lmac_if_rx_ops *));
 #endif /* _WLAN_LMAC_IF_API_H */

+ 25 - 1
global_lmac_if/src/wlan_global_lmac_if.c

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
  *
  *
  * Permission to use, copy, modify, and/or distribute this software for
@@ -108,6 +108,27 @@ static void wlan_iot_sim_register_rx_ops(struct wlan_lmac_if_rx_ops *rx_ops)
 }
 #endif
 
+/* Function pointer for son rx_ops registration function */
+void (*wlan_lmac_if_son_rx_ops)(struct wlan_lmac_if_rx_ops *rx_ops);
+
+QDF_STATUS wlan_lmac_if_son_set_rx_ops_register_cb(void (*handler)
+				(struct wlan_lmac_if_rx_ops *))
+{
+	wlan_lmac_if_son_rx_ops = handler;
+
+	return QDF_STATUS_SUCCESS;
+}
+
+qdf_export_symbol(wlan_lmac_if_son_set_rx_ops_register_cb);
+
+static void wlan_son_register_rx_ops(struct wlan_lmac_if_rx_ops *rx_ops)
+{
+	if (wlan_lmac_if_son_rx_ops)
+		wlan_lmac_if_son_rx_ops(rx_ops);
+	else
+		qdf_info("\n***** SON MODULE NOT LOADED *****\n");
+}
+
 /**
  * wlan_global_lmac_if_rx_ops_register() - Global lmac_if
  * rx handler register
@@ -138,6 +159,9 @@ wlan_global_lmac_if_rx_ops_register(struct wlan_lmac_if_rx_ops *rx_ops)
 	/* iot_sim rx_ops registration*/
 	wlan_iot_sim_register_rx_ops(rx_ops);
 
+	/* son rx_ops registration*/
+	wlan_son_register_rx_ops(rx_ops);
+
 	return QDF_STATUS_SUCCESS;
 }
 

+ 54 - 4
umac/global_umac_dispatcher/lmac_if/inc/wlan_lmac_if_def.h

@@ -31,9 +31,6 @@
 #ifdef WLAN_ATF_ENABLE
 #include "wlan_atf_utils_defs.h"
 #endif
-#ifdef QCA_SUPPORT_SON
-#include <wlan_son_tgt_api.h>
-#endif
 #ifdef WLAN_SA_API_ENABLE
 #include "wlan_sa_api_utils_defs.h"
 #endif
@@ -1082,6 +1079,59 @@ struct wlan_lmac_if_gpio_tx_ops {
 };
 #endif
 
+/**
+ * wlan_lmac_if_son_tx_ops: son tx operations
+ * son_send_null: send null packet
+ * get_peer_rate: get peer rate
+ * peer_ext_stats_enable: Enable peer ext stats
+ */
+struct wlan_lmac_if_son_tx_ops {
+	/* Function pointer to enable/disable band steering */
+	QDF_STATUS (*son_send_null)(struct wlan_objmgr_pdev *pdev,
+				    u_int8_t *macaddr,
+				    struct wlan_objmgr_vdev *vdev);
+
+	u_int32_t  (*get_peer_rate)(struct wlan_objmgr_peer *peer,
+				    u_int8_t type);
+
+	QDF_STATUS (*peer_ext_stats_enable)(struct wlan_objmgr_pdev *pdev,
+					    u_int8_t *peer_addr,
+					    struct wlan_objmgr_vdev *vdev,
+					    u_int32_t stats_count,
+					    u_int32_t enable);
+};
+
+/**
+ * wlan_lmac_if_son_rx_ops: son rx operations
+ * deliver_event: deliver mlme and other mac events
+ * process_mgmt_frame: process mgmt frames
+ * config_set: route son config from cfg80211
+ * config_get: route son config from cfg80211
+ * config_ext_set_get: route extended configs from cfg80211
+ */
+struct wiphy;
+struct wireless_dev;
+struct wlan_lmac_if_son_rx_ops {
+	int (*deliver_event)(struct wlan_objmgr_vdev *vdev,
+			     struct wlan_objmgr_peer *peer,
+			     uint32_t event,
+			     void *event_data);
+	int (*process_mgmt_frame)(struct wlan_objmgr_vdev *vdev,
+				  struct wlan_objmgr_peer *peer,
+				  int subtype, u_int8_t *frame,
+				  u_int16_t frame_len,
+				  void *meta_data);
+	int (*config_set)(struct wiphy *wiphy,
+			  struct wireless_dev *wdev,
+			  void *params);
+	int (*config_get)(struct wiphy *wiphy,
+			  struct wireless_dev *wdev,
+			  void *params);
+	int (*config_ext_set_get)(struct net_device *dev,
+				  void *req,
+				  void *wri);
+};
+
 /**
  * struct wlan_lmac_if_tx_ops - south bound tx function pointers
  * @mgmt_txrx_tx_ops: mgmt txrx tx ops
@@ -1113,7 +1163,6 @@ struct wlan_lmac_if_tx_ops {
 #ifdef QCA_SUPPORT_SON
 	struct wlan_lmac_if_son_tx_ops son_tx_ops;
 #endif
-
 #ifdef WLAN_ATF_ENABLE
 	struct wlan_lmac_if_atf_tx_ops atf_tx_ops;
 #endif
@@ -1890,6 +1939,7 @@ struct wlan_lmac_if_rx_ops {
 #endif
 
 	struct wlan_lmac_if_ftm_rx_ops ftm_rx_ops;
+	struct wlan_lmac_if_son_rx_ops son_rx_ops;
 };
 
 /* Function pointer to call legacy tx_ops registration in OL/WMA.