diff --git a/test_plans/ice_advanced_iavf_rss_vlan_esp_ah_l2tp_pfcp_test_plan.rst b/test_plans/ice_advanced_iavf_rss_vlan_esp_ah_l2tp_pfcp_test_plan.rst
index 2acf665f..82c88fe0 100644
--- a/test_plans/ice_advanced_iavf_rss_vlan_esp_ah_l2tp_pfcp_test_plan.rst
+++ b/test_plans/ice_advanced_iavf_rss_vlan_esp_ah_l2tp_pfcp_test_plan.rst
@@ -598,6 +598,8 @@ Test case: MAC_IPV6_AH
 
 Test case: MAC_VLAN_IPV4_PAY
 ============================
+Subcase: MAC_VLAN_IPV4_VLAN
+---------------------------
 
 1. validate a rule for RSS type of MAC_VLAN_IPV4_PAY::
 
@@ -645,8 +647,59 @@ Test case: MAC_VLAN_IPV4_PAY
    check the rule not exists.
    send the first packet in matched packets, check the hash value of this packet is different with before.
 
+Subcase: MAC_VLAN_IPV4_L3DST
+--------------------------------
+
+1. validate a rule for RSS type of MAC_VLAN_IPV4_PAY::
+
+     testpmd> flow validate 0 ingress pattern eth / vlan / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end
+
+   get the message::
+
+     Flow rule validated
+
+   check the flow list::
+
+     testpmd> flow list 0
+
+   check the rule not exists in the list.
+
+2. create a rule for RSS type of MAC_VLAN_IPV4_PAY::
+
+     testpmd> flow create 0 ingress pattern eth / vlan / ipv4 / end actions rss types ipv4 l3-dst-only end key_len 0 queues end / end
+     testpmd> flow list 0
+
+   check the rule exists in the list.
+
+3. send matched packets
+
+   * MAC_VLAN_IPV4_PAY packet::
+
+       sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     change the field [l3 dst address], send packets::
+
+       sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.3")/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     check the hash value is different from the first packet.
+     change other fields, send packets::
+
+       sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.2")/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     check the hash values are the same as the first packet.
+
+4. destroy the rule::
+
+     testpmd> flow destroy 0 rule 0
+     testpmd> flow list 0
+
+   check the rule not exists.
+   send the matched packets, check the hash values of the packets are not exist.
+
 Test case: MAC_VLAN_IPV4_UDP_PAY
 ================================
+Subcase: MAC_VLAN_IPV4_UDP_VLAN
+-------------------------------
 
 1. validate a rule for RSS type of MAC_VLAN_IPV4_UDP_PAY::
 
@@ -694,8 +747,108 @@ Test case: MAC_VLAN_IPV4_UDP_PAY
    check the rule not exists.
    send the first packet in matched packets, check the hash value of this packet is different with before.
 
+Subcase: MAC_VLAN_IPV4_UDP_L3SRC
+--------------------------------
+
+1. validate a rule for RSS type of MAC_VLAN_IPV4_UDP_PAY::
+
+     testpmd> flow validate 0 ingress pattern eth / vlan / ipv4 / udp / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end
+
+   get the message::
+
+     Flow rule validated
+
+   check the flow list::
+
+     testpmd> flow list 0
+
+   check the rule not exists in the list.
+
+2. create a rule for RSS type of MAC_VLAN_IPV4_UDP_PAY::
+
+     testpmd> flow create 0 ingress pattern eth / vlan / ipv4 / udp / end actions rss types ipv4 l3-src-only end key_len 0 queues end / end
+     testpmd> flow list 0
+
+   check the rule exists in the list.
+
+3. send matched packets
+
+   * MAC_VLAN_IPV4_UDP_PAY packet::
+
+       sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     change the field [l3 src address], send packets::
+
+       sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     check the hash values are different from the first packet.
+     change other fields, send packets::
+
+       sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.4")/UDP(sport=19,dport=99)/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     check the hash values are the same as as the first packet.
+
+4. destroy the rule::
+
+     testpmd> flow destroy 0 rule 0
+     testpmd> flow list 0
+
+   check the rule not exists.
+   send the matched packets, check the hash values of the packets are not exist.
+
+Subcase: MAC_VLAN_IPV4_UDP_L4DST
+--------------------------------
+
+1. validate a rule for RSS type of MAC_VLAN_IPV4_UDP_PAY::
+
+     testpmd> flow validate 0 ingress pattern eth / vlan / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end
+
+   get the message::
+
+     Flow rule validated
+
+   check the flow list::
+
+     testpmd> flow list 0
+
+   check the rule not exists in the list.
+
+2. create a rule for RSS type of MAC_VLAN_IPV4_UDP_PAY::
+
+     testpmd> flow create 0 ingress pattern eth / vlan / ipv4 / udp / end actions rss types ipv4-udp l4-dst-only end key_len 0 queues end / end
+     testpmd> flow list 0
+
+   check the rule exists in the list.
+
+3. send matched packets
+
+   * MAC_VLAN_IPV4_UDP_PAY packet::
+
+       sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     change the field [l4 dst address], send packets::
+
+       sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/UDP(sport=25,dport=24)/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     check the hash values are different from the first packet.
+     change other fields, send packets::
+
+       sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.4")/UDP(sport=19,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     check the hash values are the same as as the first packet.
+
+4. destroy the rule::
+
+     testpmd> flow destroy 0 rule 0
+     testpmd> flow list 0
+
+   check the rule not exists.
+   send the matched packets, check the hash values of the packets are not exist.
+
 Test case: MAC_VLAN_IPV4_TCP_PAY
 ================================
+Subcase: MAC_VLAN_IPV4_TCP_VLAN
+-------------------------------
 
 1. validate a rule for RSS type of MAC_VLAN_IPV4_TCP_PAY::
 
@@ -743,8 +896,60 @@ Test case: MAC_VLAN_IPV4_TCP_PAY
    check the rule not exists.
    send the first packet in matched packets, check the hash value of this packet is different with before.
 
+Subcase: MAC_VLAN_IPV4_TCP_l3SRC_L4SRC
+--------------------------------------
+
+1. validate a rule for RSS type of MAC_VLAN_IPV4_TCP_PAY::
+
+     testpmd> flow validate 0 ingress pattern eth / vlan / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-src-only end key_len 0 queues end / end
+
+   get the message::
+
+     Flow rule validated
+
+   check the flow list::
+
+     testpmd> flow list 0
+
+   check the rule not exists in the list.
+
+2. create a rule for RSS type of MAC_VLAN_IPV4_TCP_PAY::
+
+     testpmd> flow create 0 ingress pattern eth / vlan / ipv4 / tcp / end actions rss types ipv4-tcp l3-src-only l4-src-only end key_len 0 queues end / end
+     testpmd> flow list 0
+
+   check the rule exists in the list.
+
+3. send matched packets
+
+   * MAC_VLAN_IPV4_TCP_PAY packet::
+
+       sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     change the field [l3 src address and l4 sport], send packets::
+
+       sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.2")/TCP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
+       sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/TCP(sport=22,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     check the hash values are different from the first packet.
+     change other fields, send packets::
+
+       sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.4")/TCP(sport=25,dport=99)/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     check the hash values are the same as as the first packet.
+
+4. destroy the rule::
+
+     testpmd> flow destroy 0 rule 0
+     testpmd> flow list 0
+
+   check the rule not exists.
+   send the matched packets, check the hash values of the packets are not exist.
+
 Test case: MAC_VLAN_IPV4_SCTP_PAY
 =================================
+Subcase: MAC_VLAN_IPV4_SCTP_VLAN
+--------------------------------
 
 1. validate a rule for RSS type of MAC_VLAN_IPV4_SCTP_PAY::
 
@@ -792,8 +997,62 @@ Test case: MAC_VLAN_IPV4_SCTP_PAY
    check the rule not exists.
    send the first packet in matched packets, check the hash value of this packet is different with before.
 
+Subcase: MAC_VLAN_IPV4_SCTP_ALL
+-------------------------------
+
+1. validate a rule for RSS type of MAC_VLAN_IPV4_SCTP_PAY::
+
+     testpmd> flow validate 0 ingress pattern eth / vlan / ipv4 / sctp / end actions rss types ipv4-sctp end key_len 0 queues end / end
+
+   get the message::
+
+     Flow rule validated
+
+   check the flow list::
+
+     testpmd> flow list 0
+
+   check the rule not exists in the list.
+
+2. create a rule for RSS type of MAC_VLAN_IPV4_SCTP_PAY::
+
+     testpmd> flow create 0 ingress pattern eth / vlan / ipv4 / sctp / end actions rss types ipv4-sctp end key_len 0 queues end / end
+     testpmd> flow list 0
+
+   check the rule exists in the list.
+
+3. send matched packets
+
+   * MAC_VLAN_IPV4_SCTP_PAY packet::
+
+       sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     change the field [ipv4-sctp], send packets::
+
+       sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.3", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
+       sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.4")/SCTP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
+       sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=19,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
+       sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=99)/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     check the hash values are different from the first packet.
+     change other fields, send packets::
+
+       sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=2,type=0x0800)/IP(src="192.168.1.1", dst="192.168.1.2")/SCTP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     check the hash values are the same as as the first packet.
+
+4. destroy the rule::
+
+     testpmd> flow destroy 0 rule 0
+     testpmd> flow list 0
+
+   check the rule not exists.
+   send the matched packets, check the hash values of the packets are not exist.
+
 Test case: MAC_VLAN_IPV6_PAY
 ============================
+Subcase: MAC_VLAN_IPV6_VLAN
+-------------------------------
 
 1. validate a rule for RSS type of MAC_VLAN_IPV6_PAY::
 
@@ -841,8 +1100,59 @@ Test case: MAC_VLAN_IPV6_PAY
    check the rule not exists.
    send the first packet in matched packets, check the hash value of this packet is different with before.
 
+Subcase: MAC_VLAN_IPV6_L3SRC
+--------------------------------
+
+1. validate a rule for RSS type of MAC_VLAN_IPV6_PAY::
+
+     testpmd> flow validate 0 ingress pattern eth / vlan / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end
+
+   get the message::
+
+     Flow rule validated
+
+   check the flow list::
+
+     testpmd> flow list 0
+
+   check the rule not exists in the list.
+
+2. create a rule for RSS type of MAC_VLAN_IPV6_PAY::
+
+     testpmd> flow create 0 ingress pattern eth / vlan / ipv6 / end actions rss types ipv6 l3-src-only end key_len 0 queues end / end
+     testpmd> flow list 0
+
+   check the rule exists in the list.
+
+3. send matched packets
+
+   * MAC_VLAN_IPV6_PAY packet::
+
+       sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     change the field [l3 src address], send packets::
+
+       sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     check the hash values are different from the first packet.
+     change other fields, send packets::
+
+       sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/Raw("y" * 80)],iface="ens786f0",count=1)
+
+   check the hash values are the same as the first packet.
+
+4. destroy the rule::
+
+     testpmd> flow destroy 0 rule 0
+     testpmd> flow list 0
+
+   check the rule not exists.
+   send the matched packets, check the hash values of the packets are not exist.
+
 Test case: MAC_VLAN_IPV6_UDP_PAY
 ================================
+Subcase: MAC_VLAN_IPV6_UDP_VLAN
+-------------------------------
 
 1. validate a rule for RSS type of MAC_VLAN_IPV6_UDP_PAY::
 
@@ -890,8 +1200,59 @@ Test case: MAC_VLAN_IPV6_UDP_PAY
    check the rule not exists.
    send the first packet in matched packets, check the hash value of this packet is different with before.
 
+Subcase: MAC_VLAN_IPV6_UDP_L4SRC
+--------------------------------
+
+1. validate a rule for RSS type of MAC_VLAN_IPV6_UDP_PAY::
+
+     testpmd> flow validate 0 ingress pattern eth / vlan / ipv6 / udp / end actions rss types ipv6-udp l4-src-only end key_len 0 queues end / end
+
+   get the message::
+
+     Flow rule validated
+
+   check the flow list::
+
+     testpmd> flow list 0
+
+   check the rule not exists in the list.
+
+2. create a rule for RSS type of MAC_VLAN_IPV6_UDP_PAY::
+
+     testpmd> flow create 0 ingress pattern eth / vlan / ipv6 / udp / end actions rss types ipv6-udp l4-src-only end key_len 0 queues end / end
+     testpmd> flow list 0
+
+   check the rule exists in the list.
+
+3. send matched packets
+
+   * MAC_VLAN_IPV6_UDP_PAY packet::
+
+       sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     change the field [l4 src address], send packets::
+
+       sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/UDP(sport=19,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     check the hash values are different from the first packet.
+     change other fields, send packets::
+
+       sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/UDP(sport=25,dport=99)/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     check the hash values are the same as the first packet.
+
+4. destroy the rule::
+
+     testpmd> flow destroy 0 rule 0
+     testpmd> flow list 0
+
+   check the rule not exists.
+   send the matched packets, check the hash values of the packets are not exist.
+
 Test case: MAC_VLAN_IPV6_TCP_PAY
 ================================
+Subcase: MAC_VLAN_IPV6_TCP_VLAN
+-------------------------------
 
 1. validate a rule for RSS type of MAC_VLAN_IPV6_TCP_PAY::
 
@@ -939,8 +1300,59 @@ Test case: MAC_VLAN_IPV6_TCP_PAY
    check the rule not exists.
    send the first packet in matched packets, check the hash value of this packet is different with before.
 
+Subcase: MAC_VLAN_IPV6_TCP_L3DST
+--------------------------------
+
+1. validate a rule for RSS type of MAC_VLAN_IPV6_TCP_PAY::
+
+     testpmd> flow validate 0 ingress pattern eth / vlan / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only end key_len 0 queues end / end
+
+   get the message::
+
+     Flow rule validated
+
+   check the flow list::
+
+     testpmd> flow list 0
+
+   check the rule not exists in the list.
+
+2. create a rule for RSS type of MAC_VLAN_IPV6_TCP_PAY::
+
+     testpmd> flow create 0 ingress pattern eth / vlan / ipv6 / tcp / end actions rss types ipv6-tcp l3-dst-only end key_len 0 queues end / end
+     testpmd> flow list 0
+
+   check the rule exists in the list.
+
+3. send matched packets
+
+   * MAC_VLAN_IPV6_TCP_PAY packet::
+
+       sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     change the field [l3 dst address], send packets::
+
+       sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/TCP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     check the hash values are different from the first packet.
+     change other fields, send packets::
+
+       sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/TCP(sport=19,dport=99)/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     check the hash values are the same as the first packet.
+
+4. destroy the rule::
+
+     testpmd> flow destroy 0 rule 0
+     testpmd> flow list 0
+
+   check the rule not exists.
+   send the matched packets, check the hash values of the packets are not exist.
+
 Test case: MAC_VLAN_IPV6_SCTP_PAY
 =================================
+Subcase: MAC_VLAN_IPV6_SCTP_VLAN
+--------------------------------
 
 1. validate a rule for RSS type of MAC_VLAN_IPV6_SCTP_PAY::
 
@@ -988,6 +1400,55 @@ Test case: MAC_VLAN_IPV6_SCTP_PAY
    check the rule not exists.
    send the first packet in matched packets, check the hash value of this packet is different with before.
 
+Subcase: MAC_VLAN_IPV6_SCTP_L3DST_L4DST
+---------------------------------------
+
+1. validate a rule for RSS type of MAC_VLAN_IPV6_SCTP_PAY::
+
+     testpmd> flow validate 0 ingress pattern eth / vlan / ipv6 / sctp / end actions rss types ipv6-sctp l3-dst-only l4-dst-only end key_len 0 queues end / end
+
+   get the message::
+
+     Flow rule validated
+
+   check the flow list::
+
+     testpmd> flow list 0
+
+   check the rule not exists in the list.
+
+2. create a rule for RSS type of MAC_VLAN_IPV6_SCTP_PAY::
+
+     testpmd> flow create 0 ingress pattern eth / vlan / ipv6 / sctp / end actions rss types ipv6-sctp l3-dst-only l4-dst-only end key_len 0 queues end / end
+     testpmd> flow list 0
+
+   check the rule exists in the list.
+
+3. send matched packets
+
+   * MAC_VLAN_IPV6_SCTP_PAY packet::
+
+       sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     change the field [l3 dst address and l4 dport], send packets::
+
+       sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2023")/SCTP(sport=25,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
+       sendp([Ether(src="10:22:33:44:55:66", dst="00:11:22:33:44:55",type=0x8100)/Dot1Q(vlan=1,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1536", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=25,dport=99)/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     check the hash values are different from the first packet.
+     change other fields, send packets::
+
+       sendp([Ether(src="10:22:33:44:55:99", dst="00:11:22:33:44:53",type=0x8100)/Dot1Q(vlan=2,type=0x86dd)/IPv6(src="CDCD:910A:2222:5498:8475:1111:3900:1537", dst="CDCD:910A:2222:5498:8475:1111:3900:2022")/SCTP(sport=19,dport=23)/Raw("x" * 80)],iface="ens786f0",count=1)
+
+     check the hash values are the same as the first packet.
+
+4. destroy the rule::
+
+     testpmd> flow destroy 0 rule 0
+     testpmd> flow list 0
+
+   check the rule not exists.
+   send the matched packets, check the hash values the packets are not exist.
 
 Test case: negative cases
 =========================
