Oliver Neukum 29f18b
From 31561e8557cd1eeba5806ac9ce820f8323b2201b Mon Sep 17 00:00:00 2001
Oliver Neukum 29f18b
From: Rakesh Pillai <pillair@codeaurora.org>
Oliver Neukum 29f18b
Date: Sat, 12 Dec 2020 00:30:10 +0530
Oliver Neukum 29f18b
Subject: [PATCH] ath10k: Fix error handling in case of CE pipe init failure
Oliver Neukum 29f18b
Git-commit: 31561e8557cd1eeba5806ac9ce820f8323b2201b
Oliver Neukum 29f18b
References: git-fixes
Oliver Neukum 29f18b
Patch-mainline: v5.12-rc1
Oliver Neukum 29f18b
Oliver Neukum 29f18b
Currently if the copy engine pipe init fails for snoc based
Oliver Neukum 29f18b
chipsets, the rri is not freed.
Oliver Neukum 29f18b
Oliver Neukum 29f18b
Fix this error handling for copy engine pipe init
Oliver Neukum 29f18b
failure.
Oliver Neukum 29f18b
Oliver Neukum 29f18b
Tested-on: WCN3990 hw1.0 SNOC WLAN.HL.3.1-01040-QCAHLSWMTPLZ-1
Oliver Neukum 29f18b
Oliver Neukum 29f18b
Fixes: 4945af5b264f ("ath10k: enable SRRI/DRRI support on ddr for WCN3990")
Oliver Neukum 29f18b
Signed-off-by: Rakesh Pillai <pillair@codeaurora.org>
Oliver Neukum 29f18b
Reviewed-by: Brian Norris <briannorris@chromium.org>
Oliver Neukum 29f18b
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Oliver Neukum 29f18b
Link: https://lore.kernel.org/r/1607713210-18320-1-git-send-email-pillair@codeaurora.org
Oliver Neukum 29f18b
Signed-off-by: Oliver Neukum <oneukum@suse.com>
Oliver Neukum 29f18b
---
Oliver Neukum 29f18b
 drivers/net/wireless/ath/ath10k/snoc.c |    5 +++--
Oliver Neukum 29f18b
 1 file changed, 3 insertions(+), 2 deletions(-)
Oliver Neukum 29f18b
Oliver Neukum 29f18b
--- a/drivers/net/wireless/ath/ath10k/snoc.c
Oliver Neukum 29f18b
+++ b/drivers/net/wireless/ath/ath10k/snoc.c
Oliver Neukum 29f18b
@@ -789,13 +789,14 @@ static int ath10k_snoc_hif_power_up(stru
Oliver Neukum 29f18b
 	ret = ath10k_snoc_init_pipes(ar);
Oliver Neukum 29f18b
 	if (ret) {
Oliver Neukum 29f18b
 		ath10k_err(ar, "failed to initialize CE: %d\n", ret);
Oliver Neukum 29f18b
-		goto err_wlan_enable;
Oliver Neukum 29f18b
+		goto err_free_rri;
Oliver Neukum 29f18b
 	}
Oliver Neukum 29f18b
 
Oliver Neukum 29f18b
 	napi_enable(&ar->napi);
Oliver Neukum 29f18b
 	return 0;
Oliver Neukum 29f18b
 
Oliver Neukum 29f18b
-err_wlan_enable:
Oliver Neukum 29f18b
+err_free_rri:
Oliver Neukum 29f18b
+	ath10k_ce_free_rri(ar);
Oliver Neukum 29f18b
 	ath10k_snoc_wlan_disable(ar);
Oliver Neukum 29f18b
 
Oliver Neukum 29f18b
 	return ret;