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
