qcacmn: clean up AST entries in target recovery case

In case of target recovery clean up the AST entries on
peer before peer cleanup

Change-Id: Ib4f119ec259f0de03b0513a8f0dc8ef4b431f24a
CRs-fixed: 2419890
This commit is contained in:
Chaithanya Garrepalli
2019-03-20 16:56:43 +05:30
committed by nshrivas
parent a42581d479
commit a5ad5822aa

View File

@@ -4583,6 +4583,7 @@ static void dp_vdev_flush_peers(struct cdp_vdev *vdev_handle, bool unmap_only)
struct dp_soc *soc = pdev->soc;
struct dp_peer *peer;
uint16_t *peer_ids;
struct dp_ast_entry *ase, *tmp_ase;
uint8_t i = 0, j = 0;
peer_ids = qdf_mem_malloc(soc->max_peers * sizeof(peer_ids[0]));
@@ -4606,6 +4607,19 @@ static void dp_vdev_flush_peers(struct cdp_vdev *vdev_handle, bool unmap_only)
peer = __dp_peer_find_by_id(soc, peer_ids[i]);
if (peer) {
if (soc->is_peer_map_unmap_v2) {
/* free AST entries of peer before
* release peer reference
*/
DP_PEER_ITERATE_ASE_LIST(peer, ase,
tmp_ase) {
dp_rx_peer_unmap_handler
(soc, peer_ids[i],
vdev->vdev_id,
ase->mac_addr.raw,
1);
}
}
dp_rx_peer_unmap_handler(soc, peer_ids[i],
vdev->vdev_id,
peer->mac_addr.raw,
@@ -4618,6 +4632,19 @@ static void dp_vdev_flush_peers(struct cdp_vdev *vdev_handle, bool unmap_only)
dp_info("peer: %pM is getting flush",
peer->mac_addr.raw);
if (soc->is_peer_map_unmap_v2) {
/* free AST entries of peer before
* release peer reference
*/
DP_PEER_ITERATE_ASE_LIST(peer, ase,
tmp_ase) {
dp_rx_peer_unmap_handler
(soc, peer_ids[i],
vdev->vdev_id,
ase->mac_addr.raw,
1);
}
}
dp_peer_delete_wifi3(peer, 0);
/*
* we need to call dp_peer_unref_del_find_by_id