Sfoglia il codice sorgente

qcacld-3.0: Delete peer when vdev start timeout

When failure status is received in vdev start response from FW,
host will call wma_remove_peer to delete peer.
However, this operation is not done in the timeout handler of vdev
start request and it will lead to peer leak when vdev start response
failed to be received from FW.
Add peer deletion in vdev start request timeout handler accordingly.

Change-Id: I419369d09be1bd4b7e19e45b11256190fd2ec267
CRs-Fixed: 2288937
Min Liu 6 anni fa
parent
commit
f2bc4850fa
1 ha cambiato i file con 8 aggiunte e 0 eliminazioni
  1. 8 0
      core/wma/src/wma_dev_if.c

+ 8 - 0
core/wma/src/wma_dev_if.c

@@ -3676,6 +3676,14 @@ void wma_vdev_resp_timer(void *data)
 			wma_trigger_recovery_assert_on_fw_timeout(
 				WMA_ADD_BSS_REQ);
 		} else {
+			peer = cdp_peer_find_by_addr(soc, pdev, params->bssId,
+						     &peer_id);
+			if (peer)
+				wma_remove_peer(wma, params->bssId,
+						tgt_req->vdev_id, peer, false);
+			else
+				WMA_LOGE("%s: Failed to find peer", __func__);
+
 			wma_send_msg_high_priority(wma, WMA_ADD_BSS_RSP,
 						   (void *)params, 0);
 			QDF_ASSERT(0);