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
This commit is contained in:
Om Prakash Tripathi
2017-04-04 17:12:51 +05:30
committad av Sandeep Puligilla
förälder 8e039b16e1
incheckning d088a8a19e
3 ändrade filer med 65 tillägg och 39 borttagningar

Visa fil

@@ -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);
}
/**

Visa fil

@@ -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);
/**

Visa fil

@@ -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);