Bläddra i källkod

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
Krunal Soni 6 år sedan
förälder
incheckning
d90ed4ea85
1 ändrade filer med 10 tillägg och 2 borttagningar
  1. 10 2
      core/wma/src/wma_dev_if.c

+ 10 - 2
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);