From 372647d95a85e597879cc8ed27ebe19d2b570f00 Mon Sep 17 00:00:00 2001 From: Karunakar Dasineni Date: Mon, 15 Jan 2018 22:27:39 -0800 Subject: [PATCH] qcacmn: Avoid REO queue setup after peer deletion REO queue setup is getting triggered from processing pending null queue exceptions in WBM release ring, after sending peer delete command to FW, but before peer unmap is received, causing target assert. Mark peer deletion before sending peer delete command to avoid this. Change-Id: I2d85d01e049cb37d9321beeee8e41f44e40e68ad CRs-Fixed: 2155420 --- dp/wifi3.0/dp_main.c | 1 + dp/wifi3.0/dp_peer.c | 3 +++ dp/wifi3.0/dp_types.h | 1 + 3 files changed, 5 insertions(+) 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