test suite reviews and discussions
 help / color / mirror / Atom feed
* [dts][PATCH V1] tests/cvl_advanced_iavf_rss_pppol2tpoudp: add test cases for l2tpv2 control and data
@ 2022-03-15  4:10 Yaqi Tang
  2022-03-23  7:24 ` lijuan.tu
  0 siblings, 1 reply; 2+ messages in thread
From: Yaqi Tang @ 2022-03-15  4:10 UTC (permalink / raw)
  To: dts; +Cc: Yaqi Tang

Support IAVF PPPoL2TPv2oUDP RSS Hash, and required to distribute packets based on inner IP src+dest address and TCP/UDP src+dest port.

Signed-off-by: Yaqi Tang <yaqi.tang@intel.com>
Tested-by: Yaqi Tang < yaqi.tang@intel.com>
---
 ...uite_cvl_advanced_iavf_rss_pppol2tpoudp.py | 1321 +++++++++++++++++
 1 file changed, 1321 insertions(+)

diff --git a/tests/TestSuite_cvl_advanced_iavf_rss_pppol2tpoudp.py b/tests/TestSuite_cvl_advanced_iavf_rss_pppol2tpoudp.py
index 81cff39d..3a6bbd97 100644
--- a/tests/TestSuite_cvl_advanced_iavf_rss_pppol2tpoudp.py
+++ b/tests/TestSuite_cvl_advanced_iavf_rss_pppol2tpoudp.py
@@ -1714,6 +1714,1150 @@ vector_case_64 = [
     },
 ]
 
+#l2tpv2 control + data
+vector_case_65 = [
+    {
+        "sub_casename": "l2tpv2_session_id_MAC_IPV4_L2TPV2_CONTROL",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type control session_id is 0x1111 / end actions rss types l2tpv2 end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x2222)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_66 = [
+    {
+        "sub_casename": "eth_l2_src_only_MAC_IPV4_L2TPV2_CONTROL",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv4 / udp / l2tpv2 type control session_id is 0x1111 / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x2222)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_67 = [
+    {
+        "sub_casename": "l2tpv2_session_id_MAC_IPV6_L2TPV2_CONTROL",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type control session_id is 0x1111 / end actions rss types l2tpv2 end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x2222)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_68 = [
+    {
+        "sub_casename": "eth_l2_src_only_MAC_IPV6_L2TPV2_CONTROL",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv6 / udp / l2tpv2 type control session_id is 0x1111 / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x2222)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0xc80,len=12,session_id=0x1111)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_69 = [
+    {
+        "sub_casename": "l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data session_id is 0x1111 / end actions rss types l2tpv2 end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x2222)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_70 = [
+    {
+        "sub_casename": "eth_l2_src_only_MAC_IPV4_L2TPV2_DATA",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv4 / udp / l2tpv2 type data session_id is 0x1111 / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x2222)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_71 = [
+    {
+        "sub_casename": "l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA_L",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l session_id is 0x1111 / end actions rss types l2tpv2 end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x2222)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_72 = [
+    {
+        "sub_casename": "eth_l2_src_only_MAC_IPV4_L2TPV2_DATA_L",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv4 / udp / l2tpv2 type data_l session_id is 0x1111 / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x2222)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_73 = [
+    {
+        "sub_casename": "l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA_S",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_s session_id is 0x1111 / end actions rss types l2tpv2 end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x2222)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_74 = [
+    {
+        "sub_casename": "eth_l2_src_only_MAC_IPV4_L2TPV2_DATA_S",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv4 / udp / l2tpv2 type data_s session_id is 0x1111 / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x2222)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_75 = [
+    {
+        "sub_casename": "l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA_O",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_o session_id is 0x1111 offset_size is 6 / end actions rss types l2tpv2 end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x2222,offset=6)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_76 = [
+    {
+        "sub_casename": "eth_l2_src_only_MAC_IPV4_L2TPV2_DATA_O",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv4 / udp / l2tpv2 type data_o session_id is 0x1111 offset_size is 6 / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x2222,offset=6)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_77 = [
+    {
+        "sub_casename": "l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA_L_S",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l_s session_id is 0x1111 / end actions rss types l2tpv2 end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x2222)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_78 = [
+    {
+        "sub_casename": "eth_l2_src_only_MAC_IPV4_L2TPV2_DATA_L_S",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv4 / udp / l2tpv2 type data_l_s session_id is 0x1111 / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x2222)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_79 = [
+    {
+        "sub_casename": "l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data session_id is 0x1111 / end actions rss types l2tpv2 end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x2222)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_80 = [
+    {
+        "sub_casename": "eth_l2_src_only_MAC_IPV6_L2TPV2_DATA",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv6 / udp / l2tpv2 type data session_id is 0x1111 / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x2222)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_81 = [
+    {
+        "sub_casename": "l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA_L",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l session_id is 0x1111 / end actions rss types l2tpv2 end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x2222)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_82 = [
+    {
+        "sub_casename": "eth_l2_src_only_MAC_IPV6_L2TPV2_DATA_L",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv6 / udp / l2tpv2 type data_l session_id is 0x1111 / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x2222)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=8,session_id=0x1111)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_83 = [
+    {
+        "sub_casename": "l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA_S",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_s session_id is 0x1111 / end actions rss types l2tpv2 end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x2222)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_84 = [
+    {
+        "sub_casename": "eth_l2_src_only_MAC_IPV6_L2TPV2_DATA_S",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv6 / udp / l2tpv2 type data_s session_id is 0x1111 / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x2222)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_85 = [
+    {
+        "sub_casename": "l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA_O",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_o session_id is 0x1111 offset_size is 6 / end actions rss types l2tpv2 end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x2222,offset=6)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_86 = [
+    {
+        "sub_casename": "eth_l2_src_only_MAC_IPV6_L2TPV2_DATA_O",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv6 / udp / l2tpv2 type data_o session_id is 0x1111 offset_size is 6 / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x2222,offset=6)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_87 = [
+    {
+        "sub_casename": "l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA_L_S",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l_s session_id is 0x1111 / end actions rss types l2tpv2 end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x2222)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_88 = [
+    {
+        "sub_casename": "eth_l2_src_only_MAC_IPV6_L2TPV2_DATA_L_S",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv6 / udp / l2tpv2 type data_l_s session_id is 0x1111 / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x2222)",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=12,session_id=0x1111)",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_89 = [
+    {
+        "sub_casename": "l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data session_id is 0x1111 / ppp / end actions rss types l2tpv2 end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x2222)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_90 = [
+    {
+        "sub_casename": "eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv4 / udp / l2tpv2 type data session_id is 0x1111 / ppp / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x2222)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_91 = [
+    {
+        "sub_casename": "l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA_L",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l session_id is 0x1111 / ppp / end actions rss types l2tpv2 end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x2222)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_92 = [
+    {
+        "sub_casename": "eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA_L",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv4 / udp / l2tpv2 type data_l session_id is 0x1111 / ppp / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x2222)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_93 = [
+    {
+        "sub_casename": "l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA_S",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_s session_id is 0x1111 / ppp / end actions rss types l2tpv2 end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x2222)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_94 = [
+    {
+        "sub_casename": "eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA_S",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv4 / udp / l2tpv2 type data_s session_id is 0x1111 / ppp / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x2222)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_95 = [
+    {
+        "sub_casename": "l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA_O",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_o session_id is 0x1111 offset_size is 6 / ppp / end actions rss types l2tpv2 end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw(b'\\x00\\x00\\x00\\x00')/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x2222,offset=6)/Raw(b'\\x00\\x00\\x00\\x00')/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw(b'\\x00\\x00\\x00\\x00')/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw(b'\\x00\\x00\\x00\\x00')/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_96 = [
+    {
+        "sub_casename": "eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA_O",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv4 / udp / l2tpv2 type data_o session_id is 0x1111 / ppp / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw(b'\\x00\\x00\\x00\\x00')/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw(b'\\x00\\x00\\x00\\x00')/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x2222,offset=6)/Raw(b'\\x00\\x00\\x00\\x00')/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw(b'\\x00\\x00\\x00\\x00')/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_97 = [
+    {
+        "sub_casename": "l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA_L_S",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth / ipv4 / udp / l2tpv2 type data_l_s session_id is 0x1111 / ppp / end actions rss types l2tpv2 end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x2222)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_98 = [
+    {
+        "sub_casename": "eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA_L_S",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv4 / udp / l2tpv2 type data_l_s session_id is 0x1111 / ppp / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x2222)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_99 = [
+    {
+        "sub_casename": "l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data session_id is 0x1111 / ppp / end actions rss types l2tpv2 end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x2222)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_100 = [
+    {
+        "sub_casename": "eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv6 / udp / l2tpv2 type data session_id is 0x1111 / ppp / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x2222)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x000,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_101 = [
+    {
+        "sub_casename": "l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA_L",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l session_id is 0x1111 / ppp / end actions rss types l2tpv2 end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x2222)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_102 = [
+    {
+        "sub_casename": "eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA_L",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv6 / udp / l2tpv2 type data_l session_id is 0x1111 / ppp / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x2222)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x400,len=12,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_103 = [
+    {
+        "sub_casename": "l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA_S",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_s session_id is 0x1111 / ppp / end actions rss types l2tpv2 end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x2222)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_104 = [
+    {
+        "sub_casename": "eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA_S",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv6 / udp / l2tpv2 type data_s session_id is 0x1111 / ppp / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x2222)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x080,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_105 = [
+    {
+        "sub_casename": "l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA_O",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_o session_id is 0x1111 offset_size is 6 / ppp / end actions rss types l2tpv2 end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw(b'\\x00\\x00\\x00\\x00')/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x2222,offset=6)/Raw(b'\\x00\\x00\\x00\\x00')/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw(b'\\x00\\x00\\x00\\x00')/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw(b'\\x00\\x00\\x00\\x00')/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_106 = [
+    {
+        "sub_casename": "eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA_O",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv6 / udp / l2tpv2 type data_o session_id is 0x1111 offset_size is 6 / ppp / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw(b'\\x00\\x00\\x00\\x00')/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw(b'\\x00\\x00\\x00\\x00')/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x2222,offset=6)/Raw(b'\\x00\\x00\\x00\\x00')/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x020,session_id=0x1111,offset=6)/Raw(b'\\x00\\x00\\x00\\x00')/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_107 = [
+    {
+        "sub_casename": "l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA_L_S",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth / ipv6 / udp / l2tpv2 type data_l_s session_id is 0x1111 / ppp / end actions rss types l2tpv2 end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x2222)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
+
+vector_case_108 = [
+    {
+        "sub_casename": "eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA_L_S",
+        "port_id": 0,
+        "rule": "flow create 0 ingress pattern eth src is 00:00:00:00:00:01 / ipv6 / udp / l2tpv2 type data_l_s session_id is 0x1111 / ppp / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+        "test": [
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "save_hash"
+            },
+            {
+                "send_packet": "Ether(src='11:22:33:44:55:77')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_different"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IPv6()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x2222)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_hash_same"
+            },
+            {
+                "send_packet": "Ether(src='00:00:00:00:00:01')/IP()/UDP(dport=1701)/L2TP(hdr=0x480,len=16,session_id=0x1111)/HDLC()/Raw(b'\\x00\\x00')",
+                "action": "check_no_hash"
+            },
+        ]
+    },
+]
 
 class TestCVLAdvancedIAVFRSSPPPoL2TPv2oUDP(TestCase):
 
@@ -2038,6 +3182,183 @@ class TestCVLAdvancedIAVFRSSPPPoL2TPv2oUDP(TestCase):
     def test_case_eth_ipv4_udp_l2tpv2_ppp_ipv6_tcp_ipv6_MAC_IPV4_PPPoL2TPV2_IPV6_TCP(self):
         self.switch_testpmd(symmetric=False)
         self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_64)
+    
+     #l2tpv2 control + data
+    def test_case_l2tpv2_session_id_MAC_IPV4_L2TPV2_CONTROL(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_65)
+
+    def test_case_eth_l2_src_only_MAC_IPV4_L2TPV2_CONTROL(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_66)
+
+    def test_case_l2tpv2_session_id_MAC_IPV6_L2TPV2_CONTROL(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_67)
+
+    def test_case_eth_l2_src_only_MAC_IPV6_L2TPV2_CONTROL(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_68)
+
+    def test_case_l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_69)
+
+    def test_case_eth_l2_src_only_MAC_IPV4_L2TPV2_DATA(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_70)
+
+    def test_case_l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA_L(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_71)
+
+    def test_case_eth_l2_src_only_MAC_IPV4_L2TPV2_DATA_L(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_72)
+
+    def test_case_l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA_S(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_73)
+
+    def test_case_eth_l2_src_only_MAC_IPV4_L2TPV2_DATA_S(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_74)
+
+    def test_case_l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA_O(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_75)
+
+    def test_case_eth_l2_src_only_MAC_IPV4_L2TPV2_DATA_O(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_76)
+
+    def test_case_l2tpv2_session_id_MAC_IPV4_L2TPV2_DATA_L_S(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_77)
+
+    def test_case_eth_l2_src_only_MAC_IPV4_L2TPV2_DATA_L_S(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_78)
+
+    def test_case_l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_79)
+
+    def test_case_eth_l2_src_only_MAC_IPV6_L2TPV2_DATA(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_80)
+
+    def test_case_l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA_L(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_81)
+
+    def test_case_eth_l2_src_only_MAC_IPV6_L2TPV2_DATA_L(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_82)
+
+    def test_case_l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA_S(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_83)
+
+    def test_case_eth_l2_src_only_MAC_IPV6_L2TPV2_DATA_S(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_84)
+
+    def test_case_l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA_O(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_85)
+
+    def test_case_eth_l2_src_only_MAC_IPV6_L2TPV2_DATA_O(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_86)
+
+    def test_case_l2tpv2_session_id_MAC_IPV6_L2TPV2_DATA_L_S(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_87)
+
+    def test_case_eth_l2_src_only_MAC_IPV6_L2TPV2_DATA_L_S(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_88)
+
+    def test_case_l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_89)
+
+    def test_case_eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_90)
+
+    def test_case_l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA_L(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_91)
+
+    def test_case_eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA_L(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_92)
+
+    def test_case_l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA_S(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_93)
+
+    def test_case_eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA_S(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_94)
+
+    def test_case_l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA_O(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_95)
+
+    def test_case_eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA_O(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_96)
+
+    def test_case_l2tpv2_session_id_MAC_IPV4_PPPoL2TPV2_DATA_L_S(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_97)
+
+    def test_case_eth_l2_src_only_MAC_IPV4_PPPoL2TPV2_DATA_L_S(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_98)
+
+    def test_case_l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_99)
+
+    def test_case_eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_100)
+
+    def test_case_l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA_L(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_101)
+
+    def test_case_eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA_L(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_102)
+
+    def test_case_l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA_S(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_103)
+
+    def test_case_eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA_S(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_104)
+
+    def test_case_l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA_O(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_105)
+
+    def test_case_eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA_O(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_106)
+
+    def test_case_l2tpv2_session_id_MAC_IPV6_PPPoL2TPV2_DATA_L_S(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_107)
+
+    def test_case_eth_l2_src_only_MAC_IPV6_PPPoL2TPV2_DATA_L_S(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=vector_case_108)
 
     def tear_down(self):
         # destroy all flow rule on port 0
-- 
2.25.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

* [dts][PATCH V1] tests/cvl_advanced_iavf_rss_pppol2tpoudp: add test cases for l2tpv2 control and data
  2022-03-15  4:10 [dts][PATCH V1] tests/cvl_advanced_iavf_rss_pppol2tpoudp: add test cases for l2tpv2 control and data Yaqi Tang
@ 2022-03-23  7:24 ` lijuan.tu
  0 siblings, 0 replies; 2+ messages in thread
From: lijuan.tu @ 2022-03-23  7:24 UTC (permalink / raw)
  To: dts, Yaqi Tang; +Cc: Yaqi Tang

On Tue, 15 Mar 2022 12:10:41 +0800, Yaqi Tang <yaqi.tang@intel.com> wrote:
> Support IAVF PPPoL2TPv2oUDP RSS Hash, and required to distribute packets based on inner IP src+dest address and TCP/UDP src+dest port.
> 
> Signed-off-by: Yaqi Tang <yaqi.tang@intel.com>
> Tested-by: Yaqi Tang < yaqi.tang@intel.com>


Applied, thanks

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-03-23  7:24 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-15  4:10 [dts][PATCH V1] tests/cvl_advanced_iavf_rss_pppol2tpoudp: add test cases for l2tpv2 control and data Yaqi Tang
2022-03-23  7:24 ` lijuan.tu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).