From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 97D50F3E for ; Tue, 24 Apr 2018 03:34:14 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 23 Apr 2018 18:34:13 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,320,1520924400"; d="scan'208";a="35618235" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga007.jf.intel.com with ESMTP; 23 Apr 2018 18:34:12 -0700 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 23 Apr 2018 18:34:12 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.210]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.6]) with mapi id 14.03.0319.002; Tue, 24 Apr 2018 09:34:10 +0800 From: "Liu, Yong" To: "Peng, Yuan" , "dts@dpdk.org" CC: "Peng, Yuan" Thread-Topic: [dts] [PATCH] test_plans: move rss to rte flow Thread-Index: AQHT18O9pcDrUjQO4UaWaVRtD8ZXqKQPJQ+Q Date: Tue, 24 Apr 2018 01:34:10 +0000 Message-ID: <86228AFD5BCD8E4EBFD2B90117B5E81E6302822A@SHSMSX103.ccr.corp.intel.com> References: <1524131445-122241-1-git-send-email-yuan.peng@intel.com> In-Reply-To: <1524131445-122241-1-git-send-email-yuan.peng@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZTg5MjU4ZTgtZjhiMy00NGM1LWI4YmQtMjc4NDgwNGQxNTZmIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjIuNS4xOCIsIlRydXN0ZWRMYWJlbEhhc2giOiJPUU5rYit6WXBJZ05UTjVEVlREZmlmWXhjWE9aM1owWjVUalM5UkNOeTB4bFBENlhuaWp0Z1o5Y3BIOE9BeTdjIn0= x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action 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] test_plans: move rss to rte flow 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: , X-List-Received-Date: Tue, 24 Apr 2018 01:34:15 -0000 Yuan, Some comments are inline.=20 Thanks, Marvin > -----Original Message----- > From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of Peng Yuan > Sent: Thursday, April 19, 2018 5:51 PM > To: dts@dpdk.org > Cc: Peng, Yuan > Subject: [dts] [PATCH] test_plans: move rss to rte flow >=20 > Add the test plan for the feature "move rss to rte flow" >=20 Yuan, "move rss to rte flow" is the internal naming. It's not suitable for = the name of test plan. I think rte_flow_rss_enable will be more suitable.=20 > Signed-off-by: Peng Yuan >=20 > diff --git a/test_plans/rss_to_rte_flow_test_plan.rst > b/test_plans/rss_to_rte_flow_test_plan.rst > new file mode 100644 > index 0000000..35a7f4b > --- /dev/null > +++ b/test_plans/rss_to_rte_flow_test_plan.rst > @@ -0,0 +1,265 @@ > +.. Copyright (c) <2018>, 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 > +Move RSS to rte_flow > +=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 > + > + rte_flow actually defined to include RSS, but till now, > + RSS is out of rte_flow. It was suggested to move existing RSS to > rte_flow. Please check grammar issue.=20 > + This can be better for users, and may save effort for CPK development= . > + RSS enabling: now the rss enable is done through > rte_eth_rss_conf.rss_hf, > + need to enable it on rte_flow API . Need to implement it on igb ixgbe > and > + i40e. Please simplify the description, like "rte_flow API enabling RSS is support= on igb/ixgbe/i40e" And "rte flow API RSS input set is support on i40e". > + RSS input set changing: now the input set changing is done through > + rte_eth_dev_filter_ctrl, need to enable it on rte_flow API. > + Need to implement it on i40e. > + It will make the DDP and FXP on NICs can be changed by rte_flow API. Not sure about the relationship between DDP/FXP and rte_flow RSS feature. Please describe with more details.=20 > + New packet type group or pctype can be done in driver instead of the > + format of private API. > + > +Prerequisites > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +1. Hardware: > + Fortville/82599/I350 > + > +2. Software: > + dpdk: http://dpdk.org/git/dpdk > + scapy: http://www.secdev.org/projects/scapy/ > + > +3. Bind the pf port to dpdk driver:: > + > + ./usertools/dpdk-devbind.py -b igb_uio 05:00.0 05:00.1 > + > +4. Configure three packets ready sent to port 0:: > + > + pkt1 =3D > Ether(dst=3D"00:00:00:00:01:00")/IP(src=3D"10.0.0.1",dst=3D"192.168.0.2")= /SCTP(d > port=3D80, sport=3D80)/("X"*48) > + pkt2 =3D > Ether(dst=3D"00:00:00:00:01:00")/IP(src=3D"10.0.0.1",dst=3D"192.168.0.2")= /UDP(dp > ort=3D50, sport=3D50)/("X"*48) > + pkt3 =3D > Ether(dst=3D"00:00:00:00:01:00")/IP(src=3D"10.0.0.1",dst=3D"192.168.0.3")= /TCP(dp > ort=3D50, sport=3D50)/("X"*48) > + > +Test case: set valid and invalid parameter > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Is this case suitable for all mentioned NICs? If not, please announce the N= IC type. > + > +1. Start the testpmd:: > + > + ./testpmd -c 1ffff -n 4 -- -i --nb-cores=3D8 --rxq=3D16 --txq=3D16 -= -port- > topology=3Dchained > + testpmd> set fwd rxonly > + testpmd> set verbose 1 > + testpmd> start > + > +2. Set the RSS queue rule:: > + Please add more details for this rule like "Set queue 0, 8 and 15 into RSS = region". > + testpmd> flow create 0 ingress pattern end actions rss queues 0 8 15 > end / end > + > +3. Send the three packets to port 0. > + All the packets are distributed to queue 0/8/15. > + > +4. Set a second RSS queue rule:: > + > + testpmd> flow create 0 ingress pattern end actions rss queues 3 end = / > end > + Caught error type 2 (flow rule (handle)): Failed to create flow. > + > + There can't be more than one RSS queue rule. > + > +5. Reset the RSS queue rule:: > + > + testpmd> flow flush 0 > + testpmd> flow create 0 ingress pattern end actions rss queues 3 end = / > end > + > + The rule is set successfully. > + Send the three packets to port 0, all of them are distributed to queu= e > 3. > + > +6. Set a wrong parameter:: > + > + testpmd> flow create 0 ingress pattern end actions rss queues 16 end > / end > + Caught error type 11 (specific action): cause: 0x7ffdb2bbe6e8, queue > id > max number of queues > + > +7. Set all the queues to the rule:: > + > + testpmd> flow create 0 ingress pattern end actions rss queues 0 1 2 = 3 > 4 5 6 7 8 9 10 11 12 13 14 15 end / end > + > + Send the three packets to port 0, the packets may be distributed to > any > + of the queue 0-15. > + > +Test case: disable rss in command-line > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +1. Start the testpmd:: > + > + ./testpmd -c 1ffff -n 4 -- -i --nb-cores=3D8 --rxq=3D16 --txq=3D16 -= - > + testpmd> set fwd rxonly > + testpmd> set verbose 1 > + testpmd> start > + > +2. Send the three packets to port 0. > + All the packets are distributed to queue 0. > + > +3. Set the RSS queue rule:: > + > + testpmd> flow create 0 ingress pattern end actions rss queues 6 7 8 > end / end > + > + Send the three packets to port 0. > + All the packets are distributed to queue 6/7/8. > + > +4. Clean the rule:: > + > + testpmd> flow flush 0 > + > + Send the three packets to port 0. > + All the packets are distributed to queue 0. > + > +Test case: both set flow directer and rss 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 > + Case name like "Flow director rule and RSS rule combination" should be bett= er. > +1. Start the testpmd:: > + > + ./testpmd -c 1ffff -n 4 -- -i --nb-cores=3D8 --rxq=3D16 --txq=3D16 -= -pkt- > filter-mode=3Dperfect > + testpmd> set fwd rxonly > + testpmd> set verbose 1 > + testpmd> start > + > +2. Set RSS queue rule:: > + > + testpmd> flow create 0 ingress pattern end actions rss queues 6 7 8 > end / end > + > + Send pkt1 to port 0, pkt1 is distributed to queue 7. > + > +3. Set a flow director rule:: > + > + testpmd> flow create 0 ingress pattern eth / ipv4 src is 192.168.0.1 > dst is 192.168.0.2 / end actions queue index 1 / end > + > + Send pkt1 to port 0, pkt1 is distributed to queue 1. > + > +4. Destroy the flow director rule:: > + > + testpmd> flow destroy 0 rule 1 > + > + Send pkt1 to port 0, pkt1 is distributed to queue 7 again. > + > +Test case: both set queue region and rss rule(fortville) > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D > + You can emphasize the NIC type in the content.=20 > +1. Start the testpmd:: > + > + ./testpmd -c 1ffff -n 4 -- -i --nb-cores=3D16 --rxq=3D16 --txq=3D16 = --port- > topology=3Dchained > + testpmd> set fwd rxonly > + testpmd> set verbose 1 > + testpmd> start > + > +2. Set RSS queue rule:: > + > + testpmd> flow create 0 ingress pattern end actions rss queues 7 8 10 > 11 12 14 15 end / end > + > +3. Send pkt to port 0:: > + > + pkt1 =3D Ether(dst=3D"00:00:00:00:01:00", > src=3D"52:00:00:00:00:00")/Dot1Q(prio=3D1) \ > + /IP(src=3D"10.0.0.1",dst=3D"192.168.0.2")/TCP(dport=3D80, sport=3D80= )/("X"*48) > + pkt2 =3D Ether(dst=3D"00:00:00:00:01:00", > src=3D"52:00:00:00:00:00")/Dot1Q(prio=3D2) \ > + /IP(src=3D"10.0.0.1",dst=3D"192.168.0.2")/TCP(dport=3D80, sport=3D80= )/("X"*48) > + pkt3 =3D Ether(dst=3D"00:00:00:00:01:00", > src=3D"52:00:00:00:00:00")/Dot1Q(prio=3D3) \ > + /IP(src=3D"10.0.0.1",dst=3D"192.168.0.2")/TCP(dport=3D80, sport=3D80= )/("X"*48) > + > + They are all distributed to queue 8. > + > +4. Set queue region:: > + > + testpmd> flow create 0 ingress pattern vlan tci is 0x2000 / end > actions rss queues 7 8 end / end > + testpmd> flow create 0 ingress pattern vlan tci is 0x4000 / end > actions rss queues 11 12 end / end > + testpmd> flow create 0 ingress pattern vlan tci is 0x6000 / end > actions rss queues 15 end / end > + > + Send the 3 packets to port 0. They are distributed to queue 7/11/15. > + > +5. Flush the queue region:: > + > + testpmd> flow list 0 > + ID Group Prio Attr Rule > + 0 0 0 i- =3D> RSS > + 1 0 0 i- VLAN =3D> RSS > + 2 0 0 i- VLAN =3D> RSS > + 3 0 0 i- VLAN =3D> RSS > + > + testpmd> flow destroy 0 rule 2 > + Flow rule #2 destroyed > + testpmd> flow list 0 > + ID Group Prio Attr Rule > + 0 0 0 i- =3D> RSS > + 1 0 0 i- VLAN =3D> RSS > + 3 0 0 i- VLAN =3D> RSS > + > + Send the 3 packets to port 0. They are distributed to queue 0. > + destroy one queue region rule, all the rules become invalid. > + > +6. Set invalid queue or set discontinuous queue region:: > + > + testpmd> flow flush 0 > + testpmd> flow create 0 ingress pattern end actions rss queues 8 10 1= 1 > 12 15 end / end > + testpmd> flow create 0 ingress pattern vlan tci is 0x2000 / end > actions rss queues 8 9 end / end > + Caught error type 11 (specific action): cause: 0x7ffda008efe8, no > valid queues > + testpmd> flow create 0 ingress pattern vlan tci is 0x2000 / end > actions rss queues 8 10 end / end > + Caught error type 11 (specific action): cause: 0x7ffda008efe8, no > valid queues > + testpmd> flow create 0 ingress pattern vlan tci is 0x4000 / end > actions rss queues 10 11 12 end / end > + i40e_flow_parse_rss_action(): The region sizes should be any of the > following values: 1, 2, 4, 8, 16, 32, 64 as long as the total number of > queues do not exceed the VSI allocation > + Caught error type 2 (flow rule (handle)): Failed to create flow. > + > +Test case: both set queue region and rss rule(fortville use old API) > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +1. Start the testpmd:: > + > + ./testpmd -c 1ffff -n 4 -- -i --nb-cores=3D8 --rxq=3D16 --txq=3D16 -= -port- > topology=3Dchained > + testpmd> port config all rss all > + testpmd> set fwd rxonly > + testpmd> set verbose 1 > + testpmd> start > + > +2. Set queue region:: > + > + testpmd> set port 0 queue-region region_id 0 queue_start_index 1 > queue_num 1 > + testpmd> set port 0 queue-region region_id 0 flowtype 31 > + testpmd> set port 0 queue-region flush on > + > + Send pkt2 to port 0. It is distributed to queue 1. > + > +3. Set RSS queue rule:: > + > + testpmd> flow create 0 ingress pattern end actions rss queues 6 7 en= d > / end > + > + Send pkt2 to port 0. It is still distributed to queue 1. > + > +4. flush the queue region:: > + > + testpmd> set port 0 queue-region flush off > + > + Send pkt2 to port 0. It is distributed to queue 7. > -- > 2.5.0