[][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: