[][MAC80211][hnat][Fix PPE hanging issue during the reboot test]

[Description]
Fix PPE hanging issue during the reboot test.

In the mtk_ppe_stop() function, the PPE scan mode is not disabled before
disabling the PPE. This can potentially lead to a hang during the process
of disabling the PPE.

Without this patch, the PPE may experience a hang during the reboot test.

[Release-log]
N/A


Change-Id: I3bc692c3e43f06df6d7f5c0205e45870ce029eee
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/8140700
diff --git a/autobuild_mac80211_release/target/linux/mediatek/patches-5.4/999-3001-mt7622-backport-nf-hw-offload-framework-and-upstream.patch b/autobuild_mac80211_release/target/linux/mediatek/patches-5.4/999-3001-mt7622-backport-nf-hw-offload-framework-and-upstream.patch
index ec6efb9..528abb1 100644
--- a/autobuild_mac80211_release/target/linux/mediatek/patches-5.4/999-3001-mt7622-backport-nf-hw-offload-framework-and-upstream.patch
+++ b/autobuild_mac80211_release/target/linux/mediatek/patches-5.4/999-3001-mt7622-backport-nf-hw-offload-framework-and-upstream.patch
@@ -248,7 +248,7 @@
 index 0000000..27b5be5
 --- /dev/null
 +++ b/drivers/net/ethernet/mediatek/mtk_ppe.c
-@@ -0,0 +1,510 @@
+@@ -0,0 +1,514 @@
 +// SPDX-License-Identifier: GPL-2.0-only
 +/* Copyright (C) 2020 Felix Fietkau <nbd@nbd.name> */
 +
@@ -676,7 +676,7 @@
 +			 MTK_PPE_KEEPALIVE_DISABLE) |
 +	      FIELD_PREP(MTK_PPE_TB_CFG_HASH_MODE, 1) |
 +	      FIELD_PREP(MTK_PPE_TB_CFG_SCAN_MODE,
-+			 MTK_PPE_SCAN_MODE_KEEPALIVE_AGE) |
++			 MTK_PPE_SCAN_MODE_CHECK_AGE) |
 +	      FIELD_PREP(MTK_PPE_TB_CFG_ENTRY_NUM,
 +			 MTK_PPE_ENTRIES_SHIFT);
 +	ppe_w32(ppe, MTK_PPE_TB_CFG, val);
@@ -745,19 +745,23 @@
 +
 +	mtk_ppe_cache_enable(ppe, false);
 +
-+	/* disable offload engine */
-+	ppe_clear(ppe, MTK_PPE_GLO_CFG, MTK_PPE_GLO_CFG_EN);
-+	ppe_w32(ppe, MTK_PPE_FLOW_CFG, 0);
-+
 +	/* disable aging */
 +	val = MTK_PPE_TB_CFG_AGE_NON_L4 |
 +	      MTK_PPE_TB_CFG_AGE_UNBIND |
 +	      MTK_PPE_TB_CFG_AGE_TCP |
 +	      MTK_PPE_TB_CFG_AGE_UDP |
-+	      MTK_PPE_TB_CFG_AGE_TCP_FIN;
++	      MTK_PPE_TB_CFG_AGE_TCP_FIN |
++	      MTK_PPE_TB_CFG_SCAN_MODE;
 +	ppe_clear(ppe, MTK_PPE_TB_CFG, val);
 +
-+	return mtk_ppe_wait_busy(ppe);
++	if (mtk_ppe_wait_busy(ppe))
++		return -ETIMEDOUT;
++
++	/* disable offload engine */
++	ppe_clear(ppe, MTK_PPE_GLO_CFG, MTK_PPE_GLO_CFG_EN);
++	ppe_w32(ppe, MTK_PPE_FLOW_CFG, 0);
++
++	return 0;
 +}
 diff --git a/drivers/net/ethernet/mediatek/mtk_ppe.h b/drivers/net/ethernet/mediatek/mtk_ppe.h
 new file mode 100644