test suite reviews and discussions
 help / color / mirror / Atom feed
From: "Tu, Lijuan" <lijuan.tu@intel.com>
To: "Peng, Yuan" <yuan.peng@intel.com>, "dts@dpdk.org" <dts@dpdk.org>
Cc: "Peng, Yuan" <yuan.peng@intel.com>
Subject: Re: [dts] [PATCH v2]test_plans: rework case struction
Date: Wed, 1 Apr 2020 05:54:53 +0000	[thread overview]
Message-ID: <8CE3E05A3F976642AAB0F4675D0AD20E0BC04E3F@SHSMSX101.ccr.corp.intel.com> (raw)
In-Reply-To: <1585727515-149718-1-git-send-email-yuan.peng@intel.com>

Applied, thanks

> -----Original Message-----
> From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of Peng Yuan
> Sent: Wednesday, April 1, 2020 3:52 PM
> To: dts@dpdk.org
> Cc: Peng, Yuan <yuan.peng@intel.com>
> Subject: [dts] [PATCH v2]test_plans: rework case struction
> 
> 1/ rework the case stucture.
> 2/ add stress cases.
> 3/ add validate cases.
> 
> Signed-off-by: Peng Yuan <yuan.peng@intel.com>
> ---
>  test_plans/cvl_fdir_test_plan.rst | 3425 +++++++++++++------------------------
>  1 file changed, 1194 insertions(+), 2231 deletions(-)
> 
> diff --git a/test_plans/cvl_fdir_test_plan.rst
> b/test_plans/cvl_fdir_test_plan.rst
> index fe8cac5..08e8f21 100644
> --- a/test_plans/cvl_fdir_test_plan.rst
> +++ b/test_plans/cvl_fdir_test_plan.rst
> @@ -83,13 +83,14 @@ Pattern and input set
>      +------------------------------+----------------------------+----------------------------------
> ---------------------------------------------+
> 
>  Notes: 1. Enable fdir filter for UDP tunnel: Vxlan / NVGRE (OS default
> package) , share code not
> -      support outer header as inputset, so Out Dest IP and VNI/GRE_KEY may
> not able to be implemented.
> +          support outer header as inputset, so Out Dest IP and VNI/GRE_KEY
> may not able to be implemented.
>         2. For VXLAN case MAC_IPV4_TUN_*** means
> MAC_IPV4_UDP_VXLAN_***
>         3. For Dest MAC, there is package /sharecode limitation on multicast dst
> mac support for FDIR
> 
>  Function type
>  -------------
> 
> +    validate
>      create
>      list
>      destroy
> @@ -113,6 +114,7 @@ Prerequisites
> 
>  1. Hardware:
>     columbiaville_25g/columbiaville_100g
> +   design the cases with 2 ports card.
> 
>  2. Software:
>     DPDK: http://dpdk.org/git/dpdk
> @@ -127,7 +129,7 @@ Prerequisites
> 
>  5. Launch the app ``testpmd`` with the following arguments::
> 
> -    ./testpmd -c 0xff -n 6 -w 86:00.0 -- -i --portmask=0xff --rxq=64 --txq=64 --
> port-topology=loop
> +    ./testpmd -c 0xff -n 6 -w 86:00.0,,flow-mark-support=1 -- -i --
> portmask=0xff --rxq=64 --txq=64 --port-topology=loop
>      testpmd> set fwd rxonly
>      testpmd> set verbose 1
> 
> @@ -138,11 +140,7 @@ Prerequisites
> 
>     Notes: if need two ports environment, launch ``testpmd`` with the
> following arguments::
> 
> -    ./testpmd -c 0xff -n 6 -w 86:00.0 -w 86:00.1 -- -i --portmask=0xff --rxq=64 -
> -txq=64 --port-topology=loop
> -
> -   If create rules with mark actions, please add the following parameters in
> testpmd command line::
> -
> -    -w 86:00.0,flow-mark-support=1 -w 86:00.1,flow-mark-support=1
> +    ./testpmd -c 0xff -n 6 -w 86:00.0,flow-mark-support=1 -w 86:00.1,flow-
> mark-support=1 -- -i --portmask=0xff --rxq=64 --txq=64 --port-topology=loop
> 
> 
>  Default parameters
> @@ -397,669 +395,694 @@ Send packets
> 
>     matched packets::
> 
> -    p_gtpu1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IP()/Raw('x'*20)
> -    p_gtpu2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IP(frag=1)/Raw('x'*20)
> -    p_gtpu3 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IP()/UDP()/Raw('x'*20)
> -    p_gtpu4 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP( dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IP()/TCP(sport=22, dport=23)/Raw('x'*20)
> -    p_gtpu5 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IP()/ICMP()/Raw('x'*20)
> -    p_gtpu6 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IPv6()/Raw('x'*20)
> -    p_gtpu7 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IPv6()/IPv6ExtHdrFragment(1000)/Raw('x'*20)
> -    p_gtpu8 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IPv6()/UDP()/Raw('x'*20)
> -    p_gtpu9 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP( dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IPv6()/TCP(sport=22, dport=23)/Raw('x'*20)
> -    p_gtpu10 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IPv6()/ICMP()/Raw('x'*20)
> +    p_gtpu1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IP()/Raw('x'*20)
> +    p_gtpu2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IP(frag=1)/Raw('x'*20)
> +    p_gtpu3 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IP()/UDP()/Raw('x'*20)
> +    p_gtpu4 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP( dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IP()/TCP(sport=22, dport=23)/Raw('x'*20)
> +    p_gtpu5 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IP()/ICMP()/Raw('x'*20)
> +    p_gtpu6 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IPv6()/Raw('x'*20)
> +    p_gtpu7 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IPv6()/IPv6ExtHdrFragment(1000)/Raw('x'*20)
> +    p_gtpu8 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IPv6()/UDP()/Raw('x'*20)
> +    p_gtpu9 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP( dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IPv6()/TCP(sport=22, dport=23)/Raw('x'*20)
> +    p_gtpu10 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IPv6()/ICMP()/Raw('x'*20)
> 
>     mismatched packets::
> 
> -    p_gtpu11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IP()/SCTP()/Raw('x'*20)
> -    p_gtpu12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IPv6()/SCTP()/Raw('x'*20)
> -    p_gtpu13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x1234567)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IP()/Raw('x'*20)
> -    p_gtpu14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x35)/IP()/Raw('x'*20)
> -    p_gtpu15 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IP()/Raw('x'*20)
> -    p_gtpu16 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/Raw('x'*20)
> +    p_gtpu11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IP()/SCTP()/Raw('x'*20)
> +    p_gtpu12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IPv6()/SCTP()/Raw('x'*20)
> +    p_gtpu13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x1234567)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IP()/Raw('x'*20)
> +    p_gtpu14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x35)/IP()/Raw('x'*20)
> +    p_gtpu15 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IP()/Raw('x'*20)
> +    p_gtpu16 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/Raw('x'*20)
> 
>  * MAC_IPV4_GTPU
> 
>     matched packets::
> 
> -    p_gtpu1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IP()/Raw('x'*20)
> -    p_gtpu2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IP(frag=1)/Raw('x'*20)
> -    p_gtpu3 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IP()/UDP()/Raw('x'*20)
> -    p_gtpu4 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP( dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IP()/TCP(sport=22, dport=23)/Raw('x'*20)
> -    p_gtpu5 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IP()/ICMP()/Raw('x'*20)
> -    p_gtpu6 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IPv6()/Raw('x'*20)
> -    p_gtpu7 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IPv6()/IPv6ExtHdrFragment(1000)/Raw('x'*20)
> -    p_gtpu8 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IPv6()/UDP()/Raw('x'*20)
> -    p_gtpu9 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP( dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IPv6()/TCP(sport=22, dport=23)/Raw('x'*20)
> -    p_gtpu10 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IPv6()/ICMP()/Raw('x'*20)
> -    p_gtpu11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x35)/IP()/Raw('x'*20)
> +    p_gtpu1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IP()/Raw('x'*20)
> +    p_gtpu2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IP(frag=1)/Raw('x'*20)
> +    p_gtpu3 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IP()/UDP()/Raw('x'*20)
> +    p_gtpu4 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP( dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IP()/TCP(sport=22, dport=23)/Raw('x'*20)
> +    p_gtpu5 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IP()/ICMP()/Raw('x'*20)
> +    p_gtpu6 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IPv6()/Raw('x'*20)
> +    p_gtpu7 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IPv6()/IPv6ExtHdrFragment(1000)/Raw('x'*20)
> +    p_gtpu8 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IPv6()/UDP()/Raw('x'*20)
> +    p_gtpu9 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP( dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IPv6()/TCP(sport=22, dport=23)/Raw('x'*20)
> +    p_gtpu10 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IPv6()/ICMP()/Raw('x'*20)
> +    p_gtpu11 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x35)/IP()/Raw('x'*20)
> 
>     mismatched packets::
> 
> -    p_gtpu12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/Raw('x'*20)
> -    p_gtpu13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IP()/SCTP()/Raw('x'*20)
> -    p_gtpu14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IPv6()/SCTP()/Raw('x'*20)
> -    p_gtpu15 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x1234567)/IP()/Raw('x'*20)
> -
> -Test case: MAC_IPV4_PAY queue index
> -===================================
> +    p_gtpu12 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/Raw('x'*20)
> +    p_gtpu13 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IP()/SCTP()/Raw('x'*20)
> +    p_gtpu14 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IPv6()/SCTP()/Raw('x'*20)
> +    p_gtpu15 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x1234567)/IP()/Raw('x'*20)
> 
> -1. create filter rules::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions
> queue index 1 / end
> +Test case: flow validation
> +==========================
> 
> -2. send matched packets, check the packets are distributed to queue 1.
> -   send mismatched packets, check the packets are not distributed to queue
> 1.
> +1. validate MAC_IPV4_PAY with queue index action::
> 
> -3. verify rules can be listed and destroyed::
> +    flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is
> 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / end
> 
> -    testpmd> flow list 0
> +   get the message::
> 
> -   check the existing rule.
> -   destroy the rule::
> +    Flow rule validated
> 
> -    testpmd> flow destroy 0 rule 0
> +2. repeat step 1 with all patterns in pattern and input set table,
> +   get the same result.
> 
> -   verify matched packets are not distributed to queue 1.
> -   check there is no rule listed.
> +3. repeat step 1-2 with action rss queues/drop/passthru/mark/mark+rss,
> +   get the same result.
> 
> -Test case: MAC_IPV4_PAY selected inputset queue index
> -=====================================================
> +4. validate combined use of actions::
> 
> -1. create filter rules::
> +    flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is
> 192.168.0.21 / end actions queue index 1 / mark / count / end
> +    flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is
> 192.168.0.21 / end actions rss queues 0 1 end / mark id 1 / count identifier
> 0x1234 shared on / end
> +    flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is
> 192.168.0.21 / end actions passthru / mark id 2 / count identifier 0x34 shared
> off / end
> +    flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is
> 192.168.0.21 / end actions mark id 3 / rss / count shared on / end
> +    flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is
> 192.168.0.21 / end actions drop / count shared off / end
> 
> -    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 proto is 1 / end
> actions queue index 1 / end
> -    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 proto is 17 /
> end actions queue index 2 / end
> +   get the message::
> 
> -2. send matched packets::
> +    Flow rule validated
> 
> -    pkt1 =
> Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21",
> proto=1) / Raw('x' * 80)
> -    pkt2 =
> Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21",
> frag=1, proto=1) / Raw('x' * 80)
> -    pkt3 =
> Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21",
> ttl=2, tos=4) /UDP(sport=22,dport=23)/Raw('x' * 80)
> -    pkt4 =
> Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21",
> frag=1, ttl=2, tos=4) /UDP(sport=22,dport=23)/Raw('x' * 80)
> -    pkt5 =
> Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21",
> proto=17, ttl=2, tos=4)/Raw('x' * 80)
> -    pkt6 =
> Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21",
> frag=1, proto=17, ttl=2, tos=4)/Raw('x' * 80)
> +5. check the flow list::
> 
> -   check the pkt1 and pkt2 are redirected to queue 1.
> -   check the pkt3-pkt6 are redirected to queue 2
> -   send mismatched packets::
> +    testpmd> flow list 0
> 
> -    pkt7 =
> Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.22",
> proto=1) / Raw('x' * 80)
> -    pkt8 =
> Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21",
> proto=6) / Raw('x' * 80)
> -    pkt9 =
> Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/T
> CP(sport=22,dport=23)/ Raw('x' * 80)
> -    pkt10 =
> Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21",
> frag=1)/TCP(sport=22,dport=23)/ Raw('x' * 80)
> +   there is no rule listed.
> 
> -   check the packets are not distributed to queue 1 or queue 2.
> +Test case: negative validation
> +==============================
> 
> -3. verify rules can be listed and destroyed::
> +1. only count action::
> 
> -    testpmd> flow list 0
> +    flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is
> 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions count / end
> 
> -   check the existing rule.
> -   destroy the rule::
> +   get the error message::
> 
> -    testpmd> flow flush 0
> +    Invalid input action: Invalid argument
> 
> -   verify matched packets are not distributed to expected queue.
> -   check there is no rule listed.
> +2. void action::
> 
> -Test case: MAC_IPV4_UDP queue index
> -===================================
> +    flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is
> 192.168.0.21 proto is 255 ttl is 2 tos is 4 / and actions end
> 
> -1. create filter rules::
> +   get the message::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end
> actions queue index 1 / end
> +    Invalid argument
> 
> -2. send matched packets, check the packets is distributed to queue 1.
> -   send mismatched packets, check the packets are not distributed to queue
> 1.
> +3. conflict action::
> 
> -3. verify rules can be listed and destroyed::
> +    flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is
> 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss queues 2 3 end / rss
> / end
> 
> -    testpmd> flow list 0
> +   get the message::
> 
> -   check the existing rule.
> -   destroy the rule::
> +    Unsupported action combination: Invalid argument
> 
> -    testpmd> flow destroy 0 rule 0
> +4. invalid mark id::
> 
> -   verify matched packet is not distributed to queue 1.
> -   check there is no rule listed.
> +    flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is
> 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions passthru / mark id
> 4294967296 / end
> 
> -Test case: MAC_IPV4_TCP queue index
> -===================================
> +   get the message::
> 
> -1. create filter rules::
> +    Bad arguments
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / tcp src is 22 dst is 23 / end
> actions queue index 63 / end
> +5. invalid input set::
> 
> -2. send matched packets, check the packets is distributed to queue 63.
> -   send mismatched packets, check the packets are not distributed to queue
> 63.
> +    flow validate 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is
> 192.168.0.21 proto is 255 ttl is 2 tc is 4 / end actions queue index 1 / end
> 
> -3. verify rules can be listed and destroyed::
> +   get the message::
> 
> -    testpmd> flow list 0
> +    Bad arguments
> 
> -   check the existing rule.
> -   destroy the rule::
> +6. invalid queue index::
> 
> -    testpmd> flow destroy 0 rule 0
> +    flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions
> queue index 64 / end
> 
> -   verify matched packet is not distributed to queue 63.
> -   check there is no rule listed.
> +   get the message::
> 
> -Test case: MAC_IPV4_SCTP queue index
> -====================================
> +    Invalid input action: Invalid argument
> 
> -1. create filter rules::
> +7. invalid rss queues parameter
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / sctp src is 22 dst is 23 tag is 1
> / end actions queue index 2 / end
> +   Invalid number of queues::
> 
> -2. send matched packets, check the packets is distributed to queue 2.
> -   send mismatched packets, check the packets are not distributed to queue
> 2.
> +    flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss
> queues 1 2 3 end / end
> +    flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss
> queues 0 end / end
> +    flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss
> queues end / end
> 
> -3. verify rules can be listed and destroyed::
> +   get the message::
> 
> -    testpmd> flow list 0
> +    Invalid input action: Invalid argument
> 
> -   check the existing rule.
> -   destroy the rule::
> +   Discontinuous queues::
> 
> -    testpmd> flow destroy 0 rule 0
> +    flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss
> queues 1 2 3 5 end / end
> 
> -   verify matched packet is not distributed to queue 2.
> -   check there is no rule listed
> +   get the message::
> 
> -Test case: MAC_IPV6_PAY queue index
> -===================================
> +    Discontinuous queue region: Invalid argument
> 
> -1. create filter rules::
> +   invalid rss queues index::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 0 hop is 2
> tc is 1 / end actions queue index 1 / end
> +    flow validate 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss
> queues 63 64 end / end
> 
> -2. send matched packets, check the packets is distributed to queue 1.
> -   send mismatched packets, check the packets are not distributed to queue
> 1.
> +   get the message::
> 
> -3. verify rules can be listed and destroyed::
> +    Invalid queue region indexes.: Invalid argument
> 
> -    testpmd> flow list 0
> +8. Invalid value of input set::
> 
> -   check the existing rule.
> -   destroy the rule::
> +    flow validate 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x100 / end actions queue index 1 / end
> +    flow validate 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x100000000
> / gtp_psc qfi is 0x5 / end actions queue index 2 / end
> +    flow validate 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x100000000
> / end actions queue index 1 / end
> 
> -    testpmd> flow destroy 0 rule 0
> +   get the message::
> 
> -   verify matched packet is not distributed to queue 1.
> -   check there is no rule listed.
> +    Bad arguments
> 
> -Test case: MAC_IPV6_PAY selected inputset queue index
> -=====================================================
> +9. unsupported pattern,validate GTPU rule with OS default package::
> 
> -1. create filter rules::
> +    flow validate 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x34 / end actions drop / end
> 
> -    flow create 0 ingress pattern eth / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 44 / end actions queue
> index 1 / end
> -    flow create 0 ingress pattern eth / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 6 / end actions queue
> index 2 / end
> +   get the message::
> 
> -2. send matched packets::
> +    Bad arguments
> 
> -    pkt1 =
> Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3
> 900:2020", src="2001::2", nh=44, tc=1, hlim=2)/("X"*480)
> -    pkt2 =
> Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3
> 900:2020")/IPv6ExtHdrFragment(1000)/("X"*480)
> -    pkt3 =
> Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3
> 900:2020", nh=44)/TCP(sport=22,dport=23)/("X"*480)
> -    pkt4 =
> Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3
> 900:2020")/IPv6ExtHdrFragment(1000)/TCP(sport=22,dport=23)/("X"*480)
> -    pkt5 =
> Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3
> 900:2020", nh=6)/("X"*480)
> -    pkt6 =
> Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3
> 900:2020")/TCP(sport=22,dport=23)/("X"*480)
> +10. invalid port::
> 
> -   check pkt1-pkt4 are redirected to queue 1.
> -   check pkt5 and pkt6 are redirected to queue 2.
> -   send mismatched packets::
> +    flow validate 2 ingress pattern eth / ipv4 src is 192.168.0.20 dst is
> 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / end
> 
> -    pkt7 =
> Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3
> 900:2021", nh=44)/("X"*480)
> -    pkt8 =
> Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3
> 900:2020")/UDP(sport=22,dport=23)/("X"*480)
> -    pkt9 =
> Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3
> 900:2020", nh=17)/("X"*480)
> +   get the message::
> 
> -   check the packets are not distributed to queue 1 or queue 2.
> +    No such device: No such device
> 
> -3. verify rules can be listed and destroyed::
> +11. check the flow list::
> 
>      testpmd> flow list 0
> 
> -   check the existing rule.
> -   destroy the rule::
> +   there is no rule listed.
> 
> -    testpmd> flow destroy 0 rule 0
> 
> -   verify matched packet are not distributed to expected queue.
> -   check there is no rule listed.
> +Test case: MAC_IPV4_PAY pattern
> +===============================
> 
> -Test case: MAC_IPV6_UDP queue index
> -===================================
> +Subcase 1: MAC_IPV4_PAY queue index
> +-----------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 /
> udp src is 22 dst is 23 / end actions queue index 1 / end
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions
> queue index 1 / end
> 
> -2. send matched packets, check the packets is distributed to queue 1.
> -   send mismatched packets, check the packets are not distributed to queue
> 1.
> +2. send matched packets, check the packets are distributed to queue 1
> without FDIR matched ID.
> +   send mismatched packets, check the packets are not distributed to queue
> 1 without FDIR matched ID.
> 
>  3. verify rules can be listed and destroyed::
> 
>      testpmd> flow list 0
> 
> -   check the existing rule.
> +   check the rule listed.
>     destroy the rule::
> 
>      testpmd> flow destroy 0 rule 0
> 
> -   verify matched packet is not distributed to queue 1.
> +4. verify matched packets are not distributed to queue 1 without FDIR
> matched ID.
>     check there is no rule listed.
> 
> -Test case: MAC_IPV6_TCP queue index
> -===================================
> +Subcase 2: MAC_IPV4_PAY rss queues
> +----------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp
> src is 22 dst is 23 / end actions queue index 1 / end
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss
> queues 2 3 end / end
> 
> -2. send matched packets, check the packets is distributed to queue 1.
> -   send mismatched packets, check the packets are not distributed to queue
> 1.
> +2. send matched packets, check the packets are distributed to queue 2 or 3
> without without FDIR matched ID.
> +   send mismatched packets, check the packets are not distributed to queue
> 2 or 3 without FDIR matched ID.
> 
> -3. verify rules can be listed and destroyed::
> +3. repeat step 3 of subcase 1.
> 
> -    testpmd> flow list 0
> +4. verify matched packets are not distributed to queue 2 or 3 without FDIR
> matched ID.
> +   check there is no rule listed.
> 
> -   check the existing rule.
> -   destroy the rule::
> +Subcase 3: MAC_IPV4_PAY passthru
> +--------------------------------
> 
> -    testpmd> flow destroy 0 rule 0
> +1. create filter rules::
> 
> -   verify matched packet is not distributed to queue 1.
> -   check there is no rule listed.
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions
> passthru / end
> 
> -Test case: MAC_IPV6_SCTP queue index
> -====================================
> +2. send matched packets, check the packets are distributed by RSS without
> FDIR matched ID.
> +   send mismatched packets, check the packets are distributed by RSS
> without FDIR matched ID.
> 
> -1. create filter rules::
> +3. repeat step 3 of subcase 1.
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 /
> sctp src is 22 dst is 23 / end actions queue index 1 / end
> +4. verify matched packets are distributed to the same queue without FDIR
> matched ID=0x0.
> +   check there is no rule listed.
> 
> -2. send matched packets, check the packets is distributed to queue 1.
> -   send mismatched packets, check the packets are not distributed to queue
> 1.
> +Subcase 4: MAC_IPV4_PAY drop
> +----------------------------
> 
> -3. verify rules can be listed and destroyed::
> +1. create filter rules::
> 
> -    testpmd> flow list 0
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions drop
> / end
> 
> -   check the existing rule.
> -   destroy the rule::
> +2. send matched packets, check the packets are dropped
> +   send mismatched packets, check the packets are not dropped.
> 
> -    testpmd> flow destroy 0 rule 0
> +3. repeat step 3 of subcase 1.
> 
> -   verify matched packet is not distributed to queue 1.
> +4. verify matched packets are not dropped.
>     check there is no rule listed.
> 
> -Test case: MAC_IPV4_TUN_IPV4_PAY queue index
> -============================================
> +Subcase 5: MAC_IPV4_PAY mark+rss
> +--------------------------------
> +Note: This combined action is mark with RSS which is without queues
> specified.
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / end
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions
> mark / rss / end
> 
> -2. send matched packets, check the packets are distributed to queue 1.
> -   send mismatched packets, check the packets are not distributed to queue
> 1.
> +2. send matched packets, check the packets are distributed by RSS with FDIR
> matched ID=0x0
> +   send mismatched packets, check the packets are distributed by RSS
> without FDIR matched ID.
> 
> -3. verify rules can be listed and destroyed::
> +3. repeat step 3 of subcase 1.
> 
> -    testpmd> flow list 0
> +4. verify matched packets are distributed to the same queue without FDIR
> matched ID.
> +   check there is no rule listed.
> 
> -   check the existing rule.
> -   destroy the rule::
> +Subcase 6: MAC_IPV4_PAY mark
> +----------------------------
> 
> -    testpmd> flow destroy 0 rule 0
> +1. create filter rules::
> 
> -   verify the packets hit rule are not distributed to queue 1.
> -   check there is no rule listed.
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions
> mark id 1 / end
> 
> -Test case: MAC_IPV4_TUN_IPV4_UDP queue index
> -============================================
> +2. repeat the steps of passthru with mark part in subcase 3,
> +   get the same result.
> +
> +Subcase 7: MAC_IPV4_PAY protocal
> +--------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue
> index 1 / end
> +    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 proto is 1 / end
> actions queue index 1 / mark id 1 / end
> +    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 proto is 17 /
> end actions passthru / mark id 3 / end
> 
> -2. send matched packets, check the packets are distributed to queue 1.
> -   send mismatched packets, check the packets are not distributed to queue
> 1.
> +2. send matched packets::
> 
> -3. verify rules can be listed and destroyed::
> +    pkt1 =
> Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21",
> proto=1) / Raw('x' * 80)
> +    pkt2 =
> Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21",
> frag=1, proto=1) / Raw('x' * 80)
> +    pkt3 =
> Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21",
> ttl=2, tos=4) /UDP(sport=22,dport=23)/Raw('x' * 80)
> +    pkt4 =
> Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21",
> frag=1, ttl=2, tos=4) /UDP(sport=22,dport=23)/Raw('x' * 80)
> +    pkt5 =
> Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21",
> proto=17, ttl=2, tos=4)/Raw('x' * 80)
> +    pkt6 =
> Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21",
> frag=1, proto=17, ttl=2, tos=4)/Raw('x' * 80)
> 
> -    testpmd> flow list 0
> +   check the pkt1 and pkt2 are redirected to queue 1 with FDIR matched
> ID=0x1.
> +   check the pkt3-pkt6 are distributed by RSS with FDIR matched ID=0x3.
> +   send mismatched packets::
> 
> -   check the existing rule.
> -   destroy the rule::
> +    pkt7 =
> Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.22",
> proto=1) / Raw('x' * 80)
> +    pkt8 =
> Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21",
> proto=6) / Raw('x' * 80)
> +    pkt9 =
> Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/T
> CP(sport=22,dport=23)/ Raw('x' * 80)
> +    pkt10 =
> Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21",
> frag=1)/TCP(sport=22,dport=23)/ Raw('x' * 80)
> 
> -    testpmd> flow destroy 0 rule 0
> +   check the packets received have not FDIR matched ID.
> 
> -   verify the packets hit rule are not distributed to queue 1.
> +3. repeat step 3 of subcase 1.
> +
> +4. verify matched packets have not FDIR matched ID.
>     check there is no rule listed.
> 
> -Test case: MAC_IPV4_TUN_IPV4_TCP queue index
> -============================================
> +
> +Test case: MAC_IPV4_UDP pattern
> +===============================
> +
> +Subcase 1: MAC_IPV4_UDP queue index
> +-----------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue
> index 1 / end
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end
> actions queue index 63 / mark id 0 / end
> 
> -2. send matched packets, check the packets are distributed to queue 1.
> -   send mismatched packets, check the packets are not distributed to queue
> 1.
> +2. send matched packets, check the packets is distributed to queue 63 with
> FDIR matched ID=0x0.
> +   send mismatched packets, check the packets are received without FDIR
> matched ID.
> 
>  3. verify rules can be listed and destroyed::
> 
>      testpmd> flow list 0
> 
> -   check the existing rule.
> +   check the rule listed.
>     destroy the rule::
> 
>      testpmd> flow destroy 0 rule 0
> 
> -   verify the packets hit rule are not distributed to queue 1.
> +4. verify matched packet is received without FDIR matched ID.
>     check there is no rule listed.
> 
> -Test case: MAC_IPV4_TUN_IPV4_SCTP queue index
> -=============================================
> +Subcase 2: MAC_IPV4_UDP rss queues
> +----------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions queue
> index 1 / end
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end
> actions rss queues 0 1 2 3 end / mark id 4294967294 / end
> 
> -2. send matched packets, check the packets are distributed to queue 1.
> -   send mismatched packets, check the packets are not distributed to queue
> 1.
> +2. send matched packets, check the packets is distributed to queue 0-3 with
> FDIR matched ID=0xfffffffe.
> +   send mismatched packets, check the packets are received without FDIR
> matched ID.
> 
> -3. verify rules can be listed and destroyed::
> +3. repeat step 3 of subcase 1.
> 
> -    testpmd> flow list 0
> +4. verify matched packet is not received without FDIR matched ID.
> +   check there is no rule listed.
> 
> -   check the existing rule.
> -   destroy the rule::
> +Subcase 3: MAC_IPV4_UDP passthru
> +--------------------------------
> 
> -    testpmd> flow destroy 0 rule 0
> +1. create filter rule with mark::
> +
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end
> actions passthru / mark id 1 / end
> +
> +2. send matched packets, check the packets are distributed by RSS with FDIR
> matched ID=0x1.
> +   send mismatched packets, check the packets are distributed by RSS
> without FDIR matched ID.
> 
> -   verify the packets hit rule are not distributed to queue 1.
> +3. repeat step 3 of subcase 1.
> +
> +4. verify matched packets are distributed to the same queue without FDIR
> matched ID.
>     check there is no rule listed.
> 
> -Test case: MAC_IPV4_TUN_MAC_IPV4_PAY queue index
> -================================================
> +Subcase 4: MAC_IPV4_UDP drop
> +----------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / end
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end
> actions drop / end
> 
> -2. send matched packets, check the packets are distributed to queue 1.
> -   send mismatched packets, check the packets are not distributed to queue
> 1.
> +2. send matched packet, check the packet is dropped.
> +   send mismatched packets, check the packets are not dropped.
> 
> -3. verify rules can be listed and destroyed::
> +3. repeat step 3 of subcase 1.
> 
> -    testpmd> flow list 0
> +4. verify matched packet is dropped.
> +   check there is no rule listed.
> 
> -   check the existing rule.
> -   destroy the rule::
> +Subcase 5: MAC_IPV4_UDP mark+rss
> +--------------------------------
> +Note: This combined action is mark with RSS which is without queues
> specified.
> 
> -    testpmd> flow destroy 0 rule 0
> +1. create filter rules::
> +
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end
> actions mark id 2 / rss / end
> +
> +2. send matched packets, check the packets are distributed by RSS with FDIR
> matched ID=0x2
> +   send mismatched packets, check the packets are distributed by RSS
> without FDIR matched ID.
> 
> -   verify the packets hit rule are not distributed to queue 1.
> +3. repeat step 3 of subcase 1.
> +
> +4. verify matched packets are distributed to the same queue without FDIR
> matched ID.
>     check there is no rule listed.
> 
> -Test case: MAC_IPV4_TUN_MAC_IPV4_UDP queue index
> -================================================
> +Subcase 6: MAC_IPV4_UDP mark
> +----------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue
> index 1 / end
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end
> actions mark id 1 / end
> 
> -2. send matched packets, check the packets are distributed to queue 1.
> -   send mismatched packets, check the packets are not distributed to queue
> 1.
> +2. repeat the step 2-3 of in subcase 3,
> +   get the same result.
> 
> -3. verify rules can be listed and destroyed::
> +Test case: MAC_IPV4_TCP pattern
> +===============================
> 
> -    testpmd> flow list 0
> +1. replace "udp" with "tcp" in all the subcases of MAC_IPV4_UDP pattern.
> +2. Then repeat all the steps in all the subcases of MAC_IPV4_UDP pattern.
> +3. get the same result.
> 
> -   check the existing rule.
> -   destroy the rule::
> +Test case: MAC_IPV4_SCTP pattern
> +================================
> 
> -    testpmd> flow destroy 0 rule 0
> +1. replace "udp" with "sctp" in all the subcases of MAC_IPV4_UDP pattern.
> +2. Then repeat all the steps in all the subcases of MAC_IPV4_UDP pattern.
> +3. get the same result.
> 
> -   verify the packets hit rule are not distributed to queue 1.
> -   check there is no rule listed.
> 
> -Test case: MAC_IPV4_TUN_MAC_IPV4_TCP queue index
> -================================================
> +Test case: MAC_IPV6_PAY pattern
> +===============================
> +
> +Subcase 1: MAC_IPV6_PAY queue index
> +-----------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue
> index 1 / end
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 0 hop is 2
> tc is 1 / end actions queue index 1 / mark / end
> 
> -2. send matched packets, check the packets are distributed to queue 1.
> -   send mismatched packets, check the packets are not distributed to queue
> 1.
> +2. send matched packets, check the packets is distributed to queue 1 with
> FDIR matched ID=0x0.
> +   send mismatched packets, check the packets are received without FDIR
> matched ID.
> 
>  3. verify rules can be listed and destroyed::
> 
>      testpmd> flow list 0
> 
> -   check the existing rule.
> +   check the rule listed.
>     destroy the rule::
> 
>      testpmd> flow destroy 0 rule 0
> 
> -   verify the packets hit rule are not distributed to queue 1.
> +4. verify matched packet is received without FDIR matched ID.
>     check there is no rule listed.
> 
> -Test case: MAC_IPV4_TUN_MAC_IPV4_SCTP queue index
> -=================================================
> +Subcase 2: MAC_IPV6_PAY rss queues
> +----------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions queue
> index 1 / end
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 0 hop is 2
> tc is 1 / end \
> +    actions rss queues 56 57 58 59 60 61 62 63 end / mark / end
> 
> -2. send matched packets, check the packets are distributed to queue 1.
> -   send mismatched packets, check the packets are not distributed to queue
> 1.
> +2. send matched packets, check the packets is distributed to queue 56-63
> with FDIR matched ID=0x0.
> +   send mismatched packets, check the packets are not distributed to queue
> 56-63 with FDIR matched ID=0x0.
> 
> -3. verify rules can be listed and destroyed::
> +3. repeat step 3 of subcase 1.
> 
> -    testpmd> flow list 0
> +4. verify matched packet is received without FDIR matched ID=0x0.
> +   check there is no rule listed.
> 
> -   check the existing rule.
> -   destroy the rule::
> +Subcase 3: MAC_IPV6_PAY passthru
> +--------------------------------
> 
> -    testpmd> flow destroy 0 rule 0
> +1. create filter rules::
> 
> -   verify the packets hit rule are not distributed to queue 1.
> -   check there is no rule listed.
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 0 hop is 2
> tc is 1 / end actions passthru / mark / end
> 
> -Test case: queue index wrong parameters
> -=======================================
> +2. send matched packets, check the packets are distributed by RSS with FDIR
> matched ID=0x0.
> +   send mismatched packets, check the packets are distributed by RSS
> without FDIR matched ID.
> 
> -1. invalid parameters::
> +3. repeat step 3 of subcase 1.
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions
> queue index 64 / end
> +4. verify matched packets are destributed to the same queue without FDIR
> matched ID .
> +   check there is no rule listed.
> 
> -   failed to be created.
> +Subcase 4: MAC_IPV6_PAY drop
> +----------------------------
> 
> -2. same pattern items, different action::
> +1. create filter rules::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions
> queue index 1 / end
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions
> queue index 2 / end
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions drop
> / end
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 0 hop is 2
> tc is 1 / end actions drop / end
> +
> +2. send matched packets, check the packets are dropped.
> +   send mismatched packets, check the packets are not dropped.
> 
> -   flow 1 can be created successfully,
> -   flow 2 and flow 3 failed to be created cause of confliction.
> +3. repeat step 3 of subcase 1.
> +
> +4. verify matched packet is dropped.
> +   check there is no rule listed.
> 
> -Test case: MAC_IPV4_PAY passthru/count
> -======================================
> +Subcase 5: MAC_IPV6_PAY mark+rss
> +--------------------------------
> +Note: This combined action is mark with RSS which is without queues
> specified.
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions
> passthru / count / end
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 0 hop is 2
> tc is 1 / end actions mark / rss / end
> 
> -2. send matched packets, check the packets are redirected by RSS
> -   send mismatched packets, check the packets are redirected by RSS
> -   check the count number::
> +2. send matched packets, check the packets are distributed by RSS with FDIR
> matched ID=0x0
> +   send mismatched packets, check the packets are distributed by RSS
> without FDIR matched ID.
> 
> -    flow query 0 0 count
> -    count:
> -     hits_set: 1
> -     bytes_set: 0
> -     hits: 2
> -     bytes: 0
> +3. repeat step 3 of subcase 1.
> 
> -3. verify rules can be listed and destroyed::
> +4. verify matched packets are distributed to the same queue without FDIR
> matched ID.
> +   check there is no rule listed.
> 
> -    testpmd> flow list 0
> +Subcase 6: MAC_IPV6_PAY mark
> +----------------------------
> 
> -   check the existing rule.
> -   destroy the rule::
> +1. create filter rules::
> 
> -    testpmd> flow destroy 0 rule 0
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 0 hop is 2
> tc is 1 / end actions mark / end
> 
> -   verify matched packets are redirected to the same queue.
> -   check there is no rule listed.
> +2. repeat the steps of passthru in subcase 3,
> +   get the same result.
> 
> -Test case: MAC_IPV4_PAY passthru/mark
> -=====================================
> +Subcase 7: MAC_IPV6_PAY protocal
> +--------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions
> passthru / mark / end
> +    flow create 0 ingress pattern eth / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is
> ABAB:910A:2222:5498:8475:1111:3900:1010 proto is 44 / end actions rss
> queues 5 6 end / mark id 1 / end
> +    flow create 0 ingress pattern eth / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 6 / end actions mark id
> 2 / rss / end
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID.
> +2. send matched packets::
> 
> -3. verify rules can be listed and destroyed::
> +    pkt1 =
> Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3
> 900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010", nh=44, tc=1,
> hlim=2)/("X"*480)
> +    pkt2 =
> Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3
> 900:2020",
> src="ABAB:910A:2222:5498:8475:1111:3900:1010")/IPv6ExtHdrFragment(100
> 0)/("X"*480)
> +    pkt3 =
> Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3
> 900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1010",
> nh=44)/TCP(sport=22,dport=23)/("X"*480)
> +    pkt4 =
> Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3
> 900:2020",
> src="ABAB:910A:2222:5498:8475:1111:3900:1010")/IPv6ExtHdrFragment(100
> 0)/TCP(sport=22,dport=23)/("X"*480)
> +    pkt5 =
> Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3
> 900:2020", nh=6)/("X"*480)
> +    pkt6 =
> Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3
> 900:2020")/TCP(sport=22,dport=23)/("X"*480)
> 
> -    testpmd> flow list 0
> +   check pkt1-pkt4 are redirected to queue 5 or queue 6 with FDIR matched
> ID=0x1.
> +   check pkt5 and pkt6 are distributed by RSS with FDIR matched ID=0x2.
> +   send mismatched packets::
> 
> -   check the existing rule.
> -   destroy the rule::
> +    pkt7 =
> Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3
> 900:2020", src="ABAB:910A:2222:5498:8475:1111:3900:1011",
> nh=44)/("X"*480)
> +    pkt8 =
> Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3
> 900:2020")/UDP(sport=22,dport=23)/("X"*480)
> +    pkt9 =
> Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3
> 900:2020", nh=17)/("X"*480)
> 
> -    testpmd> flow destroy 0 rule 0
> +   check the packets received have not FDIR matched ID.
> 
> -   verify matched packets are redirected to the same queue without FDIR ID.
> +3. repeat step 3 of subcase 1.
> +
> +4. verify matched packets have not FDIR matched.
>     check there is no rule listed.
> 
> -Test case: MAC_IPV4_UDP passthru/mark
> -=====================================
> +
> +Test case: MAC_IPV6_UDP pattern
> +===============================
> +
> +Subcase 1: MAC_IPV6_UDP queue index
> +-----------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end
> actions passthru / end
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 /
> udp src is 22 dst is 23 / end actions queue index 1 / mark / end
> 
> -2. send matched packets, check the packets are redirected by RSS.
> -   send mismatched packets, check the packets are redirected by RSS.
> +2. send matched packets, check the packets is distributed to queue 1 with
> FDIR matched ID=0x0.
> +   send mismatched packets, check the packets are received without FDIR
> matched ID=0x0.
> 
>  3. verify rules can be listed and destroyed::
> 
>      testpmd> flow list 0
> 
> -   check the existing rule.
> +   check the rule listed.
>     destroy the rule::
> 
>      testpmd> flow destroy 0 rule 0
> 
> -   verify matched packet is redirected to the same queue.
> +4. verify matched packet is received without FDIR matched ID=0x0.
>     check there is no rule listed.
> 
> -Test case: MAC_IPV4_TCP passthru/mark
> -=====================================
> +Subcase 2: MAC_IPV6_UDP rss queues
> +----------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / tcp src is 22 dst is 23 / end
> actions passthru / mark / end
> +    flow create 0 ingress pattern eth / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 /
> udp src is 22 dst is 23 / end actions rss / end
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID.
> +2. send matched packets, check the packets is distributed by RSS.
> +   send mismatched packets, check the packets are distributed by RSS too.
> 
> -3. verify rules can be listed and destroyed::
> +3. repeat step 3 of subcase 1.
> 
> -    testpmd> flow list 0
> +4. verify matched packet is destributed to the same queue.
> +   check there is no rule listed.
> 
> -   check the existing rule.
> -   destroy the rule::
> +Subcase 3: MAC_IPV6_UDP passthru
> +--------------------------------
> 
> -    testpmd> flow destroy 0 rule 0
> +1. create filter rules::
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> -   check there is no rule listed.
> +    flow create 0 ingress pattern eth / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 /
> udp src is 22 dst is 23 / end actions passthru / mark / end
> 
> -Test case: MAC_IPV4_SCTP passthru/mark
> -======================================
> +2. send matched packets, check the packets are distributed by RSS with FDIR
> matched ID=0x0.
> +   send mismatched packets, check the packets are distributed by RSS
> without FDIR matched ID.
> 
> -1. create filter rules::
> +3. repeat step 3 of subcase 1.
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / sctp src is 22 dst is 23 tag is 1
> / end actions passthru / mark / end
> +4. verify matched packets are destributed to the same queue without FDIR
> matched ID .
> +   check there is no rule listed.
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID.
> +Subcase 4: MAC_IPV6_UDP drop
> +----------------------------
> 
> -3. verify rules can be listed and destroyed::
> +1. create filter rules::
> 
> -    testpmd> flow list 0
> +    flow create 0 ingress pattern eth / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 /
> udp src is 22 dst is 23 / end actions drop / end
> 
> -   check the existing rule.
> -   destroy the rule::
> +2. send matched packets, check the packets are dropped.
> +   send mismatched packets, check the packets are not dropped.
> 
> -    testpmd> flow destroy 0 rule 0
> +3. repeat step 3 of subcase 1.
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> +4. verify matched packet is dropped.
>     check there is no rule listed.
> 
> -Test case: MAC_IPV6_PAY passthru/mark
> -=====================================
> +Subcase 5: MAC_IPV6_UDP mark+rss
> +--------------------------------
> +Note: This combined action is mark with RSS which is without queues
> specified.
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 1 hop is 2
> tc is 1 / end actions passthru / mark / end
> +    flow create 0 ingress pattern eth / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 /
> udp src is 22 dst is 23 / end actions mark / rss / end
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID.
> +2. send matched packets, check the packets are distributed by RSS with FDIR
> matched ID=0x0
> +   send mismatched packets, check the packets are distributed by RSS
> without FDIR matched ID.
> 
> -3. verify rules can be listed and destroyed::
> +3. repeat step 3 of subcase 1.
> 
> -    testpmd> flow list 0
> +4. verify matched packets are distributed to the same queue without FDIR
> matched ID.
> +   check there is no rule listed.
> 
> -   check the existing rule.
> -   destroy the rule::
> +Subcase 6: MAC_IPV6_UDP mark
> +----------------------------
> 
> -    testpmd> flow destroy 0 rule 0
> +1. create filter rules::
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> -   check there is no rule listed.
> +    flow create 0 ingress pattern eth / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 /
> udp src is 22 dst is 23 / end actions mark / end
> 
> -Test case: MAC_IPV6_UDP passthru/mark
> -=====================================
> +2. repeat the steps of passthru in subcase 3,
> +   get the same result.
> 
> -1. create filter rules::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 /
> udp src is 22 dst is 23 / end actions passthru / mark / end
> +Test case: MAC_IPV6_TCP pattern
> +===============================
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID.
> +1. replace "udp" with "tcp" in all the subcases of MAC_IPV6_UDP pattern.
> +2. Then repeat all the steps in all the subcases of MAC_IPV6_UDP pattern.
> +3. get the same result.
> 
> -3. verify rules can be listed and destroyed::
> +Test case: MAC_IPV6_SCTP pattern
> +================================
> 
> -    testpmd> flow list 0
> +1. replace "udp" with "sctp" in all the subcases of MAC_IPV6_UDP pattern.
> +2. Then repeat all the steps in all the subcases of MAC_IPV6_UDP pattern.
> +3. get the same result.
> 
> -   check the existing rule.
> -   destroy the rule::
> 
> -    testpmd> flow destroy 0 rule 0
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> -   check there is no rule listed.
> 
> -Test case: MAC_IPV6_TCP passthru/mark
> -=====================================
> +Test case: MAC_IPV4_TUN_IPV4_PAY pattern
> +========================================
> +
> +Subcase 1: MAC_IPV4_TUN_IPV4_PAY queue index
> +--------------------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp
> src is 22 dst is 23 / end actions passthru / mark / end
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / end
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID.
> +2. send matched packets, check the packets are distributed to queue 1
> without FDIR matched ID.
> +   send mismatched packets, check the packets are not distributed to queue
> 1 without FDIR matched ID.
> 
>  3. verify rules can be listed and destroyed::
> 
> @@ -1070,106 +1093,92 @@ Test case: MAC_IPV6_TCP passthru/mark
> 
>      testpmd> flow destroy 0 rule 0
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> +   verify the packets hit rule are not distributed to queue 1 without FDIR
> matched ID.
>     check there is no rule listed.
> 
> -Test case: MAC_IPV6_SCTP passthru/mark
> -======================================
> +Subcase 2: MAC_IPV4_TUN_IPV4_PAY rss queues
> +-------------------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 /
> sctp src is 22 dst is 23 / end actions passthru / mark / end
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 9 10 11 12 13 14 15
> 16 17 18 19 20 21 22 23 24 end / mark / end
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID.
> +2. send matched packets, check the packets are distributed to queue group
> with FDIR matched ID=0x0.
> +   send mismatched packets, check the packets are received without FDIR
> matched ID.
> 
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> +3. repeat step 3 of subcase 1.
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> +4. verify the packets hit rule are received without FDIR matched ID.
>     check there is no rule listed.
> 
> -Test case: MAC_IPV4_TUN_IPV4_PAY passthru/mark
> -==============================================
> +Subcase 3: MAC_IPV4_TUN_IPV4_PAY passthru
> +-----------------------------------------
> 
>  1. create filter rules::
> 
>      flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions passthru / mark / end
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID.
> +2. send matched packets, check the packets are redirected by RSS with FDIR
> matched ID=0x0.
> +   send mismatched packets, check the packets are redirected by RSS
> without FDIR matched ID.
> 
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> +3. repeat step 3 of subcase 1.
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> +4. verify the packets hit rule are received without FDIR matched ID.
>     check there is no rule listed.
> 
> -Test case: MAC_IPV4_TUN_IPV4_UDP passthru/mark
> -==============================================
> +Subcase 4: MAC_IPV4_TUN_IPV4_PAY drop
> +-------------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions
> passthru / mark / end
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions drop / end
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID.
> +2. send matched packets, check the packets dropped.
> +   send mismatched packets, check the packets are not dropped.
> 
> -3. verify rules can be listed and destroyed::
> +3. repeat step 3 of subcase 1.
> 
> -    testpmd> flow list 0
> +4. check there is no rule listed.
> +   verify the packets hit the rule are not dropped.
> 
> -   check the existing rule.
> -   destroy the rule::
> +Subcase 5: MAC_IPV4_TUN_IPV4_PAY mark/rss
> +-----------------------------------------
> 
> -    testpmd> flow destroy 0 rule 0
> +1. create filter rules::
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> -   check there is no rule listed.
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions mark / rss / end
> 
> -Test case: MAC_IPV4_TUN_IPV4_TCP passthru/mark
> -==============================================
> +2. send matched packets, check the packets are redirected by RSS with FDIR
> matched ID=0x0.
> +   send mismatched packets, check the packets are redirected by RSS
> without FDIR matched ID.
> 
> -1. create filter rules::
> +3. repeat step 3 of subcase 1.
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions passthru
> / mark / end
> +4. verify matched packet is redirected to the same queue without FDIR
> matched ID.
> +   check there is no rule listed.
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID.
> +Subcase 6: MAC_IPV4_TUN_IPV4_PAY mark
> +-------------------------------------
> 
> -3. verify rules can be listed and destroyed::
> +1. create filter rules::
> 
> -    testpmd> flow list 0
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions mark / end
> 
> -   check the existing rule.
> -   destroy the rule::
> +2. repeat the steps of passthru in subcase 3,
> +   get the same result.
> 
> -    testpmd> flow destroy 0 rule 0
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> -   check there is no rule listed.
> +Test case: MAC_IPV4_TUN_IPV4_UDP pattern
> +========================================
> 
> -Test case: MAC_IPV4_TUN_IPV4_SCTP passthru/mark
> -===============================================
> +Subcase 1: MAC_IPV4_TUN_IPV4_UDP queue index
> +--------------------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions
> passthru / mark / end
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue
> index 1 / mark id 1 / end
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID.
> +2. send matched packets, check the packets are distributed to queue 1 with
> FDIR matched ID=0x1.
> +   send mismatched packets, check the packets are received without FDIR
> matched ID.
> 
>  3. verify rules can be listed and destroyed::
> 
> @@ -1180,106 +1189,106 @@ Test case: MAC_IPV4_TUN_IPV4_SCTP
> passthru/mark
> 
>      testpmd> flow destroy 0 rule 0
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> +4. verify the packets hit rule are received without FDIR matched ID.
>     check there is no rule listed.
> 
> -Test case: MAC_IPV4_TUN_MAC_IPV4_PAY passthru/mark
> -==================================================
> +Subcase 2: MAC_IPV4_TUN_IPV4_UDP rss queues
> +-------------------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions passthru / mark / end
> -
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions rss
> queues 38 39 40 41 end / mark id 1 / end
> 
> -   check the existing rule.
> -   destroy the rule::
> +2. send matched packets, check the packets are distributed to queue group
> with FDIR matched ID=0x1.
> +   send mismatched packets, check the packets are received without FDIR
> matched ID.
> 
> -    testpmd> flow destroy 0 rule 0
> +3. repeat step 3 of subcase 1.
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> +4. verify the packets hit rule are received without FDIR matched ID.
>     check there is no rule listed.
> 
> -Test case: MAC_IPV4_TUN_MAC_IPV4_UDP passthru/mark
> -==================================================
> +Subcase 3: MAC_IPV4_TUN_IPV4_UDP passthru
> +-----------------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions
> passthru / mark / end
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions
> passthru / mark id 1 / end
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID.
> +2. send matched packets, check the packets are distributed by RSS with FDIR
> matched ID=0x1.
> +   send mismatched packets, check the packets are distributed by RSS
> without FDIR matched ID.
> 
> -3. verify rules can be listed and destroyed::
> +3. repeat step 3 of subcase 1.
> 
> -    testpmd> flow list 0
> +4. verify the packets hit rule are distributed to the same queue without FDIR
> matched ID.
> +   check there is no rule listed.
> 
> -   check the existing rule.
> -   destroy the rule::
> +Subcase 4: MAC_IPV4_TUN_IPV4_UDP drop
> +-------------------------------------
> 
> -    testpmd> flow destroy 0 rule 0
> +1. create filter rules::
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> -   check there is no rule listed.
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions drop /
> end
> 
> -Test case: MAC_IPV4_TUN_MAC_IPV4_TCP passthru/mark
> -==================================================
> +2. send matched packets, check the packets are dropped.
> +   send mismatched packets, check the packets are received without FDIR
> matched ID.
> 
> -1. create filter rules::
> +3. repeat step 3 of subcase 1.
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions passthru
> / mark / end
> +4. verify the packets hit rule are received without FDIR matched ID.
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID.
> +Subcase 5: MAC_IPV4_TUN_IPV4_UDP mark/rss
> +-----------------------------------------
> 
> -3. verify rules can be listed and destroyed::
> +1. create filter rules::
> 
> -    testpmd> flow list 0
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions mark id
> 1 / rss / end
> 
> -   check the existing rule.
> -   destroy the rule::
> +2. send matched packets, check the packets are distributed by RSS with FDIR
> matched ID=0x1.
> +   send mismatched packets, check the packets are distributed by RSS
> without FDIR matched ID.
> 
> -    testpmd> flow destroy 0 rule 0
> +3. repeat step 3 of subcase 1.
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> +4. verify the packets hit rule are distributed to the same queue without FDIR
> matched ID.
>     check there is no rule listed.
> 
> -Test case: MAC_IPV4_TUN_MAC_IPV4_SCTP passthru/mark
> -===================================================
> +Subcase 6: MAC_IPV4_TUN_IPV4_UDP mark
> +-------------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions
> passthru / mark / end
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions mark id
> 1 / end
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID.
> +2. repeat the steps of passthru in subcase 3,
> +   get the same result.
> 
> -3. verify rules can be listed and destroyed::
> 
> -    testpmd> flow list 0
> +Test case: MAC_IPV4_TUN_IPV4_TCP pattern
> +========================================
> 
> -   check the existing rule.
> -   destroy the rule::
> +1. replace "udp" with "tcp" in all the subcases of MAC_IPV4_TUN_IPV4_UDP
> pattern.
> +2. Then repeat all the steps in all the subcases of MAC_IPV4_TUN_IPV4_UDP
> pattern.
> +3. get the same result.
> 
> -    testpmd> flow destroy 0 rule 0
> +Test case: MAC_IPV4_TUN_IPV4_SCTP pattern
> +=========================================
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> -   check there is no rule listed.
> +1. replace "udp" with "sctp" in all the subcases of
> MAC_IPV4_TUN_IPV4_UDP pattern.
> +2. Then repeat all the steps in all the subcases of MAC_IPV4_TUN_IPV4_UDP
> pattern.
> +3. get the same result.
> 
> -Test case: MAC_IPV4_PAY mark/rss
> -================================
> +
> +Test case: MAC_IPV4_TUN_MAC_IPV4_PAY pattern
> +============================================
> +
> +Subcase 1: MAC_IPV4_TUN_MAC_IPV4_PAY queue index
> +------------------------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions
> mark id 1 / rss / end
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions queue index 0 / end
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID 1.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID 1.
> +2. send matched packets, check the packets are distributed to queue 0
> without FDIR matched ID.
> +   send mismatched packets, check the packets are not distributed to queue
> 0 without FDIR matched ID.
> 
>  3. verify rules can be listed and destroyed::
> 
> @@ -1290,84 +1299,91 @@ Test case: MAC_IPV4_PAY mark/rss
> 
>      testpmd> flow destroy 0 rule 0
> 
> -   verify matched packets are redirected to the same queue without FDIR ID.
> +4. verify the packets hit rule are not distributed to queue 0 without FDIR
> matched ID.
>     check there is no rule listed.
> 
> -Test case: MAC_IPV4_UDP mark/rss
> -================================
> +Subcase 2: MAC_IPV4_TUN_MAC_IPV4_PAY rss queues
> +-----------------------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end
> actions mark / rss / end
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 0 1 end / end
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID 0.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID 0.
> +2. send matched packets, check the packets are distributed to queue group
> without FDIR matched ID.
> +   send mismatched packets, check the packets are not distributed to queue
> group without FDIR matched ID.
> 
> -3. verify rules can be listed and destroyed::
> +3. repeat step 3 of subcase 1.
> 
> -    testpmd> flow list 0
> +4. verify the packets hit rule are not distributed to queue group without
> FDIR matched ID.
> +   check there is no rule listed.
> 
> -   check the existing rule.
> -   destroy the rule::
> +Subcase 3: MAC_IPV4_TUN_MAC_IPV4_PAY passthru
> +---------------------------------------------
> 
> -    testpmd> flow destroy 0 rule 0
> +1. create filter rules::
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> -   check there is no rule listed.
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions passthru / end
> 
> -Test case: MAC_IPV4_TCP mark/rss
> -================================
> +2. send matched packets, check the packets are distributed by RSS without
> FDIR matched ID.
> +   send mismatched packets, check the packets are distributed by RSS
> without FDIR matched ID.
> 
> -1. create filter rules::
> +3. repeat step 3 of subcase 1.
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / tcp src is 22 dst is 23 / end
> actions mark id 1 / rss / end
> +4. verify the packets hit rule are distributed to same queue without FDIR
> matched ID.
> +   check there is no rule listed.
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID 1.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID 1.
> +Subcase 4: MAC_IPV4_TUN_MAC_IPV4_PAY drop
> +-----------------------------------------
> 
> -3. verify rules can be listed and destroyed::
> +1. create filter rules::
> 
> -    testpmd> flow list 0
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions drop / end
> 
> -   check the existing rule.
> -   destroy the rule::
> +2. send matched packets, check the packets are dropped.
> +   send mismatched packets, check the packets are not dropped.
> 
> -    testpmd> flow destroy 0 rule 0
> +3. repeat step 3 of subcase 1.
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> +4. verify the packets hit rule are not dropped.
>     check there is no rule listed.
> 
> -Test case: MAC_IPV4_SCTP mark/rss
> -=================================
> +Subcase 5: MAC_IPV4_TUN_MAC_IPV4_PAY mark/rss
> +---------------------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / sctp src is 22 dst is 23 tag is 1
> / end actions mark id 1 / rss / end
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions mark / rss / end
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID 1.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID 1.
> +2. send matched packets, check the packets are distributed by RSS with FDIR
> matched ID=0x0.
> +   send mismatched packets, check the packets are distributed by RSS
> without FDIR matched ID.
> 
> -3. verify rules can be listed and destroyed::
> +3. repeat step 3 of subcase 1.
> 
> -    testpmd> flow list 0
> +4. verify the packets hit rule are distributed to same queue without FDIR
> matched ID.
> +   check there is no rule listed.
> 
> -   check the existing rule.
> -   destroy the rule::
> +Subcase 6: MAC_IPV4_TUN_MAC_IPV4_PAY mark
> +-----------------------------------------
> 
> -    testpmd> flow destroy 0 rule 0
> +1. create filter rules::
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> -   check there is no rule listed.
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions mark / end
> 
> -Test case: MAC_IPV6_PAY mark/rss
> -================================
> +2. repeat the steps of passthru in subcase 3,
> +   get the same result.
> +
> +Test case: MAC_IPV4_TUN_MAC_IPV4_UDP pattern
> +============================================
> +
> +Subcase 1: MAC_IPV4_TUN_MAC_IPV4_UDP queue index
> +------------------------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 1 hop is 2
> tc is 1 / end actions mark id 1 / rss / end
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue
> index 15 / mark id 1 / end
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID 1.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID 1.
> +2. send matched packets, check the packets are distributed to queue 15
> with FDIR matched ID=0x1.
> +   send mismatched packets, check the packets are received without FDIR
> matched ID.
> 
>  3. verify rules can be listed and destroyed::
> 
> @@ -1378,106 +1394,106 @@ Test case: MAC_IPV6_PAY mark/rss
> 
>      testpmd> flow destroy 0 rule 0
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> +4. verify the packets hit rule are distributed by RSS without FDIR matched ID.
>     check there is no rule listed.
> 
> -Test case: MAC_IPV6_UDP mark/rss
> -================================
> +Subcase 2: MAC_IPV4_TUN_MAC_IPV4_UDP rss queues
> +-----------------------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 /
> udp src is 22 dst is 23 / end actions mark id 1 / rss / end
> -
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID 1.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID 1.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions rss
> queues 0 1 2 3 end / mark id 1 / end
> 
> -   check the existing rule.
> -   destroy the rule::
> +2. send matched packets, check the packets are distributed to queue group
> with FDIR matched ID=0x1.
> +   send mismatched packets, check the packets are distributed by RSS
> without FDIR matched ID.
> 
> -    testpmd> flow destroy 0 rule 0
> +3. repeat step 3 of subcase 1.
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> +4. verify the packets hit rule are distributed by RSS without FDIR matched ID.
>     check there is no rule listed.
> 
> -Test case: MAC_IPV6_TCP mark/rss
> -================================
> +Subcase 3: MAC_IPV4_TUN_MAC_IPV4_UDP passthru
> +---------------------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp
> src is 22 dst is 23 / end actions mark id 1 / rss / end
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions
> passthru / mark id 1 / end
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID 1.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID 1.
> +2. send matched packets, check the packets are distributed by RSS with FDIR
> matched ID=0x1.
> +   send mismatched packets, check the packets are distributed by RSS
> without FDIR matched ID.
> 
> -3. verify rules can be listed and destroyed::
> +3. repeat step 3 of subcase 1.
> 
> -    testpmd> flow list 0
> +4. verify the packets hit rule are distributed by RSS without FDIR matched ID.
> +   check there is no rule listed.
> 
> -   check the existing rule.
> -   destroy the rule::
> +Subcase 4: MAC_IPV4_TUN_MAC_IPV4_UDP drop
> +-----------------------------------------
> 
> -    testpmd> flow destroy 0 rule 0
> +1. create filter rules::
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> -   check there is no rule listed.
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions drop /
> mark id 1 / end
> 
> -Test case: MAC_IPV6_SCTP mark/rss
> -=================================
> +2. send matched packets, check the packets are dropped.
> +   send mismatched packets, check the packets are distributed by RSS
> without FDIR matched ID.
> 
> -1. create filter rules::
> +3. repeat step 3 of subcase 1.
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 /
> sctp src is 22 dst is 23 / end actions mark id 1 / rss / end
> +4. verify the packets hit rule are distributed by RSS without FDIR matched ID.
> +   check there is no rule listed.
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID 1.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID 1.
> +Subcase 5: MAC_IPV4_TUN_MAC_IPV4_UDP mark/rss
> +---------------------------------------------
> 
> -3. verify rules can be listed and destroyed::
> +1. create filter rules::
> 
> -    testpmd> flow list 0
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions rss /
> mark id 1 / end
> 
> -   check the existing rule.
> -   destroy the rule::
> +2. send matched packets, check the packets are distributed by RSS with FDIR
> matched ID=0x1.
> +   send mismatched packets, check the packets are distributed by RSS
> without FDIR matched ID.
> 
> -    testpmd> flow destroy 0 rule 0
> +3. repeat step 3 of subcase 1.
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> +4. verify the packets hit rule are distributed to same queue without FDIR
> matched ID.
>     check there is no rule listed.
> 
> -Test case: MAC_IPV4_TUN_IPV4_PAY mark/rss
> -=========================================
> +Subcase 6: MAC_IPV4_TUN_MAC_IPV4_UDP mark
> +-----------------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions mark / rss / end
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions mark id
> 1 / end
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID 0.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID 0.
> +2. repeat the steps of passthru in subcase 3,
> +   get the same result.
> 
> -3. verify rules can be listed and destroyed::
> 
> -    testpmd> flow list 0
> +Test case: MAC_IPV4_TUN_MAC_IPV4_TCP pattern
> +============================================
> 
> -   check the existing rule.
> -   destroy the rule::
> +1. replace "udp" with "tcp" in all the subcases of
> MAC_IPV4_TUN_MAC_IPV4_UDP pattern.
> +2. Then repeat all the steps in all the subcases of
> MAC_IPV4_TUN_MAC_IPV4_UDP pattern.
> +3. get the same result.
> 
> -    testpmd> flow destroy 0 rule 0
> +Test case: MAC_IPV4_TUN_MAC_IPV4_SCTP pattern
> +=============================================
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> -   check there is no rule listed.
> +1. replace "udp" with "sctp" in all the subcases of
> MAC_IPV4_TUN_MAC_IPV4_UDP pattern.
> +2. Then repeat all the steps in all the subcases of
> MAC_IPV4_TUN_MAC_IPV4_UDP pattern.
> +3. get the same result.
> 
> -Test case: MAC_IPV4_TUN_IPV4_UDP mark/rss
> -=========================================
> +Test case: MAC_IPV4_GTPU_EH pattern
> +===================================
> +
> +Subcase 1: MAC_IPV4_GTPU_EH queue index
> +---------------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions mark id
> 1 / rss / end
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x34 / end actions queue index 1 / mark id 1 / end
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID 1.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID 1.
> +2. send matched packets, check the packets are distributed to queue 1 with
> FDIR matched ID=0x1.
> +   send mismatched packets, check the packets are not distributed to queue
> 1 without FDIR matched ID.
> 
>  3. verify rules can be listed and destroyed::
> 
> @@ -1488,128 +1504,131 @@ Test case: MAC_IPV4_TUN_IPV4_UDP
> mark/rss
> 
>      testpmd> flow destroy 0 rule 0
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> -   check there is no rule listed.
> +4. verify matched packets are not distributed to queue 1 without FDIR
> matched ID.
> +   Then check there is no rule listed.
> 
> -Test case: MAC_IPV4_TUN_IPV4_TCP mark/rss
> -=========================================
> +Subcase 2: MAC_IPV4_GTPU_EH queue group
> +---------------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions mark id
> 1 / rss / end
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x34 / end actions rss queues 0 1 2 3 end / mark id 1 / end
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID 1.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID 1.
> +2. send matched packets, check the packets are distributed to queue group
> with FDIR matched ID=0x1.
> +   send mismatched packets, check the packets are not distributed to queue
> group without FDIR matched ID.
> 
> -3. verify rules can be listed and destroyed::
> +3. repeat step 3 of subcase 1.
> 
> -    testpmd> flow list 0
> +4. verify matched packets are not distributed to queue group without FDIR
> matched ID.
> +   Then check there is no rule listed.
> 
> -   check the existing rule.
> -   destroy the rule::
> +Subcase 3: MAC_IPV4_GTPU_EH passthru
> +------------------------------------
> 
> -    testpmd> flow destroy 0 rule 0
> +1. create filter rules::
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> -   check there is no rule listed.
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x34 / end actions passthru / mark id 1 / end
> 
> -Test case: MAC_IPV4_TUN_IPV4_SCTP mark/rss
> -==========================================
> +2. send matched packets, check the packets are redirected by RSS with FDIR
> matched ID=0x1.
> +   send mismatched packets, check the packets are redirected by RSS
> without FDIR matched ID.
> 
> -1. create filter rules::
> +3. repeat step 3 of subcase 1.
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions mark id
> 1 / rss / end
> +4. verify matched packets are redirected to the same queue without FDIR ID.
> +   check there is no rule listed.
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID 1.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID 1.
> +Subcase 4: MAC_IPV4_GTPU_EH drop
> +--------------------------------
> 
> -3. verify rules can be listed and destroyed::
> +1. create filter rules::
> 
> -    testpmd> flow list 0
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x34 / end actions drop / end
> 
> -   check the existing rule.
> -   destroy the rule::
> +2. send matched packets, check the packets are dropped.
> +   send mismatched packets, check the packets are not dropped without
> FDIR matched ID.
> 
> -    testpmd> flow destroy 0 rule 0
> +3. repeat step 3 of subcase 1.
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> -   check there is no rule listed.
> +4. verify matched packets are not dropped without FDIR matched ID.
> +   Then check there is no rule listed.
> 
> -Test case: MAC_IPV4_TUN_MAC_IPV4_PAY mark/rss
> -=============================================
> +Subcase 5: MAC_IPV4_GTPU_EH mark/rss
> +------------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions mark id 1 / rss / end
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x34 / end actions mark id 1 / rss / end
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID 1.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID 1.
> +2. send matched packets, check the packets are redirected by RSS with FDIR
> matched ID=0x1.
> +   send mismatched packets, check the packets are redirected by RSS
> without FDIR matched ID.
> 
> -3. verify rules can be listed and destroyed::
> +3. repeat step 3 of subcase 1.
> 
> -    testpmd> flow list 0
> +4. verify matched packets are redirected to the same queue without FDIR
> matched ID.
> +   check there is no rule listed.
> 
> -   check the existing rule.
> -   destroy the rule::
> +Subcase 6: MAC_IPV4_GTPU_EH mark
> +--------------------------------
> 
> -    testpmd> flow destroy 0 rule 0
> +1. create filter rules::
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> -   check there is no rule listed.
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x34 / end actions mark id 1 / end
> 
> -Test case: MAC_IPV4_TUN_MAC_IPV4_UDP mark/rss
> -=============================================
> +2. repeat the steps of passthru in subcase 3,
> +   get the same result.
> 
> -1. create filter rules::
> +Subcase 7: MAC_IPV4_GTPU_EH QFI queue index / mark
> +--------------------------------------------------
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions mark id
> 1 / rss / end
> +1. create filter rules on port 0::
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID 1.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID 1.
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc qfi is 0x34 /
> end actions queue index 1 / mark id 3 / end
> 
> -3. verify rules can be listed and destroyed::
> +2. send matched packets, check the packet is redirected to queue 1 with
> FDIR matched ID=0x3::
> 
> -    testpmd> flow list 0
> +    p_gtpu1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255)/GTP_P
> DUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IP()/TCP()/Raw('x'*20)
> 
> -   check the existing rule.
> -   destroy the rule::
> +   send mismatched packets, check the packet received has not FDIR::
> 
> -    testpmd> flow destroy 0 rule 0
> +    p_gtpu2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255)/GTP_P
> DUSession_ExtensionHeader(pdu_type=0, qos_flow=0x35)/IP()/Raw('x'*20)
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> -   check there is no rule listed.
> +3. repeat step 3 of subcase 1.
> 
> -Test case: MAC_IPV4_TUN_MAC_IPV4_TCP mark/rss
> -=============================================
> +4. verify matched packet received has not FDIR.
> +   Then check there is no rule listed.
> 
> -1. create filter rules::
> +Subcase 8: MAC_IPV4_GTPU_EH without QFI rss queues / mark
> +---------------------------------------------------------
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions mark id
> 1 / rss / end
> +1. create filter rules on port 0::
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID 1.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID 1.
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc / end actions rss queues 2 3 end / mark id 1 / end
> 
> -3. verify rules can be listed and destroyed::
> +2. send matched packets, check the packet is distributed to queue 2 or
> queue 3 with FDIR matched ID=0x3::
> 
> -    testpmd> flow list 0
> +    p_gtpu1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0)/IP()/TCP(
> )/Raw('x'*20)
> 
> -   check the existing rule.
> -   destroy the rule::
> +   send mismatched packets, check the packet received has no FDIR::
> 
> -    testpmd> flow destroy 0 rule 0
> +    p_gtpu2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x1234567)/GTP_PDUSession_ExtensionHeader(pdu_type=0)/IP()/TCP()
> /Raw('x'*20)
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> -   check there is no rule listed.
> +3. repeat step 3 of subcase 1.
> +
> +4. verify matched packet received has not FDIR.
> +   Then check there is no rule listed.
> 
> -Test case: MAC_IPV4_TUN_MAC_IPV4_SCTP mark/rss
> -==============================================
> +Test case: MAC_IPV4_GTPU pattern
> +================================
> +
> +Subcase 1: MAC_IPV4_GTPU queue index
> +------------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions mark id
> 1 / rss / end
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> end actions queue index 1 / mark / end
> 
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID 1.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID 1.
> +2. send matched packets, check the packets are distributed to queue 1 with
> FDIR matched ID=0x0.
> +   send mismatched packets, check the packets are not distributed to queue
> 1 without FDIR matched ID.
> 
>  3. verify rules can be listed and destroyed::
> 
> @@ -1620,1263 +1639,399 @@ Test case: MAC_IPV4_TUN_MAC_IPV4_SCTP
> mark/rss
> 
>      testpmd> flow destroy 0 rule 0
> 
> -   verify matched packet is redirected to the same queue without FDIR ID.
> -   check there is no rule listed.
> +4. verify matched packets are not distributed to queue 1 without FDIR
> matched ID.
> +   Then check there is no rule listed.
> 
> -Test case: mark/rss wrong parameters
> -====================================
> +Subcase 2: MAC_IPV4_GTPU queue group
> +------------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end
> actions rss / end
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> end actions rss queues 0 1 end / mark / end
> 
> -2. The rule failed to be created, report proper error message.
> +2. send matched packets, check the packets are distributed to queue group
> with FDIR matched ID=0x0.
> +   send mismatched packets, check the packets are not distributed to queue
> group without FDIR matched ID.
> 
> -3. list the flow::
> +3. repeat step 3 of subcase 1.
> 
> -    testpmd> flow list 0
> -
> -   there is no flow listed.
> +4. verify matched packets are not distributed to queue group without FDIR
> matched ID.
> +   Then check there is no rule listed.
> 
> -Test case: MAC_IPV4_PAY drop
> -============================
> +Subcase 3: MAC_IPV4_GTPU passthru
> +---------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions drop
> / end
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> end actions passthru / mark / end
> 
> -2. send matched packets, check the packets dropped.
> -   send mismatched packets, check the packets are not dropped.
> +2. send matched packets, check the packets are redirected by RSS with FDIR
> matched ID=0x0.
> +   send mismatched packets, check the packets are redirected by RSS
> without FDIR matched ID.
> 
> -3. verify rules can be listed and destroyed::
> +3. repeat step 3 of subcase 1.
> 
> -    testpmd> flow list 0
> +4. verify matched packets are distributed to same queue without FDIR
> matched ID.
> +   Then check there is no rule listed.
> 
> -   check the existing rule.
> -   destroy the rule::
> +Subcase 4: MAC_IPV4_GTPU drop
> +-----------------------------
> 
> -    testpmd> flow destroy 0 rule 0
> +1. create filter rules::
> 
> -   check there is no rule listed.
> -   verify matched packets are not dropped.
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> end actions drop / end
> 
> -Test case: MAC_IPV4_UDP drop
> -============================
> +2. send matched packets, check the packets are dropped.
> +   send mismatched packets, check the packets are not dropped.
> 
> -1. create filter rules::
> +3. repeat step 3 of subcase 1.
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end
> actions drop / end
> +4. verify matched packets are not dropped without FDIR matched ID.
> +   Then check there is no rule listed.
> 
> -2. send matched packets, check the packet dropped.
> -   send mismatched packets, check the packets are not dropped.
> +Subcase 5: MAC_IPV4_GTPU mark/rss
> +---------------------------------
> 
> -3. verify rules can be listed and destroyed::
> +1. create filter rules::
> 
> -    testpmd> flow list 0
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> end actions mark / rss / end
> 
> -   check the existing rule.
> -   destroy the rule::
> +2. send matched packets, check the packets are redirected by RSS with FDIR
> matched ID=0x0.
> +   send mismatched packets, check the packets are redirected by RSS
> without FDIR matched ID.
> 
> -    testpmd> flow destroy 0 rule 0
> +3. repeat step 3 of subcase 1.
> 
> -   check there is no rule listed.
> -   verify the packet hit the rule is not dropped.
> +4. verify matched packets are distributed to same queue without FDIR
> matched ID.
> +   Then check there is no rule listed.
> 
> -Test case: MAC_IPV4_TCP drop
> -============================
> +Subcase 6: MAC_IPV4_GTPU mark
> +-----------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / tcp src is 22 dst is 23 / end
> actions drop / end
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> end actions mark / end
> 
> -2. send matched packets, check the packet dropped.
> -   send mismatched packets, check the packets are not dropped.
> +2. repeat the steps of passthru in subcase 3,
> +   get the same result.
> 
> -3. verify rules can be listed and destroyed::
> 
> -    testpmd> flow list 0
> +Test case: negative cases
> +=========================
> 
> -   check the existing rule.
> -   destroy the rule::
> +Subcase 1: invalid parameters of queue index
> +--------------------------------------------
> 
> -    testpmd> flow destroy 0 rule 0
> +1. Invalid parameters::
> 
> -   check there is no rule listed.
> -   verify the packet hit the rule is not dropped.
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions
> queue index 64 / end
> 
> -Test case: MAC_IPV4_SCTP drop
> -=============================
> +   Failed to create flow, report message::
> 
> -1. create filter rules::
> +    Invalid queue for FDIR.: Invalid argument
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / sctp src is 22 dst is 23 / end
> actions drop / end
> +2. check there is no rule listed.
> 
> -2. send matched packets, check the packet dropped.
> -   send mismatched packets, check the packets are not dropped.
> +Subcase 2: invalid parameters of rss queues
> +-------------------------------------------
> 
> -3. verify rules can be listed and destroyed::
> +1. Invalid number of queues::
> 
> -    testpmd> flow list 0
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss
> queues 1 2 3 end / end
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss
> queues 0 end / end
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss
> queues end / end
> 
> -   check the existing rule.
> -   destroy the rule::
> +   Failed to create flow, report message::
> 
> -    testpmd> flow destroy 0 rule 0
> +    Invalid input action: Invalid argument
> 
> -   check there is no rule listed.
> -   verify the packet hit the rule is not dropped.
> +2. Discontinuous queues::
> 
> -Test case: MAC_IPV6_PAY drop
> -============================
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss
> queues 1 2 3 5 end / end
> 
> -1. create filter rules::
> +   Failed to create flow, report message::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 1 hop is 2
> tc is 1 \
> -    / end actions drop / end
> +    Discontinuous queue region: Invalid argument
> 
> -2. send matched packets, check the packets dropped.
> -   send mismatched packets, check the packets are not dropped.
> +3. invalid queue index::
> 
> -3. verify rules can be listed and destroyed::
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss
> queues 63 64 end / end
> 
> -    testpmd> flow list 0
> +   Failed to create flow, report message::
> 
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   check there is no rule listed.
> -   verify the packet hit the rule is not dropped.
> -
> -Test case: MAC_IPV6_UDP drop
> -============================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 /
> udp src is 22 dst is 23 / end actions drop / end
> -
> -2. send matched packets, check the packet dropped.
> -   send mismatched packets, check the packets are not dropped.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   check there is no rule listed.
> -   verify the packet hit the rule is not dropped.
> -
> -Test case: MAC_IPV6_TCP drop
> -============================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp
> src is 22 dst is 23 / end actions drop / end
> -
> -2. send matched packets, check the packet dropped.
> -   send mismatched packets, check the packets are not dropped.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   check there is no rule listed.
> -   verify the packet hit the rule is not dropped.
> -
> -Test case: MAC_IPV6_SCTP drop
> -=============================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 /
> sctp src is 22 dst is 23 / end actions drop / end
> -
> -2. send matched packets, check the packet dropped.
> -   send mismatched packets, check the packets are not dropped.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   check there is no rule listed.
> -   verify the packet hit the rule is not dropped.
> -
> -Test case: MAC_IPV4_TUN_IPV4_PAY drop
> -=====================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions drop / end
> -
> -2. send matched packets, check the packets dropped.
> -   send mismatched packets, check the packets are not dropped.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   check there is no rule listed.
> -   verify the packets hit the rule are not dropped.
> -
> -Test case: MAC_IPV4_TUN_IPV4_UDP drop
> -=====================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions drop /
> end
> -
> -2. send matched packets, check the packets dropped.
> -   send mismatched packets, check the packets are not dropped.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   check there is no rule listed.
> -   verify the packets hit the rule are not dropped.
> -
> -Test case: MAC_IPV4_TUN_IPV4_TCP drop
> -=====================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions drop /
> end
> -
> -2. send matched packets, check the packets dropped.
> -   send mismatched packets, check the packets are not dropped.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   check there is no rule listed.
> -   verify the packets hit the rule are not dropped.
> -
> -Test case: MAC_IPV4_TUN_IPV4_SCTP drop
> -======================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions drop /
> end
> -
> -2. send matched packets, check the packets dropped.
> -   send mismatched packets, check the packets are not dropped.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   check there is no rule listed.
> -   verify the packets hit the rule are not dropped.
> -
> -Test case: MAC_IPV4_TUN_MAC_IPV4_PAY drop
> -=========================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions drop / end
> -
> -2. send matched packets, check the packets dropped.
> -   send mismatched packets, check the packets are not dropped.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   check there is no rule listed.
> -   verify the packets hit the rule are not dropped.
> -
> -Test case: MAC_IPV4_TUN_MAC_IPV4_UDP drop
> -=========================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions drop /
> end
> -
> -2. send matched packets, check the packets dropped.
> -   send mismatched packets, check the packets are not dropped.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   check there is no rule listed.
> -   verify the packets hit the rule are not dropped.
> -
> -Test case: MAC_IPV4_TUN_MAC_IPV4_TCP drop
> -=========================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions drop /
> end
> -
> -2. send matched packets, check the packets dropped.
> -   send mismatched packets, check the packets are not dropped.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   check there is no rule listed.
> -   verify the packets hit the rule are not dropped.
> -
> -Test case: MAC_IPV4_TUN_MAC_IPV4_SCTP drop
> -==========================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions drop /
> end
> -
> -2. send matched packets, check the packets dropped.
> -   send mismatched packets, check the packets are not dropped.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   check there is no rule listed.
> -   verify the packets hit the rule are not dropped.
> -
> -Test case: MAC_IPV4_PAY queue group
> -===================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss
> queues 0 1 end / end
> -
> -2. send matched packets, check the packets are distributed to queue 0 or 1.
> -   send mismatched packets, check the packets are not distributed to queue
> 0 or 1.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify pkt1 and pkt2 are not distributed to queue 0 or 1.
> -   check there is no rule listed.
> -
> -Test case: MAC_IPV4_UDP queue group
> -===================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end
> actions rss queues 1 2 3 4 end / end
> -
> -2. send matched packets, check the packets are distributed to queue group.
> -   send mismatched packets, check the packets are not distributed to queue
> group.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify the packets hit rule are not distributed to queue group.
> -   check there is no rule listed.
> -
> -Test case: MAC_IPV4_TCP queue group
> -===================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / tcp src is 22 dst is 23 / end
> actions rss queues 56 57 58 59 60 61 62 63 end / end
> -
> -2. send matched packets, check the packets are distributed to queue group.
> -   send mismatched packets, check the packets are not distributed to queue
> group.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify the packets hit rule are not distributed to queue group.
> -   check there is no rule listed.
> -
> -Test case: MAC_IPV4_SCTP queue group
> -====================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / sctp src is 22 dst is 23 tag is 1
> / end actions rss queues 0 1 2 3 end / end
> -
> -2. send matched packets, check the packets are distributed to queue group.
> -   send mismatched packets, check the packets are not distributed to queue
> group.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify the packets hit rule are not distributed to queue group.
> -   check there is no rule listed.
> -
> -Test case: MAC_IPV6_PAY queue group
> -===================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 1 hop is 2
> tc is 1 / end actions rss queues 1 2 end / end
> -
> -2. send matched packets, check the packets are distributed to queue group.
> -   send mismatched packets, check the packets are not distributed to queue
> group.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify the packets hit rule are not distributed to queue group.
> -   check there is no rule listed.
> -
> -Test case: MAC_IPV6_UDP queue group
> -===================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 /
> udp src is 22 dst is 23 / end actions rss queues 1 2 end / end
> -
> -2. send matched packets, check the packets are distributed to queue group.
> -   send mismatched packets, check the packets are not distributed to queue
> group.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify the packets hit rule are not distributed to queue group.
> -   check there is no rule listed.
> -
> -Test case: MAC_IPV6_TCP queue group
> -===================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp
> src is 22 dst is 23 / end actions rss queues 1 2 end / end
> -
> -2. send matched packets, check the packets are distributed to queue group.
> -   send mismatched packets, check the packets are not distributed to queue
> group.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify the packets hit rule are not distributed to queue group.
> -   check there is no rule listed.
> -
> -Test case: MAC_IPV6_SCTP queue group
> -====================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 /
> sctp src is 22 dst is 23 / end actions rss queues 1 2 end / end
> -
> -2. send matched packets, check the packets are distributed to queue group.
> -   send mismatched packets, check the packets are not distributed to queue
> group.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify the packets hit rule are not distributed to queue group.
> -   check there is no rule listed.
> -
> -Test case: MAC_IPV4_TUN_IPV4_PAY queue group
> -============================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 9 10 11 12 13 14 15
> 16 17 18 19 20 21 22 23 24 end / end
> -
> -2. send matched packets, check the packets are distributed to queue group.
> -   send mismatched packets, check the packets are not distributed to queue
> group.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify the packets hit rule are not distributed to queue group.
> -   check there is no rule listed.
> -
> -Test case: MAC_IPV4_TUN_IPV4_UDP queue group
> -============================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions rss
> queues 38 39 40 41 end / end
> -
> -2. send matched packets, check the packets are distributed to queue group.
> -   send mismatched packets, check the packets are not distributed to queue
> group.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify the packets hit rule are not distributed to queue group.
> -   check there is no rule listed.
> -
> -Test case: MAC_IPV4_TUN_IPV4_TCP queue group
> -============================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss
> queues 1 2 end / end
> -
> -2. send matched packets, check the packets are distributed to queue group.
> -   send mismatched packets, check the packets are not distributed to queue
> group.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify the packets hit rule are not distributed to queue group.
> -   check there is no rule listed.
> -
> -Test case: MAC_IPV4_TUN_IPV4_SCTP queue group
> -=============================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions rss
> queues 1 2 end / end
> -
> -2. send matched packets, check the packets are distributed to queue group.
> -   send mismatched packets, check the packets are not distributed to queue
> group.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify the packets hit rule are not distributed to queue group.
> -   check there is no rule listed.
> -
> -Test case: MAC_IPV4_TUN_MAC_IPV4_PAY queue group
> -================================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions rss queues 1 2 end / end
> -
> -2. send matched packets, check the packets are distributed to queue group.
> -   send mismatched packets, check the packets are not distributed to queue
> group.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify the packets hit rule are not distributed to queue group.
> -   check there is no rule listed.
> -
> -Test case: MAC_IPV4_TUN_MAC_IPV4_UDP queue group
> -================================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions rss
> queues 1 2 end / end
> -
> -2. send matched packets, check the packets are distributed to queue group.
> -   send mismatched packets, check the packets are not distributed to queue
> group.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify the packets hit rule are not distributed to queue group.
> -   check there is no rule listed.
> -
> -Test case: MAC_IPV4_TUN_MAC_IPV4_TCP queue group
> -================================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss
> queues 1 2 end / end
> -
> -2. send matched packets, check the packets are distributed to queue group.
> -   send mismatched packets, check the packets are not distributed to queue
> group.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify the packets hit rule are not distributed to queue group.
> -   check there is no rule listed.
> -
> -Test case: MAC_IPV4_TUN_MAC_IPV4_SCTP queue group
> -=================================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions rss
> queues 1 2 end / end
> -
> -2. send matched packets, check the packets are distributed to queue group.
> -   send mismatched packets, check the packets are not distributed to queue
> group.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify the packets hit rule are not distributed to queue group.
> -   check there is no rule listed.
> -
> -Test case: queue group wrong parameters
> -=======================================
> -
> -1. invalid number of queues::
> -
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss
> queues 0 1 2 end / end
> -
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss
> queues 0 end / end
> -
> -2. Discontinuous queues::
> -
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss
> queues 1 2 3 5 end / end
> -
> -3. invalid queue index::
> -
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions rss
> queues 63 64 end / end
> -
> -4. "--rxq=32 --txq=32", set queue group 64 queues::
> -
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions rss queues 0 1 2
> 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
> 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
> 58 59 60 61 62 63 end / end
> -
> -all the above five rules are failed to created.
> -
> -5. "--rxq=64 --txq=64", set queue group 64 queues,
> -   create the 64 queues flow successfully.
> -   send matched packets, check the packets are distributed to queue 0-63.
> -   send mismatched packets, check the packets are distributed to queue 0-63
> too.
> -
> -Test case: MAC_IPV4_GTPU_EH queue index
> -=======================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x34 / end actions queue index 1 / end
> -
> -2. send matched packets, check the packets are distributed to queue 1.
> -   send mismatched packets, check the packets are not distributed to queue
> 1.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify matched packets are not distributed to queue 1.
> -   Then check there is no rule listed.
> -
> -Test case: MAC_IPV4_GTPU_EH passthru/mark
> -=========================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x34 / end actions passthru / mark / end
> -
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify matched packets are redirected to the same queue without FDIR ID.
> -   check there is no rule listed.
> -
> -Test case: MAC_IPV4_GTPU_EH mark/rss
> -====================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x34 / end actions mark id 1 / rss / end
> -
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID 1.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID 1.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify matched packets are redirected to the same queue without FDIR ID.
> -   check there is no rule listed.
> -
> -Test case: MAC_IPV4_GTPU_EH drop
> -================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x34 / end actions drop / end
> -
> -2. send matched packets, check the packets are dropped.
> -   send mismatched packets, check the packets are not dropped.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify matched packets are not dropped.
> -   Then check there is no rule listed.
> -
> -Test case: MAC_IPV4_GTPU_EH queue group
> -=======================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x34 / end actions rss queues 0 1 end / end
> -
> -2. send matched packets, check the packets are distributed to queue group.
> -   send mismatched packets, check the packets are not distributed to queue
> group.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify matched packets are not distributed to queue group.
> -   Then check there is no rule listed.
> -
> -Test case: MAC_IPV4_GTPU queue index
> -====================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> end actions queue index 1 / end
> -
> -2. send matched packets, check the packets are distributed to queue 1.
> -   send mismatched packets, check the packets are not distributed to queue
> 1.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify matched packets are not distributed to queue 1.
> -   Then check there is no rule listed.
> -
> -Test case: MAC_IPV4_GTPU passthru/mark
> -======================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> end actions passthru / mark / end
> -
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify matched packets are redirected to the same queue without FDIR ID.
> -   check there is no rule listed.
> -
> -Test case: MAC_IPV4_GTPU mark/rss
> -=================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> end actions mark id 1 / rss / end
> -
> -2. send matched packets, check the packets are redirected by RSS with FDIR
> ID 1.
> -   send mismatched packets, check the packets are redirected by RSS without
> FDIR ID 1.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify matched packets are redirected to the same queue without FDIR ID.
> -   check there is no rule listed.
> -
> -Test case: MAC_IPV4_GTPU drop
> -=============================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> end actions drop / end
> -
> -2. send matched packets, check the packets are dropped.
> -   send mismatched packets, check the packets are not dropped.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> +    Invalid queue region indexes.: Invalid argument
> 
> -   check the existing rule.
> -   destroy the rule::
> +4. "--rxq=7 --txq=7", set queue group 8 queues::
> 
> -    testpmd> flow destroy 0 rule 0
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions rss queues 0 1 2
> 3 4 5 6 7 end / end
> 
> -   verify matched packets are not dropped.
> -   Then check there is no rule listed.
> +   Failed to create flow, report message::
> 
> -Test case: MAC_IPV4_GTPU queue group
> -====================================
> +    Invalid queue region indexes.: Invalid argument
> 
> -1. create filter rules::
> +5. check there is no rule listed.
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> end actions rss queues 0 1 end / end
> +6. "--rxq=8 --txq=8", set queue group 8 queues,
> +   create the 8 queues flow successfully.
> +   send matched packets, check the packets are distributed to queue 0-7.
> +   send mismatched packets, check the packets are distributed to queue 0-7
> too.
> 
> -2. send matched packets, check the packets are distributed to queue group.
> -   send mismatched packets, check the packets are not distributed to queue
> group.
> +Subcase 3: Invalid parameters of input set
> +------------------------------------------
> 
> -3. verify rules can be listed and destroyed::
> +1. Invalid value of teid and qfi::
> 
> -    testpmd> flow list 0
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x100 / end actions queue index 1 / end
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x100000000 /
> gtp_psc qfi is 0x5 / end actions queue index 2 / end
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x100000000 /
> end actions queue index 1 / end
> 
> -   check the existing rule.
> -   destroy the rule::
> +   Failed to create flow, report message "Bad arguments"
> 
> -    testpmd> flow destroy 0 rule 0
> +2. check there is no rule listed.
> 
> -   verify matched packets are not distributed to queue group.
> -   Then check there is no rule listed.
> +Subcase 4: Invalid parameters of mark ID
> +----------------------------------------
> 
> -Test case: MAC_IPV4_GTPU_EH mark/count/query
> -============================================
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x34 / end actions queue index 2 / mark id 2 / count / end
> -
> -2. send matched packets, check the packets are distributed to queue 2, the
> FDIR=0x2.
> -   send mismatched packets, check the packets are not distributed to queue
> 2, no FDIR.
> -   check the count number::
> -
> -    flow query 0 0 count
> -    count:
> -     hits_set: 1
> -     bytes_set: 0
> -     hits: 10
> -     bytes: 0
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify matched packets are not distributed to queue 2, and no FDIR.
> -   Then check there is no rule listed.
> -
> -Test case: MAC_IPV4_GTPU mark/count/query
> -=========================================
> -
> -1. create filter rules on port 1::
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 / end actions queue index 1 / mark id 4294967296 / end
> 
> -    flow create 1 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> end actions rss queues 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
> 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
> 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 end / mark id 100 / count /
> end
> +   Failed to create flow, report message "Bad arguments"
> 
> -2. send matched packets, check the packets are distributed to queue in 0-63,
> the FDIR=0x64::
> +2. check there is no rule listed.
> 
> -    p_gtpu1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x35)/IP()/Raw('x'*20)
> -    p_gtpu2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IP()/Raw('x'*20)
> +Subcase 5: Duplicated rules
> +---------------------------
> 
> -   send mismatched packets, check the packets have not FDIR::
> +1. Create a FDIR rule::
> 
> -    p_gtpu2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x1234567)/IP()/Raw('x'*20)
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 1 /
> end
> 
> -   check the count number::
> +   the rule is created successfully.
> 
> -    flow query 1 0 count
> -    count:
> -     hits_set: 1
> -     bytes_set: 0
> -     hits: 2
> -     bytes: 0
> +2. Create the same rule again, Failed to create flow, report message::
> 
> -3. verify rules can be listed and destroyed::
> +    Rule already exists!: File exists
> 
> -    testpmd> flow list 1
> +3. check there is only one rule listed.
> 
> -   check the existing rule.
> -   destroy the rule::
> +Subcase 6: conflicted rules
> +---------------------------
> 
> -    testpmd> flow destroy 1 rule 0
> +1. Create a FDIR rule::
> 
> -   verify matched packets are distributed to queue in 0-63, and no FDIR.
> -   Then check there is no rule listed.
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 1 /
> end
> 
> -Test case: MAC_IPV4_GTPU_EH QFI mark/count/query
> -================================================
> +   the rule is created successfully.
> 
> -1. create filter rules on port 1::
> +2. Create a rule with same input set but different action::
> 
> -    flow create 1 ingress pattern eth / ipv4 / udp / gtpu / gtp_psc qfi is 0x34 /
> end actions drop / mark id 3 / count / end
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 2 /
> end
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions drop / end
> 
> -2. send matched packets, check the packets are dropped::
> +   Failed to create the two flows, report message::
> 
> -    p_gtpu1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255)/GTP_P
> DUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IP()/TCP()/Raw('x'*20)
> +    Rule already exists!: File exists
> 
> -   send mismatched packets, check the packets are not dropped, no FDIR::
> +3. check there is only one rule listed.
> 
> -    p_gtpu2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255)/GTP_P
> DUSession_ExtensionHeader(pdu_type=0, qos_flow=0x35)/IP()/Raw('x'*20)
> +Subcase 7: conflicted actions
> +-----------------------------
> 
> -   check the count number::
> +1. Create a rule with two conflicted actions::
> 
> -    flow query 1 0 count
> -    count:
> -     hits_set: 1
> -     bytes_set: 0
> -     hits: 1
> -     bytes: 0
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions queue index 1 /
> rss queues 2 3 end / end
> 
> -3. verify rules can be listed and destroyed::
> +   Failed to create flow, report message::
> 
> -    testpmd> flow list 1
> +    Invalid input action: Invalid argument
> 
> -   check the existing rule.
> -   destroy the rule::
> +2. check there is no rule listed.
> 
> -    testpmd> flow destroy 1 rule 0
> +Subcase 8: void action
> +----------------------
> 
> -   verify matched packets are not dropped, and no FDIR.
> -   Then check there is no rule listed.
> +1. Create a rule with void action::
> 
> -Test case: MAC_IPV4_GTPU_EH without QFI mark/count/query
> -========================================================
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions end
> 
> -1. create filter rules on port 0::
> +   Failed to create flow, report message::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc / end actions queue index 15 / mark id 3 / count / end
> +    Invalid input action: Invalid argument
> 
> -2. send matched packets, check the packets are distributed to queue 15, the
> FDIR=0x3::
> +2. check there is no rule listed.
> 
> -    p_gtpu1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0)/IP()/TCP(
> )/Raw('x'*20)
> +Subcase 9: unsupported action
> +-----------------------------
> 
> -   send mismatched packets, check the packets are not distributed to queue
> 15, no FDIR::
> +1. Create a rule with count action only::
> 
> -    p_gtpu2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x1234567)/GTP_PDUSession_ExtensionHeader(pdu_type=0)/IP()/TCP()
> /Raw('x'*20)
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / end actions count / end
> 
> -   check the count number::
> +   Failed to create flow, report message::
> 
> -    flow query 0 0 count
> -    count:
> -     hits_set: 1
> -     bytes_set: 0
> -     hits: 1
> -     bytes: 0
> +    Invalid input action: Invalid argument
> 
> -3. verify rules can be listed and destroyed::
> +2. check there is no rule listed.
> 
> -    testpmd> flow list 0
> +Subcase 10: delete a non-existent rule
> +--------------------------------------
> 
> -   check the existing rule.
> -   destroy the rule::
> +1. show the rule list of port 0::
> 
> -    testpmd> flow destroy 0 rule 0
> +    flow list 0
> 
> -   verify matched packets are not distributed to queue 15, and no FDIR.
> -   Then check there is no rule listed.
> +   There is no rule listed.
> 
> -Test case: MAC_IPV4_GTPU_EH multirules
> -======================================
> +2. destroy rule 0 of port 0::
> 
> -1. create filter rules on port 0::
> +    flow destroy 0 rule 0
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x34 / end actions queue index 1 / end
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x35 / end actions queue index 2 / end
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x1234567 /
> gtp_psc qfi is 0x35 / end actions queue index 3 / end
> +   There is no error message reported.
> 
> -   the three rules are created successfully.
> -   then create the following rules::
> +3. check there is no rule listed.
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x1234567 /
> gtp_psc qfi is 0x35 / end actions queue index 3 / end
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x1234567 /
> gtp_psc qfi is 0x35 / end actions queue index 4 / end
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x1234567 /
> gtp_psc qfi is 0x75 / end actions queue index 4 / end
> +4. flush rules of port 0::
> 
> -   the three rules are failed to created.
> -   then create the following rule::
> +    flow flush 0
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x1234567 /
> gtp_psc qfi is 0x34 / end actions queue index 3 / end
> +   There is no error message reported.
> 
> -   the rule is created successfully.
> +5. check there is no rule listed.
> 
> -2. send matched packets::
> +Subcase 11: unsupported input set field
> +---------------------------------------
> 
> -    p_gtpu1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IP()/Raw('x'*20)
> -    p_gtpu2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x1234567)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IP()/Raw('x'*20)
> -    p_gtpu3 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x35)/IP()/Raw('x'*20)
> -    p_gtpu4 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x1234567)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x35)/IP()/Raw('x'*20)
> +1. Create a IPV4_PAY rule with TC input set::
> 
> -   check the packets, p_gtpu1 to queue 1, p_gtpu2 to queue 3, p_gtpu3 to
> queue 2, p_gtpu4 to queue 3.
> -   send mismatched packets, check the packets are not distributed to queue
> 1-3::
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 tc is 2 / end actions queue index 1 / end
> 
> -    p_gtpu5 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x1234567)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x36)/IP()/Raw('x'*20)
> +   Failed to create flow, report message::
> 
> -3. verify rules can be listed and destroyed::
> +    Bad arguments
> 
> -    testpmd> flow list 0
> +2. check there is no rule listed.
> 
> -   check the existing rule.
> -   destroy the rule::
> +Subcase 12: invalid port
> +------------------------
> 
> -    testpmd> flow flush 0
> +1. Create a rule on port 2::
> 
> -   verify matched packets are not distributed to same queue.
> -   Then check there is no rule listed.
> +    flow create 2 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / end
> 
> -Test case: MAC_IPV4_GTPU_EH two ports
> -=====================================
> +   Failed to create flow, report message::
> 
> -1. create filter rules on two ports::
> +    No such device: No such device
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x34 / end actions queue index 1 / end
> -    flow create 1 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x34 / end actions queue index 1 / end
> +2. check there is no rule listed on port 2::
> 
> -   send matched packets::
> +    testpmd> flow list 2
> +    Invalid port 2
> 
> -    p_gtpu1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IP()/Raw('x'*20)
> +Subcase 13: unsupported pattern
> +-------------------------------
> 
> -   send the packet to two ports, both are distributed to queue 1.
> +1. Create a GTPU rule with OS default package::
> 
> -2. create filter rules on two ports::
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x34 / end actions drop / end
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x35 / end actions queue index 2 / end
> -    flow create 1 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x35 / end actions queue index 3 / end
> +   Failed to create flow, report error message.
> 
> -   send matched packets::
> +2. check there is no rule listed.
> 
> -    p_gtpu2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x35)/IP()/Raw('x'*20)
> +Subcase 14: conflict patterns
> +-----------------------------
> 
> -   send the packet to two ports, both are distributed to expected queue.
> +Note: MAC_IPV4_UDP packet can match MAC_IPV4_PAY rule if ip address
> can match.
> +so if there is a MAC_IPV4_PAY rule existing,
> +MAC_IPV4_UDP rule will be set to switch rule.
> +set "--log-level=ice,7", then check::
> 
> -3. flush the rules::
> +    ice_flow_create(): Succeeded to create (1) flow -> FDIR
> +    ice_flow_create(): Succeeded to create (2) flow -> switch
> 
> -    flow flush 0
> -    flow flush 1
> +1. set MAC_IPV4_PAY rule firstly::
> 
> -4. create filter rules on two ports::
> +    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / end actions
> queue index 1 / end
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x34 / end actions queue index 1 / end
> -    flow create 1 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> end actions queue index 2 / end
> +   the first flow rule is set to fdir filter, send matched packet::
> 
> -   send matched packets::
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0
> .21")/Raw('x' * 80)],iface="enp175s0f0", count=10)
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0
> .21") /UDP(sport=22, dport=23)/ Raw('x' * 80)],iface="enp175s0f0", count=10)
> 
> -    p_gtpu2 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x35)/IP()/Raw('x'*20)
> -    p_gtpu3 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:00:00:00:01:03")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IP()/Raw('x'*20)
> +   the two packets are both redirected to queue 1.
> +   then create MAC_IPV4_UDP flow, it is set to switch filter::
> 
> -   send the packets to two ports,
> -   p_gtpu2 is not distributed to queue 1 of port 0, it is distributed to queue 2
> of port 1.
> -   p_gtpu3 is distributed to queue 2 of port 1, it is distributed to queue 1 of
> port 0.
> +    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp src is 22
> dst is 23 / end actions queue index 2 / end
> 
> -5. verify rules can be listed and destroyed::
> +   send same packets, MAC_IPV4_PAY packet to queue 1, MAC_IPV4_UDP
> packet to queue 2.
> 
> -    testpmd> flow list 0
> -    testpmd> flow list 1
> +2. flush the rules.
> 
> -   check the existing rules.
> -   destroy the rule::
> +3. set MAC_IPV4_UDP rule firstly::
> 
> -    testpmd> flow destroy 0 rule 0
> -    testpmd> flow destroy 1 rule 0
> +    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp src is 22
> dst is 23 / end actions queue index 2 / end
> 
> -   verify matched packets are not distributed to expected queue.
> -   Then check there is no rule listed.
> +   the first rule is set to fdir filter, send matched packet::
> 
> -Test case: MAC_IPV4_GTPU_EH wrong parameters
> -============================================
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0
> .21") /UDP(sport=22, dport=23)/ Raw('x' * 80)],iface="enp175s0f0", count=10)
> 
> -1. create filter rules on port 0::
> +   the packet is redirected to queue 2.
> +   then create MAC_IPV4_PAY rule, it is set to switch filter::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x100 / end actions queue index 1 / end
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x100000000 /
> gtp_psc qfi is 0x5 / end actions queue index 2 / end
> +    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / end actions
> queue index 1 / end
> 
> -   the two flows can not be created successfully, report proper error
> message.
> +   send same packet, it is redirected to queue 1, because the packet match
> switch filter first.
> 
> -2. list the flow::
> 
> -    testpmd> flow list 0
> +Test case: count/query
> +======================
> 
> -   there is no flow listed.
> +Subcase 1: count for 1 rule of 1 port
> +-------------------------------------
> 
> -Test case: MAC_IPV4_GTPU wrong parameters
> -=========================================
> +1. create filter rules::
> 
> -1. create filter rules on port 0::
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions
> queue index 1 / count / end
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x100000000 /
> end actions queue index 1 / end
> +2. send matched packets, check the packets are redirected to queue 1.
> +   send mismatched packets, check the packets are redirected by RSS.
> +   check the count number::
> 
> -   the flow can not be created successfully.
> +    flow query 0 0 count
> +    count:
> +     hits_set: 1
> +     bytes_set: 0
> +     hits: 2
> +     bytes: 0
> 
> -2. list the flow::
> +3. verify rules can be listed and destroyed::
> 
>      testpmd> flow list 0
> 
> -   there is no flow listed.
> +   check the existing rule.
> +   destroy the rule::
> +
> +    testpmd> flow destroy 0 rule 0
> +
> +   verify matched packets are redirected by RSS.
> +   check there is no rule listed.
> +
> +4.  check the count number::
> 
> -Test case: count query identifier share
> -=======================================
> +     testpmd> flow query 0 0 count
> +     Flow rule #0 not found
> +
> +Subcase 2: count query identifier share
> +---------------------------------------
> 
>  1. create filter rules::
> 
>      flow create 0 ingress pattern eth / ipv4 src is 192.168.0.1 / end actions
> queue index 1 / count identifier 0x1234 shared on / end
> -    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / end actions
> queue index 2 / count identifier 0x1234 shared on / end
> -    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.3 / end actions
> queue index 3 / count identifier 0x1234 shared off / end
> -    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.4 / end actions
> queue index 4 / count identifier 0x1234 / end
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / end actions rss
> queues 2 3 end / count identifier 0x1234 shared on / end
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.3 / end actions
> passthru / mark / count identifier 0x1234 shared off / end
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.4 / end actions
> mark id 1 / rss / count identifier 0x1234 / end
>      flow create 0 ingress pattern eth / ipv4 src is 192.168.0.5 / end actions
> queue index 5 / count shared on / end
>      flow create 0 ingress pattern eth / ipv4 src is 192.168.0.6 / end actions
> drop / count shared on / end
>      flow create 0 ingress pattern eth / ipv4 src is 192.168.0.7 / end actions
> drop / count identifier 0x1235 shared on / end
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.8 / end actions rss
> / count / end
> 
>  2. send matched packets::
> 
> @@ -2887,10 +2042,15 @@ Test case: count query identifier share
> 
> sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.5",dst="192.168.0.
> 21") / Raw('x' * 80)],iface="enp175s0f0", count=10)
> 
> sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.6",dst="192.168.0.
> 21") / Raw('x' * 80)],iface="enp175s0f0", count=10)
> 
> sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.7",dst="192.168.0.
> 21") / Raw('x' * 80)],iface="enp175s0f0", count=10)
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.8",dst="192.168.0.
> 21") / Raw('x' * 80)],iface="enp175s0f0", count=10)
> 
>     check the packets,
> -   packet 1 to queue 1, packet 2 to queue 2, packet 3 to queue 3, packet 4 to
> queue 4, packet 5 to queue 5,
> +   packet 1 to queue 1, packet 2 to queue 2 or queue 3,
> +   packet 3 is distributed by RSS with FDIR matched ID=0x0,
> +   packet 4 is distributed by RSS with FDIR matched ID=0x1,
> +   packet 5 to queue 5,
>     packet 6 dropped, packet 7 dropped.
> +   packet 8 is distributed by RSS.
> 
>  3. query count::
> 
> @@ -2936,6 +2096,12 @@ Test case: count query identifier share
>       bytes_set: 0
>       hits: 10
>       bytes: 0
> +    testpmd> flow query 0 7 count
> +    COUNT:
> +     hits_set: 1
> +     bytes_set: 0
> +     hits: 10
> +     bytes: 0
> 
>  4. verify rules can be listed and destroyed::
> 
> @@ -2946,21 +2112,23 @@ Test case: count query identifier share
> 
>      testpmd> flow flush 0
> 
> -   verify matched packet are not distributed to same queue.
> -   check there is no rule listed.
> +5. check there is no rule listed,
> +   send matched packets, query count, flow rule not found.
> 
> -Test case: multi patterns count query
> -=====================================
> +Subcase 3: multi patterns mark count query
> +------------------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / tcp src is 22
> dst is 23 / end actions queue index 1 / count / end
> -    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp src is 22
> dst is 23 / end actions drop / count / end
> -    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / sctp src is 22
> dst is 23 / end actions rss queues 62 63 end / count / end
> -    flow create 0 ingress pattern eth / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 / end actions
> queue index 1 / count / end
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue
> index 3 / count / end
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 / tcp dst is 23 / end actions queue index 4 / count / end
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions queue
> index 5 / count / end
> +    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / tcp src is 22
> dst is 23 / end actions queue index 1 / mark id 0 / count / end
> +    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp src is 22
> dst is 23 / end actions drop / mark id 1 / count / end
> +    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / sctp src is 22
> dst is 23 / end actions rss queues 62 63 end / mark id 2 / count / end
> +    flow create 0 ingress pattern eth / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 / end actions
> queue index 1 / mark id 3 / count / end
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue
> index 3 / mark id 4 / count / end
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 / tcp dst is 23 / end actions queue index 4 / count / mark id 5 /
> end
> +    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions queue
> index 5 / mark id 6 / count / end
> +    flow create 1 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> end actions rss queues 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
> 22 23 24 25 26 27 28 29 30 31 \
> +    32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
> 57 58 59 60 61 62 63 end / mark id 100 / count / end
> 
>  2. send matched packets::
> 
> @@ -2971,10 +2139,12 @@ Test case: multi patterns count query
> 
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP(dport=4790)/VXLAN(flags=0
> xc)/IP(dst="192.168.0.21",
> src="192.168.0.20")/UDP(sport=22,dport=23)/("X"*480)], iface="enp175s0f0",
> count=10)
> 
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/VXLAN(vni=2)/Ether(dst="
> 00:11:22:33:44:55")/IP(src="192.168.0.20")/TCP(dport=23)/("X"*480)],
> iface="enp175s0f0", count=10)
> 
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/VXLAN(vni=2)/Ether()/IP(s
> rc='192.168.0.20', dst='192.168.0.21')/SCTP(sport=22,dport=23)/("X"*480)],
> iface="enp175s0f0", count=10)
> +    sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152)/GTP_U_Header(gtp_type=255,
> teid=0x12345678)/IP()/Raw('x'*20)], iface="enp175s0f0", count=10)
> 
>     check the packets,
>     packet 1 to queue 1, packet 2 dropped, packet 3 to queue 62-63, packet 4
> to queue 1, packet 5 to queue 3,
> -   packet 6 to queue 4, packet 7 to queue 5.
> +   packet 6 to queue 4, packet 7 to queue 5, packet 8 is distributed by RSS.
> +   all the packets are received with FDIR matched ID.
> 
>  3. query count::
> 
> @@ -3020,630 +2190,423 @@ Test case: multi patterns count query
>       bytes_set: 0
>       hits: 10
>       bytes: 0
> +    testpmd> flow query 0 7 count
> +    COUNT:
> +     hits_set: 1
> +     bytes_set: 0
> +     hits: 10
> +     bytes: 0
> 
> -4. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   There are 7 rules listed.
> -   destroy the rule 0::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify the packet matching rule 0 is not distributed to queue 1.
> -   check rule 1-6 listed.
> -
> -5. destroy the rule 6::
> -
> -    testpmd> flow destroy 0 rule 6
> -
> -   verify the packet matching rule 6 is not distributed to queue 5.
> -   check rule 1-5 listed.
> -
> -6. destroy the rule 3::
> -
> -    testpmd> flow destroy 0 rule 3
> -
> -   verify the packet matching rule 3 is not distributed to queue 1.
> -   check rule 1/2/4/5 listed.
> -
> -7. flush the all the rules::
> -
> -    testpmd> flow flush 0
> -
> -   verify the matched packets are not distributed to the same queue.
> -   check no rule listed.
> -
> -Test case: two ports multi patterns count query
> -===============================================
> -
> -1. create filter rules::
> -
> -    flow create 1 ingress pattern eth / ipv4 dst is 192.168.0.21 proto is 255  tos
> is 4 / end actions queue index 1 / count / end
> -    flow create 1 ingress pattern eth / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 /
> sctp src is 22 dst is 23 / end actions rss queues 6 7 end / count / end
> -    flow create 1 ingress pattern eth / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 /
> udp src is 22 dst is 23 / end actions rss queues 6 7 end / count / end
> -    flow create 1 ingress pattern eth / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp
> src is 22 dst is 23 / end actions queue index 2 / count / end
> -    flow create 1 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions drop / count / end
> -    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 tos is 4 / tcp src
> is 22 dst is 23 / end actions drop / count / end
> -    flow create 0 ingress pattern eth / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 / end actions
> queue index 1 / count / end
> -
> -2. send matched packets::
> -
> -
> sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0
> .21", proto=255, ttl=2, tos=4) / Raw('x' * 80)],iface="enp175s0f1", count=10)
> -
> sendp([Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:847
> 5:1111:3900:2020", src="2001::2", tc=1,
> hlim=2)/SCTP(sport=22,dport=23)/("X"*480)], iface="enp175s0f1", count=10)
> -
> sendp([Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:847
> 5:1111:3900:2020", src="2001::2", tc=1,
> hlim=2)/UDP(sport=22,dport=23)/("X"*480)], iface="enp175s0f1", count=10)
> -
> sendp([Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:847
> 5:1111:3900:2020", src="2001::2", tc=1,
> hlim=2)/TCP(sport=22,dport=23)/("X"*480)], iface="enp175s0f1", count=10)
> -
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/VXLAN()/Ether()/IP(src='1
> 92.168.0.20', dst='192.168.0.21')/("X"*480)], iface="enp175s0f1", count=10)
> -    sendp([Ether(dst="00:11:22:33:44:55")/IP(dst="192.168.0.21", ttl=2,
> tos=4)/TCP(sport=22,dport=23)/Raw(load="X"*480)], iface="enp175s0f0",
> count=10)
> -
> sendp([Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:847
> 5:1111:3900:2020", src="2001::2", nh=0, tc=1, hlim=2)/("X"*480)],
> iface="enp175s0f0", count=10)
> -    sendp([Ether(dst="00:11:22:33:44:55")/IP(dst="192.168.0.21", ttl=2,
> tos=4)/TCP(sport=22,dport=23)/Raw(load="X"*480)], iface="enp175s0f1",
> count=10)
> -
> -   check the packets,
> -   packet 1 to queue 1 of port 1, packet 2 to queue 6-7 of port 1, packet 3 to
> queue 6-7 of port 1,
> -   packet 4 to queue 2 of port 1, packet 5 dropped of port 1,
> -   packet 6 to dropped of port 0, packet 7 to queue 1 of port 0.
> -   packet 8 received by port 1.
> -
> -3. query count::
> -
> -    testpmd> flow query 1 0 count
> -    COUNT:
> -     hits_set: 1
> -     bytes_set: 0
> -     hits: 10
> -     bytes: 0
> -    testpmd> flow query 1 1 count
> -    COUNT:
> -     hits_set: 1
> -     bytes_set: 0
> -     hits: 10
> -     bytes: 0
> -    testpmd> flow query 1 2 count
> -    COUNT:
> -     hits_set: 1
> -     bytes_set: 0
> -     hits: 10
> -    testpmd> flow query 1 3 count
> -    COUNT:
> -     hits_set: 1
> -     bytes_set: 0
> -     hits: 10
> -     bytes: 0
> -    testpmd> flow query 1 4 count
> -    COUNT:
> -     hits_set: 1
> -     bytes_set: 0
> -     hits: 10
> -     bytes: 0
> -    testpmd> flow query 0 0 count
> -    COUNT:
> -     hits_set: 1
> -     bytes_set: 0
> -     hits: 10
> -    testpmd> flow query 0 1 count
> -    COUNT:
> -     hits_set: 1
> -     bytes_set: 0
> -     hits: 10
> -
> -4. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -    testpmd> flow list 1
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow flush 0
> -    testpmd> flow flush 1
> -
> -   verify matched packet are not distributed to same queue.
> -   check there is no rule listed::
> -
> -    testpmd> flow list 0
> -    testpmd> flow list 1
> -
> -Test case: max count
> -====================
> -
> -1. create 257 flows with count::
> -
> -    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.1 / end actions
> drop / count / end
> -    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / end actions
> drop / count / end
> -    ……
> -    flow create 0 ingress pattern eth / ipv4 src is 192.168.1.1 / end actions
> drop / count / end
> -    flow create 0 ingress pattern eth / ipv4 src is 192.168.1.2 / end actions
> drop / count / end
> -
> -   the last one failed to create.
> -
> -2. send matched packets::
> -
> -
> sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1",dst="192.168.0.
> 21") / Raw('x' * 80)],iface="enp175s0f0", count=10)
> -
> -   check the packet dropped.
> -
> -3. query count::
> -
> -    testpmd> flow query 0 255 count
> -    COUNT:
> -     hits_set: 1
> -     bytes_set: 0
> -     hits: 10
> -     bytes: 0
> -
> -4. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow flush 0
> -
> -   verify matched packet are not dropped.
> -   check there is no rule listed.
> -
> -Test case: MAC_IPV4_PAY queue index mark
> -========================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 proto is 255 ttl is 2 tos is 4 / end actions
> queue index 1 / mark id 0 / end
> -
> -2. send 1 matched packet, check the packets are distributed to queue 1 with
> "FDIR matched ID=0x0" printed.
> -   send 1 mismatched packet, check the packets are not distributed to queue
> 1 without "FDIR matched" printed.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify matched packets are distributed to different queue without "FDIR
> matched" printed.
> -   Then check there is no rule listed.
> -
> -Test case: MAC_IPV4_UDP queue index mark
> -========================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end
> actions queue index 0 / mark id 1 / end
> -
> -2. send 1 matched packet, check the packets are distributed to queue 0 with
> "FDIR matched ID=0x1" printed.
> -   send 1 mismatched packet, check the packets are not distributed to queue
> 0 without "FDIR matched" printed.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify matched packets are distributed to different queue without "FDIR
> matched" printed.
> -   Then check there is no rule listed.
> -
> -Test case: MAC_IPV4_TCP queue index mark
> -========================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / tcp src is 22 dst is 23 / end
> actions queue index 1 / mark id 4294967294 / end
> -
> -2. send 1 matched packet, check the packets are distributed to queue 1 with
> "FDIR matched ID=0xfffffffe" printed.
> -   send 1 mismatched packet, check the packets are not distributed to queue
> 1 without "FDIR matched" printed.
> -
> -3. verify rules can be listed and destroyed::
> +4. verify rules can be listed and destroyed::
> 
>      testpmd> flow list 0
> 
>     check the existing rule.
>     destroy the rule::
> 
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify matched packets are distributed to different queue without "FDIR
> matched" printed.
> -   Then check there is no rule listed.
> -
> -Test case: MAC_IPV4_SCTP drop mark
> -==================================
> -
> -1. create filter rules::
> +    testpmd> flow flush 0
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / sctp src is 22 dst is 23 tag is 1
> / end actions drop / mark id 1 / end
> +5. check there is no rule listed,
> +   send matched packets, query count, flow rule not found.
> 
> -2. send 1 matched packet, check the packets are dropped.
> -   send 1 mismatched packet, check the packets are not dropped without
> "FDIR matched" printed.
> +Subcase 4: max count number
> +---------------------------
> 
> -3. verify rules can be listed and destroyed::
> +1. create 257 flows with count::
> 
> -    testpmd> flow list 0
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.1 / end actions
> drop / count / end
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 / end actions
> drop / count / end
> +    ……
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.255 / end actions
> drop / count / end
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.1.1 / end actions
> drop / count / end
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.1.2 / end actions
> drop / count / end
> 
> -   check the existing rule.
> -   destroy the rule::
> +   the last one failed to create, report the error message::
> 
> -    testpmd> flow destroy 0 rule 0
> +    No free counter found
> 
> -   verify matched packets are distributed to different queue without "FDIR
> matched" printed.
> -   Then check there is no rule listed.
> +2. send matched packets::
> 
> -Test case: MAC_IPV6_PAY queue index mark
> -========================================
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.1.1",dst="192.168.0.
> 21") / Raw('x' * 80)],iface="enp175s0f0", count=10)
> 
> -1. create filter rules::
> +   check the packet dropped.
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 proto is 1 hop is 2
> tc is 1 / end actions queue index 1 / mark id 1 / end
> +3. query count::
> 
> -2. send 1 matched packet, check the packets are distributed to queue 1 with
> "FDIR matched ID=0x1" printed.
> -   send 1 mismatched packet, check the packets are not distributed to queue
> 1 without "FDIR matched" printed.
> +    testpmd> flow query 0 255 count
> +    COUNT:
> +     hits_set: 1
> +     bytes_set: 0
> +     hits: 10
> +     bytes: 0
> 
> -3. verify rules can be listed and destroyed::
> +4. verify rules can be listed and destroyed::
> 
>      testpmd> flow list 0
> 
> -   check the existing rule.
> +   check that 256 rules listed.
>     destroy the rule::
> 
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify matched packets are distributed to different queue without "FDIR
> matched" printed.
> -   Then check there is no rule listed.
> -
> -Test case: MAC_IPV6_UDP queue index mark
> -========================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 /
> udp src is 22 dst is 23 / end actions queue index 1 / mark id 1 / end
> -
> -2. send 1 matched packet, check the packets are distributed to queue 1 with
> "FDIR matched ID=0x1" printed.
> -   send 1 mismatched packet, check the packets are not distributed to queue
> 1 without "FDIR matched" printed.
> -
> -3. verify rules can be listed and destroyed::
> +    testpmd> flow flush 0
> 
> -    testpmd> flow list 0
> +   verify matched packet are not dropped.
> +   check there is no rule listed.
> 
> -   check the existing rule.
> -   destroy the rule::
> +Test case: two ports
> +====================
> 
> -    testpmd> flow destroy 0 rule 0
> +Subcase 1: same rule on two ports
> +---------------------------------
> 
> -   verify matched packets are distributed to different queue without "FDIR
> matched" printed.
> -   Then check there is no rule listed.
> +1. create filter rules on two ports::
> 
> -Test case: MAC_IPV6_TCP queue index mark
> -========================================
> +    flow create 0 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x34 / end actions queue index 1 / mark / end
> +    flow create 1 ingress pattern eth / ipv4 / udp / gtpu teid is 0x12345678 /
> gtp_psc qfi is 0x34 / end actions queue index 1 / mark / end
> 
> -1. create filter rules::
> +   send matched packets::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp
> src is 22 dst is 23 / end actions queue index 1 / mark id 1 / end
> +    p_gtpu1 = Ether(src="a4:bf:01:51:27:ca",
> dst="00:11:22:33:44:55")/IP(src="192.168.0.20",
> dst="192.168.0.21")/UDP(dport=2152) \
> +    /GTP_U_Header(gtp_type=255,
> teid=0x12345678)/GTP_PDUSession_ExtensionHeader(pdu_type=0,
> qos_flow=0x34)/IP()/Raw('x'*20)
> 
> -2. send 1 matched packet, check the packets are distributed to queue 1 with
> "FDIR matched ID=0x1" printed.
> -   send 1 mismatched packet, check the packets are not distributed to queue
> 1 without "FDIR matched" printed.
> +   send the packet to two ports, both are distributed to queue 1 with FDIR
> matched ID=0x0.
> 
> -3. verify rules can be listed and destroyed::
> +2. list the rules on two ports::
> 
>      testpmd> flow list 0
> +    ID      Group   Prio    Attr    Rule
> +    0       0       0       i--     ETH IPV4 UDP GTPU GTP_PSC => QUEUE MARK
> +    testpmd> flow list 1
> +    ID      Group   Prio    Attr    Rule
> +    0       0       0       i--     ETH IPV4 UDP GTPU GTP_PSC => QUEUE MARK
> 
> -   check the existing rule.
> -   destroy the rule::
> +3. destroy rule 0 on port 0::
> 
>      testpmd> flow destroy 0 rule 0
> +    Flow rule #0 destroyed
> 
> -   verify matched packets are distributed to different queue without "FDIR
> matched" printed.
> -   Then check there is no rule listed.
> -
> -Test case: MAC_IPV6_SCTP queue index mark
> -=========================================
> -
> -1. create filter rules::
> -
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 /
> sctp src is 22 dst is 23 / end actions queue index 1 / mark id 1 / end
> -
> -2. send 1 matched packet, check the packets are distributed to queue 1 with
> "FDIR matched ID=0x1" printed.
> -   send 1 mismatched packet, check the packets are not distributed to queue
> 1 without "FDIR matched" printed.
> -
> -3. verify rules can be listed and destroyed::
> +   list the rules on two ports::
> 
>      testpmd> flow list 0
> +    testpmd> flow list 1
> +    ID      Group   Prio    Attr    Rule
> +    0       0       0       i--     ETH IPV4 UDP GTPU GTP_PSC => QUEUE MARK
> 
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify matched packets are distributed to different queue without "FDIR
> matched" printed.
> -   Then check there is no rule listed.
> -
> -Test case: MAC_IPV4_TUN_IPV4_PAY queue index mark
> -=================================================
> -
> -1. create filter rules::
> +4. send the matched packet to port 0, it is redirected by RSS without FDIR
> matched ID.
> +   send the matched packet to port 1, it is still redirected to queue 1 with
> FDIR matched ID=0x0.
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / mark id 1 /
> end
> +5. destroy rule 0 on port 1::
> 
> -2. send 1 matched packet, check the packets are distributed to queue 1 with
> "FDIR matched ID=0x1" printed.
> -   send 1 mismatched packet, check the packets are not distributed to queue
> 1 without "FDIR matched" printed.
> +    testpmd> flow destroy 1 rule 0
> +    Flow rule #0 destroyed
> 
> -3. verify rules can be listed and destroyed::
> +   list the rules on two ports::
> 
>      testpmd> flow list 0
> +    testpmd> flow list 1
> 
> -   check the existing rule.
> -   destroy the rule::
> +   there is no rule listed on both ports.
> +   send the matched packet to port 0/1, it is redirected by RSS without FDIR
> matched ID.
> 
> -    testpmd> flow destroy 0 rule 0
> +Subcase 2: same input set, different actions on two ports
> +---------------------------------------------------------
> 
> -   verify matched packets are distributed to different queue without "FDIR
> matched" printed.
> -   Then check there is no rule listed.
> +1. create filter rules on two ports::
> 
> -Test case: MAC_IPV4_TUN_IPV4_UDP queue group mark
> -=================================================
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is
> 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 1 / mark id 1 /
> end
> +    flow create 1 ingress pattern eth / ipv4 src is 192.168.0.20 dst is
> 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss queues 2 3 end / mark
> id 1 / end
> 
> -1. create filter rules::
> +   send matched packets to two ports::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions rss
> queues 1 2 end / mark id 1 / end
> +    pkt =
> Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/T
> CP(sport=22,dport=23)/Raw('x' * 80)
> 
> -2. send 1 matched packet, check the packets are distributed to queue 1-2
> with "FDIR matched ID=0x1" printed.
> -   send 1 mismatched packet, check the packets are not distributed to queue
> 1-2 without "FDIR matched" printed.
> +   the packet sent to port 0 is redirected to queue 1 with FDIR matched
> ID=0x1,
> +   the packet sent to port 1 is redirected to queue 2 or queue 3 with FDIR
> matched ID=0x1.
> 
> -3. verify rules can be listed and destroyed::
> +2. destroy rule 0 on both ports::
> 
> -    testpmd> flow list 0
> +    testpmd> flow flush 0
> +    testpmd> flow flush 1
> 
> -   check the existing rule.
> -   destroy the rule::
> +   list the rules on two ports::
> 
> -    testpmd> flow destroy 0 rule 0
> +    testpmd> flow list 0
> +    testpmd> flow list 1
> 
> -   verify matched packets are distributed to different queue without "FDIR
> matched" printed.
> -   Then check there is no rule listed.
> +   there is no rule listed on both ports.
> +   send the matched packet to port 0/1, it is redirected by RSS without FDIR
> matched ID.
> 
> -Test case: MAC_IPV4_TUN_IPV4_TCP drop mark
> -==========================================
> +Subcase 3: two ports multi patterns count query
> +-----------------------------------------------
> 
>  1. create filter rules::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions drop /
> mark id 1 / end
> -
> -2. send 1 matched packet, check the packets are dropped.
> -   send 1 mismatched packet, check the packets are not dropped without
> "FDIR matched" printed.
> -
> -3. verify rules can be listed and destroyed::
> -
> -    testpmd> flow list 0
> -
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> +    flow create 1 ingress pattern eth / ipv4 dst is 192.168.0.21 proto is 255
> tos is 4 / end actions queue index 1 / mark id 1 / count identifier 0x1234
> shared on / end
> +    flow create 1 ingress pattern eth / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 /
> sctp src is 22 dst is 23 / end actions rss queues 6 7 end / mark id 2 / count
> identifier 0x1234 shared on / end
> +    flow create 1 ingress pattern eth / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 /
> udp src is 22 dst is 23 / end actions rss queues 6 7 end / mark id 1 / count /
> end
> +    flow create 1 ingress pattern eth / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 hop is 2 tc is 1 / tcp
> src is 22 dst is 23 / end actions queue index 2 / mark / count / end
> +    flow create 1 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions drop / count / end
> +    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 tos is 4 / tcp src
> is 22 dst is 23 / end actions drop / count / end
> +    flow create 0 ingress pattern eth / ipv6 dst is
> CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 / end actions
> queue index 1 / mark id 1 / count identifier 0x1234 shared on / end
> 
> -   verify matched packets are dropped without "FDIR matched" printed.
> -   Then check there is no rule listed.
> +2. send matched packets::
> 
> -Test case: MAC_IPV4_TUN_IPV4_SCTP queue index mark
> -==================================================
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0
> .21", proto=255, ttl=2, tos=4) / Raw('x' * 80)],iface="enp175s0f1", count=10)
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:847
> 5:1111:3900:2020", src="2001::2", tc=1,
> hlim=2)/SCTP(sport=22,dport=23)/("X"*480)], iface="enp175s0f1", count=10)
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:847
> 5:1111:3900:2020", src="2001::2", tc=1,
> hlim=2)/UDP(sport=22,dport=23)/("X"*480)], iface="enp175s0f1", count=10)
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:847
> 5:1111:3900:2020", src="2001::2", tc=1,
> hlim=2)/TCP(sport=22,dport=23)/("X"*480)], iface="enp175s0f1", count=10)
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP()/UDP()/VXLAN()/Ether()/IP(src='1
> 92.168.0.20', dst='192.168.0.21')/("X"*480)], iface="enp175s0f1", count=10)
> +    sendp([Ether(dst="00:11:22:33:44:55")/IP(dst="192.168.0.21", ttl=2,
> tos=4)/TCP(sport=22,dport=23)/Raw(load="X"*480)], iface="enp175s0f0",
> count=10)
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:847
> 5:1111:3900:2020", src="2001::2", nh=0, tc=1, hlim=2)/("X"*480)],
> iface="enp175s0f0", count=10)
> +    sendp([Ether(dst="00:11:22:33:44:55")/IP(dst="192.168.0.21", ttl=2,
> tos=4)/TCP(sport=22,dport=23)/Raw(load="X"*480)], iface="enp175s0f1",
> count=10)
> 
> -1. create filter rules::
> +   check the packets,
> +   packet 1 to queue 1 of port 1, packet 2 to queue 6-7 of port 1, packet 3 to
> queue 6-7 of port 1,
> +   packet 4 to queue 2 of port 1, packet 5 dropped of port 1,
> +   packet 6 to dropped of port 0, packet 7 to queue 1 of port 0.
> +   packet 8 received by port 1.
> +   all the received packets have specified FDIR matched ID.
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions queue
> index 1 / mark id 1 / end
> +3. query count::
> 
> -2. send 1 matched packet, check the packets are distributed to queue 1 with
> "FDIR matched ID=0x1" printed.
> -   send 1 mismatched packet, check the packets are not distributed to queue
> 1 without "FDIR matched" printed.
> +    testpmd> flow query 1 0 count
> +    COUNT:
> +     hits_set: 1
> +     bytes_set: 0
> +     hits: 20
> +     bytes: 0
> +    testpmd> flow query 1 1 count
> +    COUNT:
> +     hits_set: 1
> +     bytes_set: 0
> +     hits: 20
> +     bytes: 0
> +    testpmd> flow query 1 2 count
> +    COUNT:
> +     hits_set: 1
> +     bytes_set: 0
> +     hits: 10
> +    testpmd> flow query 1 3 count
> +    COUNT:
> +     hits_set: 1
> +     bytes_set: 0
> +     hits: 10
> +     bytes: 0
> +    testpmd> flow query 1 4 count
> +    COUNT:
> +     hits_set: 1
> +     bytes_set: 0
> +     hits: 10
> +     bytes: 0
> +    testpmd> flow query 0 0 count
> +    COUNT:
> +     hits_set: 1
> +     bytes_set: 0
> +     hits: 10
> +    testpmd> flow query 0 1 count
> +    COUNT:
> +     hits_set: 1
> +     bytes_set: 0
> +     hits: 10
> 
> -3. verify rules can be listed and destroyed::
> +4. verify rules can be listed correctly::
> 
>      testpmd> flow list 0
> +    testpmd> flow list 1
> 
> -   check the existing rule.
> -   destroy the rule::
> +5. destroy the rule::
> 
> -    testpmd> flow destroy 0 rule 0
> +    testpmd> flow flush 0
> +    testpmd> flow flush 1
> 
> -   verify matched packets are distributed to different queue without "FDIR
> matched" printed.
> -   Then check there is no rule listed.
> +   verify matched packet are received without FDIR matched ID.
> +   check there is no rule listed::
> 
> -Test case: MAC_IPV4_TUN_MAC_IPV4_PAY queue index mark
> -=====================================================
> +    testpmd> flow list 0
> +    testpmd> flow list 1
> 
> -1. create filter rules::
> +   query the count number, all reported::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / mark id 1 /
> end
> +    Flow rule #[ID] not found
> 
> -2. send 1 matched packet, check the packets are distributed to queue 1 with
> "FDIR matched ID=0x1" printed.
> -   send 1 mismatched packet, check the packets are not distributed to queue
> 1 without "FDIR matched" printed.
> +Test case: Stress test
> +======================
> 
> -3. verify rules can be listed and destroyed::
> +Subcase 1: port stop/port start/port reset
> +------------------------------------------
> 
> -    testpmd> flow list 0
> +1. create a rule::
> 
> -   check the existing rule.
> -   destroy the rule::
> +    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / end actions queue index 1 / mark / end
> 
> -    testpmd> flow destroy 0 rule 0
> +2. list the rule and send matched packet::
> 
> -   verify matched packets are distributed to different queue without "FDIR
> matched" printed.
> -   Then check there is no rule listed.
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0
> .21") / Raw('x' * 80)],iface="enp175s0f0")
> 
> -Test case: MAC_IPV4_TUN_MAC_IPV4_UDP queue index mark
> -=====================================================
> +   check the packet are redirected to queue 1 with FDIR matched ID=0x0
> 
> -1. create filter rules::
> +3. stop the port, then start the port::
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue
> index 1 / mark id 1 / end
> +    testpmd> port stop 0
> +    testpmd> port start 0
> 
> -2. send 1 matched packet, check the packets are distributed to queue 1 with
> "FDIR matched ID=0x1" printed.
> -   send 1 mismatched packet, check the packets are not distributed to queue
> 1 without "FDIR matched" printed.
> +4. show the rule list, the rule is still there.
> 
> -3. verify rules can be listed and destroyed::
> +5. verify matched packet can be still redirected to queue 1 with FDIR
> matched ID=0x0.
> 
> -    testpmd> flow list 0
> +6. reset pf::
> 
> -   check the existing rule.
> -   destroy the rule::
> +    testpmd> port stop 0
> +    testpmd> port reset 0
> +    testpmd> port start 0
> 
> -    testpmd> flow destroy 0 rule 0
> +7. show the rule list, the rule is still there.
> 
> -   verify matched packets are distributed to different queue without "FDIR
> matched" printed.
> -   Then check there is no rule listed.
> +8. verify matched packet can be still redirected to queue 1 with FDIR
> matched ID=0x0.
> 
> +Subcase 2: add/delete rules
> +---------------------------
> 
> -Test case: MAC_IPV4_TUN_MAC_IPV4_TCP queue index mark
> -=====================================================
> +1. create two rules::
> 
> -1. create filter rules::
> +    flow create 0 ingress pattern eth / ipv4 proto is 255 / end actions queue
> index 1 / mark / end
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is
> 192.168.0.21 / tcp src is 22 dst is 23 / end actions rss queues 2 3 end / mark
> id 1 / end
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue
> index 1 / mark id 1 / end
> +   return the message::
> 
> -2. send 1 matched packet, check the packets are distributed to queue 1 with
> "FDIR matched ID=0x1" printed.
> -   send 1 mismatched packet, check the packets are not distributed to queue
> 1 without "FDIR matched" printed.
> +    Flow rule #0 created
> +    Flow rule #1 created
> 
> -3. verify rules can be listed and destroyed::
> +   list the rules::
> 
>      testpmd> flow list 0
> +    ID      Group   Prio    Attr    Rule
> +    0       0       0       i--     ETH IPV4 => QUEUE MARK
> +    1       0       0       i--     ETH IPV4 TCP => RSS MARK
> 
> -   check the existing rule.
> -   destroy the rule::
> -
> -    testpmd> flow destroy 0 rule 0
> -
> -   verify matched packets are distributed to different queue without "FDIR
> matched" printed.
> -   Then check there is no rule listed.
> -
> -Test case: MAC_IPV4_TUN_MAC_IPV4_SCTP queue index mark
> -======================================================
> +2. delete the rules::
> 
> -1. create filter rules::
> +    testpmd> flow flush 0
> 
> -    flow create 0 ingress pattern eth / ipv4 / udp / vxlan / eth / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions queue
> index 1 / mark id 1 / end
> +3. repeate the create and delete operations in step1-2 15360 times.
> 
> -2. send 1 matched packet, check the packets are distributed to queue 1 with
> "FDIR matched ID=0x1" printed.
> -   send 1 mismatched packet, check the packets are not distributed to queue
> 1 without "FDIR matched" printed.
> +4. create the two rules one more time, check the rules listed.
> 
> -3. verify rules can be listed and destroyed::
> +5. send matched packet::
> 
> -    testpmd> flow list 0
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0
> .21", proto=255)/Raw('x' * 80)],iface="enp175s0f0")
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0
> .21")/TCP(sport=22,dport=23)/Raw('x' * 80)],iface="enp175s0f0")
> 
> -   check the existing rule.
> -   destroy the rule::
> +   check packet 1 is redirected to queue 1 with FDIR matched ID=0x0
> +   check packet 2 is redirected to queue 2 or queue 3 with FDIR matched
> ID=0x1
> 
> -    testpmd> flow destroy 0 rule 0
> +Subcase 3: delete rules
> +-----------------------
> 
> -   verify matched packets are distributed to different queue without "FDIR
> matched" printed.
> -   Then check there is no rule listed.
> +1. create 3 rules and destory the first rule::
> 
> -Test case: multirules mark
> -==========================
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.56.0 dst is 192.1.0.0
> tos is 4 / tcp src is 22 dst is 23 / end actions queue index 1 / mark / end
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.56.0 dst is 192.1.0.0
> tos is 4 / tcp src is 22 dst is 24 / end actions queue index 2 / mark / end
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.56.0 dst is 192.1.0.0
> tos is 4 / tcp src is 22 dst is 25 / end actions queue index 3 / mark / end
> 
> -1. create filter rules::
> +   there are rule 0/1/2 listed::
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / udp src is 22 dst is 23 / end
> actions queue index 1 / mark id 1 / end
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / tcp src is 22 dst is 23 / end
> actions queue index 2 / mark id 1 / end
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 dst is 192.168.0.21 ttl is 2 tos is 4 / sctp src is 22 dst is 23 / end
> actions queue index 1 / mark id 2 / count / end
> +    flow list 0
> 
> -2. send matched packet::
> +   send packets match rule 0, rule 1 and rule 2,
> +   Verify all packets can be redirected to expected queue and mark.
> +   destory the first rule::
> 
> -
> sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0
> .21", ttl=2, tos=4) /UDP(sport=22,dport=23)/Raw('x' *
> 80)],iface="enp175s0f0")
> -
> sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0
> .21", ttl=2, tos=4) /TCP(sport=22,dport=23)/Raw('x' *
> 80)],iface="enp175s0f0")
> -
> sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0
> .21", ttl=2, tos=4) /SCTP(sport=22,dport=23)/Raw('x' *
> 80)],iface="enp175s0f0")
> +    flow destroy 0 rule 0
> 
> -   check packet 1 to queue 1 with "FDIR matched ID=0x1" printed.
> -   packet 2 to queue 2 with "FDIR matched ID=0x1" printed.
> -   packet 3 to queue 1 with "FDIR matched ID=0x2" printed.
> +   list the rules, verify there are only rule 1 and rule 2 listed.
> +   send packet matched rule 0, verify it is received without FDIR matched ID.
> +   send packets matched rule 1 and rule 2, Verify all packets be redirected
> and mark.
> +   flush rules::
> 
> -3. query count::
> +    flow flush 0
> 
> -    testpmd> flow query 0 2 count
> -    COUNT:
> -     hits_set: 1
> -     bytes_set: 0
> -     hits: 1
> -     bytes: 0
> +   send packets match rule 0, rule 1 and rule 2, verify all packets can not
> mark.
> 
> -4. verify rules can be listed and destroyed::
> +2. create 3 rules and destory the second rule::
> 
> -    testpmd> flow list 0
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.56.0 dst is 192.1.0.0
> tos is 4 / tcp src is 22 dst is 23 / end actions queue index 1 / mark / end
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.56.0 dst is 192.1.0.0
> tos is 4 / tcp src is 22 dst is 24 / end actions queue index 2 / mark / end
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.56.0 dst is 192.1.0.0
> tos is 4 / tcp src is 22 dst is 25 / end actions queue index 3 / mark / end
> 
> -   check 3 rules listed.
> -   destroy the rule 0::
> +   there are rule 0/1/2 listed::
> 
> -    testpmd> flow destroy 0 rule 0
> +    flow list 0
> 
> -   verify packet 1 is distributed to different queue without "FDIR matched"
> printed.
> -   Then check there is 2 rules listed.
> -   packet 2 to queue 2 with "FDIR matched ID=0x1" printed.
> -   packet 3 to queue 1 with "FDIR matched ID=0x2" printed.
> -   query count::
> +   send packets match rule 0, rule 1 and rule 2,
> +   Verify all packets can be redirected to expected queue and mark.
> +   destory the second rule::
> 
> -    testpmd> flow query 0 2 count
> -    COUNT:
> -     hits_set: 1
> -     bytes_set: 0
> -     hits: 2
> -     bytes: 0
> +    flow destroy 0 rule 1
> 
> +   list the rules, verify there are only rule 0 and rule 2 listed.
> +   send packet matched rule 1, verify it is received without FDIR matched ID.
> +   send packets matched rule 0 and rule 2, Verify all packets be redirected
> and mark.
>     flush rules::
> 
> -    testpmd> flow flush 0
> +    flow flush 0
> 
> -   verify matched packets are distributed to different queue without "FDIR
> matched" printed.
> -   Then check there is no rule listed, and no count exist.
> +   send packets match rule 0, rule 1 and rule 2, verify all packets can not
> mark.
> 
> -Test case: mark wrong parameters
> -================================
> +3. create 3 rules and destory the third rule::
> 
> -1. create filter rules::
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.56.0 dst is 192.1.0.0
> tos is 4 / tcp src is 22 dst is 23 / end actions queue index 1 / mark / end
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.56.0 dst is 192.1.0.0
> tos is 4 / tcp src is 22 dst is 24 / end actions queue index 2 / mark / end
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.56.0 dst is 192.1.0.0
> tos is 4 / tcp src is 22 dst is 25 / end actions queue index 3 / mark / end
> 
> -    flow create 0 ingress pattern eth dst is 00:11:22:33:44:55 / ipv4 src is
> 192.168.0.20 / end actions queue index 1 / mark id 4294967296 / end
> +   there are rule 0/1/2 listed::
> 
> -   the flow failed to be created.
> +    flow list 0
> 
> -2. list the flow::
> +   send packets match rule 0, rule 1 and rule 2,
> +   Verify all packets can be redirected to expected queue and mark.
> +   destory the last rule::
> 
> -    testpmd> flow list 0
> +    flow destroy 0 rule 2
> 
> -   Then check there is no rule listed.
> +   list the rules, verify there are only rule 0 and rule 1 listed.
> +   send packet matched rule 2, verify it is received without FDIR matched ID.
> +   send packets matched rule 0 and rule 1, Verify all packets be redirected
> and mark.
> +   flush rules::
> 
> -Test case: pattern conflict flow
> -================================
> +    flow flush 0
> 
> -MAC_IPV4_PAY and MAC_IPV4_UDP are conflict patterns.
> -so if create one, then create the other one, the second flow will be
> -set to switch filer.
> -IPV4_UDP packet can match MAC_IPV4_PAY rule.
> -but IPV4_PAY packet cannot match MAC_IPV4_UDP rule.
> +   send packets match rule 0, rule 1 and rule 2, verify all packets can not
> mark.
> 
> -1. set MAC_IPV4_PAY firstly::
> +Subcase 4: max rules
> +--------------------
> 
> -    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / end actions
> queue index 1 / end
> +1. create 15360 rules on port 0::
> 
> -   the first flow is set to fdir filter, send matched packet::
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.100.20 dst is
> 192.168.0.0 / end actions queue index 1 / mark / end
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.100.20 dst is
> 192.168.0.1 / end actions queue index 1 / mark / end
> +    ......
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.100.20 dst is
> 192.168.59.255 / end actions queue index 1 / mark / end
> 
> -
> sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0
> .21")/Raw('x' * 80)],iface="enp175s0f0", count=10)
> -
> sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0
> .21") /UDP(sport=22, dport=23)/ Raw('x' * 80)],iface="enp175s0f0", count=10)
> +   all the rules are created successfully.
> 
> -   the two type packets both to queue 1.
> -   then create MAC_IPV4_UDP flow, it is set to switch filer::
> +2. create one more rule::
> 
> -    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp src is 22
> dst is 23 / end actions queue index 2 / end
> +    flow create 0 ingress pattern eth / ipv4 src is 192.168.100.20 dst is
> 192.168.60.0 / end actions queue index 1 / mark / end
> 
> -   send same packets, IPV4_PAY packet to queue 1, IPV4_UDP packet to
> queue 2.
> +   the rule failed to create. return the error message::
> 
> -2. set MAC_IPV4_UDP firstly::
> +    Failed to create flow
> 
> -    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / udp src is 22
> dst is 23 / end actions queue index 2 / end
> +3. check the rule list, there are 15360 rules listed.
> 
> -   send matched packet::
> +4. send matched packets for rule 0 and rule 15359::
> 
> -
> sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0
> .21") /UDP(sport=22, dport=23)/ Raw('x' * 80)],iface="enp175s0f0", count=10)
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.100.20",dst="192.168
> .0.0")/Raw('x' * 80)],iface="enp175s0f0")
> +
> sendp([Ether(dst="00:11:22:33:44:55")/IP(src="192.168.100.20",dst="192.168
> .59.255")/Raw('x' * 80)],iface="enp175s0f0")
> 
> -   packet to queue 2.
> -   then create MAC_IPV4_PAY flow::
> +   check all packets are redirected to expected queue with FDIR matched
> ID=0x0
> 
> -    flow create 0 ingress pattern eth / ipv4 dst is 192.168.0.21 / end actions
> queue index 1 / end
> +5. flush all the rules, check the rule list,
> +   there is no rule listed.
> 
> -   send same packet, packet to queue 1, because the packet match switch
> filter first.
> +6. verify matched packets for rule 0 and rule 15359 received without FDIR
> matched ID.
> --
> 2.7.4


      reply	other threads:[~2020-04-01  5:55 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-01  7:51 Peng Yuan
2020-04-01  5:54 ` Tu, Lijuan [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8CE3E05A3F976642AAB0F4675D0AD20E0BC04E3F@SHSMSX101.ccr.corp.intel.com \
    --to=lijuan.tu@intel.com \
    --cc=dts@dpdk.org \
    --cc=yuan.peng@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).