Browse Source

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
Karunakar Dasineni 7 years ago
parent
commit
372647d95a
3 changed files with 5 additions and 0 deletions
  1. 1 0
      dp/wifi3.0/dp_main.c
  2. 3 0
      dp/wifi3.0/dp_peer.c
  3. 1 0
      dp/wifi3.0/dp_types.h

+ 1 - 0
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

+ 3 - 0
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);

+ 1 - 0
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