From d90ed4ea859a7bf30ded25f36d9e70bea7ec29b7 Mon Sep 17 00:00:00 2001 From: Krunal Soni Date: Thu, 28 Jun 2018 14:27:35 -0700 Subject: [PATCH] qcacld-3.0: Fix peer ref-count while deleting peer as part of LFR3 There are two instances where peer ref counting leak has been observed 1) When DUT-STA is connected to AP1 and if it tries to roam to AP2 or to same AP1 then as part of roam sync indication, it needs to delete the old peer and create the new peer. Deletion of old peer is happening through force delete operation which is No-OP for some of the platforms. In such cases, do normal peer delete operation, so that peer ref count can be deleted properly. CRs-Fixed: 2270761 Change-Id: Ibcad72943258e531e29498961d3d7e692fd05b36 --- core/wma/src/wma_dev_if.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/core/wma/src/wma_dev_if.c b/core/wma/src/wma_dev_if.c index ec54f6214ff4..5b081b82c060 100644 --- a/core/wma/src/wma_dev_if.c +++ b/core/wma/src/wma_dev_if.c @@ -1525,10 +1525,18 @@ peer_detach: wma->interfaces[vdev_id].peer_count); /* Copy peer mac to find and delete objmgr peer */ qdf_mem_copy(peer_mac, peer_mac_addr, QDF_MAC_ADDR_SIZE); - if (roam_synch_in_progress) + if (roam_synch_in_progress && + is_cdp_peer_detach_force_delete_supported(soc)) { + WMA_LOGD("%s: LFR3: trigger force delete for peer %pM", + __func__, peer_mac_addr); cdp_peer_detach_force_delete(soc, peer); - else + } else { + if (roam_synch_in_progress) { + WMA_LOGD("%s: LFR3: normal peer delete for peer %pM", + __func__, peer_mac_addr); + } cdp_peer_delete(soc, peer, bitmap); + } wma_remove_objmgr_peer(wma, vdev_id, peer_mac);