diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 246484480390..dab6ab63a797 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -5917,6 +5917,7 @@ static void dp_peer_teardown_wifi3(struct cdp_vdev *vdev_hdl, void *peer_hdl) struct dp_peer *peer = (struct dp_peer *) peer_hdl; struct dp_soc *soc = (struct dp_soc *) vdev->pdev->soc; + peer->delete_in_progress = true; dp_peer_delete_ast_entries(soc, peer); } #endif diff --git a/dp/wifi3.0/dp_peer.c b/dp/wifi3.0/dp_peer.c index 686b976061ca..0cdcb15f8293 100644 --- a/dp/wifi3.0/dp_peer.c +++ b/dp/wifi3.0/dp_peer.c @@ -1041,6 +1041,9 @@ int dp_rx_tid_setup_wifi3(struct dp_peer *peer, int tid, void *hw_qdesc_vaddr; uint32_t alloc_tries = 0; + if (peer->delete_in_progress) + return QDF_STATUS_E_FAILURE; + if (rx_tid->hw_qdesc_vaddr_unaligned != NULL) return dp_rx_tid_update_wifi3(peer, tid, ba_window_size, start_seq); diff --git a/dp/wifi3.0/dp_types.h b/dp/wifi3.0/dp_types.h index cc88040ba448..ef6273a9b197 100644 --- a/dp/wifi3.0/dp_types.h +++ b/dp/wifi3.0/dp_types.h @@ -1331,6 +1331,7 @@ struct dp_peer { #ifdef WDS_VENDOR_EXTENSION dp_ecm_policy wds_ecm; #endif + bool delete_in_progress; }; #ifdef CONFIG_WIN