qcacmn: Fix ML peer refleaks reported in wifi down
Delete MLO peer from primary SOC while ML peer delete Change-Id: Ideb78964718699397a1fb5da22c28ec787c5bd0c
This commit is contained in:

committed by
Madan Koyyalamudi

parent
09afbc7282
commit
3d9c419f95
@@ -5199,9 +5199,6 @@ fail0:
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef WLAN_DP_PENDING_MEM_FLUSH
|
||||
/**
|
||||
* dp_pdev_flush_pending_vdevs() - Flush all delete pending vdevs in pdev
|
||||
* @pdev: Datapath PDEV handle
|
||||
@@ -5214,33 +5211,33 @@ fail0:
|
||||
*/
|
||||
static void dp_pdev_flush_pending_vdevs(struct dp_pdev *pdev)
|
||||
{
|
||||
struct dp_vdev *vdev = NULL;
|
||||
struct dp_soc *soc = pdev->soc;
|
||||
struct dp_vdev *vdev_arr[MAX_VDEV_CNT] = {0};
|
||||
uint32_t i = 0;
|
||||
uint32_t num_vdevs = 0;
|
||||
struct dp_vdev *vdev = NULL;
|
||||
|
||||
if (TAILQ_EMPTY(&soc->inactive_vdev_list))
|
||||
return;
|
||||
|
||||
while (true) {
|
||||
qdf_spin_lock_bh(&soc->inactive_vdev_list_lock);
|
||||
TAILQ_FOREACH(vdev, &soc->inactive_vdev_list,
|
||||
inactive_list_elem) {
|
||||
if (vdev->pdev == pdev)
|
||||
break;
|
||||
}
|
||||
qdf_spin_unlock_bh(&soc->inactive_vdev_list_lock);
|
||||
qdf_spin_lock_bh(&soc->inactive_vdev_list_lock);
|
||||
TAILQ_FOREACH(vdev, &soc->inactive_vdev_list,
|
||||
inactive_list_elem) {
|
||||
if (vdev->pdev != pdev)
|
||||
continue;
|
||||
|
||||
/* vdev will be freed when all peers get cleanup */
|
||||
if (vdev)
|
||||
dp_vdev_flush_peers((struct cdp_vdev *)vdev, 0);
|
||||
else
|
||||
break;
|
||||
vdev_arr[num_vdevs] = vdev;
|
||||
num_vdevs++;
|
||||
/* take reference to free */
|
||||
dp_vdev_get_ref(soc, vdev, DP_MOD_ID_CDP);
|
||||
}
|
||||
qdf_spin_unlock_bh(&soc->inactive_vdev_list_lock);
|
||||
|
||||
for (i = 0; i < num_vdevs; i++) {
|
||||
dp_vdev_flush_peers((struct cdp_vdev *)vdev_arr[i], 0);
|
||||
dp_vdev_unref_delete(soc, vdev_arr[i], DP_MOD_ID_CDP);
|
||||
}
|
||||
}
|
||||
#else
|
||||
static void dp_pdev_flush_pending_vdevs(struct dp_pdev *pdev)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef QCA_VDEV_STATS_HW_OFFLOAD_SUPPORT
|
||||
/**
|
||||
@@ -8093,7 +8090,7 @@ static QDF_STATUS dp_peer_delete_wifi3(struct cdp_soc_t *soc_hdl,
|
||||
|
||||
dp_peer_vdev_list_remove(soc, vdev, peer);
|
||||
|
||||
dp_peer_mlo_delete(soc, peer);
|
||||
dp_peer_mlo_delete(peer);
|
||||
|
||||
qdf_spin_lock_bh(&soc->inactive_peer_list_lock);
|
||||
TAILQ_INSERT_TAIL(&soc->inactive_peer_list, peer,
|
||||
|
Reference in New Issue
Block a user