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:

committad av
Sandeep Puligilla

förälder
8e039b16e1
incheckning
d088a8a19e
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -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);
|
||||
|
||||
/**
|
||||
|
@@ -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);
|
||||
|
Referens i nytt ärende
Block a user