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:
Edayilliam Jayadev
2018-05-02 16:14:14 +05:30
committed by nshrivas
parent df3100c157
commit 8e9eb4f27d
3 changed files with 53 additions and 1 deletions

View File

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

View File

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

View File

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