From d088a8a19ecc42f5ba03cca00d4a5b8176244eb5 Mon Sep 17 00:00:00 2001 From: Om Prakash Tripathi Date: Tue, 4 Apr 2017 17:12:51 +0530 Subject: [PATCH] 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 --- umac/scan/core/src/wlan_scan_main.h | 70 +++++++++++++------ umac/scan/dispatcher/inc/wlan_scan_ucfg_api.h | 10 +-- umac/scan/dispatcher/src/wlan_scan_ucfg_api.c | 24 +++---- 3 files changed, 65 insertions(+), 39 deletions(-) diff --git a/umac/scan/core/src/wlan_scan_main.h b/umac/scan/core/src/wlan_scan_main.h index 3b14ea75209d..89426e87f1f1 100644 --- a/umac/scan/core/src/wlan_scan_main.h +++ b/umac/scan/core/src/wlan_scan_main.h @@ -312,23 +312,6 @@ struct wlan_scan_obj { struct pdev_scan_info pdev_info[WLAN_UMAC_MAX_PDEVS]; }; -/** - * 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_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 @@ -343,6 +326,34 @@ wlan_psoc_get_scan_obj(struct wlan_objmgr_psoc *psoc) WLAN_UMAC_COMP_SCAN); } +/** + * 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_pdev_get_scan_obj(struct wlan_objmgr_pdev *pdev) +{ + 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); +} + /** * wlan_scan_vdev_get_pdev_id)() - private API to get pdev id from vdev object * @vdev: vdev object @@ -357,6 +368,24 @@ wlan_scan_vdev_get_pdev_id(struct wlan_objmgr_vdev *vdev) return wlan_objmgr_pdev_get_pdev_id(pdev); } +/** + * wlan_pdev_get_pdev_scan_ev_handlers() - private API to get + * pdev scan event handlers + * @vdev: pdev object + * + * Return: pdev_scan_ev_handler object + */ +static inline struct pdev_scan_ev_handler* +wlan_pdev_get_pdev_scan_ev_handlers(struct wlan_objmgr_pdev *pdev) +{ + 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 @@ -367,12 +396,9 @@ wlan_scan_vdev_get_pdev_id(struct wlan_objmgr_vdev *vdev) static inline struct pdev_scan_ev_handler* wlan_vdev_get_pdev_scan_ev_handlers(struct wlan_objmgr_vdev *vdev) { - uint8_t pdevid = wlan_scan_vdev_get_pdev_id(vdev); - struct wlan_scan_obj *scan = wlan_vdev_get_scan_obj(vdev); - struct pdev_scan_ev_handler *pdev_ev_handler = - &scan->global_evhandlers.pdev_ev_handlers[pdevid]; + struct wlan_objmgr_pdev *pdev = wlan_vdev_get_pdev(vdev); - return pdev_ev_handler; + return wlan_pdev_get_pdev_scan_ev_handlers(pdev); } /** diff --git a/umac/scan/dispatcher/inc/wlan_scan_ucfg_api.h b/umac/scan/dispatcher/inc/wlan_scan_ucfg_api.h index 1aa4524649b2..aeb52326832c 100644 --- a/umac/scan/dispatcher/inc/wlan_scan_ucfg_api.h +++ b/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); /** diff --git a/umac/scan/dispatcher/src/wlan_scan_ucfg_api.c b/umac/scan/dispatcher/src/wlan_scan_ucfg_api.c index c28791195584..bdd36ac27786 100644 --- a/umac/scan/dispatcher/src/wlan_scan_ucfg_api.c +++ b/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);