[V2,1/2] test_plans/vhost_virtio_user_interrupt_cbdma_test_plan: modify testplan to test virtio dequeue

Message ID 20220802055744.1098629-1-weix.ling@intel.com (mailing list archive)
State Superseded
Headers
Series modify vhost_virtio_user_interrupt_cbdma to test virito dequeue |

Commit Message

Ling, WeiX Aug. 2, 2022, 5:57 a.m. UTC
  From DPDK-22.07, virtio support async dequeue for split and packed ring
path, so modify virtio_user_interrupt_cbdma testplan to test the split 
and packed ring async dequeue feature.

Signed-off-by: Wei Ling <weix.ling@intel.com>
---
 ..._virtio_user_interrupt_cbdma_test_plan.rst | 119 ++++++++++++++----
 1 file changed, 98 insertions(+), 21 deletions(-)
  

Patch

diff --git a/test_plans/vhost_virtio_user_interrupt_cbdma_test_plan.rst b/test_plans/vhost_virtio_user_interrupt_cbdma_test_plan.rst
index c823f98e..32c3fda5 100644
--- a/test_plans/vhost_virtio_user_interrupt_cbdma_test_plan.rst
+++ b/test_plans/vhost_virtio_user_interrupt_cbdma_test_plan.rst
@@ -1,23 +1,94 @@ 
 .. SPDX-License-Identifier: BSD-3-Clause
    Copyright(c) 2022 Intel Corporation
 
+   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.
+
 =====================================================
 vhost/virtio-user interrupt mode with cbdma test plan
 =====================================================
 
+Description
+===========
+
 Virtio-user interrupt need test with l3fwd-power sample, small packets send from traffic generator
 to virtio side, check virtio-user cores can be wakeup status, and virtio-user cores should be sleep
-status after stop sending packets from traffic generator when CBDMA enabled.This test plan cover 
-vhost-user as the backend.
+status after stop sending packets from traffic generator. 
+This test plan tests virtio-user Rx interrupt and LSC interrupt with vhost-user as the backend when cbdma enable.
+
+..Note:
+
+DPDK local patch that about vhost pmd is needed when testing Vhost asynchronous data path with testpmd.
+
+Prerequisites
+=============
+
+Software
+--------
+    Trex:http://trex-tgn.cisco.com/trex/release/v2.26.tar.gz
+
+General set up
+--------------
+1. Compile DPDK::
+
+    # CC=gcc meson --werror -Denable_kmods=True -Dlibdir=lib -Dexamples=all --default-library=static <dpdk build dir>
+    # ninja -C <dpdk build dir> -j 110
+    For example:
+    CC=gcc meson --werror -Denable_kmods=True -Dlibdir=lib -Dexamples=all --default-library=static x86_64-native-linuxapp-gcc
+    ninja -C x86_64-native-linuxapp-gcc -j 110
 
-Test Case1: LSC event between vhost-user and virtio-user with split ring and cbdma enabled
-==========================================================================================
+2. Get the PCI device ID and DMA device ID of DUT, for example, 0000:18:00.0 is PCI device ID, 0000:00:04.0, 0000:00:04.1 is DMA device ID::
 
-flow: Vhost <--> Virtio
+    <dpdk dir># ./usertools/dpdk-devbind.py -s
+
+    Network devices using kernel driver
+    ===================================
+    0000:18:00.0 'Device 159b' if=ens785f0 drv=ice unused=vfio-pci
+
+    DMA devices using kernel driver
+    ===============================
+    0000:00:04.0 'Sky Lake-E CBDMA Registers 2021' drv=ioatdma unused=vfio-pci
+    0000:00:04.1 'Sky Lake-E CBDMA Registers 2021' drv=ioatdma unused=vfio-pci
+
+Test case
+=========
+
+Test Case1: Split ring LSC event between vhost-user and virtio-user with cbdma enable
+-------------------------------------------------------------------------------------
+This case tests the LSC interrupt of split ring virtio-user with vhost-user as the back-end
+when vhost uses the asynchronous operations with CBDMA channels.
+Flow: Vhost <--> Virtio
 
 1. Bind 1 CBDMA channel to vfio-pci driver, then start vhost-user side::
 
-    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0x3000 -n 4 -a 00:04.0 --file-prefix=vhost --vdev 'net_vhost0,iface=vhost-net,queues=1,client=0,dmas=[txq0@00:04.0]' -- -i
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0x3000 -n 4 -a 00:04.0 --file-prefix=vhost --vdev 'net_vhost0,iface=vhost-net,queues=1,client=0,dmas=[txq0;rxq0]' \
+    -- -i --lcore-dma=[lcore13@0000:00:04.0]
     testpmd> set fwd mac
     testpmd> start
 
@@ -37,20 +108,21 @@  flow: Vhost <--> Virtio
     testpmd>  show port info 0
     #it should show "down"
 
-Test Case2: Split ring virtio-user interrupt test with vhost-user as backend and cbdma enabled
-==============================================================================================
-
-flow: TG --> NIC --> Vhost --> Virtio
+Test Case2: Split ring virtio-user interrupt test with vhost-user as backend and cbdma enable
+---------------------------------------------------------------------------------------------
+This case tests Rx interrupt of split ring virtio-user with vhost-user as the back-end when vhost uses the asynchronous operations with CBDMA channels.
+Flow: TG --> NIC --> Vhost --> Virtio
 
 1. Bind 1 CBDMA channel and 1 NIC port to vfio-pci, launch testpmd with a virtual vhost device as backend::
 
-    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0x7c -n 4 --vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[txq0@00:04.0]' -- -i  --rxq=1 --txq=1
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0x7c -n 4 --vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[txq0;rxq0]' \
+    -- -i  --rxq=1 --txq=1 --lcore-dma=[lcore3@0000:00:04.0,lcore3@0000:00:04.1]
     testpmd> start
 
 2. Start l3fwd-power with a virtio-user device::
 
     ./x86_64-native-linuxapp-gcc/examples/dpdk-l3fwd-power -c 0xc000 -n 4 --log-level='user1,7' --no-pci --file-prefix=l3fwd-pwd \
-    --vdev=virtio_user0,path=./vhost-net -- -p 1 --config="(0,0,14)" --parse-ptype
+    --vdev=virtio_user0,path=./vhost-net -- -p 1 -P --config="(0,0,14)" --parse-ptype
 
 3. Send packets with packet generator, check the virtio-user related core can be wakeup status.
 
@@ -58,14 +130,16 @@  flow: TG --> NIC --> Vhost --> Virtio
 
 5. Restart sending packets with packet generator, check virtio-user related core change to wakeup status again.
 
-Test Case3: LSC event between vhost-user and virtio-user with packed ring and cbdma enabled
-===========================================================================================
-
-flow: Vhost <--> Virtio
+Test Case3: Packed ring LSC event between vhost-user and virtio-user with cbdma enable
+--------------------------------------------------------------------------------------
+This case tests the LSC interrupt of packed ring virtio-user with vhost-user as the back-end
+when vhost uses the asynchronous operations with CBDMA channels.
+Flow: Vhost <--> Virtio
 
 1. Bind one cbdma port to vfio-pci driver, then start vhost-user side::
 
-    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0x3000 -n 4 -a 00:04.0 --file-prefix=vhost --vdev 'net_vhost0,iface=vhost-net,queues=1,client=0,dmas=[txq0@00:04.0]' -- -i
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0x3000 -n 4 -a 00:04.0 --file-prefix=vhost --vdev 'net_vhost0,iface=vhost-net,queues=1,client=0,dmas=[txq0;rxq0]' \
+    -- -i --lcore-dma=[lcore13@0000:00:04.0,lcore13@0000:00:04.1]
     testpmd> set fwd mac
     testpmd> start
 
@@ -85,20 +159,22 @@  flow: Vhost <--> Virtio
     testpmd>  show port info 0
     #it should show "down"
 
-Test Case4: Packed ring virtio-user interrupt test with vhost-user as backend and cbdma enabled
-================================================================================================
+Test Case4: Packed ring virtio-user interrupt test with vhost-user as backend and cbdma enable
+----------------------------------------------------------------------------------------------
+This case tests Rx interrupt of packed ring virtio-user with vhost-user as the back-end when vhost uses the asynchronous operations with CBDMA channels. 
 
 flow: TG --> NIC --> Vhost --> Virtio
 
 1. Bind one cbdma port and one NIC port to vfio-pci, launch testpmd with a virtual vhost device as backend::
 
-    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0x7c -n 4 --vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[txq0@00:04.0]' -- -i  --rxq=1 --txq=1
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0x7c -n 4 --vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[txq0;rxq0]' \
+    -- -i  --rxq=1 --txq=1 --lcore-dma=[lcore3@0000:00:04.0]
     testpmd> start
 
 2. Start l3fwd-power with a virtio-user device::
 
     ./x86_64-native-linuxapp-gcc/examples/dpdk-l3fwd-power -c 0xc000 -n 4 --log-level='user1,7' --no-pci --file-prefix=l3fwd-pwd \
-    --vdev=virtio_user0,path=./vhost-net,packed_vq=1 -- -p 1 --config="(0,0,14)" --parse-ptype
+    --vdev=virtio_user0,path=./vhost-net,packed_vq=1 -- -p 1 -P --config="(0,0,14)" --parse-ptype
 
 3. Send packets with packet generator, check the virtio-user related core can be wakeup status.
 
@@ -106,3 +182,4 @@  flow: TG --> NIC --> Vhost --> Virtio
 
 5. Restart sending packets with packet generator, check virtio-user related core change to wakeup status again.
 
+