[dts] [PATCH] add iavf test plan

Lin, Xueqin xueqin.lin at intel.com
Wed Apr 17 04:30:23 CEST 2019


Hi Yanjie,

Add more comments below. 

Best regards,
Xueqin

> -----Original Message-----
> From: dts [mailto:dts-bounces at dpdk.org] On Behalf Of xuyanjie
> Sent: Wednesday, April 17, 2019 12:11 AM
> To: dts at dpdk.org
> Cc: Xu, Yanjie <yanjie.xu at intel.com>
> Subject: [dts] [PATCH] add iavf test plan
> 
> Signed-off-by: xuyanjie <yanjie.xu at intel.com>
> 
> 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::

[xueqin]"congiure" should be configure.  How to configure VF 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 ::
> +
[xueqin]Don't see any description for this case. 
> +    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
> +
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> ++++++++++
> ++++++
[xueqin] It is not make sense to list such number here, why RX-packets is 5, but TX-packets is 2? 
If want to add the stats, you should add more explanation, such as send how may packet
more than 1518, send how may packet less than 1518, then have such stats.
 
> +
> +        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
> +
[Xueqin] why list two cmd here with or without jumbo frame?
> +    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)
> +
[xueqin] cmd not include all configure, may add "..."
> +   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

[xueqin] why have "#
> +
> +   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



More information about the dts mailing list