From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by dpdk.org (Postfix) with ESMTP id 1204F231E for ; Fri, 24 Aug 2018 11:12:22 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Aug 2018 02:12:22 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.53,281,1531810800"; d="scan'208";a="79780762" Received: from dpdktest46-2.sh.intel.com ([10.67.111.92]) by fmsmga002.fm.intel.com with ESMTP; 24 Aug 2018 02:12:21 -0700 From: Wang Fei To: dts@dpdk.org Cc: lijuan.tu@intel.com Date: Fri, 24 Aug 2018 11:04:18 +0800 Message-Id: <1535079859-38124-1-git-send-email-feix.y.wang@intel.com> X-Mailer: git-send-email 2.7.4 Subject: [dts] [DTS][Patch V3 2/2] Add test plan for avf 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: Fri, 24 Aug 2018 09:12:23 -0000 Signed-off-by: Wang Fei --- test_plans/avf_test_plan.rst | 505 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 505 insertions(+) create mode 100644 test_plans/avf_test_plan.rst diff --git a/test_plans/avf_test_plan.rst b/test_plans/avf_test_plan.rst new file mode 100644 index 0000000..843ea70 --- /dev/null +++ b/test_plans/avf_test_plan.rst @@ -0,0 +1,505 @@ +# BSD LICENSE +# +# Copyright(c) 2010-2015 Intel Corporation. All rights reserved. +# 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. + + +============== +AVF test plan +============== + +Description +=========== +Adaptive Virtual Function(AVF) is aimed to provide a common VF for VM +which means just need one unified VF driver so you don't have to reload +different VF driver when you upgrade the PF NIC. +One of the advantages is you don't have to do any modification for code or +hardware for a existing VM image running on the new NIC + + + +Hardwares: +---------- +I40E driver NIC (Fortville XXV710, Fortville XL710, Fortville X710) + + +Prerequisites +============= +1.Modify DPDK source code to enable AVF function for I40E NIC:: + + sed -i -e '/AVF_DEV_ID_ADAPTIVE_VF/s/0x1889/0x154c/g' drivers/net/avf/base/avf_devids.h + sed -i -e '/I40E_DEV_ID_VF/s/0x154C/0x164C/g' drivers/net/i40e/base/i40e_devids.h + + make install RTE_SDK=`pwd` T=x86_64-native-linuxapp-gcc + +2. Configure PF and VF:: + + modprobe uio; + insmod x86_64-native-linuxapp-gcc/kmod/igb_uio.ko; + + ./usertools/dpdk-devbind.py --bind=igb_uio 05:00.0 07:00.0; + + echo 1 > /sys/bus/pci/devices/0000\:05\:00.0/max_vfs; + echo 1 > /sys/bus/pci/devices/0000\:07\:00.0/max_vfs; + + ./usertools/dpdk-devbind.py --bind=vfio-pci 05:02.0 07:02.0 + or + (./usertools/dpdk-devbind.py --bind=igb_uio 05:02.0 07:02.0) + +3. Set PF ports up and congiure VF ports' mac:: + + ./x86_64-native-linuxapp-gcc/app/testpmd -l 1-5 -n 4 --socket-mem=1024,1024 --file-prefix=pf -w 05:00.0 -w 07:00.0 -- -i + + testpmd>set vf mac addr 0 0 00:12:34:56:78:01 + testpmd>set vf mac addr 1 0 00:12:34:56:78:02 + +4. Start up VF ports:: + ./x86_64-native-linuxapp-gcc/app/testpmd -l 6-10 -n 4 --master-lcore=6 --socket-mem=1024,1024 --file-prefix=vf \ + -w 05:02.0 -w 07:02.0 -- -i --txq=4 --rxq=4 --nb-cores=4 + +Detail test plan about each features +==================================== + + +Test case: VF basic RX/TX :: + + testpmd>start + +send fixed number of random packets from traffic generator, verify the packets can be received +by one VF and can be forward to another VF correctly. + + + +VF mac filter +=============== + +Test Case: unicast test:: + + testpmd>set promisc all off + testpmd>set allmulti all off + testpmd>start + + testpmd>mac_addr set 0 00:12:34:56:78:03 [not work] + + disable promisc mode, verify VF packet rx/tx can work fine with the specific mac addr. + +Test Case: multicast test:: + + testpmd>set promisc all off + testpmd>set allmulti all off + testpmd>start + + Send packet with multicast MAC 01:80:C2:00:00:08, and check VF can not receive the packet. + + testpmd>set allmulti all on + + Send packet with multicast MAC 01:80:C2:00:00:08, and check VF can receive the packet. + +Test Case: broadcast test:: + + testpmd>set promisc all off + testpmd>start + + Send packets with broadcast address ff:ff:ff:ff:ff:ff, and check VF can receive the packet + +Test Case: promiscuous mode:: + + testpmd>set promisc all on + testpmd>start + + Send packet that different with vf mac, check packets can be received. + +Test Case: mac spoof on:: + (N/A now) + + + +VF VLAN feature (vlan filter only work with promisc mode off) +-------------------------------------------------------------- + +Test Case: vlan filter :: + + testpmd>port stop all + testpmd>set promisc all off + testpmd>vlan set filter off 0 + testpmd>vlan set filter off 1 + testpmd>vlan set strip off 0 + testpmd>vlan set strip off 1 + + testpmd>vlan set filter on 0 + testpmd>set fwd mac + testpmd>port start all + testpmd>start + + packet with vlan can not be received, packet without vlan packet can be received. + +Test Case: rx_vlan :: + + setup rx vlan like the follow command, verify packet with + vlan_id can receive by VF, and packet with other vlan_id can not be received by VF + (execept vlan 0). + + testpmd> rx_vlan add + + testpmd>port stop all + testpmd>set promisc all off + testpmd>vlan set filter off 0 + testpmd>vlan set filter off 1 + testpmd>vlan set strip off 0 + testpmd>vlan set strip off 1 + + testpmd>vlan set filter on 0 + testpmd>rx_vlan add 20 0 + testpmd>set fwd mac + testpmd>port start all + testpmd>start + +Test Case: tx_vlan :: + + setup VF vlan like the follow command, verify packet + that out from VF contain the vlan tag. + + testpmd> tx_vlan + + testpmd>port stop all + testpmd>set promisc all on + testpmd>set fwd mac + testpmd>vlan set filter off 0 + testpmd>vlan set filter off 1 + testpmd>vlan set strip off 0 + testpmd>vlan set strip off 1 + testpmd>tx_vlan set 1 20 + testpmd>port start all + testpmd>start + +Test Case: vlan strip :: + + setup strip on, vlan promisc on, verify vlan_id + was stripped by VF when it forward the packet to other vf port. + + testpmd> vlan set strip on + + testpmd>port stop all + testpmd>set promisc all on + testpmd>set fwd mac + testpmd>vlan set filter off 0 + testpmd>vlan set filter off 1 + testpmd>vlan set strip off 0 + testpmd>vlan set strip off 1 + testpmd>vlan set strip on 0 + testpmd>port start all + testpmd>start + +Test Case: vlan promisc mode :: + + testpmd>port stop all + testpmd>vlan set filter off 0 + testpmd>vlan set filter off 1 + testpmd>vlan set strip off 0 + testpmd>vlan set strip off 1 + + testpmd>set promisc all on + testpmd>set fwd mac + testpmd>port start all + testpmd>start + +send packet with vlan or without vlan, both can be received and forwarded. + +Test Case: vlan spoof on :: + + (N/A) + + +VF jumboframe +---------------- + +Ensure Tester's ports support sending jumboframe:: + ifconfig 'tester interface' mtu 9000 + + +Test Case: Check that no jumbo frame support :: + + Launch testpmd for VF ports without enabling jumboframe option + + ./x86_64-native-linuxapp-gcc/app/testpmd -l 6-10 -n 4 --master-lcore=6 --socket-mem=1024,1024 --file-prefix=vf \ + -w 05:02.0 -w 07:02.0 -- -i --txq=4 --rxq=4 --nb-cores=4 + + testpmd>set fwd mac + testpmd>start + +packet less than the standard maximum frame (1518) can be received. +packet more than the standard maximum frame (1518) can not be received. + +Test Case: Check that with Jumbo Frames support:: + + Launch testpmd for VF ports with jumboframe option + ./x86_64-native-linuxapp-gcc/app/testpmd -l 6-10 -n 4 --master-lcore=6 --socket-mem=1024,1024 --file-prefix=vf \ + -w 05:02.0 -w 07:02.0 -- -i --txq=4 --rxq=4 --nb-cores=4 --max-pkt-len=3000 --tx-offloads=0x8000 + + testpmd>set fwd mac + testpmd>start + +packet lengths greater than the standard maximum frame (1518) and \ +lower or equal to the maximum frame length can be received. +Check that packets larger than the configured maximum packet length are +dropped by the hardware. + +Note the following was expected! +packet size > 9001, not forward , but RX-packets: counter increased (issue ??????) + + VF RSS +--------- +Start command like below: +./x86_64-native-linuxapp-gcc/app/testpmd -l 6-10 -n 4 --master-lcore=6 --socket-mem=1024,1024 --file-prefix=vf \ +-w 05:02.0 -w 07:02.0 -- -i --txq=4 --rxq=4 --nb-cores=4 --txqflags=0 + +Test Case: test redirection Table Config :: + config hash reta table, send different flow type packet to VF port, + check packet received by different queue. + + testpmd>port config 0 rss reta (0,0) + testpmd>port config 0 rss reta (1,1) + testpmd>port config 0 rss reta (2,2) + testpmd>port config 0 rss reta (3,3) + testpmd>port config 0 rss reta (60,0) + testpmd>port config 0 rss reta (61,1) + testpmd>port config 0 rss reta (62,2) + testpmd>port config 0 rss reta (63,3) + + testpmd> port config all rss (all|ip|tcp|udp|sctp|ether|port|vxlan|geneve|nvgre|none) + + +VF offload (checksum and tso) +-------------------------------- + +Test Case: enable HW checksum offload :: + + Send packets with incorrect checksum to vf port, verify that the packets + can be received by VF port and checksum error reported, + the packets forwarded by VF port have the correct checksum value. + + ./x86_64-native-linuxapp-gcc/app/testpmd -l 6-10 -n 4 --master-lcore=6 --socket-mem=1024,1024 --file-prefix=vf \ + -w 05:02.0 -w 07:02.0 -- -i --txq=4 --rxq=4 --nb-cores=4 + + testpmd>port stop all + + testpmd>csum set ip hw 0 + testpmd>csum set udp hw 0 + testpmd>csum set tcp hw 0 + testpmd>csum set sctp hw 0 + + testpmd>csum set ip hw 1 + testpmd>csum set udp hw 1 + testpmd>csum set tcp hw 1 + testpmd>csum set sctp hw 1 + + testpmd>set fwd csum + testpmd>set verbose 1 + + testpmd>port start all + testpmd>start + +Test Case: SW checksum, disable HW checksum offload :: + + Send packets with incorrect checksum to vf port, verify that the packets + can be received by VF port and checksum error reported, the packets + forwarded by VF port have the correct checksum value. + + ./x86_64-native-linuxapp-gcc/app/testpmd -l 6-10 -n 4 --master-lcore=6 --socket-mem=1024,1024 --file-prefix=vf \ + -w 05:02.0 -w 07:02.0 -- -i --txq=4 --rxq=4 --nb-cores=4 + + testpmd>port stop all + testpmd>csum set ip sw 0 + testpmd>csum set udp sw 0 + testpmd>csum set tcp sw 0 + testpmd>csum set sctp sw 0 + + testpmd>csum set ip sw 1 + testpmd>csum set udp sw 1 + testpmd>csum set tcp sw 1 + testpmd>csum set sctp sw 1 + + testpmd>set fwd csum + testpmd>set verbose 1 + testpmd>port start all + testpmd>start + +Test Case: tso :: + + enable tso on VF port, verify tcp packets that send out by + VF port was splitted according to tso size. [no implemented yet] + + testpmd>port stop all + testpmd>set verbose 1 + testpmd>csum set ip hw 0 + testpmd>csum set udp hw 0 + testpmd>csum set tcp hw 0 + testpmd>csum set sctp hw 0 + + testpmd>csum set ip hw 1 + testpmd>csum set udp hw 1 + testpmd>csum set tcp hw 1 + testpmd>csum set sctp hw 1 + + testpmd>tso set 800 1 + testpmd>set fwd csum + testpmd>port start all + testpmd>start + +Test Case: tunnel tso :: + + enable tunnel tso on VF port, verify tcp packets that send out by + VF port was splitted according to tso size. [not implemented yet] + + testpmd>port stop all + testpmd>set verbose 1 + testpmd>csum set ip hw 0 + testpmd>csum set udp hw 0 + testpmd>csum set tcp hw 0 + testpmd>csum set sctp hw 0 + testpmd>csum set outer-ip hw 0 + testpmd>csum parse_tunnel on 0 + + testpmd>csum set ip hw 1 + testpmd>csum set udp hw 1 + testpmd>csum set tcp hw 1 + testpmd>csum set sctp hw 1 + testpmd>csum set outer-ip hw 1 + testpmd>csum parse_tunnel on 1 + + testpmd>tunnel_tso set 800 1 + testpmd>set fwd csum + testpmd>port start all + testpmd>start + + Rx interrupt +--------------- + +Test case: rx interrupt :: + + 1). build l3fwd-power + make -C examples/l3fwd-power RTE_SDK=`pwd` T=x86_64-native-linuxapp-gcc + + 2). build two VFs with igb_uio [fail] + modprobe uio; + insmod x86_64-native-linuxapp-gcc/kmod/igb_uio.ko; + ./usertools/dpdk-devbind.py --bind=igb_uio 05:02.0 07:02.0 + + if in VM, enable vfio noiommu + + modprobe -r vfio_iommu_type1 + modprobe -r vfio + modprobe vfio enable_unsafe_noiommu_mode=1 + cat /sys/module/vfio/parameters/enable_unsafe_noiommu_mode + modprobe vfio-pci + + 3). start l3fwd power with one queue per port. + ./examples/l3fwd-power/build/l3fwd-power -l 6,7 -n 4 -w 05:02.0 -w 07:02.0 -- \ + -p 0x3 --config '(0,0,6),(1,0,7)' + +Send one packet to VF0 and VF1, check that thread on core6 and core7 waked up:: + +L3FWD_POWER: lcore 6 is waked up from rx interrupt on port 0 queue 0 +L3FWD_POWER: lcore 7 is waked up from rx interrupt on port 0 queue 0 + +Check the packet has been normally forwarded. + +After the packet forwarded, thread on core6 and core 7 will return to sleep:: + +L3FWD_POWER: lcore 6 sleeps until interrupt triggers +L3FWD_POWER: lcore 7 sleeps until interrupt triggers + +Send packet flows to VF0 and VF1, check that thread on core1 and core2 will +keep up awake. + + + VF veb +--------- + +Test Case: veb performance :: + + create 2 VFs from 1 PF, start testpmd with 2VFs individually, verify throughput. + + 1). create 2 VFs from 1 PF, and start PF + + echo 2 > /sys/bus/pci/devices/0000\:05\:00.0/max_vfs; + ./usertools/dpdk-devbind.py --bind=vfio-pci 05:02.0 05:02.1 + + ./x86_64-native-linuxapp-gcc/app/testpmd -l 1,2 -n 4 --socket-mem=1024,1024 --file-prefix=pf \ + -w 05:00.0 -- -i + testpmd>set vf mac addr 0 0 00:12:34:56:78:01 + testpmd>set vf mac addr 0 1 00:12:34:56:78:02 + + 2). start testpmd with 2VFs individually + ./x86_64-native-linuxapp-gcc/app/testpmd -l 3-5 -n 4 --master-lcore=3 --socket-mem=1024,1024 --file-prefix=vf1 \ + -w 05:02.0 -- -i --txq=2 --rxq=2 --rxd=512 --txd=512 --nb-cores=2 --rss-ip --eth-peer=0,00:12:34:56:78:02 + + testpmd>set promisc all off + testpmd>set fwd mac + testpmd>start + + ./x86_64-native-linuxapp-gcc/app/testpmd -l 6-8 -n 4 --master-lcore=6 --socket-mem=1024,1024 --file-prefix=vf2 \ + -w 05:02.1 -- -i --txq=2 --rxq=2 --rxd=512 --txd=512 --nb-cores=2 --rss-ip + + testpmd>set promisc all off + testpmd>set fwd mac + testpmd>start + + 3). send traffic and verify throughput + + +VF performance +----------------- + +Test Case: vector vf performance:: + + 1). config vector=y in config/common_base, and rebuild dpdk + + 2). start testpmd for PF + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0x6 -n 4 --socket-mem=1024,1024 --file-prefix=pf \ + -w 05:00.0 -w 07:00.0 -- -i + + testpmd>set vf mac addr 0 0 00:12:34:56:78:01 + testpmd>set vf mac addr 1 0 00:12:34:56:78:02 + + 3). start testpmd for VF + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0x0f8 -n 4 --master-lcore=3 --socket-mem=1024,1024 --file-prefix=vf \ + -w 05:02.0 -w 07:02.0 -- -i --txq=2 --rxq=2 --rxd=512 --txd=512 --nb-cores=4 --rss-ip + + testpmd>set promisc all off + testpmd>set fwd mac + testpmd>start + + 4). send traffic and vefify throughput + +Test Csse: scalar/bulk vf performance:: + + 1). change CONFIG_RTE_LIBRTE_AVF_INC_VECTOR=n in config/common_base, and rebuild dpdk + 2). repeat test steps 2-4 in above test case: vector vf performance. + -- 2.7.4