From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 24140A00C5; Tue, 4 Jan 2022 09:27:43 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DD81240040; Tue, 4 Jan 2022 09:27:42 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id CE6864003C for ; Tue, 4 Jan 2022 09:27:40 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1641284861; x=1672820861; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=mNp8RpW9PrP+vBavKb1SOPIeRPgBUXwN3rMIOZcDqKA=; b=YrvQR7kUhLlf9SCLm5F/lP/HxNcpnR/yj6BJPWYDY1cpx18ojcblbWFb mQYWEY/jhloHpi6TSf5arS5Qzz8GcRtWZCAyZ4GHiw3pvB0EOlXKVtOD3 /UZRt64ZGWpaKeouZtP8pTdzcj0urzbuVq5LNEbBLS6ccQ0Qd2alPaMA8 kM+dvdMTiGivSb8ymo1Jl2pWXNmH2G9Uw95jZqT1STIPpkFsRVdPUjaQU E0g95FFcxt/1pBwo/qI5kXY/VgaxNDpZdFGjoTkEDHo11fCwhh1Q/BCQ9 O1vy+JMLWst9yo/lUdGXSyEb5BGSvvE37IzOUXQAHc2CyRJ7Ao5hARgJU Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10216"; a="239723119" X-IronPort-AV: E=Sophos;i="5.88,260,1635231600"; d="scan'208";a="239723119" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Jan 2022 00:27:39 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,260,1635231600"; d="scan'208";a="573951399" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmsmga008.fm.intel.com with ESMTP; 04 Jan 2022 00:27:39 -0800 Received: from shsmsx604.ccr.corp.intel.com (10.109.6.214) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Tue, 4 Jan 2022 00:27:39 -0800 Received: from shsmsx601.ccr.corp.intel.com (10.109.6.141) by SHSMSX604.ccr.corp.intel.com (10.109.6.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.20; Tue, 4 Jan 2022 16:27:37 +0800 Received: from shsmsx601.ccr.corp.intel.com ([10.109.6.141]) by SHSMSX601.ccr.corp.intel.com ([10.109.6.141]) with mapi id 15.01.2308.020; Tue, 4 Jan 2022 16:27:37 +0800 From: "Tu, Lijuan" To: "Tang, Yaqi" , "dts@dpdk.org" CC: "Tang, Yaqi" Subject: RE: [dts][PATCH V1] test_plans/cvl_pf_qinq_switch_filter: cvl support l4 Thread-Topic: [dts][PATCH V1] test_plans/cvl_pf_qinq_switch_filter: cvl support l4 Thread-Index: AQHX9klDVRE6I+Hq4EuNkSuAb41LxqxSmSKg Date: Tue, 4 Jan 2022 08:27:37 +0000 Message-ID: <1aa051fb20764c9ba895890a6cceb940@intel.com> References: <20211221165827.628330-1-yaqi.tang@intel.com> In-Reply-To: <20211221165827.628330-1-yaqi.tang@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.6.200.16 dlp-product: dlpe-windows x-originating-ip: [10.239.127.36] Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org > -----Original Message----- > From: Yaqi Tang > Sent: 2021=1B$BG/=1B(B12=1B$B7n=1B(B22=1B$BF|=1B(B 0:58 > To: dts@dpdk.org > Cc: Tang, Yaqi > Subject: [dts][PATCH V1] test_plans/cvl_pf_qinq_switch_filter: cvl suppor= t l4 >=20 > CVL support l4 for QinQ switch filter in PF driver is by dst MAC + outer = VLAN id + > inner VLAN id + dst IP + dst port, and port can support as eth / vlan / v= lan / IP / > tcp|udp. >=20 > Signed-off-by: Yaqi Tang > Tested-by: Yaqi Tang < yaqi.tang@intel.com> > --- > .../cvl_pf_qinq_switch_filter_test_plan.rst | 687 ++++++++++++++++++ The file name is prefered to follow tradition: cvl_swith_filter_qinq_test_p= lan.rst > 1 file changed, 687 insertions(+) > create mode 100644 test_plans/cvl_pf_qinq_switch_filter_test_plan.rst >=20 > diff --git a/test_plans/cvl_pf_qinq_switch_filter_test_plan.rst > b/test_plans/cvl_pf_qinq_switch_filter_test_plan.rst > new file mode 100644 > index 00000000..ccd431e6 > --- /dev/null > +++ b/test_plans/cvl_pf_qinq_switch_filter_test_plan.rst > @@ -0,0 +1,687 @@ > +.. Copyright (c) <2021>, Intel Corporation > + All rights reserved. > + > + Redistribution and use in source and binary forms, with or without > + modification, are permitted provided that the following conditions > + are met: > + > + - Redistributions of source code must retain the above copyright > + notice, this list of conditions and the following disclaimer. > + > + - Redistributions in binary form must reproduce the above copyright > + notice, this list of conditions and the following disclaimer in > + the documentation and/or other materials provided with the > + distribution. > + > + - Neither the name of Intel Corporation nor the names of its > + contributors may be used to endorse or promote products derived > + from this software without specific prior written permission. > + > + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND > CONTRIBUTORS > + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT > + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS > + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE > + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, > INDIRECT, > + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES > + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS > OR > + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) > + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > CONTRACT, > + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED > + OF THE POSSIBILITY OF SUCH DAMAGE. > + > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > +CVL PF QINQ Switch Filter Test Plan > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +Description > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > +The test plan includes six test cases, such as MAC_QINQ_IPV4, > MAC_QINQ_IPV6, MAC_QINQ_IPV4_UDP, MAC_QINQ_IPV4_TCP, > MAC_QINQ_IPV6_UDP, MAC_QINQ_IPV6_TCP. > +* Enable QINQ switch filter for IPv4/IPv6, IPv4 + TCP/UDP in non-pipelin= e mode. > +* Enable QINQ switch filter for IPv6 + TCP/UDP in pipeline mode. > +CVL support l4 for QinQ switch filter in PF driver is by dst MAC + outer= VLAN id + > inner VLAN id + dst IP + dst port, and port can support as eth / vlan / v= lan / IP / > tcp|udp. > + > +Prerequisites > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +Hardware > +-------- > +Supportted NICs: columbiaville_25g/columbiaville_100g > + > +Software > +-------- > +dpdk: http://dpdk.org/git/dpdk > +scapy: http://www.secdev.org/projects/scapy/ > + > +General Set Up > +-------------- > +1. Copy specific ice package to /lib/firmware/updates/intel/ice/ddp/ice.= pkg, > + then load driver:: > + > + # cp ice_comms-1.3.31.0.pkg /lib/firmware/updates/intel/ice/ddp/ice.= pkg > + # rmmod ice > + # insmod ice.ko It says " specific ice package ", what's the requirements? Must it be " ice= _comms-1.3.31.0.pkg " ? I think other should be OK. > + > +2. Compile DPDK:: > + > + # CC=3Dgcc meson --werror -Denable_kmods=3DTrue -Dlibdir=3Dlib --def= ault- > library=3Dstatic x86_64-native-linuxapp-gcc > + # ninja -C x86_64-native-linuxapp-gcc -j 110 > + > +3. Get the pci device id and interface of DUT and tester:: > + > + # ./usertools/dpdk-devbind.py -s > + > + 0000:3b:00.0 'Ethernet Controller E810-C for SFP 1593' if=3Dens785f0= drv=3Dice > unused=3Dvfio-pci > + 0000:af:00.0 'Ethernet Controller XXV710 for 25GbE SFP28 158b' if=3D= ens260f0 > drv=3Di40e unused=3Dvfio-pci > + > +4. Bind the DUT port to dpdk:: > + > + # ./usertools/dpdk-devbind.py -b vfio-pci 0000:3b:00.0 > + > +Test Case > +=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +Common Steps > +------------ > +1. Launch the userland ``testpmd`` application on DUT as follows:: > + > + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xf -n 4 -a > 0000:3b:00.0 -- -i --txq=3D16 --rxq=3D16 > + > +2. Set verbose:: > + > + testpmd> set verbose 1 > + > +3. Set fwd engine and start:: > + > + testpmd> set fwd rxonly > + testpmd> start > + > +#Non-pipeline mode Is it comment or note ? > + > +Test Case 1: MAC_QINQ_IPV4 > +-------------------------- > +The test case enable QINQ switch filter for IPv4 in non-pipeline mode, a= nd port > can support as dst MAC + outer VLAN id + inner VLAN id + IPv4. > + > +Test Steps > +~~~~~~~~~~ > +1. Validate a rule:: > + > + testpmd> flow validate 0 ingress pattern eth dst is 00:11:22:33:44:= 55 / vlan > tci is 2 / vlan tci is 1 / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / e= nd actions > queue index 2 / end > + > + Get the message:: > + > + Flow rule validated > + > +2. Create a rule and list rules:: > + > + testpmd> flow create 0 ingress pattern eth dst is 00:11:22:33:44:55= / vlan tci > is 2 / vlan tci is 1 / ipv4 src is 192.168.1.1 dst is 192.168.1.2 / end a= ctions queue > index 2 / end > + > + Get the message:: > + > + Flow rule #0 created > + > +3. Check the flow list:: > + > + testpmd> flow list 0 > + > + ID Group Prio Attr Rule > + 0 0 0 i-- ETH VLAN VLAN IPV4 =3D> QUEUE > + > +4. Send matched packet in scapy on tester, check the DUT received this p= acket > and the action is right:: > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP(src=3D"192.168.1.1", > dst=3D"192.168.1.2")/("X"*80)],iface=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 2: received 1 packets > + src=3DA4:BF:01:4D:6F:32 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D122 - > nb_segs=3D1 - RSS hash=3D0x26878aad - RSS queue=3D0x2 - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 - l2_len=3D18 - inner_l2_len=3D4 - > inner_l3_len=3D20 - Receive queue=3D0x2 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +5. Send mismatched packet in scapy on tester, check the DUT received thi= s > packet and the action is not right:: How to tell the action is not right or right ? > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:33",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP(src=3D"192.168.1.1", > dst=3D"192.168.1.2")/("X"*80)],iface=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 13: received 1 packets > + src=3DA4:BF:01:4D:6F:32 - dst=3D00:11:22:33:44:33 - type=3D0x8100 - le= ngth=3D122 - > nb_segs=3D1 - RSS hash=3D0x26878aad - RSS queue=3D0xd - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 - l2_len=3D18 - inner_l2_len=3D4 - > inner_l3_len=3D20 - Receive queue=3D0xd > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP(src=3D"192.168.1.1", > dst=3D"192.168.1.2")/("X"*80)],iface=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 13: received 1 packets > + src=3DA4:BF:01:4D:6F:32 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D122 - > nb_segs=3D1 - RSS hash=3D0x26878aad - RSS queue=3D0xd - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 - l2_len=3D18 - inner_l2_len=3D4 - > inner_l3_len=3D20 - Receive queue=3D0xd > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x2,type=3D0x0800)/IP(src=3D"192.168.1.1", > dst=3D"192.168.1.2")/("X"*80)],iface=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 13: received 1 packets > + src=3DA4:BF:01:4D:6F:32 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D122 - > nb_segs=3D1 - RSS hash=3D0x26878aad - RSS queue=3D0xd - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 - l2_len=3D18 - inner_l2_len=3D4 - > inner_l3_len=3D20 - Receive queue=3D0xd > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP(src=3D"192.168.1.3", > dst=3D"192.168.1.2")/("X"*80)],iface=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 10: received 1 packets > + src=3DA4:BF:01:4D:6F:32 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D122 - > nb_segs=3D1 - RSS hash=3D0xc99a75ba - RSS queue=3D0xa - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 - l2_len=3D18 - inner_l2_len=3D4 - > inner_l3_len=3D20 - Receive queue=3D0xa > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +6. Destroy a rule and list rules:: > + > + testpmd> flow destroy 0 rule 0 > + > + Get the message:: > + > + Flow rule #0 destroyed > + > +7. Check the flow list:: > + > + testpmd> flow list 0 > + > + Check the rule not exists in the list. > + Send matched packets in step 4, check the action is not right. > + > +Test Case 2: MAC_QINQ_IPV6 > +-------------------------- > +The test case enable QINQ switch filter for IPv6 in non-pipeline mode, a= nd port > can support as dst MAC + outer VLAN id + inner VLAN id + IPv6. > + > +Test Steps > +~~~~~~~~~~ > +1. Validate a rule:: > + > + testpmd> flow validate 0 ingress pattern eth dst is 00:11:22:33:44:= 55 / vlan > tci is 2 / vlan tci is 1 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900= :2020 / > end actions rss queues 2 3 end / end > + > + Get the message:: > + > + Flow rule validated > + > +2. Create a rule and list rules:: > + > + testpmd> flow create 0 ingress pattern eth dst is 00:11:22:33:44:55= / vlan tci > is 2 / vlan tci is 1 / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:202= 0 / end > actions rss queues 2 3 end / end > + > + Get the message:: > + > + Flow rule #0 created > + > +3. Check the flow list:: > + > + testpmd> flow list 0 > + > + ID Group Prio Attr Rule > + 0 0 0 i-- ETH VLAN VLAN IPV6 =3D> RSS > + > +4. Send matched packet in scapy on tester, check the DUT received this p= acket > and the action is right:: > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:11= 11:3 > 900:2020")/("X"*80)],iface=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 2: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D142 - > nb_segs=3D1 - RSS hash=3D0xb0c13d2c - RSS queue=3D0x2 - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 - l2_len=3D18 - inner_l2_len=3D4 - > inner_l3_len=3D40 - Receive queue=3D0x2 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +5. Send mismatched packet in scapy on tester, check the DUT received thi= s > packet and the action is not right:: > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:33",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:11= 11:3 > 900:2020")/("X"*80)],iface=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 12: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:33 - type=3D0x8100 - le= ngth=3D142 - > nb_segs=3D1 - RSS hash=3D0xb0c13d2c - RSS queue=3D0xc - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 - l2_len=3D18 - inner_l2_len=3D4 - > inner_l3_len=3D40 - Receive queue=3D0xc > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:11= 11:3 > 900:2020")/("X"*80)],iface=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 12: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D142 - > nb_segs=3D1 - RSS hash=3D0xb0c13d2c - RSS queue=3D0xc - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 - l2_len=3D18 - inner_l2_len=3D4 - > inner_l3_len=3D40 - Receive queue=3D0xc > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x2,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:11= 11:3 > 900:2020")/("X"*80)],iface=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 12: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D142 - > nb_segs=3D1 - RSS hash=3D0xb0c13d2c - RSS queue=3D0xc - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 - l2_len=3D18 - inner_l2_len=3D4 - > inner_l3_len=3D40 - Receive queue=3D0xc > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:11= 11:3 > 900:2023")/("X"*80)],iface=3D"ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 6: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D142 - > nb_segs=3D1 - RSS hash=3D0x63517896 - RSS queue=3D0x6 - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 - l2_len=3D18 - inner_l2_len=3D4 - > inner_l3_len=3D40 - Receive queue=3D0x6 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +6. Destroy a rule and list rules:: > + > + testpmd> flow destroy 0 rule 0 > + > + Get the message:: > + > + Flow rule #0 destroyed > + > +7. Check the flow list:: > + > + testpmd> flow list 0 > + > + Check the rule not exists in the list. > + Send matched packets in step 4, check the action is not right. > + > +Test Case 3: MAC_QINQ_IPV4_UDP > +------------------------------ > +The test case enable QINQ switch filter for IPv4 + UDP in non-pipeline m= ode, > and port can support as dst MAC + outer VLAN id + inner VLAN id + IPv4 + = UDP. > + > +Test Steps > +~~~~~~~~~~ > +1. Validate a rule:: > + > + testpmd> flow validate 0 ingress pattern eth dst is 00:11:22:33:44:= 55 / vlan > tci is 2 / vlan tci is 1 / ipv4 / udp src is 50 dst is 23 / end actions q= ueue index 2 / > end > + > + Get the message:: > + > + Flow rule validated > + > +2. Create a rule and list rules:: > + > + testpmd> flow create 0 ingress pattern eth dst is 00:11:22:33:44:55= / vlan tci > is 2 / vlan tci is 1 / ipv4 / udp src is 50 dst is 23 / end actions queue= index 2 / end > + > + Get the message:: > + > + Flow rule #0 created > + > +3. Check the flow list:: > + > + testpmd> flow list 0 > + > + ID Group Prio Attr Rule > + 0 0 0 i-- ETH VLAN VLAN IPV4 UDP =3D> QUEUE > + > +4. Send matched packet in scapy on tester, check the DUT received this p= acket > and the action is right:: > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP()/UDP(sport=3D50,dport=3D23)/("X"*80= )],iface=3D" > ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 2: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D130 - > nb_segs=3D1 - RSS hash=3D0xddc4fdb3 - RSS queue=3D0x2 - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 INNER_L4_UDP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D20 - inner_l4_len=3D8 - Receive queue= =3D0x2 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +5. Send mismatched packet in scapy on tester, check the DUT received thi= s > packet and the action is not right:: > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:33",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP()/UDP(sport=3D50,dport=3D23)/("X"*80= )],iface=3D" > ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 3: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:33 - type=3D0x8100 - le= ngth=3D130 - > nb_segs=3D1 - RSS hash=3D0xddc4fdb3 - RSS queue=3D0x3 - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 INNER_L4_UDP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D20 - inner_l4_len=3D8 - Receive queue= =3D0x3 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP()/UDP(sport=3D50,dport=3D23)/("X"*80= )],iface=3D" > ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 3: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D130 - > nb_segs=3D1 - RSS hash=3D0xddc4fdb3 - RSS queue=3D0x3 - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 INNER_L4_UDP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D20 - inner_l4_len=3D8 - Receive queue= =3D0x3 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x2,type=3D0x0800)/IP()/UDP(sport=3D50,dport=3D23)/("X"*80= )],iface=3D" > ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 3: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D130 - > nb_segs=3D1 - RSS hash=3D0xddc4fdb3 - RSS queue=3D0x3 - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 INNER_L4_UDP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D20 - inner_l4_len=3D8 - Receive queue= =3D0x3 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP()/UDP(sport=3D50,dport=3D22)/("X"*80= )],iface=3D" > ens260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 3: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D130 - > nb_segs=3D1 - RSS hash=3D0xddc4fdb3 - RSS queue=3D0x3 - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 INNER_L4_UDP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D20 - inner_l4_len=3D8 - Receive queue= =3D0x3 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +6. Destroy a rule and list rules:: > + > + testpmd> flow destroy 0 rule 0 > + > + Get the message:: > + > + Flow rule #0 destroyed > + > +7. Check the flow list:: > + > + testpmd> flow list 0 > + > + Check the rule not exists in the list. > + Send matched packets in step 4, check the action is not right. > + > +Test Case 4: MAC_QINQ_IPV4_TCP > +------------------------------ > +The test case enable QINQ switch filter for IPv4 + TCP in non-pipeline m= ode, > and port can support as dst MAC + outer VLAN id + inner VLAN id + IPv4 + = TCP. > + > +Test Steps > +~~~~~~~~~~ > +1. Validate a rule:: > + > + testpmd> flow validate 0 ingress pattern eth dst is 00:11:22:33:44:= 55 / vlan > tci is 2 / vlan tci is 1 / ipv4 / tcp src is 50 dst is 23 / end actions r= ss queues 4 5 end > / end > + > + Get the message:: > + > + Flow rule validated > + > +2. Create a rule and list rules:: > + > + testpmd> flow create 0 ingress pattern eth dst is 00:11:22:33:44:55= / vlan tci > is 2 / vlan tci is 1 / ipv4 / tcp src is 50 dst is 23 / end actions rss q= ueues 4 5 end / > end > + > + Get the message:: > + > + Flow rule #0 created > + > +3. Check the flow list:: > + > + testpmd> flow list 0 > + > + ID Group Prio Attr Rule > + 0 0 0 i-- ETH VLAN VLAN IPV4 TCP =3D> RSS > + > +4. Send matched packet in scapy on tester, check the DUT received this p= acket > and the action is right:: > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP()/TCP(sport=3D50,dport=3D23)/("X"*80= )],iface=3D"e > ns260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 5: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D142 - > nb_segs=3D1 - RSS hash=3D0xddc4fdb3 - RSS queue=3D0x5 - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 INNER_L4_TCP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D20 - inner_l4_len=3D20 - Receive queue= =3D0x5 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +5. Send mismatched packet in scapy on tester, check the DUT received thi= s > packet and the action is not right:: > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:33",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP()/TCP(sport=3D50,dport=3D23)/("X"*80= )],iface=3D"e > ns260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 3: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:33 - type=3D0x8100 - le= ngth=3D142 - > nb_segs=3D1 - RSS hash=3D0xddc4fdb3 - RSS queue=3D0x3 - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 INNER_L4_TCP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D20 - inner_l4_len=3D20 - Receive queue= =3D0x3 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP()/TCP(sport=3D50,dport=3D23)/("X"*80= )],iface=3D"e > ns260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 3: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D142 - > nb_segs=3D1 - RSS hash=3D0xddc4fdb3 - RSS queue=3D0x3 - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 INNER_L4_TCP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D20 - inner_l4_len=3D20 - Receive queue= =3D0x3 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x2,type=3D0x0800)/IP()/TCP(sport=3D50,dport=3D23)/("X"*80= )],iface=3D"e > ns260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 3: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D142 - > nb_segs=3D1 - RSS hash=3D0xddc4fdb3 - RSS queue=3D0x3 - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 INNER_L4_TCP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D20 - inner_l4_len=3D20 - Receive queue= =3D0x3 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x0800)/IP()/TCP(sport=3D50,dport=3D22)/("X"*80= )],iface=3D"e > ns260f0",count=3D1) > + > +DUT:: > + > + testpmd> port 0/queue 3: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D142 - > nb_segs=3D1 - RSS hash=3D0xddc4fdb3 - RSS queue=3D0x3 - hw ptype: L2_ETHE= R > L3_IPV4_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV4 INNER_L4_TCP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D20 - inner_l4_len=3D20 - Receive queue= =3D0x3 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +6. Destroy a rule and list rules:: > + > + testpmd> flow destroy 0 rule 0 > + > + Get the message:: > + > + Flow rule #0 destroyed > + > +7. Check the flow list:: > + > + testpmd> flow list 0 > + > + Check the rule not exists in the list. > + Send matched packets in step 4, check the action is not right. > + > +#Pipeline mode > + > +Test Case 5: MAC_QINQ_IPV6_UDP > +------------------------------ > +The test case enable QINQ switch filter for IPv6 + UDP in pipeline mode,= and > port can support as dst MAC + outer VLAN id + inner VLAN id + IPv6 + UDP. > + > +Test Steps > +~~~~~~~~~~ > +1. Validate a rule:: > + > + testpmd> flow validate 0 priority 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 2 / vlan tci is 1 / ipv6 dst is > CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 50 dst is 23 / end > actions drop / end > + > + Get the message:: > + > + Flow rule validated > + > +2. Create a rule and list rules:: > + > + testpmd> flow create 0 priority 0 ingress pattern eth dst is 00:11:= 22:33:44:55 > / vlan tci is 2 / vlan tci is 1 / ipv6 dst is > CDCD:910A:2222:5498:8475:1111:3900:2020 / udp src is 50 dst is 23 / end > actions drop / end > + > + Get the message:: > + > + Flow rule #0 created > + > +3. Check the flow list:: > + > + testpmd> flow list 0 > + > + ID Group Prio Attr Rule > + 0 0 0 i-- ETH VLAN VLAN IPV6 UDP =3D> DROP > + > +4. Send matched packet in scapy on tester, check the DUT received this p= acket > and the action is right:: > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:11= 11:3 > 900:2020")/UDP(sport=3D50,dport=3D23)/("X"*80)],iface=3D"ens260f0",count= =3D1) > + > +DUT:: > + > + testpmd> > + > +5. Send mismatched packet in scapy on tester, check the DUT received thi= s > packet and the action is not right:: > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:33",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:11= 11:3 > 900:2020")/UDP(sport=3D50,dport=3D23)/("X"*80)],iface=3D"ens260f0",count= =3D1) > + > +DUT:: > + > + testpmd> port 0/queue 15: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:33 - type=3D0x8100 - le= ngth=3D150 - > nb_segs=3D1 - RSS hash=3D0xc5dfbe3f - RSS queue=3D0xf - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 INNER_L4_UDP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D40 - inner_l4_len=3D8 - Receive queue= =3D0xf > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:11= 11:3 > 900:2020")/UDP(sport=3D50,dport=3D23)/("X"*80)],iface=3D"ens260f0",count= =3D1) > + > +DUT:: > + > + testpmd> port 0/queue 15: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D150 - > nb_segs=3D1 - RSS hash=3D0xc5dfbe3f - RSS queue=3D0xf - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 INNER_L4_UDP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D40 - inner_l4_len=3D8 - Receive queue= =3D0xf > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x2,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:11= 11:3 > 900:2020")/UDP(sport=3D50,dport=3D23)/("X"*80)],iface=3D"ens260f0",count= =3D1) > + > +DUT:: > + > + testpmd> port 0/queue 15: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D150 - > nb_segs=3D1 - RSS hash=3D0xc5dfbe3f - RSS queue=3D0xf - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 INNER_L4_UDP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D40 - inner_l4_len=3D8 - Receive queue= =3D0xf > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:11= 11:3 > 900:2020")/UDP(sport=3D50,dport=3D22)/("X"*80)],iface=3D"ens260f0",count= =3D1) > + > +DUT:: > + > + testpmd> port 0/queue 15: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D150 - > nb_segs=3D1 - RSS hash=3D0xc5dfbe3f - RSS queue=3D0xf - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 INNER_L4_UDP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D40 - inner_l4_len=3D8 - Receive queue= =3D0xf > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +6. Destroy a rule and list rules:: > + > + testpmd> flow destroy 0 rule 0 > + > + Get the message:: > + > + Flow rule #0 destroyed > + > +7. Check the flow list:: > + > + testpmd> flow list 0 > + > + Check the rule not exists in the list. > + Send matched packets in step 4, check the action is not right. > + > +Test Case 6: MAC_QINQ_IPV6_TCP > +------------------------------ > +The test case enable QINQ switch filter for IPv6 + TCP in pipeline mode,= and > port can support as dst MAC + outer VLAN id + inner VLAN id + IPv6 + TCP. > + > +Test Steps > +~~~~~~~~~~ > +1. Validate a rule:: > + > + testpmd> flow validate 0 priority 0 ingress pattern eth dst is > 00:11:22:33:44:55 / vlan tci is 2 / vlan tci is 1 / ipv6 dst is > CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 50 dst is 23 / end > actions queue index 7 / end > + > + Get the message:: > + > + Flow rule validated > + > +2. Create a rule and list rules:: > + > + testpmd> flow create 0 priority 0 ingress pattern eth dst is 00:11:= 22:33:44:55 > / vlan tci is 2 / vlan tci is 1 / ipv6 dst is > CDCD:910A:2222:5498:8475:1111:3900:2020 / tcp src is 50 dst is 23 / end > actions queue index 7 / end > + > + Get the message:: > + > + Flow rule #0 created > + > +3. Check the flow list:: > + > + testpmd> flow list 0 > + > + ID Group Prio Attr Rule > + 0 0 0 i-- ETH VLAN VLAN IPV6 TCP =3D> QUEUE > + > +4. Send matched packet in scapy on tester, check the DUT received this p= acket > and the action is right:: > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:11= 11:3 > 900:2020")/TCP(sport=3D50,dport=3D23)/("X"*80)],iface=3D"ens260f0",count= =3D1) > + > +DUT:: > + > + testpmd> port 0/queue 7: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D162 - > nb_segs=3D1 - RSS hash=3D0xc5dfbe3f - RSS queue=3D0x7 - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 INNER_L4_TCP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D40 - inner_l4_len=3D20 - Receive queue= =3D0x7 > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +5. Send mismatched packet in scapy on tester, check the DUT received thi= s > packet and the action is not right:: > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:33",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:11= 11:3 > 900:2020")/TCP(sport=3D50,dport=3D23)/("X"*80)],iface=3D"ens260f0",count= =3D1) > + > +DUT:: > + > + testpmd> port 0/queue 15: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:33 - type=3D0x8100 - le= ngth=3D162 - > nb_segs=3D1 - RSS hash=3D0xc5dfbe3f - RSS queue=3D0xf - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 INNER_L4_TCP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D40 - inner_l4_len=3D20 - Receive queue= =3D0xf > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D1,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:11= 11:3 > 900:2020")/TCP(sport=3D50,dport=3D23)/("X"*80)],iface=3D"ens260f0",count= =3D1) > + > +DUT:: > + > + testpmd> port 0/queue 15: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D162 - > nb_segs=3D1 - RSS hash=3D0xc5dfbe3f - RSS queue=3D0xf - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 INNER_L4_TCP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D40 - inner_l4_len=3D20 - Receive queue= =3D0xf > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x2,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:11= 11:3 > 900:2020")/TCP(sport=3D50,dport=3D23)/("X"*80)],iface=3D"ens260f0",count= =3D1) > + > +DUT:: > + > + testpmd> port 0/queue 15: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D162 - > nb_segs=3D1 - RSS hash=3D0xc5dfbe3f - RSS queue=3D0xf - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 INNER_L4_TCP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D40 - inner_l4_len=3D20 - Receive queue= =3D0xf > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +Tester:: > + > + >>> > sendp([Ether(dst=3D"00:11:22:33:44:55",type=3D0x8100)/Dot1Q(vlan=3D2,type= =3D0x8100 > )/Dot1Q(vlan=3D0x1,type=3D0x86DD)/IPv6(dst=3D"CDCD:910A:2222:5498:8475:11= 11:3 > 900:2020")/TCP(sport=3D50,dport=3D22)/("X"*80)],iface=3D"ens260f0",count= =3D1) > + > +DUT:: > + > + testpmd> port 0/queue 15: received 1 packets > + src=3D00:00:00:00:00:00 - dst=3D00:11:22:33:44:55 - type=3D0x8100 - le= ngth=3D162 - > nb_segs=3D1 - RSS hash=3D0xc5dfbe3f - RSS queue=3D0xf - hw ptype: L2_ETHE= R > L3_IPV6_EXT_UNKNOWN L4_TCP - sw ptype: L2_ETHER_VLAN > INNER_L2_ETHER_VLAN INNER_L3_IPV6 INNER_L4_TCP - l2_len=3D18 - > inner_l2_len=3D4 - inner_l3_len=3D40 - inner_l4_len=3D20 - Receive queue= =3D0xf > + ol_flags: RTE_MBUF_F_RX_RSS_HASH RTE_MBUF_F_RX_L4_CKSUM_GOOD > RTE_MBUF_F_RX_IP_CKSUM_GOOD > RTE_MBUF_F_RX_OUTER_L4_CKSUM_GOOD > + > +6. Destroy a rule and list rules:: > + > + testpmd> flow destroy 0 rule 0 > + > + Get the message:: > + > + Flow rule #0 destroyed > + > +7. Check the flow list:: > + > + testpmd> flow list 0 > + > + Check the rule not exists in the list. > + Send matched packets in step 4, check the action is not right. > -- > 2.25.1