]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
airoha: backport fix for Airoha offload support with airoha_hw_init fail
authorChristian Marangi <ansuelsmth@gmail.com>
Fri, 24 Oct 2025 10:16:11 +0000 (12:16 +0200)
committerChristian Marangi <ansuelsmth@gmail.com>
Fri, 24 Oct 2025 10:17:46 +0000 (12:17 +0200)
Backport a patch fixing a kernel panic on airoha_hw_init fail. This
should better handle scenario with NPU load Probe deferring.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
target/linux/airoha/patches-6.12/104-v6.16-net-airoha-Fix-an-error-handling-path-in-airoha_prob.patch [new file with mode: 0644]

diff --git a/target/linux/airoha/patches-6.12/104-v6.16-net-airoha-Fix-an-error-handling-path-in-airoha_prob.patch b/target/linux/airoha/patches-6.12/104-v6.16-net-airoha-Fix-an-error-handling-path-in-airoha_prob.patch
new file mode 100644 (file)
index 0000000..58e48cb
--- /dev/null
@@ -0,0 +1,29 @@
+From 3ef07434c7dbfba302df477bb6c70e082965f232 Mon Sep 17 00:00:00 2001
+From: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
+Date: Sat, 5 Jul 2025 10:34:32 +0200
+Subject: [PATCH] net: airoha: Fix an error handling path in airoha_probe()
+
+If an error occurs after a successful airoha_hw_init() call,
+airoha_ppe_deinit() needs to be called as already done in the remove
+function.
+
+Fixes: 00a7678310fe ("net: airoha: Introduce flowtable offload support")
+Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
+Reviewed-by: Simon Horman <horms@kernel.org>
+Acked-by: Lorenzo Bianconi <lorenzo@kernel.org>
+Link: https://patch.msgid.link/1c940851b4fa3c3ed2a142910c821493a136f121.1746715755.git.christophe.jaillet@wanadoo.fr
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+---
+ drivers/net/ethernet/airoha/airoha_eth.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/net/ethernet/airoha/airoha_eth.c
++++ b/drivers/net/ethernet/airoha/airoha_eth.c
+@@ -3044,6 +3044,7 @@ static int airoha_probe(struct platform_
+ error_napi_stop:
+       for (i = 0; i < ARRAY_SIZE(eth->qdma); i++)
+               airoha_qdma_stop_napi(&eth->qdma[i]);
++      airoha_ppe_deinit(eth);
+ error_hw_cleanup:
+       for (i = 0; i < ARRAY_SIZE(eth->qdma); i++)
+               airoha_hw_cleanup(&eth->qdma[i]);