qcacmn: add locks in dp_get_vdev_from_soc_vdev_id_wifi3 API

In dp_get_vdev_from_soc_vdev_id_wifi3 add vdev list lock
while traversing through pdev->vdev_list

Change-Id: I24652a7a65247625b3a6da092476287bf8560e1b
CRs-fixed: 2323655
This commit is contained in:
Chaithanya Garrepalli
2018-10-05 19:11:00 +05:30
committed by nshrivas
parent 20b46778a7
commit 3ba616a89a
2 changed files with 5 additions and 0 deletions

View File

@@ -1885,6 +1885,8 @@ static void dp_process_ppdu_stats_user_rate_tlv(struct dp_pdev *pdev,
vdev = vdev =
dp_get_vdev_from_soc_vdev_id_wifi3(pdev->soc, dp_get_vdev_from_soc_vdev_id_wifi3(pdev->soc,
ppdu_desc->vdev_id); ppdu_desc->vdev_id);
if (!vdev)
return;
qdf_mem_copy(ppdu_user_desc->mac_addr, vdev->mac_addr.raw, qdf_mem_copy(ppdu_user_desc->mac_addr, vdev->mac_addr.raw,
DP_MAC_ADDR_LEN); DP_MAC_ADDR_LEN);
} else { } else {

View File

@@ -173,15 +173,18 @@ dp_get_vdev_from_soc_vdev_id_wifi3(struct dp_soc *soc,
for (i = 0; i < MAX_PDEV_CNT && soc->pdev_list[i]; i++) { for (i = 0; i < MAX_PDEV_CNT && soc->pdev_list[i]; i++) {
pdev = soc->pdev_list[i]; pdev = soc->pdev_list[i];
qdf_spin_lock_bh(&pdev->vdev_list_lock);
TAILQ_FOREACH(vdev, &pdev->vdev_list, vdev_list_elem) { TAILQ_FOREACH(vdev, &pdev->vdev_list, vdev_list_elem) {
if (vdev->vdev_id == vdev_id) { if (vdev->vdev_id == vdev_id) {
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE(QDF_MODULE_ID_DP,
QDF_TRACE_LEVEL_INFO, QDF_TRACE_LEVEL_INFO,
FL("Found vdev 0x%pK on pdev %d"), FL("Found vdev 0x%pK on pdev %d"),
vdev, i); vdev, i);
qdf_spin_unlock_bh(&pdev->vdev_list_lock);
return vdev; return vdev;
} }
} }
qdf_spin_unlock_bh(&pdev->vdev_list_lock);
} }
return NULL; return NULL;