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);
|
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) {
|
if (!vdev) {
|
||||||
spectral_warn("Unable to get first vdev of pdev");
|
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,
|
void wlan_objmgr_pdev_release_ref(struct wlan_objmgr_pdev *pdev,
|
||||||
wlan_objmgr_ref_dbgid id);
|
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
|
* wlan_objmgr_pdev_get_pdev_id() - get pdev id
|
||||||
* @pdev: PDEV object
|
* @pdev: PDEV object
|
||||||
|
@@ -886,3 +886,42 @@ void wlan_objmgr_pdev_release_ref(struct wlan_objmgr_pdev *pdev,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
qdf_export_symbol(wlan_objmgr_pdev_release_ref);
|
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