Procházet zdrojové kódy

qcacmn: change scan API to pass pdev insted of vdev

Few components don't have vdev object but still they want to
receive scan envents on underlying pdev.
Change ucfg_scan_register_event_handler and
ucfg_scan_unregister_event_handler to accept pdev instead of vdev.

Change-Id: I5a7ea78b1470b89637d418de6b984e5d20007c9c
CRs-Fixed: 1095299
Om Prakash Tripathi před 8 roky
rodič
revize
d088a8a19e

+ 43 - 17
umac/scan/core/src/wlan_scan_main.h

@@ -313,34 +313,45 @@ struct wlan_scan_obj {
 };
 
 /**
- * wlan_vdev_get_scan_obj() - private API to get scan object from vdev
- * @psoc: vdev object
+ * wlan_psoc_get_scan_obj() - private API to get scan object from psoc
+ * @psoc: psoc object
  *
  * Return: scan object
  */
 static inline struct wlan_scan_obj *
-wlan_vdev_get_scan_obj(struct wlan_objmgr_vdev *vdev)
+wlan_psoc_get_scan_obj(struct wlan_objmgr_psoc *psoc)
 {
-	struct wlan_objmgr_psoc *psoc =
-		wlan_pdev_get_psoc(wlan_vdev_get_pdev(vdev));
-
 	return (struct wlan_scan_obj *)
 		wlan_objmgr_psoc_get_comp_private_obj(psoc,
 				WLAN_UMAC_COMP_SCAN);
 }
 
 /**
- * wlan_psoc_get_scan_obj() - private API to get scan object from psoc
- * @psoc: psoc object
+ * wlan_pdev_get_scan_obj() - private API to get scan object from pdev
+ * @psoc: pdev object
  *
  * Return: scan object
  */
 static inline struct wlan_scan_obj *
-wlan_psoc_get_scan_obj(struct wlan_objmgr_psoc *psoc)
+wlan_pdev_get_scan_obj(struct wlan_objmgr_pdev *pdev)
 {
-	return (struct wlan_scan_obj *)
-		wlan_objmgr_psoc_get_comp_private_obj(psoc,
-				WLAN_UMAC_COMP_SCAN);
+	struct wlan_objmgr_psoc *psoc = wlan_pdev_get_psoc(pdev);
+
+	return wlan_psoc_get_scan_obj(psoc);
+}
+
+/**
+ * wlan_vdev_get_scan_obj() - private API to get scan object from vdev
+ * @psoc: vdev object
+ *
+ * Return: scan object
+ */
+static inline struct wlan_scan_obj *
+wlan_vdev_get_scan_obj(struct wlan_objmgr_vdev *vdev)
+{
+	struct wlan_objmgr_pdev *pdev = wlan_vdev_get_pdev(vdev);
+
+	return wlan_pdev_get_scan_obj(pdev);
 }
 
 /**
@@ -358,23 +369,38 @@ wlan_scan_vdev_get_pdev_id(struct wlan_objmgr_vdev *vdev)
 }
 
 /**
- * wlan_vdev_get_pdev_scan_ev_handlers() - private API to get
+ * wlan_pdev_get_pdev_scan_ev_handlers() - private API to get
  * pdev scan event handlers
- * @vdev: vdev object
+ * @vdev: pdev object
  *
  * Return: pdev_scan_ev_handler object
  */
 static inline struct pdev_scan_ev_handler*
-wlan_vdev_get_pdev_scan_ev_handlers(struct wlan_objmgr_vdev *vdev)
+wlan_pdev_get_pdev_scan_ev_handlers(struct wlan_objmgr_pdev *pdev)
 {
-	uint8_t pdevid = wlan_scan_vdev_get_pdev_id(vdev);
-	struct wlan_scan_obj *scan = wlan_vdev_get_scan_obj(vdev);
+	uint8_t pdevid = wlan_objmgr_pdev_get_pdev_id(pdev);
+	struct wlan_scan_obj *scan = wlan_pdev_get_scan_obj(pdev);
 	struct pdev_scan_ev_handler *pdev_ev_handler =
 		&scan->global_evhandlers.pdev_ev_handlers[pdevid];
 
 	return pdev_ev_handler;
 }
 
+/**
+ * wlan_vdev_get_pdev_scan_ev_handlers() - private API to get
+ * pdev scan event handlers
+ * @vdev: vdev object
+ *
+ * Return: pdev_scan_ev_handler object
+ */
+static inline struct pdev_scan_ev_handler*
+wlan_vdev_get_pdev_scan_ev_handlers(struct wlan_objmgr_vdev *vdev)
+{
+	struct wlan_objmgr_pdev *pdev = wlan_vdev_get_pdev(vdev);
+
+	return wlan_pdev_get_pdev_scan_ev_handlers(pdev);
+}
+
 /**
  * wlan_vdev_get_def_scan_params() - private API to get scan defaults
  * @psoc: vdev object

+ 5 - 5
umac/scan/dispatcher/inc/wlan_scan_ucfg_api.h

@@ -194,24 +194,24 @@ ucfg_scan_update_mlme_info(struct wlan_objmgr_vdev *vdev, struct bss_info *bss,
 /**
  * ucfg_scan_register_event_handler() - The Public API to register
  * an event cb handler
- * @vdev: vdev object
+ * @pdev: pdev object
  * @event_cb: callback function to register
  * @arg: component specific priv argument to @event_cb callback function
  *
  * The Public API to register a event cb handler. This cb is called whenever
- * any scan event is received.
+ * any scan event is received on @pdev.
  *
  * Return: 0 for success or error code.
  */
 
 QDF_STATUS
-ucfg_scan_register_event_handler(struct wlan_objmgr_vdev *vdev,
+ucfg_scan_register_event_handler(struct wlan_objmgr_pdev *pdev,
 	scan_event_handler event_cb, void *arg);
 
 /**
  * ucfg_scan_unregister_event_handler() - Public API to unregister
  * event cb handler
- * @vdev: vdev object
+ * @pdev: pdev object
  * @event_cb: callback function to unregister
  * @arg: component specific priv argument to @event_cb callback function
  *
@@ -222,7 +222,7 @@ ucfg_scan_register_event_handler(struct wlan_objmgr_vdev *vdev,
  */
 
 void
-ucfg_scan_unregister_event_handler(struct wlan_objmgr_vdev *vdev,
+ucfg_scan_unregister_event_handler(struct wlan_objmgr_pdev *pdev,
 	scan_event_handler event_cb, void *arg);
 
 /**

+ 12 - 12
umac/scan/dispatcher/src/wlan_scan_ucfg_api.c

@@ -287,7 +287,7 @@ scm_add_scan_event_handler(struct pdev_scan_ev_handler *pdev_ev_handler,
 }
 
 QDF_STATUS
-ucfg_scan_register_event_handler(struct wlan_objmgr_vdev *vdev,
+ucfg_scan_register_event_handler(struct wlan_objmgr_pdev *pdev,
 	scan_event_handler event_cb, void *arg)
 {
 	uint32_t idx;
@@ -296,15 +296,15 @@ ucfg_scan_register_event_handler(struct wlan_objmgr_vdev *vdev,
 	struct cb_handler *cb_handler;
 
 	/* scan event handler call back can't be NULL */
-	if (!vdev || !event_cb) {
-		scm_err("vdev: %p, event_cb: %p", vdev, event_cb);
+	if (!pdev || !event_cb) {
+		scm_err("pdev: %p, event_cb: %p", pdev, event_cb);
 		return QDF_STATUS_E_NULL_VALUE;
 	}
 
-	scm_info("vdev: %p, event_cb: %p, arg: %p\n", vdev, event_cb, arg);
+	scm_info("pdev: %p, event_cb: %p, arg: %p\n", pdev, event_cb, arg);
 
-	scan = wlan_vdev_get_scan_obj(vdev);
-	pdev_ev_handler = wlan_vdev_get_pdev_scan_ev_handlers(vdev);
+	scan = wlan_pdev_get_scan_obj(pdev);
+	pdev_ev_handler = wlan_pdev_get_pdev_scan_ev_handlers(pdev);
 	cb_handler = &(pdev_ev_handler->cb_handlers[0]);
 
 	qdf_spin_lock_bh(&scan->lock);
@@ -404,7 +404,7 @@ scm_remove_scan_event_handler(struct pdev_scan_ev_handler *pdev_ev_handler,
 }
 
 void
-ucfg_scan_unregister_event_handler(struct wlan_objmgr_vdev *vdev,
+ucfg_scan_unregister_event_handler(struct wlan_objmgr_pdev *pdev,
 	scan_event_handler event_cb, void *arg)
 {
 	uint8_t found = false;
@@ -414,13 +414,13 @@ ucfg_scan_unregister_event_handler(struct wlan_objmgr_vdev *vdev,
 	struct cb_handler *cb_handler;
 	struct pdev_scan_ev_handler *pdev_ev_handler;
 
-	scm_info("vdev: %p, event_cb: 0x%p, arg: 0x%p", vdev, event_cb, arg);
-	if (!vdev) {
-		scm_err("null vdev");
+	scm_info("pdev: %p, event_cb: 0x%p, arg: 0x%p", pdev, event_cb, arg);
+	if (!pdev) {
+		scm_err("null pdev");
 		return;
 	}
-	scan = wlan_vdev_get_scan_obj(vdev);
-	pdev_ev_handler = wlan_vdev_get_pdev_scan_ev_handlers(vdev);
+	scan = wlan_pdev_get_scan_obj(pdev);
+	pdev_ev_handler = wlan_pdev_get_pdev_scan_ev_handlers(pdev);
 	cb_handler = &(pdev_ev_handler->cb_handlers[0]);
 
 	qdf_spin_lock_bh(&scan->lock);