From: Christian Marangi Date: Fri, 24 Oct 2025 10:16:11 +0000 (+0200) Subject: airoha: backport fix for Airoha offload support with airoha_hw_init fail X-Git-Url: http://git.openwrt.org/?a=commitdiff_plain;h=c3c75d0e685b90fdcb9f1cf79a6e2c6949cce9ac;p=openwrt%2Fstaging%2Fstintel.git airoha: backport fix for Airoha offload support with airoha_hw_init fail 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 --- 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 index 0000000000..58e48cb8d0 --- /dev/null +++ b/target/linux/airoha/patches-6.12/104-v6.16-net-airoha-Fix-an-error-handling-path-in-airoha_prob.patch @@ -0,0 +1,29 @@ +From 3ef07434c7dbfba302df477bb6c70e082965f232 Mon Sep 17 00:00:00 2001 +From: Christophe JAILLET +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 +Reviewed-by: Simon Horman +Acked-by: Lorenzo Bianconi +Link: https://patch.msgid.link/1c940851b4fa3c3ed2a142910c821493a136f121.1746715755.git.christophe.jaillet@wanadoo.fr +Signed-off-by: Jakub Kicinski +--- + 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(ð->qdma[i]); ++ airoha_ppe_deinit(eth); + error_hw_cleanup: + for (i = 0; i < ARRAY_SIZE(eth->qdma); i++) + airoha_hw_cleanup(ð->qdma[i]);