From: Yaqi Tang <yaqi.tang@intel.com>
To: dts@dpdk.org
Cc: Yaqi Tang <yaqi.tang@intel.com>
Subject: [dts][PATCH V1] test_plans/runtime_vf_queue_number: adjust test plan format
Date: Wed, 8 Jun 2022 04:50:28 +0000 [thread overview]
Message-ID: <20220608045029.350571-1-yaqi.tang@intel.com> (raw)
Adjust the format of test plan according to test plan template,
and modify test case 1 vf to VF.
Signed-off-by: Yaqi Tang <yaqi.tang@intel.com>
---
.../runtime_vf_queue_number_test_plan.rst | 272 +++++++++---------
1 file changed, 138 insertions(+), 134 deletions(-)
diff --git a/test_plans/runtime_vf_queue_number_test_plan.rst b/test_plans/runtime_vf_queue_number_test_plan.rst
index 1d8dde99..b60ab2d4 100644
--- a/test_plans/runtime_vf_queue_number_test_plan.rst
+++ b/test_plans/runtime_vf_queue_number_test_plan.rst
@@ -1,10 +1,12 @@
.. SPDX-License-Identifier: BSD-3-Clause
Copyright(c) 2019 Intel Corporation
-====================================
+==================================
VF Request Queue Number At Runtime
-====================================
+==================================
+Description
+===========
Both kernel driver, I40E and DPDK PMD driver, igb_uio/vfio-pci support
VF request queue number at runtime, that means the users could configure
the VF queue number at runtime.
@@ -31,109 +33,112 @@ Please read all test plans to get complete information.
Prerequisites
=============
-1. Hardware:
-
-- Intel® Ethernet 700 Series(X710/XXV710/XL710)
-
-2. Software:
-
-- DPDK: http://dpdk.org/git/dpdk (version: 19.02+)
-- Scapy: http://www.secdev.org/projects/scapy/
-
-3. Scenario:
+topology
+--------
+.. figure:: image/2vf1pf.png
-- DPDK PF + DPDK VF
+Hardware
+--------
+Supported NICs: Intel® Ethernet 700 Series(X710/XXV710/XL710)
-4. test topology:
+Software
+--------
+dpdk: http://dpdk.org/git/dpdk (version: 19.02+)
+scapy: http://www.secdev.org/projects/scapy/
-.. figure:: image/2vf1pf.png
+Scenario
+--------
+DPDK PF + DPDK VF
Set up scenario
-===============
+---------------
Assume create 2 vf from 1pf.
1. Bind PF to DPDK driver, igb_uio::
- ./usertools/dpdk-devbind.py -b igb_uio 0000:18:00.0
+ ./usertools/dpdk-devbind.py -b igb_uio 0000:18:00.0
2. Create 2 vf from PF::
- echo 2 >/sys/bus/pci/devices/0000:18:00.0/max_vfs
+ echo 2 >/sys/bus/pci/devices/0000:18:00.0/max_vfs
- usertools/dpdk-devbind.py --s
- 0000:18:00.0 'Ethernet Controller X710 for 10GbE SFP+' if= drv=igb_uio unused=i40e
- 0000:18:02.0 'XL710/X710 Virtual Function' unused=
+ usertools/dpdk-devbind.py --s
+ 0000:18:00.0 'Ethernet Controller X710 for 10GbE SFP+' if= drv=igb_uio unused=i40e
+ 0000:18:02.0 'XL710/X710 Virtual Function' unused=
3. Detach VF from the host, bind them to vfio-pci driver::
- modprobe vfio
- modprobe vfio-pci
+ modprobe vfio
+ modprobe vfio-pci
Note: there are 2 ways to bind devices to vfio-pci:
- Leverage usertools in dpdk package::
- usertools/dpdk-devbind.py --bind=vfio-pci 0000:18:02.0
+ usertools/dpdk-devbind.py --bind=vfio-pci 0000:18:02.0
- leverage Linux command::
- using `lspci -nn|grep -i ethernet` got VF device id, for example "8086 154c",
+ using `lspci -nn|grep -i ethernet` got VF device id, for example "8086 154c",
- echo "8086 154c" > /sys/bus/pci/drivers/vfio-pci/new_id
- echo 0000:18:02.0 > /sys/bus/pci/devices/0000:18:02.0/driver/unbind
- echo 0000:18:02.0 > /sys/bus/pci/drivers/vfio-pci/bind
+ echo "8086 154c" > /sys/bus/pci/drivers/vfio-pci/new_id
+ echo 0000:18:02.0 > /sys/bus/pci/devices/0000:18:02.0/driver/unbind
+ echo 0000:18:02.0 > /sys/bus/pci/drivers/vfio-pci/bind
4. Passthrough VFs 18:02.0 to vm0 and start vm0::
- /usr/bin/qemu-system-x86_64 -name vm0 -enable-kvm \
- -cpu host -smp 4 -m 2048 -drive file=/home/image/sriov-1.img -vnc :1 \
- -device vfio-pci,host=0000:18:02.0,id=pt_0
+ /usr/bin/qemu-system-x86_64 -name vm0 -enable-kvm \
+ -cpu host -smp 4 -m 2048 -drive file=/home/image/sriov-1.img -vnc :1 \
+ -device vfio-pci,host=0000:18:02.0,id=pt_0
-Now the scenario has been set up, you will have 1 port in the vm0.
+ Now the scenario has been set up, you will have 1 port in the vm0.
5. Bind VF to dpdk driver igb_uio in VM::
usertools/dpdk-devbind.py --bind=igb_uio 0000:03:00.0
-Test case 1: reserve valid vf queue number
-==========================================
+Test case
+=========
+
+Test case 1: reserve valid VF queue number
+------------------------------------------
1. Start PF testpmd with random queue-num-per-vf in [1, 2, 4, 8 ,16], for example, we use 4 as the reserved vf queue numbers::
- ./<build_target>/app/dpdk-testpmd -c f -n 4 -a 18:00.0,queue-num-per-vf=4 \
- --file-prefix=test1 --socket-mem 1024,1024 -- -i
+ ./<build_target>/app/dpdk-testpmd -c f -n 4 -a 18:00.0,queue-num-per-vf=4 \
+ --file-prefix=test1 --socket-mem 1024,1024 -- -i
Note testpmd can be started normally without any wrong or error.
2. Start VF testpmd::
- ./<build_target>/app/dpdk-testpmd -c 0xf0 -n 4 -a 03:00.0 \
- --file-prefix=test2 --socket-mem 1024,1024 -- -i
+ ./<build_target>/app/dpdk-testpmd -c 0xf0 -n 4 -a 03:00.0 \
+ --file-prefix=test2 --socket-mem 1024,1024 -- -i
3. VF request a queue number that is equal to reserved queue number, and we can not find VF reset while confiuring it::
- testpmd> port stop all
- testpmd> port config all txq 4
- testpmd> port config all rxq 4
- testpmd> port start all
+ testpmd> port stop all
+ testpmd> port config all txq 4
+ testpmd> port config all rxq 4
+ testpmd> port start all
- Start forwarding, you can see the actual queue number is 4, and there is no VF reset operation::
+4. Start forwarding, you can see the actual queue number is 4, and there is no VF reset operation::
- testpmd> start
- port 0: RX queue number: 4 Tx queue number: 4
+ testpmd> start
+ port 0: RX queue number: 4 Tx queue number: 4
-4. VF request a queue number that is greater than reserved queue number, and we find VF reset while confiuring it::
+5. VF request a queue number that is greater than reserved queue number, and we find VF reset while confiuring it::
- testpmd> port stop all
- testpmd> port config all txq 5
- testpmd> port config all rxq 5
- testpmd> port start all
+ testpmd> port stop all
+ testpmd> port config all txq 5
+ testpmd> port config all rxq 5
+ testpmd> port start all
- Start forwarding, you can see the actual queue number is 5, and find VF reseted::
+6. Start forwarding, you can see the actual queue number is 5, and find VF reseted::
- testpmd> start
- port 0: RX queue number: 5 Tx queue number: 5
+ testpmd> start
+ port 0: RX queue number: 5 Tx queue number: 5
Note: Please find the expected behavior with different queue-num-per-vf in table[1].
@@ -162,119 +167,119 @@ Note: Please find the expected behavior with different queue-num-per-vf in table
+------------------+---------------------+--------------------+
Test case 2: reserve invalid VF queue number
-============================================
+--------------------------------------------
1. Start PF testpmd with random queue-num-per-vf in [0, 3, 5-7 , 9-15, 17], for example, we use 0 as the reserved vf queue numbers::
- ./<build_target>/app/dpdk-testpmd -c f -n 4 -a 18:00.0,queue-num-per-vf=0 \
- --file-prefix=test1 --socket-mem 1024,1024 -- -i
+ ./<build_target>/app/dpdk-testpmd -c f -n 4 -a 18:00.0,queue-num-per-vf=0 \
+ --file-prefix=test1 --socket-mem 1024,1024 -- -i
2. Verify testpmd started with logs as below::
- i40e_pf_parse_vf_queue_number_handler(): Wrong VF queue number = 0, it must be power of 2 and equal or less than 16 !, Now it is kept the value = 4
+ i40e_pf_parse_vf_queue_number_handler(): Wrong VF queue number = 0, it must be power of 2 and equal or less than 16 !, Now it is kept the value = 4
Test case 3: set valid VF queue number in testpmd command-line options
-======================================================================
+----------------------------------------------------------------------
1. Start PF testpmd::
- ./<build_target>/app/dpdk-testpmd -c f -n 4 -a 18:00.0 \
- --file-prefix=test1 --socket-mem 1024,1024 -- -i
+ ./<build_target>/app/dpdk-testpmd -c f -n 4 -a 18:00.0 \
+ --file-prefix=test1 --socket-mem 1024,1024 -- -i
2. Start VF testpmd with "--rxq=[rxq] --txq=[txq]", and random valid values from 1 to 16, take 3 for example::
- ./<build_target>/app/dpdk-testpmd -c 0xf0 -n 4 -a 18:02.0 --file-prefix=test2 \
- --socket-mem 1024,1024 -- -i --rxq=3 --txq=3
+ ./<build_target>/app/dpdk-testpmd -c 0xf0 -n 4 -a 18:02.0 --file-prefix=test2 \
+ --socket-mem 1024,1024 -- -i --rxq=3 --txq=3
3. Configure vf forwarding prerequisits and start forwarding::
- testpmd> set promisc all off
- testpmd> set fwd mac
+ testpmd> set promisc all off
+ testpmd> set fwd mac
4. Start forwarding, and verfiy the queue number informantion. both the RX queue number and the TX queue number must be same as your configuration. Here is 3::
- testpmd> start
+ testpmd> start
- port 0: RX queue number: 3 Tx queue number: 3
+ port 0: RX queue number: 3 Tx queue number: 3
5. Send packets to VF from tester, and make sure they match the default RSS rules, IPV4_UNKNOW, and will be distributed to all the queues that you configured, Here is 3::
- pkt1 = Ether(dst="$vf_mac", src="$tester_mac")/IP(src="10.0.0.1",dst="192.168.0.1")/("X"*48)
- pkt2 = Ether(dst="$vf_mac", src="$tester_mac")/IP(src="10.0.0.1",dst="192.168.0.2")/("X"*48)
- pkt3 = Ether(dst="$vf_mac", src="$tester_mac")/IP(src="10.0.0.1",dst="192.168.0.3")/("X"*48)
+ pkt1 = Ether(dst="$vf_mac", src="$tester_mac")/IP(src="10.0.0.1",dst="192.168.0.1")/("X"*48)
+ pkt2 = Ether(dst="$vf_mac", src="$tester_mac")/IP(src="10.0.0.1",dst="192.168.0.2")/("X"*48)
+ pkt3 = Ether(dst="$vf_mac", src="$tester_mac")/IP(src="10.0.0.1",dst="192.168.0.3")/("X"*48)
6. Stop forwarding, and check the queues statistics, every RX/TX queue must has 1 packet go through, and total 3 packets in uni-direction as well as 6 packets in bi-direction::
testpmd> stop
- ------- Forward Stats for RX Port= 0/Queue= 0 -> TX Port= 0/Queue= 0 -------
- RX-packets: 1 TX-packets: 1 TX-dropped: 0
- ------- Forward Stats for RX Port= 0/Queue= 1 -> TX Port= 0/Queue= 1 -------
- RX-packets: 1 TX-packets: 1 TX-dropped: 0
- ------- Forward Stats for RX Port= 0/Queue= 2 -> TX Port= 0/Queue= 2 -------
- RX-packets: 1 TX-packets: 1 TX-dropped: 0
- ---------------------- Forward statistics for port 0 ----------------------
- RX-packets: 3 RX-dropped: 0 RX-total: 3
- TX-packets: 3 TX-dropped: 0 TX-total: 3
- ----------------------------------------------------------------------------
+ ------- Forward Stats for RX Port= 0/Queue= 0 -> TX Port= 0/Queue= 0 -------
+ RX-packets: 1 TX-packets: 1 TX-dropped: 0
+ ------- Forward Stats for RX Port= 0/Queue= 1 -> TX Port= 0/Queue= 1 -------
+ RX-packets: 1 TX-packets: 1 TX-dropped: 0
+ ------- Forward Stats for RX Port= 0/Queue= 2 -> TX Port= 0/Queue= 2 -------
+ RX-packets: 1 TX-packets: 1 TX-dropped: 0
+ ---------------------- Forward statistics for port 0 ----------------------
+ RX-packets: 3 RX-dropped: 0 RX-total: 3
+ TX-packets: 3 TX-dropped: 0 TX-total: 3
+ ----------------------------------------------------------------------------
7. Repeat step 2 to 6 with the mininum queue number, 1, and the maximum queue number, 16.
Test case 4: set invalid VF queue number in testpmd command-line options
-========================================================================
+------------------------------------------------------------------------
1. Start PF testpmd::
- ./<build_target>/app/dpdk-testpmd -c f -n 4 -a 18:00.0 \
- --file-prefix=test1 --socket-mem 1024,1024 -- -i
+ ./<build_target>/app/dpdk-testpmd -c f -n 4 -a 18:00.0 \
+ --file-prefix=test1 --socket-mem 1024,1024 -- -i
-2. Start VF testpmd with "--rxq=0 --txq=0" ::
+2. Start VF testpmd with "--rxq=0 --txq=0"::
- ./<build_target>/app/dpdk-testpmd -c 0xf0 -n 4 -a 18:02.0 --file-prefix=test2 \
- --socket-mem 1024,1024 -- -i --rxq=0 --txq=0
+ ./<build_target>/app/dpdk-testpmd -c 0xf0 -n 4 -a 18:02.0 --file-prefix=test2 \
+ --socket-mem 1024,1024 -- -i --rxq=0 --txq=0
- Verify testpmd exited with error as below::
+3. Verify testpmd exited with error as below::
Either rx or tx queues should be non-zero
-3. Start VF testpmd with "--rxq=17 --txq=17" ::
+4. Start VF testpmd with "--rxq=17 --txq=17"::
- ./<build_target>/app/dpdk-testpmd -c 0xf0 -n 4 -a 18:02.0 --file-prefix=test2 \
- --socket-mem 1024,1024 -- -i --rxq=17 --txq=17
+ ./<build_target>/app/dpdk-testpmd -c 0xf0 -n 4 -a 18:02.0 --file-prefix=test2 \
+ --socket-mem 1024,1024 -- -i --rxq=17 --txq=17
- Verify testpmd exited with error as below::
+5. Verify testpmd exited with error as below::
- txq 17 invalid - must be >= 0 && <= 16
+ txq 17 invalid - must be >= 0 && <= 16
Test case 5: set valid VF queue number with testpmd function command
-====================================================================
+--------------------------------------------------------------------
1. Start PF testpmd::
- ./<build_target>/app/dpdk-testpmd -c f -n 4 -a 18:00.0 \
- --file-prefix=test1 --socket-mem 1024,1024 -- -i
+ ./<build_target>/app/dpdk-testpmd -c f -n 4 -a 18:00.0 \
+ --file-prefix=test1 --socket-mem 1024,1024 -- -i
2. Start VF testpmd without setting "rxq" and "txq"::
- ./<build_target>/app/dpdk-testpmd -c 0xf0 -n 4 -a 05:02.0 --file-prefix=test2 \
- --socket-mem 1024,1024 -- -i
+ ./<build_target>/app/dpdk-testpmd -c 0xf0 -n 4 -a 05:02.0 --file-prefix=test2 \
+ --socket-mem 1024,1024 -- -i
3. Configure vf forwarding prerequisits and start forwarding::
- testpmd> set promisc all off
- testpmd> set fwd mac
+ testpmd> set promisc all off
+ testpmd> set fwd mac
4. Set rx queue number and tx queue number with random value range from 1 to 16 with testpmd function command, take 3 for example::
- testpmd> port stop all
- testpmd> port config all rxq 3
- testpmd> port config all txq 3
- testpmd> port start all
+ testpmd> port stop all
+ testpmd> port config all rxq 3
+ testpmd> port config all txq 3
+ testpmd> port start all
5. Repeat step 4-7 of test case 3.
Test case 6: set invalid VF queue number with testpmd function command
-======================================================================
+----------------------------------------------------------------------
1. Start PF testpmd::
@@ -287,57 +292,56 @@ Test case 6: set invalid VF queue number with testpmd function command
--socket-mem 1024,1024 -- -i
-3. Set rx queue number and tx queue number with 0 ::
+3. Set rx queue number and tx queue number with 0::
testpmd> port stop all
testpmd> port config all rxq 0
testpmd> port config all txq 0
testpmd> port start all
-4. Set rx queue number and tx queue number with 17 ::
+4. Set rx queue number and tx queue number with 17::
testpmd> port stop all
testpmd> port config all rxq 17
testpmd> port config all txq 17
testpmd> port start all
-Verify error information::
-
- Fail: input rxq (17) can't be greater than max_rx_queues (16) of port 0
+5. Verify error information::
+ Fail: input rxq (17) can't be greater than max_rx_queues (16) of port 0
Test case 7: Reserve VF queue number when VF bind to kernel driver
-==================================================================
+------------------------------------------------------------------
1. bind vf to kernel driver iavf::
- ./usertools/dpdk-devbind.py -b i40e 0000:18:02.0
+ ./usertools/dpdk-devbind.py -b i40e 0000:18:02.0
-2. Reserve VF queue number ::
+2. Reserve VF queue number::
- ./<build_target>/app/dpdk-testpmd -c f -n 4 -a 18:00.0,queue-num-per-vf=2 \
- --file-prefix=test1 --socket-mem 1024,1024 -- -i
+ ./<build_target>/app/dpdk-testpmd -c f -n 4 -a 18:00.0,queue-num-per-vf=2 \
+ --file-prefix=test1 --socket-mem 1024,1024 -- -i
3. Check the VF0 rxq and txq number is 2::
- ethtool -S enp5s2
- NIC statistics:
- rx_bytes: 0
- rx_unicast: 0
- rx_multicast: 0
- rx_broadcast: 0
- rx_discards: 0
- rx_unknown_protocol: 0
- tx_bytes: 0
- tx_unicast: 0
- tx_multicast: 0
- tx_broadcast: 0
- tx_discards: 0
- tx_errors: 0
- tx-0.packets: 0
- tx-0.bytes: 0
- tx-1.packets: 0
- tx-1.bytes: 0
- rx-0.packets: 0
- rx-0.bytes: 0
- rx-1.packets: 0
+ ethtool -S enp5s2
+ NIC statistics:
+ rx_bytes: 0
+ rx_unicast: 0
+ rx_multicast: 0
+ rx_broadcast: 0
+ rx_discards: 0
+ rx_unknown_protocol: 0
+ tx_bytes: 0
+ tx_unicast: 0
+ tx_multicast: 0
+ tx_broadcast: 0
+ tx_discards: 0
+ tx_errors: 0
+ tx-0.packets: 0
+ tx-0.bytes: 0
+ tx-1.packets: 0
+ tx-1.bytes: 0
+ rx-0.packets: 0
+ rx-0.bytes: 0
+ rx-1.packets: 0
--
2.25.1
next reply other threads:[~2022-06-08 4:50 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-08 4:50 Yaqi Tang [this message]
2022-06-08 4:50 ` [dts][PATCH V1] test_plans/short_live: modify testpmd config param Yaqi Tang
2022-06-15 9:04 ` lijuan.tu
2022-06-15 9:05 ` [dts][PATCH V1] test_plans/runtime_vf_queue_number: adjust test plan format lijuan.tu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220608045029.350571-1-yaqi.tang@intel.com \
--to=yaqi.tang@intel.com \
--cc=dts@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).