From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id 8127CA00E6 for ; Tue, 16 Apr 2019 12:24:59 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 56B9E1B4B7; Tue, 16 Apr 2019 12:24:59 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 470F31B4B2 for ; Tue, 16 Apr 2019 12:24:57 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Apr 2019 03:24:56 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,357,1549958400"; d="scan'208";a="151286479" Received: from xuyanjie.sh.intel.com ([10.67.111.13]) by orsmga002.jf.intel.com with ESMTP; 16 Apr 2019 03:24:56 -0700 From: xuyanjie To: dts@dpdk.org Cc: xuyanjie Date: Tue, 16 Apr 2019 12:11:14 -0400 Message-Id: <1555431074-168977-1-git-send-email-yanjie.xu@intel.com> X-Mailer: git-send-email 2.7.4 Subject: [dts] [PATCH] add iavf test plan 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" Signed-off-by: xuyanjie diff --git a/test_plans/iavf_test_plan.rst b/test_plans/iavf_test_plan.rst new file mode 100644 index 0000000..cec1de2 --- /dev/null +++ b/test_plans/iavf_test_plan.rst @@ -0,0 +1,465 @@ + 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. + +====================== +DPDK iavf API Tests +====================== + +intel Adaptive Virtual Function(IAVF) + +Hardwares:: +------------ +I40E driver NIC (Fortville XXV710, Fortville Spirit, Fortville Eagle) + +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. Configiure PF and VF:: + + modprobe uio; + insmod x86_64-native-linuxapp-gcc/kmod/igb_uio.ko; + + ./usertools/dpdk-devbind.py --bind=igb_uio 18:00.0 18:00.1; + + echo 1 > /sys/bus/pci/devices/0000\:18\:00.0/max_vfs + echo 1 > /sys/bus/pci/devices/0000\:18\:00.1/max_vfs + + ./usertools/dpdk-devbind.py --bind=vfio-pci 18:02.0 18:0a.0 + or + (./usertools/dpdk-devbind.py --bind=igb_uio 18:02.0 18:0a.0) + +3. Set PF ports up and congiure VF ports' mac:: + + ./app/testpmd -l 1-5 -n 4 --socket-mem=1024,1024 --file-prefix=pf -w 18:00.1 -w 18:00.0 -- -i + +4. Start up VF ports:: + ./testpmd -l 6-10 -n 4 --master-lcore=6 --socket-mem=1024,1024 --file-prefix=vf -w 18:0a.0 -w 18:02.0 -- -i --txq=4 --rxq=4 --nb-cores=4 + +Test case: VF basic RX/TX +================================================================== + +1. Start testpmd:: + + $ ./testpmd -l 6-10 -n 4 --master-lcore=6 --socket-mem=1024,1024 --file-prefix=vf -w 18:0a.0 -w 18:02.0 -- -i --txq=4 --rxq=4 --nb-cores=4 + run "start" +2. Check and verified packets which received and forwarded + +Test cases: 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 + + 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 Cases: 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 :: + + 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>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>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 Cases: 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 + + ./app/testpmd -l 6-10 -n 4 --master-lcore=6 --socket-mem=1024,1024 --file-prefix=vf \ + -w 18:02.0 -w 18:0a.0 -- -i --txq=4 --rxq=4 --nb-cores=4 + testpmd>set fwd mac + testpmd>start + testpmd> stop + Telling cores to stop + Waiting for lcores to finish... + + ------- Forward Stats for RX Port= 0/Queue= 0 -> TX Port= 1/Queue= 0 ------- + RX-packets: 2 TX-packets: 2 TX-dropped: 0 + ---------------------- Forward statistics for port 0 ---------------------- + RX-packets: 5 RX-dropped: 0 RX-total: 5 + TX-packets: 0 TX-dropped: 0 TX-total: 0 + ---------------------------------------------------------------------------- + + ---------------------- Forward statistics for port 1 ---------------------- + RX-packets: 0 RX-dropped: 0 RX-total: 0 + TX-packets: 2 TX-dropped: 0 TX-total: 2 + --------------------------------------------------------------------------- + +++++++++++++++ Accumulated forward statistics for all ports+++++++++++++++ + RX-packets: 5 RX-dropped: 0 RX-total: 5 + TX-packets: 2 TX-dropped: 0 TX-total: 2 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + check 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:: + + 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. + + Launch testpmd for VF ports with jumboframe option + $ ./testpmd -l 6-10 -n 4 --master-lcore=6 --socket-mem=1024,1024 --file-prefix=vf + -w 18:02.0 -w 18:0a.0 -- -i --txq=4 --rxq=4 --nb-cores=4 + $ ./testpmd -l 6-10 -n 4 --master-lcore=6 --socket-mem=1024,1024 --file-prefix=vf + 18:02.0 -w 18:0a.0 -- -i --txq=4 --rxq=4 --nb-cores=4 --max-pkt-len=3000 --tx-offloads=0x8000 + + testpmd>set fwd mac + testpmd>start + +2.packet size > 9001, not forward , but RX-packets: counter increased + +Test Cases:VF rss +==================================================================== + +Test Case: VF RSS + + $ ./testpmd -l 6-10 -n 4 --master-lcore=6 --socket-mem=1024,1024 --file-prefix=vf -w 18:02.0 -w 018:0a.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) + + +Test Cases:VF offload for 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 18:02.0 -w 18:0a.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 18:02.0 -w 18:0a.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. + + 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 Cases: Rx interrupt +==================================================================== + +Test case: rx interrupt + +1. build build l3fwd power + make -C examples/l3fwd-power RTE_SDK=`pwd` T=x86_64-native-linuxapp-gcc + +2. build two VFs with igb_uio + modprobe uio; + insmod x86_64-native-linuxapp-gcc/kmod/igb_uio.ko; + # ./usertools/dpdk-devbind.py --bind=igb_uio 18:02.0 18:0a.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 18:02.0 -w 18:0a.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. + Bi-direction packet : + +VF veb test case +==================================================================== + +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 18:02.0 18:0a.1 + + ./app/testpmd -l 1,2 -n 4 --socket-mem=1024,1024 --file-prefix=pf -w 18: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 + + ./app/testpmd -l 3-5 -n 4 --master-lcore=3 --socket-mem=1024,1024 --file-prefix=vf1 -w 18: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 18:0.0 -- -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 18:00.0 -w 18:00.1 -- -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 18:02.0 -w 18:0a.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 + + 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. \ No newline at end of file -- 2.7.4