Parcourir la source

qcacld-3.0: Remove peer AST entries on peer delete

During peer removal, call cdp_peer_teardown to
make sure all the peer AST entries are removed.
This also marks the peer->delete_in_progress flag.

Change-Id: Ibe4a0244cadc2b8073e4e71a925a615447d00933
CRs-Fixed: 2287663
Mohit Khanna il y a 6 ans
Parent
commit
b8b6e58eb4
1 fichiers modifiés avec 9 ajouts et 2 suppressions
  1. 9 2
      core/wma/src/wma_dev_if.c

+ 9 - 2
core/wma/src/wma_dev_if.c

@@ -1429,7 +1429,6 @@ void wma_remove_peer(tp_wma_handle wma, uint8_t *bssid,
 		QDF_BUG(0);
 		return;
 	}
-
 	peer_mac_addr = cdp_peer_get_peer_mac_addr(soc, peer);
 	if (peer_mac_addr == NULL) {
 		WMA_LOGE("%s: peer mac addr is NULL, Can't remove peer with peer_addr %pM vdevid %d peer_count %d",
@@ -1438,6 +1437,15 @@ void wma_remove_peer(tp_wma_handle wma, uint8_t *bssid,
 		QDF_BUG(0);
 		return;
 	}
+	vdev = cdp_get_vdev_from_vdev_id(soc, pdev, vdev_id);
+	if (!vdev) {
+		WMA_LOGE("%s vdev is null for peer peer->mac_addr %pM",
+			 __func__, peer_mac_addr);
+		QDF_BUG(0);
+		return;
+	}
+
+	cdp_peer_teardown(soc, vdev, peer);
 
 	if (roam_synch_in_progress)
 		goto peer_detach;
@@ -1468,7 +1476,6 @@ void wma_remove_peer(tp_wma_handle wma, uint8_t *bssid,
 	}
 
 peer_detach:
-	vdev = cdp_get_vdev_from_vdev_id(soc, pdev, vdev_id);
 	WMA_LOGD("%s: vdev %pK is detaching %pK with peer_addr %pM vdevid %d peer_count %d",
 		__func__, vdev, peer, peer_mac_addr, vdev_id,
 		wma->interfaces[vdev_id].peer_count);