test suite reviews and discussions
 help / color / mirror / Atom feed
* [dts] [PATCH V1 0/2] the case of splitting out ipv6_next_proto
@ 2023-02-28 15:47 Song Jiale
  2023-02-28 15:47 ` [dts] [PATCH V1 1/2] tests/ice_advanced_rss: " Song Jiale
  2023-02-28 15:47 ` [dts] [PATCH V1 2/2] test_plans/ice_advanced_rss: " Song Jiale
  0 siblings, 2 replies; 3+ messages in thread
From: Song Jiale @ 2023-02-28 15:47 UTC (permalink / raw)
  To: dts; +Cc: Song Jiale

the "ipv6_next_proto" package is different from the ddp required 
by the normal ipv6 package.

Song Jiale (2):
  tests/ice_advanced_rss: split cases
  test_plans/ice_advanced_rss: split cases

 test_plans/ice_advanced_rss_test_plan.rst |  691 ++++-
 tests/TestSuite_ice_advanced_rss.py       | 3106 ++++++++++++++-------
 2 files changed, 2671 insertions(+), 1126 deletions(-)

-- 
2.25.1


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

* [dts] [PATCH V1 1/2] tests/ice_advanced_rss: the case of splitting out ipv6_next_proto
  2023-02-28 15:47 [dts] [PATCH V1 0/2] the case of splitting out ipv6_next_proto Song Jiale
@ 2023-02-28 15:47 ` Song Jiale
  2023-02-28 15:47 ` [dts] [PATCH V1 2/2] test_plans/ice_advanced_rss: " Song Jiale
  1 sibling, 0 replies; 3+ messages in thread
From: Song Jiale @ 2023-02-28 15:47 UTC (permalink / raw)
  To: dts; +Cc: Song Jiale

the "ipv6_next_proto" package is different from the ddp required
by the normal ipv6 package.

Signed-off-by: Song Jiale <songx.jiale@intel.com>
---
 tests/TestSuite_ice_advanced_rss.py | 3106 ++++++++++++++++++---------
 1 file changed, 2082 insertions(+), 1024 deletions(-)

diff --git a/tests/TestSuite_ice_advanced_rss.py b/tests/TestSuite_ice_advanced_rss.py
index b5165607..839258bf 100644
--- a/tests/TestSuite_ice_advanced_rss.py
+++ b/tests/TestSuite_ice_advanced_rss.py
@@ -7,7 +7,7 @@ import re
 
 from framework.packet import Packet
 from framework.pmd_output import PmdOutput
-from framework.test_case import TestCase
+from framework.test_case import TestCase, skip_unsupported_pkg
 
 from .rte_flow_common import FdirProcessing, RssProcessing, check_mark
 
@@ -85,8 +85,17 @@ mac_ipv6_toeplitz_basic_pkt = {
     "nvgre": [
         'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP()/NVGRE()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/("X"*480)',
     ],
-    "ipv6-next-proto": [
-        'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/Raw("x"*40)'
+    "ipv6_destopt": [
+        'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/("X"*480)',
+    ],
+    "ipv6_routing": [
+        'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=123)/("X"*480)',
+    ],
+    "ipv6_hopbyhop": [
+        'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=123)/("X"*480)',
+    ],
+    "ipv6_segment_routing": [
+        'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=123)/("X"*480)'
     ],
 }
 
@@ -101,8 +110,17 @@ mac_ipv6_udp_toeplitz_basic_pkt = {
     "ipv4_udp_vxlan_ipv6_udp": [
         'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)',
     ],
-    "ipv6-next-proto-udp": [
-        'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/Raw("x"*40)'
+    "ipv6_destopt_udp": [
+        'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/Raw("x"*40)',
+    ],
+    "ipv6_routing_udp": [
+        'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
+    ],
+    "ipv6_hopbyhop_udp": [
+        'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
+    ],
+    "ipv6_segment_routing_udp": [
+        'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)'
     ],
 }
 
@@ -119,9 +137,18 @@ mac_ipv6_tcp_toeplitz_basic_pkt = {
     "ipv4_tcp_vxlan_ipv6_tcp": [
         'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)',
     ],
-    "ipv6-next-proto-tcp": [
+    "ipv6_destopt_tcp": [
         'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=6)/TCP(sport=22,dport=23)/Raw("x"*40)'
     ],
+    "ipv6_routing_tcp": [
+        'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=6)/UDP(sport=22,dport=23)/("X"*480)',
+    ],
+    "ipv6_hopbyhop_tcp": [
+        'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/UDP(sport=22,dport=23)/("X"*480)',
+    ],
+    "ipv6_segment_routing_tcp": [
+        'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=6)/UDP(sport=22,dport=23)/("X"*480)'
+    ],
 }
 
 mac_ipv6_tcp_toeplitz_non_basic_pkt = [
@@ -137,8 +164,17 @@ mac_ipv6_sctp_toeplitz_basic_pkt = {
     "ipv4_sctp_vxlan_ipv6_sctp": [
         'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)',
     ],
-    "ipv6-next-proto-sctp": [
-        'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=132)/SCTP(sport=22,dport=23)/Raw("x"*40)'
+    "ipv6_destopt_sctp": [
+        'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=132)/SCTP(sport=22,dport=23)/Raw("x"*40)',
+    ],
+    "ipv6_routing_sctp": [
+        'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
+    ],
+    "ipv6_hopbyhop_sctp": [
+        'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
+    ],
+    "ipv6_segment_routing_sctp": [
+        'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=132)/SCTP(sport=22,dport=23)/("X"*480)'
     ],
 }
 
@@ -2152,18 +2188,6 @@ mac_ipv6_l2_src = {
             "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)',
             "action": {"check_hash_same": "ipv6-udp"},
         },
-        {
-            "send_packet": mac_ipv6_toeplitz_basic_pkt["ipv6-next-proto"],
-            "action": {"save_hash": "ipv6-next-proto"},
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/("X"*480)',
-            "action": {"check_hash_different": "ipv6-next-proto"},
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrDestOpt(nh=123)/("X"*480)',
-            "action": {"check_hash_same": "ipv6-next-proto"},
-        },
         {
             "send_packet": mac_ipv6_toeplitz_non_basic_pkt,
             "action": "check_no_hash",
@@ -2175,7 +2199,6 @@ mac_ipv6_l2_src = {
                 mac_ipv6_toeplitz_basic_pkt["ipv6-nonfrag"][0],
                 mac_ipv6_toeplitz_basic_pkt["ipv6-icmp"][0],
                 mac_ipv6_toeplitz_basic_pkt["ipv6-udp"][0],
-                mac_ipv6_toeplitz_basic_pkt["ipv6-next-proto"][0],
             ],
             "action": "check_no_hash",
         },
@@ -2223,22 +2246,6 @@ mac_ipv6_l2_dst = {
             "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2027")/UDP(sport=25,dport=99)/("X"*480)',
             "action": {"check_hash_same": "ipv6-udp"},
         },
-        {
-            "send_packet": eval(
-                str(mac_ipv6_toeplitz_basic_pkt["ipv6-next-proto"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrRouting"
-                )
-            ),
-            "action": {"save_hash": "ipv6-next-proto"},
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=123)/("X"*480)',
-            "action": {"check_hash_different": "ipv6-next-proto"},
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrRouting(nh=123)/("X"*480)',
-            "action": {"check_hash_same": "ipv6-next-proto"},
-        },
         {
             "send_packet": mac_ipv6_toeplitz_non_basic_pkt,
             "action": "check_no_hash",
@@ -2321,30 +2328,6 @@ mac_ipv6_l2src_l2dst = {
             "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)',
             "action": {"check_hash_same": "ipv6-udp"},
         },
-        {
-            "send_packet": eval(
-                str(mac_ipv6_toeplitz_basic_pkt["ipv6-next-proto"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrHopByHop"
-                )
-            ),
-            "action": {"save_hash": "ipv6-next-proto"},
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=123)/("X"*480)',
-            "action": {"check_hash_different": "ipv6-next-proto"},
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=123)/("X"*480)',
-            "action": {"check_hash_different": "ipv6-next-proto"},
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=123)/("X"*480)',
-            "action": {"check_hash_different": "ipv6-next-proto"},
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrHopByHop(nh=122)/("X"*480)',
-            "action": {"check_hash_same": "ipv6-next-proto"},
-        },
         {
             "send_packet": mac_ipv6_toeplitz_non_basic_pkt,
             "action": "check_no_hash",
@@ -2403,22 +2386,6 @@ mac_ipv6_l3_src = {
             "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=33)/("X"*480)',
             "action": {"check_hash_same": "ipv6-udp"},
         },
-        {
-            "send_packet": eval(
-                str(mac_ipv6_toeplitz_basic_pkt["ipv6-next-proto"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrSegmentRouting"
-                )
-            ),
-            "action": {"save_hash": "ipv6-next-proto"},
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=123)/("X"*480)',
-            "action": {"check_hash_different": "ipv6-next-proto"},
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting(nh=122)/("X"*480)',
-            "action": {"check_hash_same": "ipv6-next-proto"},
-        },
         {
             "send_packet": mac_ipv6_toeplitz_non_basic_pkt,
             "action": "check_no_hash",
@@ -2478,18 +2445,6 @@ mac_ipv6_l3_dst = {
             "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)',
             "action": {"check_hash_same": "ipv6-udp"},
         },
-        {
-            "send_packet": mac_ipv6_toeplitz_basic_pkt["ipv6-next-proto"],
-            "action": {"save_hash": "ipv6-next-proto"},
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrRouting(nh=123)/("X"*480)',
-            "action": {"check_hash_different": "ipv6-next-proto"},
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=122)/("X"*480)',
-            "action": {"check_hash_same": "ipv6-next-proto"},
-        },
         {
             "send_packet": mac_ipv6_toeplitz_non_basic_pkt,
             "action": "check_no_hash",
@@ -2561,26 +2516,6 @@ mac_ipv6_all = {
             "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)',
             "action": {"check_hash_same": "ipv6-udp"},
         },
-        {
-            "send_packet": eval(
-                str(mac_ipv6_toeplitz_basic_pkt["ipv6-next-proto"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrDestOpt()/IPv6ExtHdrRouting"
-                )
-            ),
-            "action": {"save_hash": "ipv6-next-proto"},
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrDestOpt()/IPv6ExtHdrRouting(nh=123)/("X"*480)',
-            "action": {"check_hash_different": "ipv6-next-proto"},
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrRouting(nh=123)/("X"*480)',
-            "action": {"check_hash_different": "ipv6-next-proto"},
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrRouting(nh=122)/("X"*480)',
-            "action": {"check_hash_same": "ipv6-next-proto"},
-        },
         {
             "send_packet": mac_ipv6_toeplitz_non_basic_pkt,
             "action": "check_no_hash",
@@ -2599,138 +2534,195 @@ mac_ipv6_all = {
     ],
 }
 
-# mac_ipv6_udp
-mac_ipv6_udp_l2_src = {
-    "sub_casename": "mac_ipv6_udp_l2_src",
+# mac_ipv6_next_proto
+mac_ipv6_next_proto_l2_src = {
+    "sub_casename": "mac_ipv6_next_proto_l2_src",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / end actions rss types eth l2-src-only end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6-udp"],
-            "action": "save_hash",
+            "send_packet": mac_ipv6_toeplitz_basic_pkt["ipv6_destopt"],
+            "action": {"save_hash": "ipv6_destopt"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_destopt"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrDestOpt(nh=123)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_destopt"},
         },
+    ],
+    "post-test": [
         {
-            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6-next-proto-udp"],
-            "action": "save_hash",
+            "send_packet": mac_ipv6_toeplitz_basic_pkt["ipv6_destopt"],
+            "action": "check_no_hash",
         },
+    ],
+}
+
+mac_ipv6_next_proto_l2_dst = {
+    "sub_casename": "mac_ipv6_next_proto_l2_dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / end actions rss types eth l2-dst-only end key_len 0 queues end / end",
+    "test": [
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": mac_ipv6_toeplitz_basic_pkt["ipv6_routing"],
+            "action": {"save_hash": "ipv6_routing"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=25,dport=99)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=123)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_routing"},
         },
         {
-            "send_packet": mac_ipv6_udp_toeplitz_non_basic_pkt,
-            "action": "check_no_hash",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrRouting(nh=123)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_routing"},
         },
     ],
     "post-test": [
         {
-            "send_packet": [
-                mac_ipv6_udp_toeplitz_basic_pkt["ipv6-udp"][0],
-            ],
+            "send_packet": mac_ipv6_toeplitz_basic_pkt["ipv6_routing"],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_udp_l2_dst = {
-    "sub_casename": "mac_ipv6_udp_l2_dst",
+mac_ipv6_next_proto_l2src_l2dst = {
+    "sub_casename": "mac_ipv6_next_proto_l2src_l2dst",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / end actions rss types eth end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6-udp"],
-            "action": "save_hash",
+            "send_packet": mac_ipv6_toeplitz_basic_pkt["ipv6_hopbyhop"],
+            "action": {"save_hash": "ipv6_hopbyhop"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=123)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_hopbyhop"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=123)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_hopbyhop"},
         },
         {
-            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6-next-proto-udp"],
-            "action": "save_hash",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=123)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_hopbyhop"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrHopByHop(nh=123)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_hopbyhop"},
         },
+    ],
+    "post-test": [
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=25,dport=99)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": mac_ipv6_toeplitz_basic_pkt["ipv6_hopbyhop"],
+            "action": "check_no_hash",
         },
+    ],
+}
+
+mac_ipv6_next_proto_l3_src = {
+    "sub_casename": "mac_ipv6_next_proto_l3_src",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end",
+    "test": [
         {
-            "send_packet": mac_ipv6_udp_toeplitz_non_basic_pkt,
-            "action": "check_no_hash",
+            "send_packet": mac_ipv6_toeplitz_basic_pkt["ipv6_segment_routing"],
+            "action": {"save_hash": "ipv6_segment_routing"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=123)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_segment_routing"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting(nh=123)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_segment_routing"},
         },
     ],
     "post-test": [
         {
-            "send_packet": [
-                mac_ipv6_udp_toeplitz_basic_pkt["ipv6-udp"][0],
-            ],
+            "send_packet": mac_ipv6_toeplitz_basic_pkt["ipv6_segment_routing"],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_udp_l2src_l2dst = {
-    "sub_casename": "mac_ipv6_udp_l2src_l2dst",
+mac_ipv6_next_proto_l3_dst = {
+    "sub_casename": "mac_ipv6_next_proto_l3_dst",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6-udp"],
-            "action": "save_hash",
+            "send_packet": mac_ipv6_toeplitz_basic_pkt["ipv6_destopt"],
+            "action": {"save_hash": "ipv6_destopt"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrDestOpt(nh=123)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_destopt"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=122)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_destopt"},
         },
+    ],
+    "post-test": [
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": mac_ipv6_toeplitz_basic_pkt["ipv6_destopt"],
+            "action": "check_no_hash",
         },
+    ],
+}
+
+mac_ipv6_next_proto_all = {
+    "sub_casename": "mac_ipv6_next_proto_all",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end",
+    "test": [
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": mac_ipv6_toeplitz_basic_pkt["ipv6_routing"],
+            "action": {"save_hash": "ipv6_routing"},
         },
         {
-            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6-next-proto-udp"],
-            "action": "save_hash",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrRouting(nh=123)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_routing"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=123)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_routing"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrRouting(nh=122)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_routing"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting()/IPv6ExtHdrDestOpt(nh=122)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_routing"},
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": mac_ipv6_toeplitz_basic_pkt["ipv6_hopbyhop"],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+# mac_ipv6_udp
+mac_ipv6_udp_l2_src = {
+    "sub_casename": "mac_ipv6_udp_l2_src",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6-udp"],
+            "action": "save_hash",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)',
             "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=25,dport=99)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)',
             "action": "check_hash_same",
         },
         {
@@ -2748,37 +2740,21 @@ mac_ipv6_udp_l2src_l2dst = {
     ],
 }
 
-mac_ipv6_udp_l3_src = {
-    "sub_casename": "mac_ipv6_udp_l3_src",
+mac_ipv6_udp_l2_dst = {
+    "sub_casename": "mac_ipv6_udp_l2_dst",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-src-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end",
     "test": [
         {
             "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6-udp"],
             "action": "save_hash",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=33)/("X"*480)',
-            "action": "check_hash_same",
-        },
-        {
-            "send_packet": eval(
-                str(mac_ipv6_udp_toeplitz_basic_pkt["ipv6-next-proto-udp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrRouting"
-                )
-            ),
-            "action": "save_hash",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)',
             "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrRouting(nh=17)/UDP(sport=32,dport=33)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)',
             "action": "check_hash_same",
         },
         {
@@ -2790,44 +2766,67 @@ mac_ipv6_udp_l3_src = {
         {
             "send_packet": [
                 mac_ipv6_udp_toeplitz_basic_pkt["ipv6-udp"][0],
-                mac_ipv6_udp_toeplitz_basic_pkt["ipv4_udp_vxlan_ipv6_udp"][0],
             ],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_udp_l3_dst = {
-    "sub_casename": "mac_ipv6_udp_l3_dst",
+mac_ipv6_udp_l2src_l2dst = {
+    "sub_casename": "mac_ipv6_udp_l2src_l2dst",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth end key_len 0 queues end / end",
     "test": [
         {
             "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6-udp"],
             "action": "save_hash",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=23)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)',
             "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)',
+            "action": "check_hash_different",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)',
+            "action": "check_hash_different",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)',
             "action": "check_hash_same",
         },
         {
-            "send_packet": eval(
-                str(mac_ipv6_udp_toeplitz_basic_pkt["ipv6-next-proto-udp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrRouting"
-                )
-            ),
+            "send_packet": mac_ipv6_udp_toeplitz_non_basic_pkt,
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": [
+                mac_ipv6_udp_toeplitz_basic_pkt["ipv6-udp"][0],
+            ],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_udp_l3_src = {
+    "sub_casename": "mac_ipv6_udp_l3_src",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-src-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6-udp"],
             "action": "save_hash",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)',
             "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=17)/UDP(sport=32,dport=33)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=33)/("X"*480)',
             "action": "check_hash_same",
         },
         {
@@ -2846,37 +2845,54 @@ mac_ipv6_udp_l3_dst = {
     ],
 }
 
-mac_ipv6_udp_l3src_l4src = {
-    "sub_casename": "mac_ipv6_udp_l3src_l4src",
+mac_ipv6_udp_l3_dst = {
+    "sub_casename": "mac_ipv6_udp_l3_dst",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-src-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only end key_len 0 queues end / end",
     "test": [
         {
             "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6-udp"],
             "action": "save_hash",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=23)/("X"*480)',
             "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)',
             "action": "check_hash_same",
         },
         {
-            "send_packet": eval(
-                str(mac_ipv6_udp_toeplitz_basic_pkt["ipv6-next-proto-udp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrHopByHop"
-                )
-            ),
+            "send_packet": mac_ipv6_udp_toeplitz_non_basic_pkt,
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": [
+                mac_ipv6_udp_toeplitz_basic_pkt["ipv6-udp"][0],
+                mac_ipv6_udp_toeplitz_basic_pkt["ipv4_udp_vxlan_ipv6_udp"][0],
+            ],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_udp_l3src_l4src = {
+    "sub_casename": "mac_ipv6_udp_l3src_l4src",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-src-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6-udp"],
             "action": "save_hash",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=17)/UDP(sport=32,dport=23)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)',
             "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop(nh=17)/UDP(sport=22,dport=33)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)',
             "action": "check_hash_same",
         },
         {
@@ -2912,22 +2928,6 @@ mac_ipv6_udp_l3src_l4dst = {
             "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=23)/("X"*480)',
             "action": "check_hash_same",
         },
-        {
-            "send_packet": eval(
-                str(mac_ipv6_udp_toeplitz_basic_pkt["ipv6-next-proto-udp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrHopByHop"
-                )
-            ),
-            "action": "save_hash",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=17)/UDP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop(nh=17)/UDP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_same",
-        },
         {
             "send_packet": mac_ipv6_udp_toeplitz_non_basic_pkt,
             "action": "check_no_hash",
@@ -2961,22 +2961,6 @@ mac_ipv6_udp_l3dst_l4src = {
             "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)',
             "action": "check_hash_same",
         },
-        {
-            "send_packet": eval(
-                str(mac_ipv6_udp_toeplitz_basic_pkt["ipv6-next-proto-udp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrSegmentRouting"
-                )
-            ),
-            "action": "save_hash",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_same",
-        },
         {
             "send_packet": mac_ipv6_udp_toeplitz_non_basic_pkt,
             "action": "check_no_hash",
@@ -3010,22 +2994,6 @@ mac_ipv6_udp_l3dst_l4dst = {
             "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)',
             "action": "check_hash_same",
         },
-        {
-            "send_packet": eval(
-                str(mac_ipv6_udp_toeplitz_basic_pkt["ipv6-next-proto-udp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrSegmentRouting"
-                )
-            ),
-            "action": "save_hash",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_same",
-        },
         {
             "send_packet": mac_ipv6_udp_toeplitz_non_basic_pkt,
             "action": "check_no_hash",
@@ -3059,22 +3027,6 @@ mac_ipv6_udp_l4_src = {
             "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)',
             "action": "check_hash_same",
         },
-        {
-            "send_packet": eval(
-                str(mac_ipv6_udp_toeplitz_basic_pkt["ipv6-next-proto-udp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrDestOpt()/IPv6ExtHdrSegmentRouting"
-                )
-            ),
-            "action": "save_hash",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrDestOpt()/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_same",
-        },
         {
             "send_packet": mac_ipv6_udp_toeplitz_non_basic_pkt,
             "action": "check_no_hash",
@@ -3108,22 +3060,6 @@ mac_ipv6_udp_l4_dst = {
             "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=23)/("X"*480)',
             "action": "check_hash_same",
         },
-        {
-            "send_packet": eval(
-                str(mac_ipv6_udp_toeplitz_basic_pkt["ipv6-next-proto-udp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrDestOpt()/IPv6ExtHdrSegmentRouting"
-                )
-            ),
-            "action": "save_hash",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrDestOpt()/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_same",
-        },
         {
             "send_packet": mac_ipv6_udp_toeplitz_non_basic_pkt,
             "action": "check_no_hash",
@@ -3169,34 +3105,6 @@ mac_ipv6_udp_all = {
             "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)',
             "action": "check_hash_same",
         },
-        {
-            "send_packet": eval(
-                str(mac_ipv6_udp_toeplitz_basic_pkt["ipv6-next-proto-udp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrDestOpt()/IPv6ExtHdrSegmentRouting"
-                )
-            ),
-            "action": "save_hash",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrDestOpt()/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_same",
-        },
         {
             "send_packet": mac_ipv6_udp_toeplitz_non_basic_pkt,
             "action": "check_no_hash",
@@ -3234,18 +3142,6 @@ mac_ipv6_udp_ipv6 = {
             "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)',
             "action": "check_hash_same",
         },
-        {
-            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6-next-proto-udp"],
-            "action": "save_hash",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
-        },
     ],
     "post-test": [
         {
@@ -3288,31 +3184,6 @@ mac_ipv6_udp_l4_chksum = {
             ),
             "action": "check_hash_same",
         },
-        {
-            "send_packet": eval(
-                str(mac_ipv6_udp_toeplitz_basic_pkt["ipv6-next-proto-udp"]).replace(
-                    "dport=23", "dport=23, chksum=0x1"
-                )
-            ),
-            "action": "save_hash",
-        },
-        {
-            "send_packet": eval(
-                str(mac_ipv6_udp_toeplitz_basic_pkt["ipv6-next-proto-udp"]).replace(
-                    "dport=23", "dport=23, chksum=0x2"
-                )
-            ),
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": eval(
-                str(mac_ipv6_udp_toeplitz_basic_pkt["ipv6-next-proto-udp"])
-                .replace("sport=22,dport=23", "sport=22,dport=23,chksum=0x1")
-                .replace("1800:2929", "1800:3939")
-                .replace("2020", "3030")
-            ),
-            "action": "check_hash_same",
-        },
         {
             "send_packet": eval(
                 str(mac_ipv6_toeplitz_basic_pkt["ipv6-udp"]).replace(
@@ -3334,709 +3205,1597 @@ mac_ipv6_udp_l4_chksum = {
     ],
 }
 
-# mac_ipv6_tcp
-mac_ipv6_tcp_l2_src = {
-    "sub_casename": "mac_ipv6_tcp_l2_src",
+# mac_ipv6_next_proto_udp
+mac_ipv6_next_proto_udp_l2_src = {
+    "sub_casename": "mac_ipv6_next_proto_udp_l2_src",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
-            "action": "save_hash",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/TCP(sport=25,dport=99)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_destopt_udp"],
+            "action": {"save_hash": "ipv6_destopt_udp"},
         },
         {
-            "send_packet": eval(
-                str(mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-next-proto-tcp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrRouting()/IPv6ExtHdrHopByHop"
-                )
-            ),
-            "action": "save_hash",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_destopt_udp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting()/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=25,dport=99)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_destopt_udp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrRouting()/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=25,dport=99)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/Raw("x"*40)',
+            "action": {"check_hash_same": "ipv6_destopt_udp"},
         },
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_non_basic_pkt,
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=16)/UDP(sport=22,dport=23)/Raw("x"*40)',
             "action": "check_no_hash",
         },
     ],
     "post-test": [
         {
-            "send_packet": [
-                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
-            ],
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_destopt_udp"],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_tcp_l2_dst = {
-    "sub_casename": "mac_ipv6_tcp_l2_dst",
+mac_ipv6_next_proto_udp_l2_dst = {
+    "sub_casename": "mac_ipv6_next_proto_udp_l2_dst",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
-            "action": "save_hash",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/TCP(sport=25,dport=99)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_routing_udp"],
+            "action": {"save_hash": "ipv6_destopt_udp"},
         },
         {
-            "send_packet": eval(
-                str(mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-next-proto-tcp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrRouting()/IPv6ExtHdrHopByHop"
-                )
-            ),
-            "action": "save_hash",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_destopt_udp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting()/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=25,dport=99)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_destopt_udp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrRouting()/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=25,dport=99)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_destopt_udp"},
         },
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_non_basic_pkt,
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=6)/UDP(sport=22,dport=23)/Raw("x"*40)',
             "action": "check_no_hash",
         },
     ],
     "post-test": [
         {
-            "send_packet": [
-                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
-            ],
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_destopt_udp"],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_tcp_l2src_l2dst = {
-    "sub_casename": "mac_ipv6_tcp_l2src_l2dst",
+mac_ipv6_next_proto_udp_l2src_l2dst = {
+    "sub_casename": "mac_ipv6_next_proto_udp_l2src_l2dst",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types eth end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
-            "action": "save_hash",
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_destopt_udp"],
+            "action": {"save_hash": "ipv6_destopt_udp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_destopt_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_destopt_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_destopt_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=25,dport=99)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_destopt_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=132)/UDP(sport=22,dport=23)/Raw("x"*40)',
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": [
+                mac_ipv6_udp_toeplitz_basic_pkt["ipv6_destopt_udp"][0],
+            ],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_next_proto_udp_l3_src = {
+    "sub_casename": "mac_ipv6_next_proto_udp_l3_src",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-src-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_routing_udp"],
+            "action": {"save_hash": "ipv6_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrRouting(nh=17)/UDP(sport=32,dport=33)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=16)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_routing_udp"],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_next_proto_udp_l3_dst = {
+    "sub_casename": "mac_ipv6_next_proto_udp_l3_dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_routing_udp"],
+            "action": {"save_hash": "ipv6_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=17)/UDP(sport=32,dport=33)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=6)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_routing_udp"],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_next_proto_udp_l3src_l4src = {
+    "sub_casename": "mac_ipv6_next_proto_udp_l3src_l4src",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-src-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_hopbyhop_udp"],
+            "action": {"save_hash": "ipv6_hopbyhop_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=17)/UDP(sport=32,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_hopbyhop_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop(nh=17)/UDP(sport=22,dport=33)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_hopbyhop_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=132)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_hopbyhop_udp"],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_next_proto_udp_l3src_l4dst = {
+    "sub_casename": "mac_ipv6_next_proto_udp_l3src_l4dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-dst-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_hopbyhop_udp"],
+            "action": {"save_hash": "ipv6_hopbyhop_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=17)/UDP(sport=22,dport=33)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_hopbyhop_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop(nh=17)/UDP(sport=32,dport=23)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_hopbyhop_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=17)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_hopbyhop_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_hopbyhop_udp"],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_next_proto_udp_l3dst_l4src = {
+    "sub_casename": "mac_ipv6_next_proto_udp_l3dst_l4src",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-src-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_segment_routing_udp"],
+            "action": {"save_hash": "ipv6_segment_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=32,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_segment_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=33)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_segment_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting()/UDP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_segment_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting()/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_no_hash": "ipv6_segment_routing_udp"},
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_segment_routing_udp"],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_next_proto_udp_l3dst_l4dst = {
+    "sub_casename": "mac_ipv6_next_proto_udp_l3dst_l4dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-dst-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_segment_routing_udp"],
+            "action": {"save_hash": "ipv6_segment_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=33)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_segment_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=17)/TCP(sport=32,dport=23)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_segment_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=6)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_no_hash": "ipv6_segment_routing_udp"},
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_segment_routing_udp"],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_next_proto_udp_l4_src = {
+    "sub_casename": "mac_ipv6_next_proto_udp_l4_src",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l4-src-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_segment_routing_udp"],
+            "action": {"save_hash": "ipv6_segment_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=32,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_segment_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting()/IPv6ExtHdrDestOpt()/UDP(sport=22,dport=33)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_segment_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting()/IPv6ExtHdrDestOpt(nh=6)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_segment_routing_udp"],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_next_proto_udp_l4_dst = {
+    "sub_casename": "mac_ipv6_next_proto_udp_l4_dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l4-dst-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_segment_routing_udp"],
+            "action": {"save_hash": "ipv6_segment_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=33)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_segment_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting()/IPv6ExtHdrSegmentRouting(nh=17)/TCP(sport=32,dport=23)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_segment_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting()/IPv6ExtHdrSegmentRouting(nh=132)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_segment_routing_udp"],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_next_proto_udp_all = {
+    "sub_casename": "mac_ipv6_next_proto_udp_all",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_routing_udp"],
+            "action": {"save_hash": "ipv6_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=17)/UDP(sport=32,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=17)/UDP(sport=22,dport=33)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_routing_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=6)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_routing_udp"],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_next_proto_udp_ipv6 = {
+    "sub_casename": "mac_ipv6_next_proto_udp_ipv6",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6 end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_udp_toeplitz_basic_pkt["ipv6_hopbyhop_udp"],
+            "action": {"save_hash": "ipv6_hopbyhop_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_hopbyhop_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_hopbyhop_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop()/IPv6ExtHdrRouting(nh=17)/SCTP(sport=32,dport=33)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_hopbyhop_udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrHopByHop(nh=6)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": [
+                mac_ipv6_udp_toeplitz_basic_pkt["ipv6_hopbyhop_udp"][0],
+            ],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_next_proto_udp_l4_chksum = {
+    "sub_casename": "mac_ipv6_next_proto_udp_l4_chksum",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types l4-chksum  end queues end / end",
+    "test": [
+        {
+            "send_packet": eval(
+                str(mac_ipv6_udp_toeplitz_basic_pkt["ipv6_destopt_udp"]).replace(
+                    "dport=23", "dport=23, chksum=0x1"
+                )
+            ),
+            "action": {"save_hash": "ipv6_destopt_udp"},
+        },
+        {
+            "send_packet": eval(
+                str(mac_ipv6_udp_toeplitz_basic_pkt["ipv6_destopt_udp"]).replace(
+                    "dport=23", "dport=23, chksum=0x2"
+                )
+            ),
+            "action": {"check_hash_different": "ipv6_destopt_udp"},
+        },
+        {
+            "send_packet": eval(
+                str(mac_ipv6_udp_toeplitz_basic_pkt["ipv6_destopt_udp"])
+                .replace("sport=22,dport=23", "sport=32,dport=33,chksum=0x1")
+                .replace("1800:2929", "1800:3939")
+                .replace("2020", "3030")
+            ),
+            "action": {"check_hash_same": "ipv6_destopt_udp"},
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": eval(
+                str(mac_ipv6_udp_toeplitz_basic_pkt["ipv6_destopt_udp"]).replace(
+                    "dport=23", "dport=23, chksum=0x1"
+                )
+            ),
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+# mac_ipv6_tcp
+mac_ipv6_tcp_l2_src = {
+    "sub_casename": "mac_ipv6_tcp_l2_src",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
+            "action": "save_hash",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)',
+            "action": "check_hash_different",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/TCP(sport=25,dport=99)/("X"*480)',
+            "action": "check_hash_same",
+        },
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_non_basic_pkt,
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": [
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
+            ],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_tcp_l2_dst = {
+    "sub_casename": "mac_ipv6_tcp_l2_dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
+            "action": "save_hash",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)',
+            "action": "check_hash_different",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/TCP(sport=25,dport=99)/("X"*480)',
+            "action": "check_hash_same",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": [
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
+            ],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_tcp_l2src_l2dst = {
+    "sub_casename": "mac_ipv6_tcp_l2src_l2dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types eth end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
+            "action": "save_hash",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)',
+            "action": "check_hash_different",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)',
+            "action": "check_hash_different",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)',
+            "action": "check_hash_different",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/TCP(sport=25,dport=99)/("X"*480)',
+            "action": "check_hash_same",
+        },
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_non_basic_pkt,
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": [
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
+            ],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_tcp_l3_src = {
+    "sub_casename": "mac_ipv6_tcp_l3_src",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
+            "action": "save_hash",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)',
+            "action": "check_hash_different",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=33)/("X"*480)',
+            "action": "check_hash_same",
+        },
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_non_basic_pkt,
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": [
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv4_tcp_vxlan_ipv6_tcp"][0],
+            ],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_tcp_l3_dst = {
+    "sub_casename": "mac_ipv6_tcp_l3_dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
+            "action": "save_hash",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=23)/("X"*480)',
+            "action": "check_hash_different",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=33)/("X"*480)',
+            "action": "check_hash_same",
+        },
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_non_basic_pkt,
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": [
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv4_tcp_vxlan_ipv6_tcp"][0],
+            ],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_tcp_l3src_l4src = {
+    "sub_casename": "mac_ipv6_tcp_l3src_l4src",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-src-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
+            "action": "save_hash",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)',
+            "action": "check_hash_different",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=33)/("X"*480)',
+            "action": "check_hash_same",
+        },
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_non_basic_pkt,
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": [
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv4_tcp_vxlan_ipv6_tcp"][0],
+            ],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_tcp_l3src_l4dst = {
+    "sub_casename": "mac_ipv6_tcp_l3src_l4dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-dst-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
+            "action": "save_hash",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)',
+            "action": "check_hash_different",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=23)/("X"*480)',
+            "action": "check_hash_same",
+        },
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_non_basic_pkt,
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": [
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv4_tcp_vxlan_ipv6_tcp"][0],
+            ],
+            "action": "check_no_hash",
         },
+    ],
+}
+
+mac_ipv6_tcp_l3dst_l4src = {
+    "sub_casename": "mac_ipv6_tcp_l3dst_l4src",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-src-only end key_len 0 queues end / end",
+    "test": [
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)',
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
+            "action": "save_hash",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=23)/("X"*480)',
+            "action": "check_hash_different",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)',
+            "action": "check_hash_same",
+        },
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_non_basic_pkt,
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": [
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv4_tcp_vxlan_ipv6_tcp"][0],
+            ],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_tcp_l3dst_l4dst = {
+    "sub_casename": "mac_ipv6_tcp_l3dst_l4dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
+            "action": "save_hash",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=33)/("X"*480)',
+            "action": "check_hash_different",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)',
+            "action": "check_hash_same",
+        },
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_non_basic_pkt,
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": [
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv4_tcp_vxlan_ipv6_tcp"][0],
+            ],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_tcp_l4_src = {
+    "sub_casename": "mac_ipv6_tcp_l4_src",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l4-src-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
+            "action": "save_hash",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)',
+            "action": "check_hash_different",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=33)/("X"*480)',
+            "action": "check_hash_same",
+        },
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_non_basic_pkt,
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": [
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv4_tcp_vxlan_ipv6_tcp"][0],
+            ],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_tcp_l4_dst = {
+    "sub_casename": "mac_ipv6_tcp_l3_dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l4-dst-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
+            "action": "save_hash",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)',
+            "action": "check_hash_different",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=23)/("X"*480)',
+            "action": "check_hash_same",
+        },
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_non_basic_pkt,
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": [
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv4_tcp_vxlan_ipv6_tcp"][0],
+            ],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_tcp_all = {
+    "sub_casename": "mac_ipv6_tcp_all",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
+            "action": "save_hash",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)',
+            "action": "check_hash_different",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=23)/("X"*480)',
+            "action": "check_hash_different",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)',
+            "action": "check_hash_different",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)',
             "action": "check_hash_different",
         },
         {
             "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)',
+            "action": "check_hash_same",
+        },
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_non_basic_pkt,
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": [
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv4_tcp_vxlan_ipv6_tcp"][0],
+            ],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_tcp_ipv6 = {
+    "sub_casename": "mac_ipv6_tcp_ipv6",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6 end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
+            "action": "save_hash",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)',
             "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/TCP(sport=25,dport=99)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=23)/("X"*480)',
+            "action": "check_hash_different",
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=33)/("X"*480)',
+            "action": "check_hash_same",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": [
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv4_tcp_vxlan_ipv6_tcp"][0],
+            ],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_tcp_l4_chksum = eval(
+    str(mac_ipv6_udp_l4_chksum)
+    .replace("mac_ipv6_udp", "mac_ipv6_tcp")
+    .replace("ipv6 / udp", "ipv6 / tcp")
+    .replace("/UDP(sport=", "/TCP(sport=")
+    .replace("nh=17", "nh=6")
+)
+
+# mac_ipv6_next_proto_tcp
+mac_ipv6_next_proto_tcp_l2_src = {
+    "sub_casename": "mac_ipv6_next_proto_tcp_l2_src",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_destopt_tcp"],
+            "action": {"save_hash": "ipv6_destopt_tcp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_destopt_tcp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrDestOpt(nh=6)/TCP(sport=25,dport=99)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_destopt_tcp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=6)/TCP(sport=22,dport=23)/Raw("x"*40)',
+            "action": {"check_hash_same": "ipv6_destopt_tcp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=16)/TCP(sport=22,dport=23)/Raw("x"*40)',
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_destopt_tcp"],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_next_proto_tcp_l2_dst = {
+    "sub_casename": "mac_ipv6_next_proto_tcp_l2_dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types eth l2-dst-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_routing_tcp"],
+            "action": {"save_hash": "ipv6_destopt_tcp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_destopt_tcp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrDestOpt(nh=6)/TCP(sport=25,dport=99)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_destopt_tcp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=6)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_destopt_tcp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=132)/TCP(sport=22,dport=23)/Raw("x"*40)',
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_destopt_tcp"],
+            "action": "check_no_hash",
         },
+    ],
+}
+
+mac_ipv6_next_proto_tcp_l2src_l2dst = {
+    "sub_casename": "mac_ipv6_next_proto_tcp_l2src_l2dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types eth end key_len 0 queues end / end",
+    "test": [
         {
-            "send_packet": eval(
-                str(mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-next-proto-tcp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrRouting()/IPv6ExtHdrHopByHop"
-                )
-            ),
-            "action": "save_hash",
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_destopt_tcp"],
+            "action": {"save_hash": "ipv6_destopt_tcp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting()/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_destopt_tcp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting()/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_destopt_tcp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting()/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_destopt_tcp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrRouting()/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=25,dport=99)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrDestOpt(nh=6)/TCP(sport=25,dport=99)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_destopt_tcp"},
         },
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_non_basic_pkt,
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/TCP(sport=22,dport=23)/Raw("x"*40)',
             "action": "check_no_hash",
         },
     ],
     "post-test": [
         {
             "send_packet": [
-                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_destopt_tcp"][0],
             ],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_tcp_l3_src = {
-    "sub_casename": "mac_ipv6_tcp_l3_src",
+mac_ipv6_next_proto_tcp_l3_src = {
+    "sub_casename": "mac_ipv6_next_proto_tcp_l3_src",
     "port_id": 0,
     "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
-            "action": "save_hash",
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_routing_tcp"],
+            "action": {"save_hash": "ipv6_routing_tcp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_routing_tcp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=33)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrRouting(nh=6)/TCP(sport=32,dport=33)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_routing_tcp"},
         },
         {
-            "send_packet": eval(
-                str(mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-next-proto-tcp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrSegmentRouting"
-                )
-            ),
-            "action": "save_hash",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=16)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": "check_no_hash",
         },
+    ],
+    "post-test": [
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_routing_tcp"],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_next_proto_tcp_l3_dst = {
+    "sub_casename": "mac_ipv6_next_proto_tcp_l3_dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_routing_tcp"],
+            "action": {"save_hash": "ipv6_routing_tcp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting(nh=6)/TCP(sport=32,dport=33)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrRouting(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_routing_tcp"},
         },
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_non_basic_pkt,
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=6)/TCP(sport=32,dport=33)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_routing_tcp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=132)/TCP(sport=22,dport=23)/("X"*480)',
             "action": "check_no_hash",
         },
     ],
     "post-test": [
         {
-            "send_packet": [
-                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
-                mac_ipv6_tcp_toeplitz_basic_pkt["ipv4_tcp_vxlan_ipv6_tcp"][0],
-            ],
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_routing_tcp"],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_tcp_l3_dst = {
-    "sub_casename": "mac_ipv6_tcp_l3_dst",
+mac_ipv6_next_proto_tcp_l3src_l4src = {
+    "sub_casename": "mac_ipv6_next_proto_tcp_l3src_l4src",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-src-only end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
-            "action": "save_hash",
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_hopbyhop_tcp"],
+            "action": {"save_hash": "ipv6_hopbyhop_tcp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=32,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_hopbyhop_tcp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=33)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=33)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_hopbyhop_tcp"},
         },
         {
-            "send_packet": eval(
-                str(mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-next-proto-tcp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrSegmentRouting"
-                )
-            ),
-            "action": "save_hash",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=17)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": "check_no_hash",
         },
+    ],
+    "post-test": [
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_hopbyhop_tcp"],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_next_proto_tcp_l3src_l4dst = {
+    "sub_casename": "mac_ipv6_next_proto_tcp_l3src_l4dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-dst-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_hopbyhop_tcp"],
+            "action": {"save_hash": "ipv6_hopbyhop_tcp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=32,dport=33)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=33)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_hopbyhop_tcp"},
         },
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_non_basic_pkt,
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=32,dport=23)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_hopbyhop_tcp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_hopbyhop_tcp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=132)/TCP(sport=22,dport=23)/("X"*480)',
             "action": "check_no_hash",
         },
     ],
     "post-test": [
         {
-            "send_packet": [
-                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
-                mac_ipv6_tcp_toeplitz_basic_pkt["ipv4_tcp_vxlan_ipv6_tcp"][0],
-            ],
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_hopbyhop_tcp"],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_tcp_l3src_l4src = {
-    "sub_casename": "mac_ipv6_tcp_l3src_l4src",
+mac_ipv6_next_proto_tcp_l3dst_l4src = {
+    "sub_casename": "mac_ipv6_next_proto_tcp_l3dst_l4src",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-src-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-src-only end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
-            "action": "save_hash",
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_segment_routing_tcp"],
+            "action": {"save_hash": "ipv6_segment_routing_tcp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting(nh=6)/TCP(sport=32,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_segment_routing_tcp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=6)/TCP(sport=22,dport=33)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_segment_routing_tcp"},
         },
         {
-            "send_packet": eval(
-                str(mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-next-proto-tcp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrHopByHop"
-                )
-            ),
-            "action": "save_hash",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting()/TCP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_segment_routing_tcp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting()/UDP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_no_hash": "ipv6_segment_routing_tcp"},
         },
+    ],
+    "post-test": [
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_segment_routing_tcp"],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_next_proto_tcp_l3dst_l4dst = {
+    "sub_casename": "mac_ipv6_next_proto_tcp_l3dst_l4dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_segment_routing_tcp"],
+            "action": {"save_hash": "ipv6_segment_routing_tcp"},
         },
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_non_basic_pkt,
-            "action": "check_no_hash",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting(nh=6)/TCP(sport=22,dport=33)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_segment_routing_tcp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=6)/SCTP(sport=32,dport=23)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_segment_routing_tcp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=132)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_no_hash": "ipv6_segment_routing_tcp"},
         },
     ],
     "post-test": [
         {
-            "send_packet": [
-                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
-                mac_ipv6_tcp_toeplitz_basic_pkt["ipv4_tcp_vxlan_ipv6_tcp"][0],
-            ],
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_segment_routing_tcp"],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_tcp_l3src_l4dst = {
-    "sub_casename": "mac_ipv6_tcp_l3src_l4dst",
+mac_ipv6_next_proto_tcp_l4_src = {
+    "sub_casename": "mac_ipv6_next_proto_tcp_l4_src",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-src-only l4-dst-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l4-src-only end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
-            "action": "save_hash",
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_segment_routing_tcp"],
+            "action": {"save_hash": "ipv6_segment_routing_tcp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=6)/TCP(sport=32,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_segment_routing_tcp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting()/IPv6ExtHdrDestOpt()/TCP(sport=22,dport=33)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_segment_routing_tcp"},
         },
         {
-            "send_packet": eval(
-                str(mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-next-proto-tcp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrHopByHop"
-                )
-            ),
-            "action": "save_hash",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting()/IPv6ExtHdrDestOpt(nh=132)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": "check_no_hash",
         },
+    ],
+    "post-test": [
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_segment_routing_tcp"],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_next_proto_tcp_l4_dst = {
+    "sub_casename": "mac_ipv6_next_proto_tcp_l4_dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l4-dst-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_segment_routing_tcp"],
+            "action": {"save_hash": "ipv6_segment_routing_tcp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=6)/TCP(sport=22,dport=33)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_segment_routing_tcp"},
         },
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_non_basic_pkt,
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting()/IPv6ExtHdrSegmentRouting(nh=6)/SCTP(sport=32,dport=23)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_segment_routing_tcp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting()/IPv6ExtHdrSegmentRouting(nh=17)/TCP(sport=22,dport=23)/("X"*480)',
             "action": "check_no_hash",
         },
     ],
     "post-test": [
         {
-            "send_packet": [
-                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
-                mac_ipv6_tcp_toeplitz_basic_pkt["ipv4_tcp_vxlan_ipv6_tcp"][0],
-            ],
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_segment_routing_tcp"],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_tcp_l3dst_l4src = {
-    "sub_casename": "mac_ipv6_tcp_l3dst_l4src",
+mac_ipv6_next_proto_tcp_all = {
+    "sub_casename": "mac_ipv6_next_proto_tcp_all",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-src-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
-            "action": "save_hash",
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_routing_tcp"],
+            "action": {"save_hash": "ipv6_routing_tcp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_routing_tcp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrRouting(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_routing_tcp"},
         },
         {
-            "send_packet": eval(
-                str(mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-next-proto-tcp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrHopByHop"
-                )
-            ),
-            "action": "save_hash",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=6)/TCP(sport=32,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_routing_tcp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrRouting(nh=6)/TCP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=6)/TCP(sport=22,dport=33)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_routing_tcp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=6)/TCP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_routing_tcp"},
         },
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_non_basic_pkt,
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=132)/TCP(sport=22,dport=23)/("X"*480)',
             "action": "check_no_hash",
         },
     ],
     "post-test": [
         {
-            "send_packet": [
-                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
-                mac_ipv6_tcp_toeplitz_basic_pkt["ipv4_tcp_vxlan_ipv6_tcp"][0],
-            ],
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_routing_tcp"],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_tcp_l3dst_l4dst = {
-    "sub_casename": "mac_ipv6_tcp_l3dst_l4dst",
+mac_ipv6_next_proto_tcp_ipv6 = {
+    "sub_casename": "mac_ipv6_next_proto_tcp_ipv6",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only l4-dst-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6 end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
-            "action": "save_hash",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_hopbyhop_tcp"],
+            "action": {"save_hash": "ipv6_hopbyhop_tcp"},
         },
         {
-            "send_packet": eval(
-                str(mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-next-proto-tcp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrRouting"
-                )
-            ),
-            "action": "save_hash",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_hopbyhop_tcp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrRouting(nh=6)/TCP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_hopbyhop_tcp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=6)/TCP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop()/IPv6ExtHdrRouting(nh=6)/UDP(sport=32,dport=33)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_hopbyhop_tcp"},
         },
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_non_basic_pkt,
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrHopByHop(nh=132)/TCP(sport=22,dport=23)/("X"*480)',
             "action": "check_no_hash",
         },
     ],
     "post-test": [
         {
             "send_packet": [
-                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
-                mac_ipv6_tcp_toeplitz_basic_pkt["ipv4_tcp_vxlan_ipv6_tcp"][0],
+                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6_hopbyhop_tcp"][0],
             ],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_tcp_l4_src = {
-    "sub_casename": "mac_ipv6_tcp_l4_src",
+mac_ipv6_next_proto_tcp_l4_chksum = eval(
+    str(mac_ipv6_next_proto_udp_l4_chksum)
+    .replace("mac_ipv6_next_proto_udp", "mac_ipv6_next_proto_tcp")
+    .replace("ipv6 / udp", "ipv6 / tcp")
+    .replace("/UDP(sport=", "/TCP(sport=")
+    .replace("nh=17", "nh=6")
+)
+
+# mac_ipv6_sctp
+mac_ipv6_sctp_l2_src = {
+    "sub_casename": "mac_ipv6_sctp_l2_src",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l4-src-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types eth l2-src-only end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"],
             "action": "save_hash",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)',
             "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=33)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/SCTP(sport=25,dport=99)/("X"*480)',
             "action": "check_hash_same",
         },
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-next-proto-tcp"],
+            "send_packet": mac_ipv6_sctp_toeplitz_non_basic_pkt,
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": [
+                mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"][0],
+            ],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_sctp_l2_dst = {
+    "sub_casename": "mac_ipv6_sctp_l2_dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types eth l2-dst-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"],
             "action": "save_hash",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=32,dport=23)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)',
             "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=33)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/SCTP(sport=25,dport=99)/("X"*480)',
             "action": "check_hash_same",
         },
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_non_basic_pkt,
+            "send_packet": mac_ipv6_sctp_toeplitz_non_basic_pkt,
             "action": "check_no_hash",
         },
     ],
     "post-test": [
         {
             "send_packet": [
-                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
-                mac_ipv6_tcp_toeplitz_basic_pkt["ipv4_tcp_vxlan_ipv6_tcp"][0],
+                mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"][0],
             ],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_tcp_l4_dst = {
-    "sub_casename": "mac_ipv6_tcp_l3_dst",
+mac_ipv6_sctp_l2src_l2dst = {
+    "sub_casename": "mac_ipv6_sctp_l2src_l2dst",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp l4-dst-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types eth end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"],
             "action": "save_hash",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)',
             "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_same",
-        },
-        {
-            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-next-proto-tcp"],
-            "action": "save_hash",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=33)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)',
             "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=32,dport=23)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/SCTP(sport=25,dport=99)/("X"*480)',
             "action": "check_hash_same",
         },
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_non_basic_pkt,
+            "send_packet": mac_ipv6_sctp_toeplitz_non_basic_pkt,
             "action": "check_no_hash",
         },
     ],
     "post-test": [
         {
             "send_packet": [
-                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
-                mac_ipv6_tcp_toeplitz_basic_pkt["ipv4_tcp_vxlan_ipv6_tcp"][0],
+                mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"][0],
             ],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_tcp_all = {
-    "sub_casename": "mac_ipv6_tcp_all",
+mac_ipv6_sctp_l3_src = {
+    "sub_casename": "mac_ipv6_sctp_l3_src",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-src-only end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"],
             "action": "save_hash",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=33)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)',
             "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=33)/("X"*480)',
             "action": "check_hash_same",
         },
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-next-proto-tcp"],
-            "action": "save_hash",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": mac_ipv6_sctp_toeplitz_non_basic_pkt,
+            "action": "check_no_hash",
         },
+    ],
+    "post-test": [
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": [
+                mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"][0],
+                mac_ipv6_sctp_toeplitz_basic_pkt["ipv4_sctp_vxlan_ipv6_sctp"][0],
+            ],
+            "action": "check_no_hash",
         },
+    ],
+}
+
+mac_ipv6_sctp_l3_dst = {
+    "sub_casename": "mac_ipv6_sctp_l3_dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-dst-only end key_len 0 queues end / end",
+    "test": [
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"],
+            "action": "save_hash",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=33)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=23)/("X"*480)',
             "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=33)/("X"*480)',
             "action": "check_hash_same",
         },
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_non_basic_pkt,
+            "send_packet": mac_ipv6_sctp_toeplitz_non_basic_pkt,
             "action": "check_no_hash",
         },
     ],
     "post-test": [
         {
             "send_packet": [
-                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
-                mac_ipv6_tcp_toeplitz_basic_pkt["ipv4_tcp_vxlan_ipv6_tcp"][0],
+                mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"][0],
+                mac_ipv6_sctp_toeplitz_basic_pkt["ipv4_sctp_vxlan_ipv6_sctp"][0],
             ],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_tcp_ipv6 = {
-    "sub_casename": "mac_ipv6_tcp_ipv6",
+mac_ipv6_sctp_l3src_l4src = {
+    "sub_casename": "mac_ipv6_sctp_l3src_l4src",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6 end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-src-only l4-src-only end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"],
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"],
             "action": "save_hash",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/TCP(sport=22,dport=23)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)',
             "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=32,dport=33)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=33)/("X"*480)',
             "action": "check_hash_same",
         },
         {
-            "send_packet": eval(
-                str(mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-next-proto-tcp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrSegmentRouting"
-                )
-            ),
-            "action": "save_hash",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": mac_ipv6_sctp_toeplitz_non_basic_pkt,
+            "action": "check_no_hash",
         },
     ],
     "post-test": [
         {
             "send_packet": [
-                mac_ipv6_tcp_toeplitz_basic_pkt["ipv6-tcp"][0],
-                mac_ipv6_tcp_toeplitz_basic_pkt["ipv4_tcp_vxlan_ipv6_tcp"][0],
+                mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"][0],
+                mac_ipv6_sctp_toeplitz_basic_pkt["ipv4_sctp_vxlan_ipv6_sctp"][0],
             ],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_tcp_l4_chksum = eval(
-    str(mac_ipv6_udp_l4_chksum)
-    .replace("mac_ipv6_udp", "mac_ipv6_tcp")
-    .replace("ipv6 / udp", "ipv6 / tcp")
-    .replace("/UDP(sport=", "/TCP(sport=")
-    .replace("nh=17", "nh=6")
-)
-
-# mac_ipv6_sctp
-mac_ipv6_sctp_l2_src = {
-    "sub_casename": "mac_ipv6_sctp_l2_src",
+mac_ipv6_sctp_l3src_l4dst = {
+    "sub_casename": "mac_ipv6_sctp_l3src_l4dst",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types eth l2-src-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-src-only l4-dst-only end key_len 0 queues end / end",
     "test": [
         {
             "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"],
             "action": "save_hash",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/SCTP(sport=25,dport=99)/("X"*480)',
-            "action": "check_hash_same",
-        },
-        {
-            "send_packet": eval(
-                str(mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-next-proto-sctp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrSegmentRouting"
-                )
-            ),
-            "action": "save_hash",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)',
             "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrSegmentRouting(nh=132)/SCTP(sport=25,dport=99)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=23)/("X"*480)',
             "action": "check_hash_same",
         },
         {
@@ -4048,43 +4807,61 @@ mac_ipv6_sctp_l2_src = {
         {
             "send_packet": [
                 mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"][0],
+                mac_ipv6_sctp_toeplitz_basic_pkt["ipv4_sctp_vxlan_ipv6_sctp"][0],
             ],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_sctp_l2_dst = {
-    "sub_casename": "mac_ipv6_sctp_l2_dst",
+mac_ipv6_sctp_l3dst_l4src = {
+    "sub_casename": "mac_ipv6_sctp_l3dst_l4src",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types eth l2-dst-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-dst-only l4-src-only end key_len 0 queues end / end",
     "test": [
         {
             "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"],
             "action": "save_hash",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=23)/("X"*480)',
             "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/SCTP(sport=25,dport=99)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)',
             "action": "check_hash_same",
         },
         {
-            "send_packet": eval(
-                str(mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-next-proto-sctp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrSegmentRouting"
-                )
-            ),
+            "send_packet": mac_ipv6_sctp_toeplitz_non_basic_pkt,
+            "action": "check_no_hash",
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": [
+                mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"][0],
+                mac_ipv6_sctp_toeplitz_basic_pkt["ipv4_sctp_vxlan_ipv6_sctp"][0],
+            ],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_sctp_l3dst_l4dst = {
+    "sub_casename": "mac_ipv6_sctp_l3dst_l4dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-dst-only l4-dst-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"],
             "action": "save_hash",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=33)/("X"*480)',
             "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrSegmentRouting(nh=132)/SCTP(sport=25,dport=99)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)',
             "action": "check_hash_same",
         },
         {
@@ -4096,59 +4873,61 @@ mac_ipv6_sctp_l2_dst = {
         {
             "send_packet": [
                 mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"][0],
+                mac_ipv6_sctp_toeplitz_basic_pkt["ipv4_sctp_vxlan_ipv6_sctp"][0],
             ],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_sctp_l2src_l2dst = {
-    "sub_casename": "mac_ipv6_sctp_l2src_l2dst",
+mac_ipv6_sctp_l4_src = {
+    "sub_casename": "mac_ipv6_sctp_l4_src",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types eth end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l4-src-only end key_len 0 queues end / end",
     "test": [
         {
             "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"],
             "action": "save_hash",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)',
             "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/SCTP(sport=25,dport=99)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=33)/("X"*480)',
             "action": "check_hash_same",
         },
         {
-            "send_packet": eval(
-                str(mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-next-proto-sctp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrSegmentRouting"
-                )
-            ),
-            "action": "save_hash",
+            "send_packet": mac_ipv6_sctp_toeplitz_non_basic_pkt,
+            "action": "check_no_hash",
         },
+    ],
+    "post-test": [
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": [
+                mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"][0],
+                mac_ipv6_sctp_toeplitz_basic_pkt["ipv4_sctp_vxlan_ipv6_sctp"][0],
+            ],
+            "action": "check_no_hash",
         },
+    ],
+}
+
+mac_ipv6_sctp_l4_dst = {
+    "sub_casename": "mac_ipv6_sctp_l3_dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l4-dst-only end key_len 0 queues end / end",
+    "test": [
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"],
+            "action": "save_hash",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)',
             "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrSegmentRouting(nh=132)/SCTP(sport=25,dport=99)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=23)/("X"*480)',
             "action": "check_hash_same",
         },
         {
@@ -4160,16 +4939,17 @@ mac_ipv6_sctp_l2src_l2dst = {
         {
             "send_packet": [
                 mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"][0],
+                mac_ipv6_sctp_toeplitz_basic_pkt["ipv4_sctp_vxlan_ipv6_sctp"][0],
             ],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_sctp_l3_src = {
-    "sub_casename": "mac_ipv6_sctp_l3_src",
+mac_ipv6_sctp_all = {
+    "sub_casename": "mac_ipv6_sctp_all",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-src-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp end key_len 0 queues end / end",
     "test": [
         {
             "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"],
@@ -4180,23 +4960,19 @@ mac_ipv6_sctp_l3_src = {
             "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=33)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": "check_hash_different",
         },
         {
-            "send_packet": eval(
-                str(mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-next-proto-sctp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrRouting"
-                )
-            ),
-            "action": "save_hash",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)',
+            "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)',
             "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrRouting(nh=132)/SCTP(sport=32,dport=33)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)',
             "action": "check_hash_same",
         },
         {
@@ -4215,43 +4991,27 @@ mac_ipv6_sctp_l3_src = {
     ],
 }
 
-mac_ipv6_sctp_l3_dst = {
-    "sub_casename": "mac_ipv6_sctp_l3_dst",
+mac_ipv6_sctp_ipv6 = {
+    "sub_casename": "mac_ipv6_sctp_ipv6",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-dst-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6 end key_len 0 queues end / end",
     "test": [
         {
             "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"],
             "action": "save_hash",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=23)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)',
             "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=33)/("X"*480)',
-            "action": "check_hash_same",
-        },
-        {
-            "send_packet": eval(
-                str(mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-next-proto-sctp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrRouting"
-                )
-            ),
-            "action": "save_hash",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrRouting(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=23)/("X"*480)',
             "action": "check_hash_different",
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=132)/SCTP(sport=32,dport=33)/("X"*480)',
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=33)/("X"*480)',
             "action": "check_hash_same",
         },
-        {
-            "send_packet": mac_ipv6_sctp_toeplitz_non_basic_pkt,
-            "action": "check_no_hash",
-        },
     ],
     "post-test": [
         {
@@ -4264,425 +5024,469 @@ mac_ipv6_sctp_l3_dst = {
     ],
 }
 
-mac_ipv6_sctp_l3src_l4src = {
-    "sub_casename": "mac_ipv6_sctp_l3src_l4src",
+mac_ipv6_sctp_l4_chksum = eval(
+    str(mac_ipv6_udp_l4_chksum)
+    .replace("mac_ipv6_udp", "mac_ipv6_sctp")
+    .replace("/SCTP(sport=", "/TCP(sport=")
+    .replace("ipv6 / udp", "ipv6 / sctp")
+    .replace("/UDP(sport=", "/SCTP(sport=")
+    .replace("nh=17", "nh=132")
+)
+
+# mac_ipv6_next_proto_sctp
+mac_ipv6_next_proto_sctp_l2_src = {
+    "sub_casename": "mac_ipv6_next_proto_sctp_l2_src",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-src-only l4-src-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types eth l2-src-only end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"],
-            "action": "save_hash",
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6_destopt_sctp"],
+            "action": {"save_hash": "ipv6_destopt_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_destopt_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrDestOpt(nh=132)/SCTP(sport=25,dport=99)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_destopt_sctp"},
         },
         {
-            "send_packet": eval(
-                str(mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-next-proto-sctp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrRouting"
-                )
-            ),
-            "action": "save_hash",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=132)/SCTP(sport=22,dport=23)/Raw("x"*40)',
+            "action": {"check_hash_same": "ipv6_destopt_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=132)/SCTP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=16)/SCTP(sport=22,dport=23)/Raw("x"*40)',
+            "action": "check_no_hash",
         },
+    ],
+    "post-test": [
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrRouting(nh=132)/SCTP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6_destopt_sctp"],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_next_proto_sctp_l2_dst = {
+    "sub_casename": "mac_ipv6_next_proto_sctp_l2_dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types eth l2-dst-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6_routing_sctp"],
+            "action": {"save_hash": "ipv6_destopt_sctp"},
         },
         {
-            "send_packet": mac_ipv6_sctp_toeplitz_non_basic_pkt,
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_destopt_sctp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrDestOpt(nh=132)/SCTP(sport=25,dport=99)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_destopt_sctp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=132)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_destopt_sctp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/SCTP(sport=22,dport=23)/Raw("x"*40)',
             "action": "check_no_hash",
         },
     ],
     "post-test": [
         {
-            "send_packet": [
-                mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"][0],
-                mac_ipv6_sctp_toeplitz_basic_pkt["ipv4_sctp_vxlan_ipv6_sctp"][0],
-            ],
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6_destopt_sctp"],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_sctp_l3src_l4dst = {
-    "sub_casename": "mac_ipv6_sctp_l3src_l4dst",
+mac_ipv6_next_proto_sctp_l2src_l2dst = {
+    "sub_casename": "mac_ipv6_next_proto_sctp_l2src_l2dst",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-src-only l4-dst-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types eth end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"],
-            "action": "save_hash",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6_destopt_sctp"],
+            "action": {"save_hash": "ipv6_destopt_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_destopt_sctp"},
         },
         {
-            "send_packet": eval(
-                str(mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-next-proto-sctp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrHopByHop"
-                )
-            ),
-            "action": "save_hash",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_destopt_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=132)/SCTP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_destopt_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop(nh=132)/SCTP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrDestOpt(nh=132)/SCTP(sport=25,dport=99)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_destopt_sctp"},
         },
         {
-            "send_packet": mac_ipv6_sctp_toeplitz_non_basic_pkt,
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=6)/SCTP(sport=22,dport=23)/Raw("x"*40)',
             "action": "check_no_hash",
         },
     ],
     "post-test": [
         {
             "send_packet": [
-                mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"][0],
-                mac_ipv6_sctp_toeplitz_basic_pkt["ipv4_sctp_vxlan_ipv6_sctp"][0],
+                mac_ipv6_sctp_toeplitz_basic_pkt["ipv6_destopt_sctp"][0],
             ],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_sctp_l3dst_l4src = {
-    "sub_casename": "mac_ipv6_sctp_l3dst_l4src",
+mac_ipv6_next_proto_sctp_l3_src = {
+    "sub_casename": "mac_ipv6_next_proto_sctp_l3_src",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-dst-only l4-src-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-src-only end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"],
-            "action": "save_hash",
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6_routing_sctp"],
+            "action": {"save_hash": "ipv6_routing_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_routing_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrRouting(nh=132)/SCTP(sport=32,dport=33)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_routing_sctp"},
         },
         {
-            "send_packet": eval(
-                str(mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-next-proto-sctp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrHopByHop"
-                )
-            ),
-            "action": "save_hash",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=16)/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": "check_no_hash",
         },
+    ],
+    "post-test": [
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop(nh=132)/SCTP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6_routing_sctp"],
+            "action": "check_no_hash",
         },
+    ],
+}
+
+mac_ipv6_next_proto_sctp_l3_dst = {
+    "sub_casename": "mac_ipv6_next_proto_sctp_l3_dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-dst-only end key_len 0 queues end / end",
+    "test": [
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=132)/SCTP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6_routing_sctp"],
+            "action": {"save_hash": "ipv6_routing_sctp"},
         },
         {
-            "send_packet": mac_ipv6_sctp_toeplitz_non_basic_pkt,
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrRouting(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_routing_sctp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=132)/SCTP(sport=32,dport=33)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_routing_sctp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=17)/SCTP(sport=22,dport=23)/("X"*480)',
             "action": "check_no_hash",
         },
     ],
     "post-test": [
         {
-            "send_packet": [
-                mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"][0],
-                mac_ipv6_sctp_toeplitz_basic_pkt["ipv4_sctp_vxlan_ipv6_sctp"][0],
-            ],
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6_routing_sctp"],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_sctp_l3dst_l4dst = {
-    "sub_casename": "mac_ipv6_sctp_l3dst_l4dst",
+mac_ipv6_next_proto_sctp_l3src_l4src = {
+    "sub_casename": "mac_ipv6_next_proto_sctp_l3src_l4src",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-dst-only l4-dst-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-src-only l4-src-only end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"],
-            "action": "save_hash",
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6_hopbyhop_sctp"],
+            "action": {"save_hash": "ipv6_hopbyhop_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=132)/SCTP(sport=32,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_hopbyhop_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop(nh=132)/SCTP(sport=22,dport=33)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_hopbyhop_sctp"},
         },
         {
-            "send_packet": eval(
-                str(mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-next-proto-sctp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrHopByHop"
-                )
-            ),
-            "action": "save_hash",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": "check_no_hash",
         },
+    ],
+    "post-test": [
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop(nh=132)/SCTP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6_hopbyhop_sctp"],
+            "action": "check_no_hash",
+        },
+    ],
+}
+
+mac_ipv6_next_proto_sctp_l3src_l4dst = {
+    "sub_casename": "mac_ipv6_next_proto_sctp_l3src_l4dst",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-src-only l4-dst-only end key_len 0 queues end / end",
+    "test": [
+        {
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6_hopbyhop_sctp"],
+            "action": {"save_hash": "ipv6_hopbyhop_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=132)/SCTP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=132)/SCTP(sport=22,dport=33)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_hopbyhop_sctp"},
         },
         {
-            "send_packet": mac_ipv6_sctp_toeplitz_non_basic_pkt,
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop(nh=132)/SCTP(sport=32,dport=23)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_hopbyhop_sctp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=132)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_hopbyhop_sctp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=17)/SCTP(sport=22,dport=23)/("X"*480)',
             "action": "check_no_hash",
         },
     ],
     "post-test": [
         {
-            "send_packet": [
-                mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"][0],
-                mac_ipv6_sctp_toeplitz_basic_pkt["ipv4_sctp_vxlan_ipv6_sctp"][0],
-            ],
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6_hopbyhop_sctp"],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_sctp_l4_src = {
-    "sub_casename": "mac_ipv6_sctp_l4_src",
+mac_ipv6_next_proto_sctp_l3dst_l4src = {
+    "sub_casename": "mac_ipv6_next_proto_sctp_l3dst_l4src",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l4-src-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-dst-only l4-src-only end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"],
-            "action": "save_hash",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt[
+                "ipv6_segment_routing_sctp"
+            ],
+            "action": {"save_hash": "ipv6_segment_routing_sctp"},
         },
         {
-            "send_packet": eval(
-                str(mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-next-proto-sctp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrHopByHop()/IPv6ExtHdrRouting"
-                )
-            ),
-            "action": "save_hash",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting(nh=132)/SCTP(sport=32,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_segment_routing_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop()/IPv6ExtHdrRouting(nh=132)/SCTP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=132)/SCTP(sport=22,dport=33)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_segment_routing_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop()/IPv6ExtHdrRouting(nh=132)/SCTP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting()/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_segment_routing_sctp"},
         },
         {
-            "send_packet": mac_ipv6_sctp_toeplitz_non_basic_pkt,
-            "action": "check_no_hash",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting()/TCP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_no_hash": "ipv6_segment_routing_sctp"},
         },
     ],
     "post-test": [
         {
-            "send_packet": [
-                mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"][0],
-                mac_ipv6_sctp_toeplitz_basic_pkt["ipv4_sctp_vxlan_ipv6_sctp"][0],
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt[
+                "ipv6_segment_routing_sctp"
             ],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_sctp_l4_dst = {
-    "sub_casename": "mac_ipv6_sctp_l3_dst",
+mac_ipv6_next_proto_sctp_l3dst_l4dst = {
+    "sub_casename": "mac_ipv6_next_proto_sctp_l3dst_l4dst",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l4-dst-only end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l3-dst-only l4-dst-only end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"],
-            "action": "save_hash",
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt[
+                "ipv6_segment_routing_sctp"
+            ],
+            "action": {"save_hash": "ipv6_segment_routing_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting(nh=132)/SCTP(sport=22,dport=33)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_segment_routing_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=132)/UDP(sport=32,dport=23)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_segment_routing_sctp"},
         },
         {
-            "send_packet": eval(
-                str(mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-next-proto-sctp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrHopByHop()/IPv6ExtHdrRouting"
-                )
-            ),
-            "action": "save_hash",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=17)/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_no_hash": "ipv6_segment_routing_sctp"},
         },
+    ],
+    "post-test": [
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop()/IPv6ExtHdrRouting(nh=132)/SCTP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt[
+                "ipv6_segment_routing_sctp"
+            ],
+            "action": "check_no_hash",
         },
+    ],
+}
+
+mac_ipv6_next_proto_sctp_l4_src = {
+    "sub_casename": "mac_ipv6_next_proto_sctp_l4_src",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l4-src-only end key_len 0 queues end / end",
+    "test": [
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop()/IPv6ExtHdrRouting(nh=132)/SCTP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt[
+                "ipv6_segment_routing_sctp"
+            ],
+            "action": {"save_hash": "ipv6_segment_routing_sctp"},
         },
         {
-            "send_packet": mac_ipv6_sctp_toeplitz_non_basic_pkt,
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=132)/SCTP(sport=32,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_segment_routing_sctp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting()/IPv6ExtHdrDestOpt()/SCTP(sport=22,dport=33)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_segment_routing_sctp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting()/IPv6ExtHdrDestOpt(nh=17)/SCTP(sport=22,dport=23)/("X"*480)',
             "action": "check_no_hash",
         },
     ],
     "post-test": [
         {
-            "send_packet": [
-                mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"][0],
-                mac_ipv6_sctp_toeplitz_basic_pkt["ipv4_sctp_vxlan_ipv6_sctp"][0],
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt[
+                "ipv6_segment_routing_sctp"
             ],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_sctp_all = {
-    "sub_casename": "mac_ipv6_sctp_all",
+mac_ipv6_next_proto_sctp_l4_dst = {
+    "sub_casename": "mac_ipv6_next_proto_sctp_l4_dst",
     "port_id": 0,
-    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp end key_len 0 queues end / end",
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp l4-dst-only end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"],
-            "action": "save_hash",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt[
+                "ipv6_segment_routing_sctp"
+            ],
+            "action": {"save_hash": "ipv6_segment_routing_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=132)/SCTP(sport=22,dport=33)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_segment_routing_sctp"},
         },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting()/IPv6ExtHdrSegmentRouting(nh=132)/UDP(sport=32,dport=23)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_segment_routing_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting()/IPv6ExtHdrSegmentRouting(nh=6)/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": "check_no_hash",
         },
+    ],
+    "post-test": [
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt[
+                "ipv6_segment_routing_sctp"
+            ],
+            "action": "check_no_hash",
         },
+    ],
+}
+
+mac_ipv6_next_proto_sctp_all = {
+    "sub_casename": "mac_ipv6_next_proto_sctp_all",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp end key_len 0 queues end / end",
+    "test": [
         {
-            "send_packet": eval(
-                str(mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-next-proto-sctp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrHopByHop()/IPv6ExtHdrRouting"
-                )
-            ),
-            "action": "save_hash",
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6_routing_sctp"],
+            "action": {"save_hash": "ipv6_routing_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop()/IPv6ExtHdrRouting(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_routing_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop()/IPv6ExtHdrRouting(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrRouting(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_routing_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop()/IPv6ExtHdrRouting(nh=132)/SCTP(sport=32,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=132)/SCTP(sport=32,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_routing_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop()/IPv6ExtHdrRouting(nh=132)/SCTP(sport=22,dport=33)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=132)/SCTP(sport=22,dport=33)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_routing_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop()/IPv6ExtHdrRouting(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_routing_sctp"},
         },
         {
-            "send_packet": mac_ipv6_sctp_toeplitz_non_basic_pkt,
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=17)/SCTP(sport=22,dport=23)/("X"*480)',
             "action": "check_no_hash",
         },
     ],
     "post-test": [
         {
-            "send_packet": [
-                mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"][0],
-                mac_ipv6_sctp_toeplitz_basic_pkt["ipv4_sctp_vxlan_ipv6_sctp"][0],
-            ],
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6_routing_sctp"],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_sctp_ipv6 = {
-    "sub_casename": "mac_ipv6_sctp_ipv6",
+mac_ipv6_next_proto_sctp_ipv6 = {
+    "sub_casename": "mac_ipv6_next_proto_sctp_ipv6",
     "port_id": 0,
     "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types ipv6 end key_len 0 queues end / end",
     "test": [
         {
-            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"],
-            "action": "save_hash",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/SCTP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": mac_ipv6_sctp_toeplitz_basic_pkt["ipv6_hopbyhop_sctp"],
+            "action": {"save_hash": "ipv6_hopbyhop_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=32,dport=33)/("X"*480)',
-            "action": "check_hash_same",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_hopbyhop_sctp"},
         },
         {
-            "send_packet": eval(
-                str(mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-next-proto-sctp"]).replace(
-                    "IPv6ExtHdrDestOpt", "IPv6ExtHdrHopByHop()/IPv6ExtHdrRouting"
-                )
-            ),
-            "action": "save_hash",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6_hopbyhop_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop()/IPv6ExtHdrRouting(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop()/IPv6ExtHdrRouting(nh=132)/TCP(sport=32,dport=33)/("X"*480)',
+            "action": {"check_hash_same": "ipv6_hopbyhop_sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop()/IPv6ExtHdrRouting(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
-            "action": "check_hash_different",
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrHopByHop(nh=17)/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": "check_no_hash",
         },
     ],
     "post-test": [
         {
             "send_packet": [
-                mac_ipv6_sctp_toeplitz_basic_pkt["ipv6-sctp"][0],
-                mac_ipv6_sctp_toeplitz_basic_pkt["ipv4_sctp_vxlan_ipv6_sctp"][0],
+                mac_ipv6_sctp_toeplitz_basic_pkt["ipv6_hopbyhop_sctp"][0],
             ],
             "action": "check_no_hash",
         },
     ],
 }
 
-mac_ipv6_sctp_l4_chksum = eval(
-    str(mac_ipv6_udp_l4_chksum)
-    .replace("mac_ipv6_udp", "mac_ipv6_sctp")
+mac_ipv6_next_proto_sctp_l4_chksum = eval(
+    str(mac_ipv6_next_proto_udp_l4_chksum)
+    .replace("mac_ipv6_next_proto_udp", "mac_ipv6_next_proto_sctp")
     .replace("/SCTP(sport=", "/TCP(sport=")
     .replace("ipv6 / udp", "ipv6 / sctp")
     .replace("/UDP(sport=", "/SCTP(sport=")
@@ -4752,6 +5556,15 @@ mac_ipv6 = [
     mac_ipv6_all,
 ]
 
+mac_ipv6_next_proto = [
+    mac_ipv6_next_proto_l2_src,
+    mac_ipv6_next_proto_l2_dst,
+    mac_ipv6_next_proto_l2src_l2dst,
+    mac_ipv6_next_proto_l3_src,
+    mac_ipv6_next_proto_l3_dst,
+    mac_ipv6_next_proto_all,
+]
+
 mac_ipv6_udp = [
     mac_ipv6_udp_l2_src,
     mac_ipv6_udp_l2_dst,
@@ -4769,6 +5582,23 @@ mac_ipv6_udp = [
 ]
 mac_ipv6_udp_l4_chksum = [mac_ipv6_udp_l4_chksum]
 
+mac_ipv6_next_proto_udp = [
+    mac_ipv6_next_proto_udp_l2_src,
+    mac_ipv6_next_proto_udp_l2_dst,
+    mac_ipv6_next_proto_udp_l2src_l2dst,
+    mac_ipv6_next_proto_udp_l3_src,
+    mac_ipv6_next_proto_udp_l3_dst,
+    mac_ipv6_next_proto_udp_l3src_l4src,
+    mac_ipv6_next_proto_udp_l3src_l4dst,
+    mac_ipv6_next_proto_udp_l3dst_l4src,
+    mac_ipv6_next_proto_udp_l3dst_l4dst,
+    mac_ipv6_next_proto_udp_l4_src,
+    mac_ipv6_next_proto_udp_l4_dst,
+    mac_ipv6_next_proto_udp_all,
+    mac_ipv6_next_proto_udp_ipv6,
+]
+mac_ipv6_next_proto_udp_l4_chksum = [mac_ipv6_next_proto_udp_l4_chksum]
+
 mac_ipv6_tcp = [
     mac_ipv6_tcp_l2_src,
     mac_ipv6_tcp_l2_dst,
@@ -4786,6 +5616,23 @@ mac_ipv6_tcp = [
 ]
 mac_ipv6_tcp_l4_chksum = [mac_ipv6_tcp_l4_chksum]
 
+mac_ipv6_next_proto_tcp = [
+    mac_ipv6_next_proto_tcp_l2_src,
+    mac_ipv6_next_proto_tcp_l2_dst,
+    mac_ipv6_next_proto_tcp_l2src_l2dst,
+    mac_ipv6_next_proto_tcp_l3_src,
+    mac_ipv6_next_proto_tcp_l3_dst,
+    mac_ipv6_next_proto_tcp_l3src_l4src,
+    mac_ipv6_next_proto_tcp_l3src_l4dst,
+    mac_ipv6_next_proto_tcp_l3dst_l4src,
+    mac_ipv6_next_proto_tcp_l3dst_l4dst,
+    mac_ipv6_next_proto_tcp_l4_src,
+    mac_ipv6_next_proto_tcp_l4_dst,
+    mac_ipv6_next_proto_tcp_all,
+    mac_ipv6_next_proto_tcp_ipv6,
+]
+mac_ipv6_next_proto_tcp_l4_chksum = [mac_ipv6_next_proto_tcp_l4_chksum]
+
 mac_ipv6_sctp = [
     mac_ipv6_sctp_l2_src,
     mac_ipv6_sctp_l2_dst,
@@ -4803,6 +5650,23 @@ mac_ipv6_sctp = [
 ]
 mac_ipv6_sctp_l4_chksum = [mac_ipv6_sctp_l4_chksum]
 
+mac_ipv6_next_proto_sctp = [
+    mac_ipv6_next_proto_sctp_l2_src,
+    mac_ipv6_next_proto_sctp_l2_dst,
+    mac_ipv6_next_proto_sctp_l2src_l2dst,
+    mac_ipv6_next_proto_sctp_l3_src,
+    mac_ipv6_next_proto_sctp_l3_dst,
+    mac_ipv6_next_proto_sctp_l3src_l4src,
+    mac_ipv6_next_proto_sctp_l3src_l4dst,
+    mac_ipv6_next_proto_sctp_l3dst_l4src,
+    mac_ipv6_next_proto_sctp_l3dst_l4dst,
+    mac_ipv6_next_proto_sctp_l4_src,
+    mac_ipv6_next_proto_sctp_l4_dst,
+    mac_ipv6_next_proto_sctp_all,
+    mac_ipv6_next_proto_sctp_ipv6,
+]
+mac_ipv6_next_proto_sctp_l4_chksum = [mac_ipv6_next_proto_sctp_l4_chksum]
+
 # symmetric related data start
 mac_ipv4_symmetric = {
     "sub_casename": "mac_ipv4_all",
@@ -5151,14 +6015,6 @@ mac_ipv6_symmetric = {
             "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/("X"*480)',
             "action": {"check_hash_different": "ipv4-nonfrag"},
         },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/("X"*480)',
-            "action": {"save_hash": "ipv6-next-proto"},
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/("X"*480)',
-            "action": {"check_hash_same": "ipv6-next-proto"},
-        },
     ],
     "post-test": [
         {
@@ -5219,14 +6075,6 @@ mac_ipv6_udp_symmetric = {
             "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)',
             "action": {"check_hash_different": "ipv6-tcp"},
         },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
-            "action": {"save_hash": "ipv6-next-proto-udp"},
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
-            "action": {"check_hash_same": "ipv6-next-proto-udp"},
-        },
     ],
     "post-test": [
         {
@@ -5271,14 +6119,6 @@ mac_ipv6_tcp_symmetric = {
             "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)',
             "action": {"check_hash_different": "ipv6-udp"},
         },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
-            "action": {"save_hash": "ipv6-next-proto-tcp"},
-        },
-        {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
-            "action": {"check_hash_same": "ipv6-next-proto-tcp"},
-        },
     ],
     "post-test": [
         {
@@ -5315,23 +6155,167 @@ mac_ipv6_sctp_symmetric = {
             "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)',
             "action": {"check_hash_same": "ipv6-sctp"},
         },
+    ],
+    "post-test": [
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": {"save_hash": "ipv6-sctp-post"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_no_hash_or_different": "ipv6-sctp-post"},
+        },
+    ],
+}
+
+mac_ipv6_next_proto_symmetric = {
+    "sub_casename": "mac_ipv6_next_proto_symmetric",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end",
+    "pre-test": [
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/("X"*480)',
+            "action": {"save_hash": "ipv6-next-proto"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/("X"*480)',
+            "action": {"check_hash_different": "ipv6-next-proto"},
+        },
+    ],
+    "test": [
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/("X"*480)',
+            "action": {"save_hash": "ipv6-next-proto"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/("X"*480)',
+            "action": {"check_hash_same": "ipv6-next-proto"},
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/("X"*480)',
+            "action": {"check_no_hash_or_different": "ipv6-next-proto"},
+        },
+    ],
+}
+
+mac_ipv6_next_proto_udp_symmetric = {
+    "sub_casename": "mac_ipv6_next_proto_udp_symmetric",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / udp / end actions rss func symmetric_toeplitz types ipv6-udp end key_len 0 queues end / end",
+    "pre-test": [
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": {"save_hash": "ipv6-next-proto-udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6-next-proto-udp"},
+        },
+    ],
+    "test": [
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": {"save_hash": "ipv6-next-proto-udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_same": "ipv6-next-proto-udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=6)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": {"save_hash": "ipv6-next-proto-tcp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=6)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6-next-proto-tcp"},
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_no_hash_or_different": "ipv6-next-proto-udp"},
+        },
+    ],
+}
+
+mac_ipv6_next_proto_tcp_symmetric = {
+    "sub_casename": "mac_ipv6_next_proto_tcp_symmetric",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end",
+    "pre-test": [
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": {"save_hash": "ipv6-next-proto-tcp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6-next-proto-tcp"},
+        },
+    ],
+    "test": [
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": {"save_hash": "ipv6-next-proto-tcp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_same": "ipv6-next-proto-tcp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=132)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": {"save_hash": "ipv6-next-proto-sctp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=132)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6-next-proto-sctp"},
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_no_hash_or_different": "ipv6-next-proto-tcp"},
+        },
+    ],
+}
+
+mac_ipv6_next_proto_sctp_symmetric = {
+    "sub_casename": "mac_ipv6_next_proto_sctp_symmetric",
+    "port_id": 0,
+    "rule": "flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss func symmetric_toeplitz types ipv6-sctp end key_len 0 queues end / end",
+    "pre-test": [
         {
             "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrDestOpt(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
             "action": {"save_hash": "ipv6-next-proto-sctp"},
         },
         {
             "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrDestOpt(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
-            "action": {"check_hash_same": "ipv6-next-proto-sctp"},
+            "action": {"check_hash_different": "ipv6-next-proto-sctp"},
         },
     ],
-    "post-test": [
+    "test": [
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)',
-            "action": {"save_hash": "ipv6-sctp-post"},
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrDestOpt(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": {"save_hash": "ipv6-next-proto-sctp"},
         },
         {
-            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)',
-            "action": {"check_no_hash_or_different": "ipv6-sctp-post"},
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrDestOpt(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_same": "ipv6-next-proto-sctp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrDestOpt(nh=17)/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": {"save_hash": "ipv6-next-proto-udp"},
+        },
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrDestOpt(nh=17)/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_hash_different": "ipv6-next-proto-udp"},
+        },
+    ],
+    "post-test": [
+        {
+            "send_packet": 'Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrDestOpt(nh=132)/SCTP(sport=22,dport=23)/("X"*480)',
+            "action": {"check_no_hash_or_different": "ipv6-next-proto-sctp"},
         },
     ],
 }
@@ -5748,7 +6732,7 @@ ipv6_64bit_prefix = [
 ]
 
 
-class AdvancedRSSTest(TestCase):
+class ICEAdvancedRSSTest(TestCase):
     def set_up_all(self):
         """
         Run at the start of each test suite.
@@ -5861,6 +6845,30 @@ class AdvancedRSSTest(TestCase):
         self.pmd_output.execute_cmd("rx_vxlan_port add 4789 0")
         self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_sctp)
 
+    @skip_unsupported_pkg("os default")
+    def test_mac_ipv6_next_proto(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_next_proto)
+
+    @skip_unsupported_pkg("os default")
+    def test_mac_ipv6_next_proto_udp(self):
+
+        self.switch_testpmd(symmetric=False)
+        self.pmd_output.execute_cmd("rx_vxlan_port add 4789 0")
+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_next_proto_udp)
+
+    @skip_unsupported_pkg("os default")
+    def test_mac_ipv6_next_proto_tcp(self):
+        self.switch_testpmd(symmetric=False)
+        self.pmd_output.execute_cmd("rx_vxlan_port add 4789 0")
+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_next_proto_tcp)
+
+    @skip_unsupported_pkg("os default")
+    def test_mac_ipv6_next_proto_sctp(self):
+        self.switch_testpmd(symmetric=False)
+        self.pmd_output.execute_cmd("rx_vxlan_port add 4789 0")
+        self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_next_proto_sctp)
+
     def test_mac_ipv4_ipv4_chksum(self):
         self.switch_testpmd(symmetric=False)
         self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv4_ipv4_chksum)
@@ -5889,6 +6897,27 @@ class AdvancedRSSTest(TestCase):
         self.switch_testpmd(symmetric=False)
         self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_sctp_l4_chksum)
 
+    @skip_unsupported_pkg("os default")
+    def test_mac_ipv6_next_proto_udp_l4_chksum(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(
+            cases_info=mac_ipv6_next_proto_udp_l4_chksum
+        )
+
+    @skip_unsupported_pkg("os default")
+    def test_mac_ipv6_next_proto_tcp_l4_chksum(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(
+            cases_info=mac_ipv6_next_proto_tcp_l4_chksum
+        )
+
+    @skip_unsupported_pkg("os default")
+    def test_mac_ipv6_next_proto_sctp_l4_chksum(self):
+        self.switch_testpmd(symmetric=False)
+        self.rssprocess.handle_rss_distribute_cases(
+            cases_info=mac_ipv6_next_proto_sctp_l4_chksum
+        )
+
     def test_symmetric_mac_ipv4(self):
         self.switch_testpmd(symmetric=2)
         self.pmd_output.execute_cmd("rx_vxlan_port add 4789 0")
@@ -5924,6 +6953,35 @@ class AdvancedRSSTest(TestCase):
         self.switch_testpmd(symmetric=True)
         self.rssprocess.handle_rss_distribute_cases(cases_info=mac_ipv6_sctp_symmetric)
 
+    @skip_unsupported_pkg("os default")
+    def test_symmetric_mac_ipv6_next_proto(self):
+        self.switch_testpmd(symmetric=2)
+        self.pmd_output.execute_cmd("rx_vxlan_port add 4789 0")
+        self.rssprocess.handle_rss_distribute_cases(
+            cases_info=mac_ipv6_next_proto_symmetric
+        )
+
+    @skip_unsupported_pkg("os default")
+    def test_symmetric_mac_ipv6_next_proto_udp(self):
+        self.switch_testpmd(symmetric=True)
+        self.rssprocess.handle_rss_distribute_cases(
+            cases_info=mac_ipv6_next_proto_udp_symmetric
+        )
+
+    @skip_unsupported_pkg("os default")
+    def test_symmetric_mac_ipv6_next_proto_tcp(self):
+        self.switch_testpmd(symmetric=True)
+        self.rssprocess.handle_rss_distribute_cases(
+            cases_info=mac_ipv6_next_proto_tcp_symmetric
+        )
+
+    @skip_unsupported_pkg("os default")
+    def test_symmetric_mac_ipv6_next_proto_sctp(self):
+        self.switch_testpmd(symmetric=True)
+        self.rssprocess.handle_rss_distribute_cases(
+            cases_info=mac_ipv6_next_proto_sctp_symmetric
+        )
+
     def test_32bit_ipv6_prefix(self):
         self.switch_testpmd(symmetric=True)
         self.rssprocess.handle_rss_distribute_cases(cases_info=ipv6_32bit_prefix)
-- 
2.25.1


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

* [dts] [PATCH V1 2/2] test_plans/ice_advanced_rss: the case of splitting out ipv6_next_proto
  2023-02-28 15:47 [dts] [PATCH V1 0/2] the case of splitting out ipv6_next_proto Song Jiale
  2023-02-28 15:47 ` [dts] [PATCH V1 1/2] tests/ice_advanced_rss: " Song Jiale
@ 2023-02-28 15:47 ` Song Jiale
  1 sibling, 0 replies; 3+ messages in thread
From: Song Jiale @ 2023-02-28 15:47 UTC (permalink / raw)
  To: dts; +Cc: Song Jiale

the "ipv6_next_proto" package is different from the ddp required
by the normal ipv6 package.

Signed-off-by: Song Jiale <songx.jiale@intel.com>
---
 test_plans/ice_advanced_rss_test_plan.rst | 691 ++++++++++++++++++----
 1 file changed, 589 insertions(+), 102 deletions(-)

diff --git a/test_plans/ice_advanced_rss_test_plan.rst b/test_plans/ice_advanced_rss_test_plan.rst
index 5250b7db..ef604ee5 100644
--- a/test_plans/ice_advanced_rss_test_plan.rst
+++ b/test_plans/ice_advanced_rss_test_plan.rst
@@ -944,10 +944,21 @@ not hit pattern packets are the same in this test case::
 
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)],iface="ens786f0")
 
-ipv6_next_proto packets::
+ipv6_destopt packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/("X"*480)],iface="ens786f0")
+
+ipv6_routing packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=123)/("X"*480)],iface="ens786f0")
 
-   sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/Raw("x"*40)],iface="ens786f0")
+ipv6_hopbyhop packets::
 
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=123)/("X"*480)],iface="ens786f0")
+
+ipv6_segment_routing packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=123)/("X"*480)],iface="ens786f0")
 
 Subcase: MAC_IPV6_L2SRC
 -----------------------
@@ -968,10 +979,6 @@ ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
-ipv6_next_proto packet::
-
-   sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/Raw("x"*40)],iface="ens786f0")
-
 3. hit pattern/not defined input set:
 ipv6-nonfrag packets::
 
@@ -985,6 +992,22 @@ ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)],iface="ens786f0")
 
+Subcase: MAC_IPV6_NEXT_PROTO_L2SRC
+----------------------------------
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+2. hit pattern/defined input set:
+ipv6_destopt packet::
+
+    sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/("X"*480)],iface="ens786f0")
+
+3. hit pattern/not defined input set:
+ipv6_destopt packet::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/("X"*480)],iface="ens786f0")
+
 Subcase: MAC_IPV6_L2DST
 -----------------------
 1. create rss rule::
@@ -1004,10 +1027,6 @@ ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
-ipv6_next_proto packets::
-
-   sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/Raw("x"*40)],iface="ens786f0")
-
 3. hit pattern/not defined input set:
 ipv6-nonfrag packets::
 
@@ -1021,6 +1040,22 @@ ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2027")/UDP(sport=25,dport=99)/("X"*480)],iface="ens786f0")
 
+Subcase: MAC_IPV6_NEXT_PROTO_L2DST
+----------------------------------
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / end actions rss types eth l2-dst-only end key_len 0 queues end / end
+
+2. hit pattern/defined input set:
+ipv6_routing packets::
+
+    sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=123)/("X"*480)],iface="ens786f0")
+
+3. hit pattern/not defined input set:
+ipv6_routing packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=123)/("X"*480)],iface="ens786f0")
+
 Subcase: MAC_IPV6_L2SRC_L2DST
 -----------------------------
 1. create rss rule::
@@ -1046,12 +1081,6 @@ ipv6-udp packets::
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
     sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
-ipv6_next_proto packets::
-
-   sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/Raw("x"*40)],iface="ens786f0")
-   sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/Raw("x"*40)],iface="ens786f0")
-   sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/Raw("x"*40)],iface="ens786f0")
-
 3. hit pattern/not defined input set:
 ipv6-nonfrag packets::
 
@@ -1065,6 +1094,24 @@ ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)],iface="ens786f0")
 
+Subcase: MAC_IPV6_NEXT_PROTO_L2SRC_L2DST
+----------------------------------------
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / end actions rss types eth end key_len 0 queues end / end
+
+2. hit pattern/defined input set:
+ipv6_hopbyhop packets::
+
+    sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=123)/("x"*480)],iface="ens786f0")
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=123)/("x"*480)],iface="ens786f0")
+    sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=123)/("x"*480)],iface="ens786f0")
+
+3. hit pattern/not defined input set:
+ipv6-ipv6_hopbyhop packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrHopByHop(nh=122)/("X"*480)],iface="ens786f0")
+
 Subcase: MAC_IPV6_L3SRC
 -----------------------
 1. create rss rule::
@@ -1084,10 +1131,6 @@ ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
-ipv6_next_proto packets::
-
-   sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/Raw("x"*40)],iface="ens786f0")
-
 3. hit pattern/not defined input set:
 ipv6-nonfrag packets::
 
@@ -1101,6 +1144,22 @@ ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=33)/("X"*480)],iface="ens786f0")
 
+Subcase: MAC_IPV6_NEXT_PROTO_L3SRC
+----------------------------------
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end
+
+2. hit pattern/defined input set:
+ipv6_segment_routing packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=123)/("X"*480)],iface="ens786f0")
+
+3. hit pattern/not defined input set:
+ipv6_segment_routing packets::
+
+    sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting(nh=123)/("X"*480)],iface="ens786f0")
+
 Subcase: MAC_IPV6_L3DST
 -----------------------
 1. create rss rule::
@@ -1120,10 +1179,6 @@ ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
-ipv6_next_proto packets::
-
-   sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrDestOpt(nh=123)/Raw("x"*40)],iface="ens786f0")
-
 3. hit pattern/not defined input set:
 ipv6-nonfrag packets::
 
@@ -1137,6 +1192,22 @@ ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)],iface="ens786f0")
 
+Subcase: MAC_IPV6_NEXT_PROTO_L3DST
+----------------------------------
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 l3-dst-only end key_len 0 queues end / end
+
+2. hit pattern/defined input set:
+ipv6_destopt packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrDestOpt(nh=123)/("X"*480)],iface="ens786f0")
+
+3. hit pattern/not defined input set:
+ipv6_destopt packets::
+
+    sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=122)/("X"*480)],iface="ens786f0")
+
 Subcase: MAC_IPV6_ALL
 ---------------------
 1. create rss rule::
@@ -1159,11 +1230,6 @@ ipv6-udp packets::
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
-ipv6_next_proto packets::
-
-   sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrDestOpt(nh=123)/Raw("x"*40)],iface="ens786f0")
-   sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/Raw("x"*40)],iface="ens786f0")
-
 3. hit pattern/not defined input set:
 ipv6-nonfrag packets::
 
@@ -1177,6 +1243,22 @@ ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)],iface="ens786f0")
 
+Subcase: MAC_IPV6_NEXT_PROTO_ALL
+--------------------------------
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6 end key_len 0 queues end / end
+
+2. hit pattern/defined input set:
+ipv6_next_proto packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrRouting(nh=123)/("X"*480)],iface="ens786f0")
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=123)/("X"*480)],iface="ens786f0")
+
+3. hit pattern/not defined input set:
+ipv6-nonfrag packets::
+
+    sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrRouting(nh=122)/("X"*480)],iface="ens786f0")
 
 Test case: MAC_IPV6_UDP
 =======================
@@ -1189,16 +1271,28 @@ ipv4_udp_vxlan_ipv6_udp packet::
 
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
-ipv6_next_proto packets::
-
-    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
-
 not hit pattern packets are the same in this test case::
 
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(src="192.168.0.1",dst="192.168.0.2")/UDP(sport=22,dport=23)/Raw("x"*80)],iface="ens786f0")
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6()/UDP()/VXLAN()/Ether()/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
+ipv6_destopt_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+
+ipv6_routing_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+
+ipv6_hopbyhop_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=17)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+
+ipv6_segment_routing_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+
 Subcase: MAC_IPV6_UDP_L2SRC
 ---------------------------
 1. create rss rule::
@@ -1210,14 +1304,31 @@ ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
-ipv6_next_proto packets::
+3. hit pattern/not defined input set:
+ipv6-udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)],iface="ens786f0")
+
+Subcase: MAC_IPV6_NEXT_PROTO_UDP_L2SRC
+--------------------------------------
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth l2-src-only end key_len 0 queues end / end
+
+2. hit pattern/defined input set:
+ipv6_destopt_udp packets::
 
     sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
 3. hit pattern/not defined input set:
-ipv6-udp packets::
+ipv6_destopt_udp packets::
 
-    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)],iface="ens786f0")
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=25,dport=99)/("X"*480)],iface="ens786f0")
+
+4. not hit pattern:
+ipv6_destopt_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=16)/UDP(sport=22,dport=23)/Raw("x"*40)],iface="ens786f0")
 
 Subcase: MAC_IPV6_UDP_L2DST
 ---------------------------
@@ -1230,14 +1341,32 @@ ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
-ipv6_next_proto packets::
+3. hit pattern/not defined input set:
+ipv6-udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)],iface="ens786f0")
+
+Subcase: MAC_IPV6_NEXT_PROTO_UDP_L2DST
+--------------------------------------
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth l2-dst-only end key_len 0 queues end / end
+
+2. hit pattern/defined input set:
+ipv6_destopt_udp packets::
 
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
 3. hit pattern/not defined input set:
-ipv6-udp packets::
+ipv6_destopt_udp packets::
 
-    sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)],iface="ens786f0")
+    sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=25,dport=99)/("X"*480)],iface="ens786f0")
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/("X"*480)],iface="ens786f0")
+
+4. not hit pattern:
+ipv6_destopt_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=6)/UDP(sport=22,dport=23)/Raw("x"*40)],iface="ens786f0")
 
 Subcase: MAC_IPV6_UDP_L2SRC_L2DST
 ---------------------------------
@@ -1252,16 +1381,33 @@ ipv6-udp packets::
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
     sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
-ipv6_next_proto packets::
+3. hit pattern/not defined input set:
+ipv6-udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)],iface="ens786f0")
+
+Subcase: MAC_IPV6_NEXT_PROTO_UDP_L2SRC_L2DST
+--------------------------------------------
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types eth end key_len 0 queues end / end
+
+2. hit pattern/defined input set:
+ipv6_destopt_udp packets::
 
     sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
     sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
 3. hit pattern/not defined input set:
-ipv6-udp packets::
+ipv6_destopt_udp packets::
 
-    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/UDP(sport=25,dport=99)/("X"*480)],iface="ens786f0")
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2923",dst="CDCD:910A:2222:5498:8475:1111:3900:2025")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=25,dport=99)/("X"*480)],iface="ens786f0")
+
+4. not hit pattern:
+ipv6_destopt_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=132)/UDP(sport=22,dport=23)/Raw("x"*40)],iface="ens786f0")
 
 Subcase: MAC_IPV6_UDP_L3SRC
 ---------------------------
@@ -1274,15 +1420,32 @@ ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
-ipv6_next_proto packets::
-
-    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
-
 3. hit pattern/not defined input set:
 ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=33)/("X"*480)],iface="ens786f0")
 
+Subcase: MAC_IPV6_NEXT_PROTO_UDP_L3SRC
+--------------------------------------
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-src-only end key_len 0 queues end / end
+
+2. hit pattern/defined input set:
+ipv6_routing_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+
+3. hit pattern/not defined input set:
+ipv6_routing_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrRouting(nh=17)/UDP(sport=32,dport=33)/("X"*480)],iface="ens786f0")
+
+4. not hit pattern:
+ipv6_routing_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=16)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+
 Subcase: MAC_IPV6_UDP_L3DST
 ---------------------------
 1. create rss rule::
@@ -1299,6 +1462,27 @@ ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)],iface="ens786f0")
 
+Subcase: MAC_IPV6_NEXT_PROTO_UDP_L3DST
+--------------------------------------
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only end key_len 0 queues end / end
+
+2. hit pattern/defined input set:
+ipv6_routing_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+
+3. hit pattern/not defined input set:
+ipv6_routing_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=17)/UDP(sport=32,dport=33)/("X"*480)],iface="ens786f0")
+
+4. not hit pattern:
+ipv6_routing_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=6)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+
 Subcase: MAC_IPV6_UDP_L3SRC_L4SRC
 ---------------------------------
 1. create rss rule::
@@ -1310,15 +1494,32 @@ ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0")
 
-ipv6_next_proto packets::
-
-    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0")
-
 3. hit pattern/not defined input set:
 ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0")
 
+Subcase: MAC_IPV6_NEXT_PROTO_UDP_L3SRC_L4SRC
+--------------------------------------------
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-src-only end key_len 0 queues end / end
+
+2. hit pattern/defined input set:
+ipv6_hopbyhop_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=17)/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0")
+
+3. hit pattern/not defined input set:
+ipv6_hopbyhop_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop(nh=17)/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0")
+
+4. not hit pattern:
+ipv6_hopbyhop_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=132)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+
 Subcase: MAC_IPV6_UDP_L3SRC_L4DST
 ---------------------------------
 1. create rss rule::
@@ -1330,15 +1531,33 @@ ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0")
 
-ipv6_next_proto packets::
-
-    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0")
-
 3. hit pattern/not defined input set:
 ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0")
 
+Subcase: MAC_IPV6_NEXT_PROTO_UDP_L3SRC_L4DST
+--------------------------------------------
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-src-only l4-dst-only end key_len 0 queues end / end
+
+2. hit pattern/defined input set:
+ipv6_hopbyhop_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=17)/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0")
+
+3. hit pattern/not defined input set:
+ipv6_hopbyhop_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrHopByHop(nh=17)/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0")
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=17)/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+
+4. not hit pattern:
+ipv6_hopbyhop_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+
 Subcase: MAC_IPV6_UDP_L3DST_L4SRC
 ---------------------------------
 1. create rss rule::
@@ -1350,15 +1569,33 @@ ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0")
 
-ipv6_next_proto packets::
-
-    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0")
-
 3. hit pattern/not defined input set:
 ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0")
 
+Subcase: MAC_IPV6_NEXT_PROTO_UDP_L3DST_L4SRC
+--------------------------------------------
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-src-only end key_len 0 queues end / end
+
+2. hit pattern/defined input set:
+ipv6_segment_routing_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0")
+
+3. hit pattern/not defined input set:
+ipv6_segment_routing_udp packets::
+
+     sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0")
+     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting()/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+
+4. not hit pattern:
+ipv6_segment_routing_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting()/SCTP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+
 Subcase: MAC_IPV6_UDP_L3DST_L4DST
 ---------------------------------
 1. create rss rule::
@@ -1370,15 +1607,32 @@ ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0")
 
-ipv6_next_proto packets::
-
-    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0")
-
 3. hit pattern/not defined input set:
 ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0")
 
+Subcase: MAC_IPV6_NEXT_PROTO_UDP_L3DST_L4DST
+--------------------------------------------
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l3-dst-only l4-dst-only end key_len 0 queues end / end
+
+2. hit pattern/defined input set:
+ipv6_segment_routing_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0")
+
+3. hit pattern/not defined input set:
+ipv6_segment_routing_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=17)/TCP(sport=32,dport=23)/("X"*480)],iface="ens786f0")
+
+4. not hit pattern:
+ipv6_segment_routing_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=6)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+
 Subcase: MAC_IPV6_UDP_L4SRC
 ---------------------------
 1. create rss rule::
@@ -1390,15 +1644,32 @@ ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0")
 
-ipv6_next_proto packets::
-
-    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0")
-
 3. hit pattern/not defined input set:
 ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0")
 
+Subcase: MAC_IPV6_NEXT_PROTO_UDP_L4SRC
+--------------------------------------
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l4-src-only end key_len 0 queues end / end
+
+2. hit pattern/defined input set:
+ipv6_segment_routing_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0")
+
+3. hit pattern/not defined input set:
+ipv6_segment_routing_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting()/IPv6ExtHdrDestOpt()/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0")
+
+4. not hit pattern:
+ipv6_segment_routing_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting()/IPv6ExtHdrDestOpt(nh=6)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+
 Subcase: MAC_IPV6_UDP_L4DST
 ---------------------------
 1. create rss rule::
@@ -1415,6 +1686,27 @@ ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0")
 
+Subcase: MAC_IPV6_NEXT_PROTO_UDP_L4DST
+--------------------------------------
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp l4-dst-only end key_len 0 queues end / end
+
+2. hit pattern/defined input set:
+ipv6_segment_routing_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0")
+
+3. hit pattern/not defined input set:
+ipv6_segment_routing_udp  packets::
+
+    sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting()/IPv6ExtHdrSegmentRouting(nh=17)/TCP(sport=32,dport=23)/("X"*480)],iface="ens786f0")
+
+4. not hit pattern:
+ipv6_segment_routing_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrSegmentRouting()/IPv6ExtHdrSegmentRouting(nh=132)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+
 Subcase: MAC_IPV6_UDP_IPV6
 --------------------------
 1. create rss rule::
@@ -1427,16 +1719,32 @@ ipv6-udp packets::
     sendp([Ether(dst="00:11:22:33:44:55", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0")
     sendp([Ether(dst="00:11:22:33:44:55", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/UDP(sport=22,dport=23)/("X"*480)],iface="enp134s0f0")
 
-ipv6_next_proto packets::
-
-    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
-    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
-
 3. hit pattern/not defined input set:
 ipv6-udp packets::
 
     sendp([Ether(dst="00:11:22:33:44:53", src="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=33)/("X"*480)],iface="enp134s0f0")
 
+Subcase: MAC_IPV6_NEXT_PROTO_UDP_IPV6
+-------------------------------------
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6 end key_len 0 queues end / end
+
+2. hit pattern/defined input set:
+ipv6_hopbyhop_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=17)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+
+3. hit pattern/not defined input set:
+ipv6_hopbyhop_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop()/IPv6ExtHdrRouting(nh=17)/SCTP(sport=32,dport=33)/("X"*480)],iface="enp134s0f0")
+
+4. not hit pattern:
+ipv6_hopbyhop_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrHopByHop(nh=6)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+
 Subcase: MAC_IPV6_UDP_ALL
 -------------------------
 1. create rss rule::
@@ -1451,18 +1759,35 @@ ipv6-udp packets::
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0")
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0")
 
-ipv6_next_proto packets::
-
-    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
-    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
-    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0")
-    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0")
-
 3. hit pattern/not defined input set:
 ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
+Subcase: MAC_IPV6_NEXT_PROTO_UDP_ALL
+------------------------------------
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp end key_len 0 queues end / end
+
+2. hit pattern/defined input set:
+ipv6_routing_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2928",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2021")/IPv6ExtHdrRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=17)/UDP(sport=32,dport=23)/("X"*480)],iface="ens786f0")
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=17)/UDP(sport=22,dport=33)/("X"*480)],iface="ens786f0")
+
+3. hit pattern/not defined input set:
+ipv6_routing_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:53", dst="68:05:CA:BB:27:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+
+4. not hit pattern:
+ipv6_routing_udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrRouting(nh=6)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+
 Test case: MAC_IPV6_TCP
 =======================
 the rules and packets in this test case is similar to "Test case: MAC_IPV6_UDP"
@@ -1479,39 +1804,74 @@ just change some parts of rules and packets:
 Subcase: MAC_IPV6_TCP_L2SRC
 ---------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_TCP_L2SRC
+--------------------------------------
+
 Subcase: MAC_IPV6_TCP_L2DST
 ---------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_TCP_L2DST
+--------------------------------------
+
 Subcase: MAC_IPV6_TCP_L2SRC_L2DST
 ---------------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_TCP_L2SRC_L2DST
+--------------------------------------------
+
 Subcase: MAC_IPV6_TCP_L3SRC
 ---------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_TCP_L3SRC
+--------------------------------------
+
 Subcase: MAC_IPV6_TCP_L3DST
 ---------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_TCP_L3DST
+--------------------------------------
+
 Subcase: MAC_IPV6_TCP_L3SRC_L4SRC
 ---------------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_TCP_L3SRC_L4SRC
+--------------------------------------------
+
 Subcase: MAC_IPV6_TCP_L3SRC_L4DST
 ---------------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_TCP_L3SRC_L4DST
+--------------------------------------------
+
 Subcase: MAC_IPV6_TCP_L3DST_L4SRC
 ---------------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_TCP_L3DST_L4SRC
+--------------------------------------------
+
 Subcase: MAC_IPV6_TCP_L3DST_L4DST
 ---------------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_TCP_L3DST_L4DST
+--------------------------------------------
+
 Subcase: MAC_IPV6_TCP_L4SRC
 ---------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_TCP_L4SRC
+--------------------------------------
+
 Subcase: MAC_IPV6_TCP_L4DST
 ---------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_TCP_L4DST
+--------------------------------------
+
 Subcase: MAC_IPV6_TCP_ALL
 -------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_TCP_ALL
+------------------------------------
 
 Test case: MAC_IPV6_SCTP
 ========================
@@ -1528,39 +1888,75 @@ just change some parts of rules and packets:
 Subcase: MAC_IPV6_SCTP_L2SRC
 ----------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_SCTP_L2SRC
+---------------------------------------
+
 Subcase: MAC_IPV6_SCTP_L2DST
 ----------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_SCTP_L2DST
+---------------------------------------
+
 Subcase: MAC_IPV6_SCTP_L2SRC_L2DST
 ----------------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_SCTP_L2SRC_L2DST
+---------------------------------------------
+
 Subcase: MAC_IPV6_SCTP_L3SRC
 ----------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_SCTP_L3SRC
+---------------------------------------
+
 Subcase: MAC_IPV6_SCTP_L3DST
 ----------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_SCTP_L3DST
+---------------------------------------
+
 Subcase: MAC_IPV6_SCTP_L3SRC_L4SRC
 ----------------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_SCTP_L3SRC_L4SRC
+---------------------------------------------
+
 Subcase: MAC_IPV6_SCTP_L3SRC_L4DST
 ----------------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_SCTP_L3SRC_L4DST
+---------------------------------------------
+
 Subcase: MAC_IPV6_SCTP_L3DST_L4SRC
 ----------------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_SCTP_L3DST_L4SRC
+---------------------------------------------
+
 Subcase: MAC_IPV6_SCTP_L3DST_L4DST
 ----------------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_SCTP_L3DST_L4DST
+---------------------------------------------
+
 Subcase: MAC_IPV6_SCTP_L4SRC
 ----------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_SCTP_L4SRC
+---------------------------------------
+
 Subcase: MAC_IPV6_SCTP_L4DST
 ----------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_SCTP_L4DST
+---------------------------------------
+
 Subcase: MAC_IPV6_SCTP_ALL
 --------------------------
 
+Subcase: MAC_IPV6_NEXT_PROTO_SCTP_ALL
+-------------------------------------
+
 Test case: MAC_IPV6_32BIT_PREFIX
 =================================
 basic hit pattern packets are the same in this test case:
@@ -1910,17 +2306,24 @@ ipv6-udp packets::
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
-ipv6_next_proto::
-
-   sendp(['Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/("X"*480)],iface="ens786f0")
-   sendp(['Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/("X"*480)],iface="ens786f0")
-
 3. not hit pattern with switched value of input set in the rule:
 ipv4-nonfrag packets::
 
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.1", src="192.168.0.2")/("X"*480)],iface="ens786f0")
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IP(dst="192.168.0.2", src="192.168.0.1")/("X"*480)],iface="ens786f0")
 
+Test case: symmetric MAC_IPV6_NEXT_PROTO
+========================================
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / end actions rss func symmetric_toeplitz types ipv6 end key_len 0 queues end / end
+
+2. hit pattern/defined input set:
+ipv6_next_proto::
+
+   sendp(['Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/("X"*480)],iface="ens786f0")
+   sendp(['Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=123)/("X"*480)],iface="ens786f0")
+
 Test case: symmetric MAC_IPV6_UDP
 =================================
 1. create rss rule::
@@ -1939,11 +2342,24 @@ ipv6-tcp packets::
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
-ipv6_next_proto::
+Test case: symmetric MAC_IPV6_NEXT_PROTO_UDP
+============================================
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / end actions rss func symmetric_toeplitz types ipv6-udp end key_len 0 queues end / end
+
+2. hit pattern/defined input set:
+ipv6_next_proto_udp::
 
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=17)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
+3. not hit pattern/not defined input set packets::
+ipv6_next_proto_tcp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=6)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+    sendp([Ether(dst="00:11:22:33:44:55", src="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrSegmentRouting(nh=6)/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+
 Test case: symmetric MAC_IPV6_TCP
 =================================
 1. create rss rule::
@@ -1956,17 +2372,29 @@ ipv6-tcp packets::
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
-ipv6_next_proto::
-
-    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
-    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
-
 3. not hit pattern/not defined input set packets::
 ipv6-udp packets::
 
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
+Test case: symmetric MAC_IPV6_NEXT_PROTO_TCP
+============================================
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss func symmetric_toeplitz types ipv6-tcp end key_len 0 queues end / end
+
+2. hit pattern/defined input set:
+ipv6_next_proto_tcp::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=6)/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+
+3. not hit pattern/not defined input set packets::
+ipv6_next_proto_sctp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=132)/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrHopByHop(nh=132)/TCP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
 Test case: symmetric MAC_IPV6_SCTP
 ==================================
@@ -1980,16 +2408,29 @@ ipv6-sctp packets::
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/SCTP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
-ipv6_next_proto::
+3. not hit pattern/not defined input set packets::
+ipv6-udp packets::
+
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+
+Test case: symmetric MAC_IPV6_NEXT_PROTO_SCTP
+=============================================
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss func symmetric_toeplitz types ipv6-sctp end key_len 0 queues end / end
+
+2. hit pattern/defined input set:
+ipv6_next_proto_sctp::
 
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrDestOpt(nh=132)/SCTP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
     sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrDestOpt(nh=132)/SCTP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
 3. not hit pattern/not defined input set packets::
-ipv6-udp packets::
+ipv6_next_proto_udp packets::
 
-    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
-    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/UDP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrDestOpt(nh=17)/SCTP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
+    sendp([Ether(src="00:11:22:33:44:55", dst="68:05:CA:BB:26:E0")/IPv6(dst="ABAB:910B:6666:3457:8295:3333:1800:2929",src="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt()/IPv6ExtHdrDestOpt(nh=17)/SCTP(sport=22,dport=23)/("X"*480)],iface="ens786f0")
 
 Test case: global simple-xor
 ============================
@@ -2430,22 +2871,37 @@ Test case: MAC_IPV6_UDP_L4_CHKSUM
 2. basic hit pattern packet::
 
     p1 = Ether(src="52:00:00:00:00:00", dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010")/UDP(sport=22, dport=23, chksum=0x1)/("X"*48)
-    pp1 = Ether(src="52:00:00:00:00:00", dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22, dport=23, chksum=0x1)/("X"*48)
 
 3. hit pattern/changed defined input set::
 
     p2 = Ether(src="52:00:00:00:00:00", dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010")/UDP(sport=22, dport=23, chksum=0x2)/("X"*48)
-    pp2 = Ether(src="52:00:00:00:00:00", dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22, dport=23, chksum=0x2)/("X"*48)
 
 4. hit pattern/changed not defined input set::
 
     p3 = Ether(src="52:00:00:00:00:01", dst="00:11:22:33:44:53")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2021", src="ABAB:910A:2222:5498:8475:1111:3900:1011")/UDP(sport=32, dport=33, chksum=0x1)/("X"*48)
-    pp3 = Ether(src="52:00:00:00:00:01", dst="00:11:22:33:44:53")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2021", src="ABAB:910A:2222:5498:8475:1111:3900:1011")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=32, dport=33, chksum=0x1)/("X"*48)
 
 5. not hit pattern::
 
     p4 = Ether(src="52:00:00:00:00:00", dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010")/TCP(sport=22, dport=23, chksum=0x1)/("X"*49)
 
+Test case: MAC_IPV6_NEXT_PROTO_UDP_L4_CHKSUM
+============================================
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / udp / end actions rss types l4-chksum  end queues end / end
+
+2. basic hit pattern packet::
+
+    p1 = Ether(src="52:00:00:00:00:00", dst="00:11:22:33:44:55")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22, dport=23, chksum=0x1)/("X"*48)
+
+3. hit pattern/changed defined input set::
+
+    p2 = Ether(src="52:00:00:00:00:00", dst="00:11:22:33:44:55")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=22, dport=23, chksum=0x2)/("X"*48)
+
+4. hit pattern/changed not defined input set::
+
+    p3 = Ether(src="52:00:00:00:00:01", dst="00:11:22:33:44:53")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:3939",dst="CDCD:910A:2222:5498:8475:1111:3900:3030")/IPv6ExtHdrDestOpt(nh=17)/UDP(sport=32, dport=33, chksum=0x1)/("X"*48)
+
 Test case: MAC_IPV6_TCP_L4_CHKSUM
 =================================
 1. create rss rule::
@@ -2455,22 +2911,37 @@ Test case: MAC_IPV6_TCP_L4_CHKSUM
 2. basic hit pattern packet::
 
     p1 = Ether(src="52:00:00:00:00:00", dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010")/TCP(sport=22, dport=23, chksum=0x1)/("X"*48)
-    pp1 = Ether(src="52:00:00:00:00:00", dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010")/IPv6ExtHdrDestOpt(nh=6)/UDP(sport=22, dport=23, chksum=0x1)/("X"*48)
 
 3. hit pattern/changed defined input set::
 
     p2 = Ether(src="52:00:00:00:00:00", dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010")/TCP(sport=22, dport=23, chksum=0x2)/("X"*48)
-    pp2 = Ether(src="52:00:00:00:00:00", dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010")/IPv6ExtHdrDestOpt(nh=6)/UDP(sport=22, dport=23, chksum=0x2)/("X"*48)
 
 4. hit pattern/changed not defined input set::
 
     p3 = Ether(src="52:00:00:00:00:01", dst="00:11:22:33:44:53")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2021", src="ABAB:910A:2222:5498:8475:1111:3900:1011")/TCP(sport=32, dport=33, chksum=0x1)/("X"*48)
-    pp3 = Ether(src="52:00:00:00:00:01", dst="00:11:22:33:44:53")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2021", src="ABAB:910A:2222:5498:8475:1111:3900:1011")/IPv6ExtHdrDestOpt(nh=6)/UDP(sport=22, dport=23, chksum=0x1)/("X"*48)
 
 5. not hit pattern::
 
     p4 = Ether(src="52:00:00:00:00:00", dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010")/SCTP(sport=22, dport=23, chksum=0x1)/("X"*49)
 
+Test case: MAC_IPV6_NEXT_PROTO_TCP_L4_CHKSUM
+============================================
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types l4-chksum  end queues end / end
+
+2. basic hit pattern packet::
+
+    p1 = Ether(src="52:00:00:00:00:00", dst="00:11:22:33:44:55")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=6)/TCP(sport=22, dport=23, chksum=0x1)/("X"*48)
+
+3. hit pattern/changed defined input set::
+
+    p2 = Ether(src="52:00:00:00:00:00", dst="00:11:22:33:44:55")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=6)/TCP(sport=22, dport=23, chksum=0x2)/("X"*48)
+
+4. hit pattern/changed not defined input set::
+
+    p3 = Ether(src="52:00:00:00:00:01", dst="00:11:22:33:44:53")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:3939",dst="CDCD:910A:2222:5498:8475:1111:3900:3030")/IPv6ExtHdrDestOpt(nh=6)/TCP(sport=32, dport=33, chksum=0x1)/("X"*48)
+
 Test case: MAC_IPV6_SCTP_L4_CHKSUM
 ==================================
 1. create rss rule::
@@ -2480,22 +2951,37 @@ Test case: MAC_IPV6_SCTP_L4_CHKSUM
 2. basic hit pattern packet::
 
     p1 = Ether(src="52:00:00:00:00:00", dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010")/SCTP(sport=22, dport=23, chksum=0xffffffff)/("X"*48)
-    pp1 = Ether(src="52:00:00:00:00:00", dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010")/IPv6ExtHdrDestOpt(nh=132)/UDP(sport=22, dport=23, chksum=0x1)/("X"*48)
 
 3. hit pattern/changed defined input set::
 
     p2 = Ether(src="52:00:00:00:00:00", dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010")/SCTP(sport=22, dport=23, chksum=0xfffffffe)/("X"*48)
-    pp2 = Ether(src="52:00:00:00:00:00", dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010")/IPv6ExtHdrDestOpt(nh=132)/UDP(sport=22, dport=23, chksum=0x2)/("X"*48)
 
 4. hit pattern/changed not defined input set::
 
     p3 = Ether(src="52:00:00:00:00:01", dst="00:11:22:33:44:53")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2021", src="ABAB:910A:2222:5498:8475:1111:3900:1011")/SCTP(sport=32, dport=33, chksum=0xffffffff)/("X"*48)
-    pp3 = Ether(src="52:00:00:00:00:01", dst="00:11:22:33:44:53")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2021", src="ABAB:910A:2222:5498:8475:1111:3900:1011")/IPv6ExtHdrDestOpt(nh=132)/UDP(sport=22, dport=23, chksum=0x1)/("X"*48)
 
 5. not hit pattern::
 
     p4 = Ether(src="52:00:00:00:00:00", dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010")/UDP(sport=22, dport=23, chksum=0x1)/("X"*49)
 
+Test case: MAC_IPV6_NEXT_PROTO_SCTP_L4_CHKSUM
+=============================================
+1. create rss rule::
+
+    flow create 0 ingress pattern eth / ipv6 / sctp / end actions rss types l4-chksum  end queues end / end
+
+2. basic hit pattern packet::
+
+    p1 = Ether(src="52:00:00:00:00:00", dst="00:11:22:33:44:55")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=132)/SCTP(sport=22, dport=23, chksum=0x1)/("X"*48)
+
+3. hit pattern/changed defined input set::
+
+    p2 = Ether(src="52:00:00:00:00:00", dst="00:11:22:33:44:55")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:2929",dst="CDCD:910A:2222:5498:8475:1111:3900:2020")/IPv6ExtHdrDestOpt(nh=132)/SCTP(sport=22, dport=23, chksum=0x2)/("X"*48)
+
+4. hit pattern/changed not defined input set::
+
+    p3 = Ether(src="52:00:00:00:00:01", dst="00:11:22:33:44:53")/IPv6(src="ABAB:910B:6666:3457:8295:3333:1800:3939",dst="CDCD:910A:2222:5498:8475:1111:3900:3030")/IPv6ExtHdrDestOpt(nh=132)/SCTP(sport=32, dport=33, chksum=0x1)/("X"*48)
+
 Test case: Checksum for different payload length
 ================================================
 1. launch testpmd without "--disable-rss"::
@@ -2668,3 +3154,4 @@ Test case: Negative case
 
     flow create 0 ingress pattern eth / ipv6 / end actions rss types ipv6-chksum  end queues end / end
     Bad arguments
+
-- 
2.25.1


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

end of thread, other threads:[~2023-02-28  7:50 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-28 15:47 [dts] [PATCH V1 0/2] the case of splitting out ipv6_next_proto Song Jiale
2023-02-28 15:47 ` [dts] [PATCH V1 1/2] tests/ice_advanced_rss: " Song Jiale
2023-02-28 15:47 ` [dts] [PATCH V1 2/2] test_plans/ice_advanced_rss: " Song Jiale

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).