qcacmn: Add API to get first vdev of given pdev
Add API to get first vdev of any given pdev. Change spectral module's API accordingly. CRs-Fixed: 2234801 Change-Id: I6c5f0aefad4a71610300810531b8c893471306ad
This commit is contained in:

committed by
nshrivas

parent
df3100c157
commit
8e9eb4f27d
@@ -57,7 +57,7 @@ spectral_get_vdev(struct wlan_objmgr_pdev *pdev)
|
||||
|
||||
qdf_assert_always(pdev);
|
||||
|
||||
vdev = wlan_objmgr_get_vdev_by_id_from_pdev(pdev, 0, WLAN_SPECTRAL_ID);
|
||||
vdev = wlan_objmgr_pdev_get_first_vdev(pdev, WLAN_SPECTRAL_ID);
|
||||
|
||||
if (!vdev) {
|
||||
spectral_warn("Unable to get first vdev of pdev");
|
||||
|
@@ -735,6 +735,19 @@ QDF_STATUS wlan_objmgr_pdev_try_get_ref(struct wlan_objmgr_pdev *pdev,
|
||||
void wlan_objmgr_pdev_release_ref(struct wlan_objmgr_pdev *pdev,
|
||||
wlan_objmgr_ref_dbgid id);
|
||||
|
||||
/**
|
||||
* wlan_objmgr_pdev_get_first_vdev() - Get first vdev of pdev
|
||||
* @pdev: PDEV object
|
||||
* @dbg_id: Object Manager ref debug id
|
||||
*
|
||||
* API to get reference to first vdev of pdev.
|
||||
*
|
||||
* Return: reference to first vdev
|
||||
*/
|
||||
struct wlan_objmgr_vdev *wlan_objmgr_pdev_get_first_vdev(
|
||||
struct wlan_objmgr_pdev *pdev,
|
||||
wlan_objmgr_ref_dbgid dbg_id);
|
||||
|
||||
/**
|
||||
* wlan_objmgr_pdev_get_pdev_id() - get pdev id
|
||||
* @pdev: PDEV object
|
||||
|
@@ -886,3 +886,42 @@ void wlan_objmgr_pdev_release_ref(struct wlan_objmgr_pdev *pdev,
|
||||
return;
|
||||
}
|
||||
qdf_export_symbol(wlan_objmgr_pdev_release_ref);
|
||||
|
||||
struct wlan_objmgr_vdev *wlan_objmgr_pdev_get_first_vdev(
|
||||
struct wlan_objmgr_pdev *pdev,
|
||||
wlan_objmgr_ref_dbgid dbg_id)
|
||||
{
|
||||
struct wlan_objmgr_pdev_objmgr *objmgr = &pdev->pdev_objmgr;
|
||||
qdf_list_t *vdev_list = NULL;
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
qdf_list_node_t *node = NULL;
|
||||
qdf_list_node_t *prev_node = NULL;
|
||||
|
||||
wlan_pdev_obj_lock(pdev);
|
||||
|
||||
/* VDEV list */
|
||||
vdev_list = &objmgr->wlan_vdev_list;
|
||||
if (qdf_list_peek_front(vdev_list, &node) != QDF_STATUS_SUCCESS) {
|
||||
wlan_pdev_obj_unlock(pdev);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
do {
|
||||
vdev = qdf_container_of(node, struct wlan_objmgr_vdev,
|
||||
vdev_node);
|
||||
if (wlan_objmgr_vdev_try_get_ref(vdev, dbg_id) ==
|
||||
QDF_STATUS_SUCCESS) {
|
||||
wlan_pdev_obj_unlock(pdev);
|
||||
return vdev;
|
||||
}
|
||||
|
||||
prev_node = node;
|
||||
} while (qdf_list_peek_next(vdev_list, prev_node, &node) ==
|
||||
QDF_STATUS_SUCCESS);
|
||||
|
||||
wlan_pdev_obj_unlock(pdev);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
qdf_export_symbol(wlan_objmgr_pdev_get_first_vdev);
|
||||
|
Reference in New Issue
Block a user