From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3B644A04B5; Wed, 4 Dec 2019 06:53:28 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id EC81D1B13C; Wed, 4 Dec 2019 06:53:27 +0100 (CET) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id 85F578F96 for ; Wed, 4 Dec 2019 06:53:25 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 03 Dec 2019 21:53:24 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,276,1571727600"; d="scan'208";a="361450529" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by orsmga004.jf.intel.com with ESMTP; 03 Dec 2019 21:53:24 -0800 Received: from fmsmsx102.amr.corp.intel.com (10.18.124.200) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 3 Dec 2019 21:53:23 -0800 Received: from shsmsx106.ccr.corp.intel.com (10.239.4.159) by FMSMSX102.amr.corp.intel.com (10.18.124.200) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 3 Dec 2019 21:53:23 -0800 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.19]) by SHSMSX106.ccr.corp.intel.com ([169.254.10.236]) with mapi id 14.03.0439.000; Wed, 4 Dec 2019 13:53:21 +0800 From: "Tu, Lijuan" To: "Fu, Qi" , "dts@dpdk.org" CC: "Fu, Qi" Thread-Topic: [dts] [PATCH V1] test_plans: add test plan for cvl rteflow priority Thread-Index: AQHVpoGx++Rkmhwy8E+HOX/nPrcI96epgMVg Date: Wed, 4 Dec 2019 05:53:21 +0000 Message-ID: <8CE3E05A3F976642AAB0F4675D0AD20E0BB7D337@SHSMSX101.ccr.corp.intel.com> References: <20191129154152.39796-1-qi.fu@intel.com> In-Reply-To: <20191129154152.39796-1-qi.fu@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNDA1OGQ3OWUtM2Y3MS00ZjI1LTk0MjEtMGJjYTkzNGI0ZjI0IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiTW9OMU40QXpER1lMZXlEdzJaTlhhaEc5TkVWczBiYmp1QVFBUjZ1RUhcL2U0czlWMlBBbGxwYVpcL1dRRWttY1UyIn0= x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dts] [PATCH V1] test_plans: add test plan for cvl rteflow priority X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 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 Sender: "dts" Hi Qi, Could you please add the expectation when you check output or results. It's= better to have an output example. > -----Original Message----- > From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of qifu > Sent: Friday, November 29, 2019 11:42 PM > To: dts@dpdk.org > Cc: Fu, Qi > Subject: [dts] [PATCH V1] test_plans: add test plan for cvl rteflow prior= ity >=20 > add test plan for cvl rteflow priority. >=20 > Signed-off-by: qifu > --- > test_plans/rteflow_priority_test_plan.rst | 333 ++++++++++++++++++++++ > 1 file changed, 333 insertions(+) > create mode 100644 test_plans/rteflow_priority_test_plan.rst >=20 > diff --git a/test_plans/rteflow_priority_test_plan.rst > b/test_plans/rteflow_priority_test_plan.rst > new file mode 100644 > index 0000000..81d78d2 > --- /dev/null > +++ b/test_plans/rteflow_priority_test_plan.rst > @@ -0,0 +1,333 @@ > +.. Copyright (c) <2010-2017>, 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 > +CVL Rte_flow Priority Tests > +=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 > + > +This document provides the plan for testing the Rte_flow Priority featur= e. > +this feature uses devargs as a hint to active flow priority or not. > +when priority is not active, flows are created on fdir then switch/ACL. > +when priority is active, flows are identified into 2 category: > +High priority as permission stage that maps to switch/ACL, Low priority > +as distribution stage that maps to fdir, a no destination high priority > +rule is not acceptable, since it may be overwritten by a low priority ru= le due > to cvl FXP behavior. > + > + > +Prerequisites > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +If using vfio the kernel must be >=3D 3.6+ and VT-d must be enabled in > +bios.When using vfio, use the following commands to load the vfio > +driver and bind it to the device under test:: > + > + modprobe vfio > + modprobe vfio-pci > + usertools/dpdk-devbind.py --bind=3Dvfio-pci device_bus_id > + > +bind the pf to dpdk driver:: > + ./usertools/dpdk-devbind.py -b vfio-pci af:00.0 > + > + > +Test case: Setting Priority in non-pipeline mode > +=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=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D > + > +Priority is not active in non-pipeline mode. The default value of > +priority is 0 but it will be ignored > + > +Start the ``testpmd`` application as follows:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf -n 4 -w 0000:af:00.0 = -- -i > --txq=3D8 --rxq=3D8 > + set fwd rxonly > + set verbose 1 > + > +create a rule:: > + > + flow create 0 priority 0 ingress pattern eth / ipv4 src is > + 192.168.0.2 dst is 192.168.0.3 tos is 4 / end actions queue index 2 / > + end > + > +check the flow can be created but it will map to fdir filter. > + > +create a rule:: > + > + flow create 0 priority 1 ingress pattern eth / ipv4 src is > + 192.168.0.2 dst is 192.168.0.3 tos is 4 / end actions queue index 2 / > + end > + > +check the flow can not be created for the vallue of priority is 0 in non= - > pipeline mode. > + > +Start the ``testpmd`` application as follows:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf -n 4 -w > 0000:af:00.0,pipeline-mode-support=3D0 -- -i --txq=3D8 --rxq=3D8 > + set fwd rxonly > + set verbose 1 > + > +create a rule:: > + > + flow create 0 priority 0 ingress pattern eth / ipv4 src is > + 192.168.0.2 dst is 192.168.0.3 tos is 4 / end actions queue index 2 / > + end > + > +check the flow can be created but it will map to fdir filter. > + > +create a rule:: > + > + flow create 0 priority 1 ingress pattern eth / ipv4 src is > + 192.168.0.2 dst is 192.168.0.3 tos is 4 / end actions queue index 2 / > + end > + > +check the flow can not be created. > + > + > +Test case: Create flow rules with priority in pipeline mode > +=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=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 > + > +Priority is active in pipeline mode. > +create flow rules and set priority 0/1 to map switch/fdir filter separat= ely. > + > +Start the ``testpmd`` application as follows:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf -n 4 -w > 0000:af:00.0,pipeline-mode-support=3D1 -- -i --txq=3D8 --rxq=3D8 > + set fwd rxonly > + set verbose 1 > + rx_vxlan_port add 4789 0 > + > +create switch filter rules:: > + > + MAC_IPV4_TCP > + flow create 0 priority 0 ingress pattern eth / ipv4 src is > + 192.168.0.2 dst is 192.168.0.3 tos is 4 / tcp src is 25 dst is 23 / > + end actions queue index 1 / end > + > + MAC_IPV4_VXLAN_IPV4_UDP_PAY > + flow create 0 priority 0 ingress pattern eth / ipv4 / udp / vxlan / > + eth / ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / udp src is > + 25 dst is 23 / end actions queue index 2 / end > + > +create fdir filter rules:: > + > + MAC_IPV4_TCP > + flow create 0 priority 1 ingress pattern eth / ipv4 src is > + 192.168.0.4 dst is 192.168.0.7 tos is 4 ttl is 20 / tcp src is 25 dst > + is 23 / end actions queue index 3 / end > + > + MAC_IPV4_VXLAN_IPV4_UDP_PAY > + flow create 0 priority 1 ingress pattern eth / ipv4 / udp / vxlan / > + eth / ipv4 src is 192.168.0.4 dst is 192.168.0.7 / udp src is 25 dst > + is 23 / end actions queue index 4 / end > + > +check flow list with commands "flow list 0", all flows are created corre= ctly:: > + > + ID Group Prio Attr Rule > + 0 0 0 i-- ETH IPV4 TCP =3D> QUEUE > + 1 ... > + 2 ... > + 3 ... > + > +send packets according to the created rules, check the packets are recie= ved > in right queues:: > + > + > sendp([Ether(dst=3D"00:00:00:00:11:00",src=3D"11:22:33:44:55:66")/IP(src= =3D"192.1 > 68.0.2",dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D25,dport=3D23)/Raw('x'*8= 0)],iface > =3D"enp134s0f0") > + > sendp([Ether(dst=3D"00:00:00:00:11:00",src=3D"11:22:33:44:55:66")/IP()/UD= P()/V > XLAN()/Ether()/IP(src=3D"192.168.0.2",dst=3D"192.168.0.3",tos=3D4)/UDP(sp= ort=3D25, > dport=3D23)/Raw('x'*80)],iface=3D"enp134s0f0") > + > sendp([Ether(dst=3D"00:00:00:00:11:00",src=3D"11:22:33:44:55:66")/IP(src= =3D"192.1 > 68.0.4",dst=3D"192.168.0.7",tos=3D4,ttl=3D20)/TCP(sport=3D25,dport=3D23)/= Raw('x'*80)] > ,iface=3D"enp134s0f0") > + > + sendp([Ether(dst=3D"00:00:00:00:11:00",src=3D"11:22:33:44:55:66")/IP()/= UDP > + ()/VXLAN()/Ether()/IP(src=3D"192.168.0.4 > + ",dst=3D"192.168.0.7")/UDP(sport=3D25,dport=3D23)/Raw('x'*80)],iface=3D= "enp134 > + s0f0") > + > +create rules without priority:: > + > + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.3 dst is 19= 2.168.0.1 > tos is 5 / tcp src is 25 dst is 23 / end actions queue index 1 / end > + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.2 dst is > + 192.168.0.3 tos is 4 ttl is 20 / sctp src is 25 dst is 23 / end > + actions queue index 1 / end > + > +check only patterns supported by switch can be created for the default > priorty is 0. > +So the first flow can be created and the second flow can not be created. > + > + > +Test case: Create no destination high priority flow rule > +=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=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 > + > +a no destination high priority rule is not acceptable. Destination here = means > exact actions. > + > +Start the ``testpmd`` application as follows:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf -n 4 -w > 0000:af:00.0,pipeline-mode-support=3D1 -- -i --txq=3D8 --rxq=3D8 > + set fwd rxonly > + set verbose 1 > + > +create a rule:: > + > + flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.= 2 dst is > 192.168.0.3 tos is 4 / tcp src is 25 dst is 23 / end actions / end > + flow create 0 priority 0 ingress pattern eth / ipv4 src is > + 192.168.0.2 dst is 192.168.0.3 tos is 4 / tcp src is 25 dst is 23 / > + end > + > +check the flows can not be created. > + > + > +Test case: Create flow rules only supported by fdir filter with > +priority 0 > +=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=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=3D > +=3D=3D=3D=3D > + > +create a rule only supported by fdir filter with priority 0, it is not a= cceptable. > + > +Start the ``testpmd`` application as follows:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf -n 4 -w > 0000:af:00.0,pipeline-mode-support=3D1 -- -i --txq=3D8 --rxq=3D8 > + set fwd rxonly > + set verbose 1 > + > +create rules:: > + > + MAC_IPV6_SCTP > + flow create 0 priority 0 ingress pattern eth / ipv6 src is > + 1111:2222:3333:4444:5555:6666:7777:8888 dst is > + 1111:2222:3333:4444:5555:6666:7777:9999 / sctp src is 25 dst is 23 / > + end actions queue index 1 / end > + > + MAC_IPV4_SCTP > + flow create 0 priority 0 ingress pattern eth / ipv4 src is > + 192.168.0.2 dst is 192.168.0.3 tos is 4 ttl is 20 / sctp src is 25 dst > + is 23 / end actions queue index 1 / end > + > +check the flows can not be created. > + > + > +Test case: Create flow rules only supported by switch filter with > +priority 1 > +=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=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=3D > +=3D=3D=3D=3D=3D=3D > + > +create a rule only supported by fdir switch with priority 1, it is not > acceptable. > + > +Start the ``testpmd`` application as follows:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf -n 4 -w > 0000:af:00.0,pipeline-mode-support=3D1 -- -i --txq=3D8 --rxq=3D8 > + set fwd rxonly > + set verbose 1 > + > +create rules:: > + > + MAC_IPV4_NVGRE_IPV4_FRAG > + flow create 0 priority 1 ingress pattern eth / ipv4 / nvgre / eth / > + ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / end actions > + queue index 3 / end > + > + MAC_IPV4_NVGRE_IPV4_UDP_PAY > + flow create 0 priority 1 ingress pattern eth / ipv4 / nvgre / eth / > + ipv4 src is 192.168.0.2 dst is 192.168.0.3 tos is 4 / udp src is 25 > + dst is 23 / end actions queue index 3 / end > + > +check the flows can not be created. > + > + > +Test case: Create flow rules with same parameter but differenet actions > +=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=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=3D > +=3D=3D=3D > + > +It is acceptable to create same rules with differenet filter in pipeline= mode. > +When fdir filter and switch filter has the same parameter rules, the flo= w will > map to switch then fdir. > + > +Start the ``testpmd`` application as follows:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf -n 4 -w > 0000:af:00.0,pipeline-mode-support=3D1 -- -i --txq=3D8 --rxq=3D8 > + set fwd rxonly > + set verbose 1 > + > +create switch rule:: > + > + flow create 0 priority 0 ingress pattern eth / ipv4 src is > + 192.168.0.2 dst is 192.168.0.3 tos is 4 / tcp src is 25 dst is 23 / > + end actions queue index 1 / end > + > +create fdir rule:: > + > + flow create 0 priority 1 ingress pattern eth / ipv4 src is > + 192.168.0.2 dst is 192.168.0.3 tos is 4 / tcp src is 25 dst is 23 / > + end actions queue index 3 / end > + > +check two flows can be created. > + > +send a pkt to check the packets are recieved in queue 1:: > + > + > + sendp([Ether(dst=3D"00:00:00:00:11:00",src=3D"11:22:33:44:55:66")/IP(sr= c=3D" > + 192.168.0.2",dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D25,dport=3D23)/Ra= w('x'*8 > + 0)],iface=3D"enp134s0f0") > + > +remove the switch rule and send a pkt to check the packets are recieved = in > queue 3:: > + > + flow destroy 0 rule 0 > + > + > + sendp([Ether(dst=3D"00:00:00:00:11:00",src=3D"11:22:33:44:55:66")/IP(sr= c=3D" > + 192.168.0.2",dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D25,dport=3D23)/Ra= w('x'*8 > + 0)],iface=3D"enp134s0f0") > + > +restart the ``testpmd`` application as follows:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf -n 4 -w 0000:af:00.0, > pipeline-mode-support=3D1 -- -i --txq=3D8 --rxq=3D8 > + set fwd rxonly > + set verbose 1 > + > +create fdir rule:: > + > + flow create 0 priority 1 ingress pattern eth / ipv4 src is > + 192.168.0.2 dst is 192.168.0.3 tos is 4 / tcp src is 25 dst is 23 / > + end actions queue index 3 / end > + > +create switch rule:: > + > + flow create 0 priority 0 ingress pattern eth / ipv4 src is > + 192.168.0.2 dst is 192.168.0.3 tos is 4 / tcp src is 25 dst is 23 / > + end actions queue index 1 / end > + > +check two flows can be created. > + > +send a pkt to check the packets are recieved in queue 1:: > + > + > + sendp([Ether(dst=3D"00:00:00:00:11:00",src=3D"11:22:33:44:55:66")/IP(sr= c=3D" > + 192.168.0.2",dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D25,dport=3D23)/Ra= w('x'*8 > + 0)],iface=3D"enp134s0f2") > + > +remove the switch rule and send a pkt to check the packets are recieved = in > queue 3:: > + > + flow destroy 0 rule 1 > + > + > + sendp([Ether(dst=3D"00:00:00:00:11:00",src=3D"11:22:33:44:55:66")/IP(sr= c=3D" > + 192.168.0.2",dst=3D"192.168.0.3",tos=3D4)/TCP(sport=3D25,dport=3D23)/Ra= w('x'*8 > + 0)],iface=3D"enp134s0f2") > + > + > +Test case: stress all fdir rules > +=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 > + > +the fdir tabel can contain 16K(16384) flow rules. Each port can use 14K = rules, > and 2K are shared equally to each port. > +that means, 1 port of 2*25G/2*100G can use 14+2/2=3D15K fdir rules, 1 po= rt > of 4*25G can use 14+2/4=3D14.5K fdir rules. > +in non-pipeline mode, we can create switch rules only after fill out fid= r tabel. > +in pipeline mode, these two tables are independent. > + > +Start the ``testpmd`` application as follows:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf -n 4 -w > 0000:af:00.0,pipeline-mode-support=3D1 -- -i --txq=3D8 --rxq=3D8 > + set fwd rxonly > + set verbose 1 > + > +create 10K switch rules with priority 0:: > + > + flow create 0 priority 0 ingress pattern eth / ipv4 src is 192.168.0.= 0 dst is > 192.1.0.0 tos is 4 / tcp src is 25 dst is 23 / end actions queue index 5 = / end > + ...... > + > +create 16K fdir rules with priority 1:: > + > + flow create 0 priority 1 ingress pattern eth / ipv4 src is 192.168.0.= 0 dst is > 192.1.0.0 tos is 4 / tcp src is 25 dst is 23 / end actions queue index 3 = / end > + ...... > + > +check the flow rules can be created and sent packets which is match to > these rules:: > + > + > sendp([Ether(dst=3D"00:00:00:00:01:00",src=3D"11:22:33:44:55:66")/IP(src= =3D"192.1 > 68.0.0",dst=3D"192.1.0.0",tos=3D4)/TCP(sport=3D25,dport=3D23)/Raw("x"*80)= ],iface=3D" > enp134s0f0") > + ...... > + > +check the packets can be recieved by the right queues. > + > +restart the ``testpmd`` application as follows:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf -n 4 -w 0000:af:00.0 = -- -i > --txq=3D8 --rxq=3D8 > + set fwd rxonly > + set verbose 1 > + > +check the ports number of nic, create 15K/14.5K fdir rules:: > + > + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.0 dst is > + 192.1.0.0 tos is 4 / tcp src is 25 dst is 23 / end actions queue index > + 3 / end > + > +create 10K switch rules:: > + > + flow create 0 ingress pattern eth / ipv4 src is 192.168.0.0 dst is > + 192.1.0.0 tos is 4 / tcp src is 14 dst is 17 / end actions queue index > + 5 / end > + > +check the flow rules can be created and sent packets which is match to > these rules:: > + > + > sendp([Ether(dst=3D"00:00:00:00:01:00",src=3D"11:22:33:44:55:66")/IP(src= =3D"192.1 > 68.0.0",dst=3D"192.1.0.0",tos=3D4)/TCP(sport=3D25,dport=3D23)/Raw("x"*80)= ],iface=3D" > enp134s0f0") > + ...... > + > +check the packets can be recieved by the right queues. > -- > 2.17.1