[][openwrt][mt7988][tops][Fix L2TP/IPSec deadlock and check if TOPS HW exists]

[Description]
Fix HW issue between tunnel offload engine and crypto offload engine.

Check if TOPS HW exists before bring-up.

Sync from internal dev repo.
Commit-Id <5951d48c0b4fd965d66afddcb322f5244614076f>

[Release-log]
N/A

Change-Id: I132d67e23117f7bd14def1f8d42173eb0b7211f7
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/8023635
diff --git a/package-21.02/kernel/tops/src/tnl_offload.c b/package-21.02/kernel/tops/src/tnl_offload.c
index bd37faa..268e3ee 100644
--- a/package-21.02/kernel/tops/src/tnl_offload.c
+++ b/package-21.02/kernel/tops/src/tnl_offload.c
@@ -25,6 +25,7 @@
 #include <pce/cdrt.h>
 #include <pce/cls.h>
 #include <pce/dipfilter.h>
+#include <pce/netsys.h>
 #include <pce/pce.h>
 
 #include "internal.h"
@@ -508,9 +509,12 @@
 	} else {
 		/*
 		 * since CLS is already filled up with outer protocol rule
-		 * we only update CLS tport here to let matched packet stop by TOPS
+		 * we only update CLS tport here to let matched packet to go through
+		 * QDMA and specify the destination port to TOPS
 		 */
-		CLS_DESC_DATA(&tcls->cls->cdesc, tport_idx, 0x7);
+		CLS_DESC_DATA(&tcls->cls->cdesc, tport_idx, NR_EIP197_QDMA_TPORT);
+		CLS_DESC_DATA(&tcls->cls->cdesc, fport, PSE_PORT_TDMA);
+		CLS_DESC_DATA(&tcls->cls->cdesc, qid, 12);
 	}
 
 cls_entry_write: