From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id AE8CB1B199 for ; Wed, 11 Oct 2017 13:29:57 +0200 (CEST) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga105.jf.intel.com with ESMTP; 11 Oct 2017 04:29:56 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.43,361,1503385200"; d="scan'208";a="137392110" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by orsmga004.jf.intel.com with ESMTP; 11 Oct 2017 04:29:56 -0700 Received: from fmsmsx125.amr.corp.intel.com (10.18.125.40) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 11 Oct 2017 04:29:56 -0700 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by FMSMSX125.amr.corp.intel.com (10.18.125.40) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 11 Oct 2017 04:29:56 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.213]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.93]) with mapi id 14.03.0319.002; Wed, 11 Oct 2017 19:29:54 +0800 From: "Peng, Yuan" To: "Zhao1, Wei" , "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH v8 0/2] net/i40e: API to configure queue regions for RSS Thread-Index: AQHTQnBXq6USFXOXxEugw2agvAF/NKLegYug Date: Wed, 11 Oct 2017 11:29:53 +0000 Message-ID: <67D543A150B29E4CAAE53918F64EDAEA3744A0DA@SHSMSX103.ccr.corp.intel.com> References: <1506676584-41030-1-git-send-email-wei.zhao1@intel.com> <1507712133-31875-1-git-send-email-wei.zhao1@intel.com> In-Reply-To: <1507712133-31875-1-git-send-email-wei.zhao1@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: 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: [dpdk-dev] [PATCH v8 0/2] net/i40e: API to configure queue regions for RSS X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 11 Oct 2017 11:29:58 -0000 Tested-by: Peng Yuan - Tested Branch: dpdk-master - Tested Commit: 7a8889324654c9e39f9e18097ccc74d6ff2588cf - OS: 4.5.5-300.fc24.x86_64 - GCC: gcc (GCC) 5.3.1 20151207 (Red Hat 5.3.1-2) - CPU: Intel(R) Xeon(R) CPU E5-2699 v4 @ 2.20GHz - NIC: Intel Corporation Device Fortville [8086:1572] - Default x86_64-native-linuxapp-gcc configuration - Prerequisites: - Total 3 cases, 3 passed, 0 failed - Prerequisites command / instruction: 1. Hardware: Fortville 2. software: dpdk: http://dpdk.org/git/dpdk scapy: http://www.secdev.org/projects/scapy/ 3. bind the port to dpdk driver:: ./usertools/dpdk-devbind.py -b igb_uio 05:00.0 the mac address of 05:00.0 is 00:00:00:00:01:00 4. start the testpmd:: ./x86_64-native-linuxapp-gcc/app/testpmd -c 1ffff -n 4 -- -i --rxq=3D16= --txq=3D16 testpmd> port config all rss all testpmd> set fwd rxonly testpmd> set verbose 1 testpmd> start - Cases: Test case 1: different pctype packet can enter the expected queue region =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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. Set queue region on a port:: testpmd> set port 0 queue-region region_id 0 queue_start_index 1 queue_= num 1 testpmd> set port 0 queue-region region_id 1 queue_start_index 3 queue_= num 2 testpmd> set port 0 queue-region region_id 2 queue_start_index 6 queue_= num 2 testpmd> set port 0 queue-region region_id 3 queue_start_index 8 queue_= num 2 testpmd> set port 0 queue-region region_id 4 queue_start_index 11 queue= _num 4 testpmd> set port 0 queue-region region_id 5 queue_start_index 15 queue= _num 1 2. Set the mapping of flowtype to region index on a port:: testpmd> set port 0 queue-region region_id 0 flowtype 31 testpmd> set port 0 queue-region region_id 1 flowtype 32 testpmd> set port 0 queue-region region_id 2 flowtype 33 testpmd> set port 0 queue-region region_id 3 flowtype 34 testpmd> set port 0 queue-region region_id 4 flowtype 35 testpmd> set port 0 queue-region region_id 5 flowtype 45 testpmd> set port 0 queue-region region_id 2 flowtype 41 testpmd> set port 0 queue-region flush on 3. send packet:: pkt1 =3D Ether(dst=3D"00:00:00:00:01:00", src=3D"00:02:00:00:00:01")/IP= (src=3D"192.168.0.1", dst=3D"192.168.0.2")/UDP(sport=3D23,dport=3D24)/Raw('= x'*20) pkt2 =3D Ether(dst=3D"00:00:00:00:01:00", src=3D"00:02:00:00:00:01")/IP= (src=3D"192.168.0.1", dst=3D"192.168.0.2")/TCP(sport=3D33,dport=3D34,flags= =3D"S")/Raw('x'*20) pkt3 =3D Ether(dst=3D"00:00:00:00:01:00", src=3D"00:02:00:00:00:01")/IP= (src=3D"192.168.0.1", dst=3D"192.168.0.2")/TCP(sport=3D33,dport=3D34,flags= =3D"PA")/Raw('x' * 20) pkt4 =3D Ether(dst=3D"00:00:00:00:01:00", src=3D"00:02:00:00:00:01")/IP= (src=3D"192.168.0.1", dst=3D"192.168.0.2")/SCTP(sport=3D44,dport=3D45,tag= =3D1)/SCTPChunkData(data=3D"X" * 20) pkt5 =3D Ether(dst=3D"00:00:00:00:01:00", src=3D"00:02:00:00:00:01")/IP= (src=3D"192.168.0.1", dst=3D"192.168.0.2")/Raw('x'*20) pkt6 =3D Ether(dst=3D"00:00:00:00:01:00", src=3D"00:02:00:00:00:01")/IP= v6(src=3D"2001::1", dst=3D"2001::2")/Raw('x' * 20) pkt7 =3D Ether(dst=3D"00:00:00:00:01:00", src=3D"00:02:00:00:00:01")/IP= v6(src=3D"2001::1", dst=3D"2001::2")/UDP(sport=3D24,dport=3D25)/Raw('x'*20) pkt8 =3D Ether(dst=3D"00:00:00:00:01:00", src=3D"00:02:00:00:00:01")/Do= t1Q(prio=3D1)/IP(src=3D"192.168.0.1", dst=3D"192.168.0.2")/Raw('x'*20) verify the pkt1 to queue 1, pkt2 to queue 3 or queue 4, pkt3 to queue 6 or queue 7, pkt4 to queue 8 or queue 9, pkt5 to queue 11 or 12 or 13 or 14, pkt6 to queue 15, pkt7 to queue 6 or queue 7, pkt8 enter the same queue with pkt5. 4. verified the rules can be listed and flushed:: testpmd> show port 0 queue-region testpmd> set port 0 queue-region flush off Notes: fortville can't parse the TCP SYN type packet, fortpark can parse it= . So if fortville, pkt2 to queue 6 or queue 7. Test case 2: different user priority packet can enter the expected queue re= gion =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=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. Set queue region on a port:: testpmd> set port 0 queue-region region_id 0 queue_start_index 0 queue_= num 1 testpmd> set port 0 queue-region region_id 7 queue_start_index 1 queue_= num 8 testpmd> set port 0 queue-region region_id 2 queue_start_index 10 queue= _num 4 2. Set the mapping of User Priority to Traffic Classes on a port:: testpmd> set port 0 queue-region UP 3 region_id 0 testpmd> set port 0 queue-region UP 1 region_id 7 testpmd> set port 0 queue-region UP 2 region_id 2 testpmd> set port 0 queue-region UP 7 region_id 2 testpmd> set port 0 queue-region flush on 3. send packet:: pkt1=3DEther(dst=3D"00:00:00:00:01:00", src=3D"00:02:00:00:00:01")/Dot1= Q(prio=3D3)/IP(src=3D"192.168.0.1", dst=3D"192.168.0.2")/UDP(sport=3D22, dp= ort=3D23)/Raw('x'*20) pkt2=3DEther(dst=3D"00:00:00:00:01:00", src=3D"00:02:00:00:00:01")/Dot1= Q(prio=3D1)/IP(src=3D"192.168.0.1", dst=3D"192.168.0.2")/UDP(sport=3D22, dp= ort=3D23)/Raw('x'*20) pkt3=3DEther(dst=3D"00:00:00:00:01:00", src=3D"00:02:00:00:00:01")/Dot1= Q(prio=3D2)/IP(src=3D"192.168.0.1", dst=3D"192.168.0.2")/TCP(sport=3D32, dp= ort=3D33)/Raw('x'*20) pkt4=3DEther(dst=3D"00:00:00:00:01:00", src=3D"00:02:00:00:00:01")/Dot1= Q(prio=3D7)/IP(src=3D"192.168.0.1", dst=3D"192.168.0.2")/TCP(sport=3D32, dp= ort=3D33)/Raw('x'*20) pkt5=3DEther(dst=3D"00:00:00:00:01:00", src=3D"00:02:00:00:00:01")/Dot1= Q(prio=3D7)/IP(src=3D"192.168.0.3", dst=3D"192.168.0.4")/UDP(sport=3D22, dp= ort=3D23)/Raw('x'*20) pkt6=3DEther(dst=3D"00:00:00:00:01:00", src=3D"00:02:00:00:00:01")/IP(s= rc=3D"192.168.0.3", dst=3D"192.168.0.4")/UDP(sport=3D22, dport=3D23)/Raw('x= '*20) verify the pkt1 to queue 0, pkt2 to queue 1 or 2 or 3 or 4 or 5 or 6 or 7 or 8. pkt3 to queue 10 or 11 or 12 or 13. pkt4 enter the same queue with pkt3. pkt5 to queue 10 or 11 or 12 or 13. pkt6 enter different queue from pkt5. 4. verified the rules can be listed and flushed:: testpmd> show port 0 queue-region testpmd> set port 0 queue-region flush off Test case 3: boundary value testing =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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. boundary value testing of "Set a queue region on a port" the following three rules are set successfully:: testpmd> set port 0 queue-region region_id 0 queue_start_index 0 queue_= num 16 testpmd> set port 0 queue-region flush on testpmd> set port 0 queue-region flush off testpmd> set port 0 queue-region region_id 0 queue_start_index 15 queue= _num 1 testpmd> set port 0 queue-region flush on testpmd> set port 0 queue-region flush off testpmd> set port 0 queue-region region_id 7 queue_start_index 2 queue_= num 8 testpmd> set port 0 queue-region flush on all the three rules can be listed:: testpmd> show port 0 queue-region testpmd> set port 0 queue-region flush off the following four rules can't be set successfully.:: testpmd> set port 0 queue-region region_id 8 queue_start_index 2 queue_= num 2 testpmd> set port 0 queue-region region_id 1 queue_start_index 16 queue= _num 1 testpmd> set port 0 queue-region region_id 2 queue_start_index 15 queue= _num 2 testpmd> set port 0 queue-region region_id 3 queue_start_index 2 queue_= num 3 no rules can be listed:: testpmd> show port 0 queue-region testpmd> set port 0 queue-region flush off 2. boundary value testing of "Set the mapping of flowtype to region index on a port":: testpmd> set port 0 queue-region region_id 0 queue_start_index 2 queue_= num 2 testpmd> set port 0 queue-region region_id 7 queue_start_index 4 queue_= num 4 the first two rules can be set successfully:: testpmd> set port 0 queue-region region_id 0 flowtype 63 testpmd> set port 0 queue-region region_id 7 flowtype 0 the first two rules can be listed:: testpmd> show port 0 queue-region the last two rule can't be set successfully:: testpmd> set port 0 queue-region region_id 0 flowtype 64 testpmd> set port 0 queue-region region_id 2 flowtype 34 testpmd> set port 0 queue-region flush on the last two rules can't be listed:: testpmd> show port 0 queue-region testpmd> set port 0 queue-region flush off 3. boundary value testing of "Set the mapping of UP to region index on a port":: testpmd> set port 0 queue-region region_id 0 queue_start_index 2 queue_= num 2 testpmd> set port 0 queue-region region_id 7 queue_start_index 4 queue_= num 4 the first two rules can be set successfully:: testpmd> set port 0 queue-region UP 7 region_id 0 testpmd> set port 0 queue-region UP 0 region_id 7 the first two rules can be listed:: testpmd> show port 0 queue-region the last two rule can't be set successfully:: testpmd> set port 0 queue-region UP 8 region_id 0 testpmd> set port 0 queue-region UP 1 region_id 2 testpmd> set port 0 queue-region flush on the last two rules can't be listed:: testpmd> show port 0 queue-region testpmd> set port 0 queue-region flush off -----Original Message----- From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Wei Zhao Sent: Wednesday, October 11, 2017 4:56 PM To: dev@dpdk.org Subject: [dpdk-dev] [PATCH v8 0/2] net/i40e: API to configure queue regions= for RSS The patches mainly finish following functions: 1) Command line for input queue region configure parameters. 2) Set or flush queue region configutation. v2: -fix bug for packet into queue region code. -change code style for DPDK C programing. -change that "flowtype" name to " hw_flowtype " in struct rte_i40e_rss_reg= ion_conf v3: -fix patch check warning -fix a bug in cmdline.c v4: -fix bug for flowtype config. -add a new command for get all queue region configuration. -change function name to "rss" related. -add document info about queue region CLI. v5: -fix patchcheck warning. -add port id check. v6: -split this patch set into 2 patch. v7: -change some PMD_DRV_LOG log. v8: -change CLI command format. -change some functions name. root (2): net/i40e: queue region set and flush app/testpmd: add API for configuration of queue region app/test-pmd/cmdline.c | 424 ++++++++++++++++++++++++ app/test-pmd/config.c | 44 +++ app/test-pmd/testpmd.h | 3 + doc/guides/testpmd_app_ug/testpmd_funcs.rst | 41 +++ drivers/net/i40e/i40e_ethdev.c | 27 +- drivers/net/i40e/i40e_ethdev.h | 39 +++ drivers/net/i40e/rte_pmd_i40e.c | 494 ++++++++++++++++++++++++= ++++ drivers/net/i40e/rte_pmd_i40e.h | 91 +++++ drivers/net/i40e/rte_pmd_i40e_version.map | 2 +- 9 files changed, 1158 insertions(+), 7 deletions(-) --=20 2.7.4