From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2206DA050A; Sat, 7 May 2022 12:00:23 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1B7B540DDB; Sat, 7 May 2022 12:00:23 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mails.dpdk.org (Postfix) with ESMTP id 0F8FD40395 for ; Sat, 7 May 2022 12:00:19 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1651917620; x=1683453620; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=5nEefbdesz7iDQ+jrucszaEbD5qAvK9KcZsliwbc6vM=; b=L1Y9Rf+/OSCams2vqsSiuMvTdLMDLK6pZvG7dk0o0snw+YJYtgsmnkXf yNdrgKaZ2USY1nnFnupqCkKXmwHRnNu4jsGhXSTm8TGgP96ViP5Wntyg0 LsE9vA3oEBm8VudvUTm6tw96MT8t+jixdr4iFzXlms0wRMQ/L7L12vdZF t8PFLYrcsUfzbUUIb9QddSU2KMSAdGjWTy5C1LNtrXD+8c6sgfSAIsp7Y SGlIqBN8y3l4ocluTlIWd1hJiusBDFahA9yNleoqMe0zZYjEWTbT5xKkw AIhw6ZfFTTPmEsjcSS2AFI1tFr7GZ91CAINIkFvgC7gYS90nSpKCHQ7Gd w==; X-IronPort-AV: E=McAfee;i="6400,9594,10339"; a="355120998" X-IronPort-AV: E=Sophos;i="5.91,206,1647327600"; d="scan'208";a="355120998" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 May 2022 03:00:18 -0700 X-IronPort-AV: E=Sophos;i="5.91,206,1647327600"; d="scan'208";a="736138888" Received: from unknown (HELO localhost.localdomain) ([10.239.251.222]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 May 2022 03:00:16 -0700 From: Wei Ling To: dts@dpdk.org Cc: Wei Ling Subject: [dts][PATCH V1 6/7] test_plans/vm2vm_virtio_user_dsa_test_plan: add vm2vm_virtio_user_dsa testplan Date: Sat, 7 May 2022 05:59:52 -0400 Message-Id: <20220507095952.311180-1-weix.ling@intel.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Type: text/plain; charset=y Content-Transfer-Encoding: quoted-printable X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 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 Add vm2vm_virtio_user_dsa_test_plan.rst into test_plans. Signed-off-by: Wei Ling --- .../vm2vm_virtio_user_dsa_test_plan.rst | 1536 +++++++++++++++++ 1 file changed, 1536 insertions(+) create mode 100644 test_plans/vm2vm_virtio_user_dsa_test_plan.rst diff --git a/test_plans/vm2vm_virtio_user_dsa_test_plan.rst b/test_plans/vm= 2vm_virtio_user_dsa_test_plan.rst new file mode 100644 index 00000000..99ae37a2 --- /dev/null +++ b/test_plans/vm2vm_virtio_user_dsa_test_plan.rst @@ -0,0 +1,1536 @@ +.. Copyright (c) <2022>, Intel Corporation=0D + All rights reserved.=0D +=0D + Redistribution and use in source and binary forms, with or without=0D + modification, are permitted provided that the following conditions=0D + are met:=0D +=0D + - Redistributions of source code must retain the above copyright=0D + notice, this list of conditions and the following disclaimer.=0D +=0D + - Redistributions in binary form must reproduce the above copyright=0D + notice, this list of conditions and the following disclaimer in=0D + the documentation and/or other materials provided with the=0D + distribution.=0D +=0D + - Neither the name of Intel Corporation nor the names of its=0D + contributors may be used to endorse or promote products derived=0D + from this software without specific prior written permission.=0D +=0D + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS=0D + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT=0D + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS=0D + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE=0D + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,=0D + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES=0D + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR=0D + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)=0D + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,=0D + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)=0D + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED=0D + OF THE POSSIBILITY OF SUCH DAMAGE.=0D +=0D +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=0D +VM2VM vhost-user/virtio-user with DSA driver test plan=0D +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=0D +=0D +Description=0D +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0D +Vhost asynchronous data path leverages DMA devices to offload memory copie= s from the CPU and it is implemented in an asynchronous way.=0D +In addition, vhost supports M:N mapping between vrings and DMA virtual cha= nnels. Specifically, one vring can use multiple different DMA=0D +channels and one DMA channel can be shared by multiple vrings at the same = time.Vhost enqueue operation with CBDMA channels is supported=0D +in both split and packed ring.=0D +=0D +This document provides the test plan for testing the following features wh= en Vhost-user using asynchronous data path with=0D +DSA driver (kernel IDXD driver and DPDK vfio-pci driver) in VM2VM virtio-u= ser topology.=0D +1. Split virtqueue vm2vm in-order mergeable, in-order non-mergeable, merge= able, non-mergeable, vector_rx path test and payload check.=0D +2. Packed virtqueue vm2vm in-order mergeable, in-order non-mergeable, merg= eable, non-mergeable, vectorized path (ringsize not powerof 2) test and pay= load check.=0D +3. Test indirect descriptor feature. For example, the split ring mergeable= inorder path use non-indirect descriptor, the 2000,2000,2000,2000 chain pa= ckets will need 4 consequent ring, still need one ring put header.=0D +the split ring mergeable path use indirect descriptor, the 2000,2000,2000,= 2000 chain packets will only occupy one ring.=0D +=0D +IOMMU impact:=0D +If iommu off, idxd can work with iova=3Dpa=0D +If iommu on, kernel dsa driver only can work with iova=3Dva by program IOM= MU, can't use iova=3Dpa(fwd not work due to pkts payload wrong).=0D +=0D +Note:=0D +1.When DMA devices are bound to vfio driver, VA mode is the default and re= commended. For PA mode, page by page mapping may=0D +exceed IOMMU's max capability, better to use 1G guest hugepage.=0D +2.DPDK local patch that about vhost pmd is needed when testing Vhost async= hronous data path with testpmd, and the suite has not yet been automated.=0D +=0D +Prerequisites=0D +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0D +=0D +Topology=0D +--------=0D + Test flow: Virtio-user -> Vhost-user -> Testpmd -> Vhost-user -> Virtio-u= ser=0D +=0D +General set up=0D +--------------=0D +1. Compile DPDK::=0D +=0D + # CC=3Dgcc meson --werror -Denable_kmods=3DTrue -Dlibdir=3Dlib -Dexamples= =3Dall --default-library=3D=0D + # ninja -C -j 110=0D + For example,=0D + CC=3Dgcc meson --werror -Denable_kmods=3DTrue -Dlibdir=3Dlib -Dexamples= =3Dall --default-library=3Dx86_64-native-linuxapp-gcc=0D + ninja -C x86_64-native-linuxapp-gcc -j 110=0D +=0D +2. Get the PCI device ID and DSA device ID of DUT, for example, 0000:4f:00= .1 is PCI device ID, 0000:6a:01.0 - 0000:f6:01.0 are DSA device IDs::=0D +=0D + # ./usertools/dpdk-devbind.py -s=0D +=0D + Network devices using kernel driver=0D + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0D + 0000:4f:00.1 'Ethernet Controller E810-C for QSFP 1592' drv=3Dice unused= =3Dvfio-pci=0D +=0D + DMA devices using kernel driver=0D + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=0D + 0000:6a:01.0 'Device 0b25' drv=3Didxd unused=3Dvfio-pci=0D + 0000:6f:01.0 'Device 0b25' drv=3Didxd unused=3Dvfio-pci=0D + 0000:74:01.0 'Device 0b25' drv=3Didxd unused=3Dvfio-pci=0D + 0000:79:01.0 'Device 0b25' drv=3Didxd unused=3Dvfio-pci=0D + 0000:e7:01.0 'Device 0b25' drv=3Didxd unused=3Dvfio-pci=0D + 0000:ec:01.0 'Device 0b25' drv=3Didxd unused=3Dvfio-pci=0D + 0000:f1:01.0 'Device 0b25' drv=3Didxd unused=3Dvfio-pci=0D + 0000:f6:01.0 'Device 0b25' drv=3Didxd unused=3Dvfio-pci=0D +=0D +Test case=0D +=3D=3D=3D=3D=3D=3D=3D=3D=3D=0D +=0D +Common steps=0D +------------=0D +1. Bind DSA devices to DPDK vfio-pci driver::=0D +=0D + # ./usertools/dpdk-devbind.py -b vfio-pci =0D +=0D + For example, bind 2 DMA devices to vfio-pci driver:=0D + # ./usertools/dpdk-devbind.py -b vfio-pci 0000:e7:01.0 0000:ec:= 01.0=0D +=0D +.. note::=0D +=0D + One DPDK DSA device can create 8 WQ at most. Below is an example, where D= PDK DSA device will create one and=0D + eight WQ for DSA deivce 0000:e7:01.0 and 0000:ec:01.0. The value of =E2= =80=9Cmax_queues=E2=80=9D is 1~8:=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 4 -n 4 -a 00= 00:e7:01.0,max_queues=3D1 -- -i=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 4 -n 4 -a 00= 00:ec:01.0,max_queues=3D8 -- -i=0D +=0D +2. Bind DSA devices to kernel idxd driver, and configure Work Queue (WQ)::= =0D +=0D + # ./usertools/dpdk-devbind.py -b idxd =0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q =0D +=0D +.. note::=0D +=0D + Better to reset WQ when need operate DSA devices that bound to idxd drvie= r:=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py --reset = =0D + You can check it by 'ls /dev/dsa'=0D + numDevices: number of devices, where 0<=3DnumDevices<=3D7, corresponding = to 0000:6a:01.0 - 0000:f6:01.0=0D + numWq: Number of workqueues per DSA endpoint, where 1<=3DnumWq<=3D8=0D +=0D + For example, bind 2 DMA devices to idxd driver and configure WQ:=0D +=0D + # ./usertools/dpdk-devbind.py -b idxd 6a:01.0 6f:01.0=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 1 0=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 4 2=0D + Check WQ by 'ls /dev/dsa' and can find "wq0.0 wq2.0 wq2.1 wq2.2 wq2.3"=0D +=0D +Test Case 1: VM2VM vhost-user/virtio-user split ring non-mergeable path an= d multi-queues payload check with dsa dpdk driver=0D +--------------------------------------------------------------------------= --------------------------------------------------=0D +This case uses testpmd to test the payload is valid after packets forwardi= ng in vhost-user/virtio-user split ring non-mergeable path =0D +and multi-queues when vhost uses the asynchronous enqueue operations with = dsa dpdk driver. Both iova as VA and PA mode test.=0D +=0D +1. bind 2 dsa device to vfio-pci like common step 1::=0D +=0D + # ./usertools/dpdk-devbind.py -b vfio-pci e7:01.0 ec:01.0=0D +=0D +2. Launch vhost by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 -a = 0000:e7:01.0,max_queues=3D2 -a 0000:ec:01.0,max_queues=3D2 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@0000:e7:01.0-q0,lcore2@0000:e7:= 01.0-q1]=0D +=0D +3. Launch virtio-user1 by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 --n= o-pci --file-prefix=3Dvirtio1 \=0D + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost-net1,que= ues=3D2,server=3D1,mrg_rxbuf=3D0,in_order=3D0,queue_size=3D4096 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set fwd rxonly=0D + testpmd>start=0D +=0D +4. Attach pdump secondary process to primary process of virtio-user1 by sa= me file-prefix::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix= =3Dvirtio1 -- --pdump 'device_id=3Dnet_virtio_user1,queue=3D0,rx-dev=3D/tmp= /pdump-virtio-rx.pcap,mbuf-size=3D8000'=0D +=0D +5. Launch virtio-user0 and send packets::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --n= o-pci --file-prefix=3Dvirtio \=0D + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost-net0,que= ues=3D2,server=3D1,packed_vq=3D0,mrg_rxbuf=3D0,in_order=3D0,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,128,256,512=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 1=0D + testpmd>stop=0D +=0D +6. Start vhost testpmd, quit pdump and check virtio-user1 RX-packets is 56= 6 and RX-bytes is 486016 and 502 packets with 960 length and 64 packets wit= h 64 length in pdump-virtio-rx.pcap.=0D +=0D +7. Clear virtio-user1 port stats::=0D +=0D + testpmd>stop=0D + testpmd>clear port stats all=0D + testpmd>start=0D +=0D +8. Relaunch vhost with pa mode by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 -a = 0000:e7:01.0,max_queues=3D4 -a 0000:ec:01.0,max_queues=3D4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dpa -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@0000:e7:01.0-q3,lcore2@0000:ec:= 01.0-q3]=0D +=0D +9. Rerun step 4.=0D +=0D +10. Virtio-user0 and send packets again::=0D +=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,128,256,512=0D + testpmd>start tx_first 27=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 1=0D + testpmd>stop=0D +=0D +11. Rerun step 6.=0D +=0D +Test Case 2: VM2VM vhost-user/virtio-user split ring inorder non-mergeable= path and multi-queues payload check with dsa dpdk driver=0D +--------------------------------------------------------------------------= -----------------------------------------------------------=0D +This case uses testpmd to test the payload is valid after packets forwardi= ng in vhost-user/virtio-user split ring inorder=0D +non-mergeable path and multi-queues when vhost uses the asynchronous enque= ue operations with dsa dpdk driver. Both iova as VA and PA mode test.=0D +=0D +1. bind 3 dsa device to vfio-pci like common step 1::=0D +=0D + # ./usertools/dpdk-devbind.py -b vfio-pci e7:01.0 ec:01.0 f1:01= .0=0D +=0D +2. Launch vhost by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 -a = 0000:e7:01.0,max_queues=3D2 -a 0000:ec:01.0,max_queues=3D2 -a 0000:f1:01.0,= max_queues=3D2 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@0000:e7:01.0-q0,lcore2@0000:ec:= 01.0-q0,lcore2@0000:f1:01.0-q0]=0D +=0D +3. Launch virtio-user1 by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 --n= o-pci --file-prefix=3Dvirtio1 \=0D + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost-net1,que= ues=3D2,server=3D1,packed_vq=3D0,mrg_rxbuf=3D0,in_order=3D1,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set fwd rxonly=0D + testpmd>start=0D +=0D +4. Attach pdump secondary process to primary process of virtio-user1 by sa= me file-prefix::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix= =3Dvirtio1 -- --pdump 'device_id=3Dnet_virtio_user1,queue=3D0,rx-dev=3D/tmp= /pdump-virtio-rx.pcap,mbuf-size=3D8000'=0D +=0D +5. Launch virtio-user0 and send packets::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --n= o-pci --file-prefix=3Dvirtio \=0D + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost-net0,que= ues=3D2,server=3D1,packed_vq=3D0,mrg_rxbuf=3D0,in_order=3D1,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,128,256,512=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 1=0D + testpmd>stop=0D +=0D +6. Start vhost testpmd, quit pdump and check virtio-user1 RX-packets is 56= 6 and RX-bytes is 486016 and 502 packets with 960 length and 64 packets wit= h 64 length in pdump-virtio-rx.pcap.=0D +=0D +7. Clear virtio-user1 port stats::=0D +=0D + testpmd>stop=0D + testpmd>clear port stats all=0D + testpmd>start=0D +=0D +8. Relaunch vhost with pa mode by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 -a = 0000:e7:01.0 -a 0000:ec:01.0,max_queues=3D4 -a 0000:f1:01.0,max_queues=3D4 = -a 0000:f6:01.0,max_queues=3D4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dpa -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@0000:e7:01.0-q2,lcore2@0000:ec:= 01.0-q2,lcore2@0000:f1:01.0-q2]=0D +=0D +9. Rerun step 4.=0D +=0D +10. Virtio-user0 send packets::=0D +=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,128,256,512=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 1=0D + testpmd>stop=0D +=0D +11. Rerun step 6.=0D +=0D +Test Case 3: VM2VM vhost-user/virtio-user split ring inorder mergeable pat= h and multi-queues non-indirect descriptor with dsa dpdk driver=0D +--------------------------------------------------------------------------= ----------------------------------------------------------------=0D +This case uses testpmd to test the payload is valid and non-indirect descr= iptor after packets forwarding in vhost-user/virtio-user=0D +split ring inorder mergeable path and multi-queues when vhost uses the asy= nchronous enqueue operations with dsa dpdk driver. Both iova as VA and PA m= ode test.=0D +=0D +1. bind 4 dsa device to vfio-pci like common step 1::=0D +=0D + # ./usertools/dpdk-devbind.py -b vfio-pci e7:01.0 ec:01.0 f1:01= .0 f6:01.0=0D +=0D +2. Launch vhost by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 -a = 0000:e7:01.0,max_queues=3D1 -a 0000:ec:01.0,max_queues=3D2 -a 0000:f1:01.0,= max_queues=3D3 -a 0000:f6:01.0,max_queues=3D4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D256 --rxd=3D= 256 --no-flush-rx --lcore-dma=3D[lcore2@0000:e7:01.0-q0,lcore2@0000:ec:01.0= -q1,lcore2@0000:f1:01.0-q2,lcore2@0000:f6:01.0-q3]=0D +=0D +3. Launch virtio-user1 by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 --n= o-pci --file-prefix=3Dvirtio1 \=0D + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost-net1,que= ues=3D2,server=3D1,packed_vq=3D0,mrg_rxbuf=3D1,in_order=3D1,queue_size=3D25= 6 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D256 --rxd=3D256=0D + testpmd>set fwd rxonly=0D + testpmd>start=0D +=0D +4. Attach pdump secondary process to primary process of virtio-user1 by sa= me file-prefix::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix= =3Dvirtio1 -- --pdump 'device_id=3Dnet_virtio_user1,queue=3D0,rx-dev=3D/tmp= /pdump-virtio-rx.pcap,mbuf-size=3D8000'=0D +=0D +5. Launch virtio-user0 and send packets::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --n= o-pci --file-prefix=3Dvirtio \=0D + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost-net0,que= ues=3D2,server=3D1,packed_vq=3D0,mrg_rxbuf=3D1,in_order=3D1,queue_size=3D25= 6 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D256 --rxd=3D256=0D + testpmd>set burst 1=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 2000,2000,2000,2000=0D + testpmd>start tx_first 1=0D + testpmd>stop=0D +=0D +6. Start vhost, then quit pdump and three testpmd, about split virtqueue i= norder mergeable path, it use the non-indirect descriptors, the 8k length p= kt will occupies 5 ring:2000,2000,2000,2000 will need 4 consequent ring,=0D +still need one ring put header. So check 504 packets and 48128 bytes recei= ved by virtio-user1 and 502 packets with 64 length and 2 packets with 8K le= ngth in pdump-virtio-rx.pcap.=0D +=0D +7. Relaunch vhost with pa mode by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 -a = 0000:e7:01.0,max_queues=3D1 -a 0000:ec:01.0,max_queues=3D2 -a 0000:f1:01.0,= max_queues=3D3 -a 0000:f6:01.0,max_queues=3D4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dpa -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D256 --rxd=3D= 256 --no-flush-rx --lcore-dma=3D[lcore2@0000:e7:01.0-q0,lcore2@0000:ec:01.0= -q1,lcore2@0000:f1:01.0-q2,lcore2@0000:f6:01.0-q3]=0D +=0D +8. Rerun step 3-6.=0D +=0D +Test Case 4: VM2VM vhost-user/virtio-user split ring mergeable path and mu= lti-queues indirect descriptor with dsa dpdk driver=0D +--------------------------------------------------------------------------= -----------------------------------------------------=0D +This case uses testpmd to test the payload is valid and indirect descripto= r after packets forwarding in vhost-user/virtio-user=0D +split ring mergeable path and multi-queues when vhost uses the asynchronou= s enqueue operations with dsa dpdk driver. Both iova as VA and PA mode test= .=0D +=0D +1. bind 4 dsa device to vfio-pci like common step 1::=0D +=0D + # ./usertools/dpdk-devbind.py -b vfio-pci e7:01.0 ec:01.0 f1:01= .0 f6:01.0=0D +=0D +2. Launch vhost by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 -a = 0000:e7:01.0,max_queues=3D1 -a 0000:ec:01.0,max_queues=3D2 -a 0000:f1:01.0,= max_queues=3D3 -a 0000:f6:01.0,max_queues=3D4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D256 --rxd=3D= 256 --no-flush-rx --lcore-dma=3D[lcore2@0000:e7:01.0-q0,lcore2@0000:ec:01.0= -q1,lcore2@0000:f1:01.0-q2,lcore2@0000:f6:01.0-q3]=0D +=0D +3. Launch virtio-user1 by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 --n= o-pci --file-prefix=3Dvirtio1 \=0D + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost-net1,que= ues=3D2,server=3D1,packed_vq=3D0,mrg_rxbuf=3D1,in_order=3D0,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D256 --rxd=3D256=0D + testpmd>set fwd rxonly=0D + testpmd>start=0D +=0D +4. Attach pdump secondary process to primary process of virtio-user1 by sa= me file-prefix::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix= =3Dvirtio1 -- --pdump 'device_id=3Dnet_virtio_user1,queue=3D0,rx-dev=3D/tmp= /pdump-virtio-rx.pcap,mbuf-size=3D8000'=0D +=0D +5. Launch virtio-user0 and send packets::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --n= o-pci --file-prefix=3Dvirtio \=0D + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost-net0,que= ues=3D2,server=3D1,packed_vq=3D0,mrg_rxbuf=3D1,in_order=3D0,queue_size=3D25= 6 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D256 --rxd=3D256=0D + testpmd>set burst 1=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 2000,2000,2000,2000=0D + testpmd>start tx_first 1=0D + testpmd>stop=0D +=0D +6. Start vhost, then quit pdump and three testpmd, about split virtqueue i= norder mergeable path, it use the indirect descriptors, the 8k length pkt w= ill just occupies one ring.=0D +So check 512 packets and 112128 bytes received by virtio-user1 and 502 pac= kets with 64 length and 10 packets with 8K length in pdump-virtio-rx.pcap.= =0D +=0D +7. Relaunch vhost with pa mode by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 -a = 0000:e7:01.0,max_queues=3D1 -a 0000:ec:01.0,max_queues=3D2 -a 0000:f1:01.0,= max_queues=3D3 -a 0000:f6:01.0,max_queues=3D4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dpa -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D256 --rxd=3D= 256 --no-flush-rx --lcore-dma=3D[lcore2@0000:e7:01.0-q0,lcore2@0000:ec:01.0= -q1,lcore2@0000:f1:01.0-q2,lcore2@0000:f6:01.0-q3]=0D +=0D +8. Rerun step 3-6.=0D +=0D +Test Case 5: VM2VM vhost-user/virtio-user packed ring non-mergeable path a= nd multi-queues payload check with dsa dpdk driver=0D +--------------------------------------------------------------------------= ------------------------------------------------------=0D +This case uses testpmd to test the payload is valid after packets forwardi= ng in vhost-user/virtio-user packed ring =0D +non-mergeable path and multi-queues when vhost uses the asynchronous enque= ue operations with dsa dpdk driver. Both iova as VA and PA mode test.=0D +=0D +1. bind 3 dsa device to vfio-pci like common step 1::=0D +=0D + # ./usertools/dpdk-devbind.py -b vfio-pci e7:01.0 ec:01.0 f1:01= .0=0D +=0D +2. Launch vhost by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 -a = 0000:e7:01.0 -a 0000:ec:01.0 -a 0000:f1:01.0 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@0000:e7:01.0-q0,lcore2@0000:ec:= 01.0-q1,lcore2@0000:f1:01.0-q2]=0D +=0D +3. Launch virtio-user1 by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 \=0D + --no-pci --file-prefix=3Dvirtio1 \=0D + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost-net1,que= ues=3D2,server=3D1,packed_vq=3D1,mrg_rxbuf=3D0,in_order=3D0,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set fwd rxonly=0D + testpmd>start=0D +=0D +4. Attach pdump secondary process to primary process of virtio-user1 by sa= me file-prefix::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix= =3Dvirtio1 -- --pdump 'device_id=3Dnet_virtio_user1,queue=3D0,rx-dev=3D/tmp= /pdump-virtio-rx.pcap,mbuf-size=3D8000'=0D +=0D +5. Launch virtio-user0 and send packets::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --n= o-pci --file-prefix=3Dvirtio \=0D + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost-net0,que= ues=3D2,server=3D1,packed_vq=3D1,mrg_rxbuf=3D0,in_order=3D0,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,128,256,512=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 1=0D + testpmd>stop=0D +=0D +6. Start vhost testpmd, quit pdump and check virtio-user1 RX-packets is 5= 66 and RX-bytes is 486016 and 502 packets with 960 length and 64 packets wi= th 64 length in pdump-virtio-rx.pcap.=0D +=0D +7. Clear virtio-user1 port stats::=0D +=0D + testpmd>stop=0D + testpmd>clear port stats all=0D + testpmd>start=0D +=0D +8. Relaunch vhost with iova=3Dpa by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 -a = 0000:e7:01.0 -a 0000:ec:01.0 -a 0000:f1:01.0 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dpa -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@0000:e7:01.0-q4,lcore2@0000:ec:= 01.0-q5,lcore2@0000:f1:01.0-q6]=0D +=0D +9. Rerun step 4.=0D +=0D +10. Virtio-user0 send packets::=0D +=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,128,256,512=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 1=0D + testpmd>stop=0D +=0D +11. Rerun step 6.=0D +=0D +Test Case 6: VM2VM vhost-user/virtio-user packed ring inorder non-mergeabl= e path and multi-queues payload check with dsa dpdk driver=0D +--------------------------------------------------------------------------= -----------------------------------------------------------=0D +This case uses testpmd to test the payload is valid after packets forwardi= ng in vhost-user/virtio-user packed ring inorder=0D +non-mergeable path and multi-queues when vhost uses the asynchronous enque= ue operations with dsa dpdk driver. Both iova as VA and PA mode test.=0D +=0D +1. bind 4 dsa device to vfio-pci like common step 1::=0D +=0D + # ./usertools/dpdk-devbind.py -b vfio-pci e7:01.0 f1:01.0 f6:01= .0=0D +=0D +2. Launch vhost by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 -a = 0000:e7:01.0,max_queues=3D2 -a 0000:ec:01.0,max_queues=3D2 -a 0000:f1:01.0,= max_queues=3D2 -a 0000:f6:01.0,max_queues=3D2 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@0000:e7:01.0-q0,lcore2@0000:ec:= 01.0-q0,lcore2@0000:f1:01.0-q1,lcore2@0000:f6:01.0-q1]=0D +=0D +3. Launch virtio-user1 by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 --n= o-pci --file-prefix=3Dvirtio1 \=0D + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost-net1,que= ues=3D2,server=3D1,packed_vq=3D1,mrg_rxbuf=3D0,in_order=3D1,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set fwd rxonly=0D + testpmd>start=0D +=0D +4. Attach pdump secondary process to primary process of virtio-user1 by sa= me file-prefix::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix= =3Dvirtio1 -- --pdump 'device_id=3Dnet_virtio_user1,queue=3D0,rx-dev=3D/tmp= /pdump-virtio-rx.pcap,mbuf-size=3D8000'=0D +=0D +5. Launch virtio-user0 and send packets::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --n= o-pci --file-prefix=3Dvirtio \=0D + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost-net0,que= ues=3D2,server=3D1,packed_vq=3D1,mrg_rxbuf=3D0,in_order=3D1,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,128,256,512=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 1=0D +=0D +6. Start vhost testpmd, quit pdump and check virtio-user1 RX-packets is 56= 6 and RX-bytes is 486016 and 502 packets with 960 length and 64 packets wit= h 64 length in pdump-virtio-rx.pcap.=0D +=0D +7. Clear virtio-user1 port stats::=0D +=0D + testpmd>stop=0D + testpmd>clear port stats all=0D + testpmd>start=0D +=0D +8. Relaunch vhost with iova=3Dpa by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 -a = 0000:e7:01.0 -a 0000:ec:01.0 -a 0000:f1:01.0 -a 0000:f6:01.0 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dpa -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@0000:e7:01.0-q5,lcore2@0000:ec:= 01.0-q6,lcore2@0000:f1:01.0-q5,lcore2@0000:f6:01.0-q6]=0D +=0D +9. Rerun step 4.=0D +=0D +10. virtio-user0 send packets::=0D +=0D + testpmd>stop=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,128,256,512=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 1=0D +=0D +11. Rerun step 6.=0D +=0D +Test Case 7: VM2VM vhost-user/virtio-user packed ring mergeable path and m= ulti-queues payload check with dsa dpdk driver=0D +--------------------------------------------------------------------------= ------------------------------------------------=0D +This case uses testpmd to test the payload is valid after packets forwardi= ng in vhost-user/virtio-user packed ring =0D +mergeable path and multi-queues when vhost uses the asynchronous enqueue o= perations with dsa dpdk driver. Both iova as VA and PA mode test.=0D +=0D +1. bind 2 dsa device to vfio-pci like common step 1::=0D +=0D + # ./usertools/dpdk-devbind.py -b vfio-pci e7:01.0 ec:01.0 =0D +=0D +2. Launch vhost by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 -a = 0000:e7:01.0,max_queues=3D4 -a 0000:ec:01.0,max_queues=3D4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@0000:e7:01.0-q0,lcore2@0000:e7:= 01.0-q1,lcore2@0000:e7:01.0-q2,lcore2@0000:ec:01.0-q0,lcore2@0000:ec:01.0-q= 1]=0D +=0D +3. Launch virtio-user1 by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 \=0D + --no-pci --file-prefix=3Dvirtio1 \=0D + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost-net1,que= ues=3D2,server=3D1,packed_vq=3D1,mrg_rxbuf=3D1,in_order=3D0,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set fwd rxonly=0D + testpmd>start=0D +=0D +4. Attach pdump secondary process to primary process of virtio-user1 by sa= me file-prefix::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix= =3Dvirtio1 -- --pdump 'device_id=3Dnet_virtio_user1,queue=3D0,rx-dev=3D/tmp= /pdump-virtio-rx.pcap,mbuf-size=3D8000'=0D +=0D +5. Launch virtio-user0 and send packets::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --n= o-pci --file-prefix=3Dvirtio \=0D + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost-net0,que= ues=3D2,server=3D1,packed_vq=3D1,mrg_rxbuf=3D1,in_order=3D0,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,256,2000,64,256,2000=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D +=0D +6. Start vhost testpmd, quit pdump and check virtio-user1 check 502 packe= ts and 279232 bytes and 54 packets with 4640 length and 448 packets with 64= length in pdump-virtio-rx.pcap.=0D +=0D +7. Clear virtio-user1 port stats::=0D +=0D + testpmd>stop=0D + testpmd>clear port stats all=0D + testpmd>start=0D +=0D +8. Relaunch vhost with iova=3Dpa by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 -a = 0000:e7:01.0 -a 0000:ec:01.0 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dpa -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@0000:e7:01.0-q6,lcore2@0000:e7:= 01.0-q7,lcore2@0000:ec:01.0-q2,lcore2@0000:ec:01.0-q3,lcore2@0000:ec:01.0-q= 4]=0D +=0D +9. Rerun step 4.=0D +=0D +10. Virtio-user0 send packets::=0D +=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,256,2000,64,256,2000=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D +=0D +11. Rerun step 6.=0D +=0D +Test Case 8: VM2VM vhost-user/virtio-user packed ring inorder mergeable pa= th and multi-queues payload check with dsa dpdk driver=0D +--------------------------------------------------------------------------= --------------------------------------------------------=0D +This case uses testpmd to test the payload is valid after packets forwardi= ng in vhost-user/virtio-user packed ring inorder=0D +mergeable path and multi-queues when vhost uses the asynchronous enqueue o= perations with dsa dpdk driver. Both iova as VA and PA mode test.=0D +=0D +1. bind 8 dsa device to vfio-pci like common step 1::=0D +=0D + ls /dev/dsa #check wq configure, reset if exist=0D + # ./usertools/dpdk-devbind.py -u 6a:01.0 6f:01.0 74:01.0 79:01.= 0 e7:01.0 ec:01.0 f1:01.0 f6:01.0=0D + # ./usertools/dpdk-devbind.py -b vfio-pci 6a:01.0 6f:01.0 74:01= .0 79:01.0 e7:01.0 ec:01.0 f1:01.0 f6:01.0=0D +=0D +2. Launch vhost by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 -a = 0000:6a:01.0 -a 0000:6f:01.0 -a 0000:74:01.0 -a 0000:79:01.0 -a 0000:e7:01.= 0 -a 0000:ec:01.0 -a 0000:f1:01.0 -a 0000:f6:01.0 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@0000:6a:01.0-q0,lcore2@0000:6f:= 01.0-q1,lcore2@0000:74:01.0-q2,lcore2@0000:79:01.0-q3,lcore2@0000:e7:01.0-q= 4,lcore2@0000:ec:01.0-q5,lcore2@0000:f1:01.0-q6,lcore2@0000:f6:01.0-q7]=0D +=0D +3. Launch virtio-user1 by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 --n= o-pci --file-prefix=3Dvirtio1 \=0D + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost-net1,que= ues=3D2,server=3D1,packed_vq=3D1,mrg_rxbuf=3D1,in_order=3D1,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set fwd rxonly=0D + testpmd>start=0D +=0D +4. Attach pdump secondary process to primary process of virtio-user1 by sa= me file-prefix::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix= =3Dvirtio1 -- --pdump 'device_id=3Dnet_virtio_user1,queue=3D0,rx-dev=3D/tmp= /pdump-virtio-rx.pcap,mbuf-size=3D8000'=0D +=0D +5. Launch virtio-user0 and send packets::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --n= o-pci --file-prefix=3Dvirtio \=0D + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost-net0,que= ues=3D2,server=3D1,packed_vq=3D1,mrg_rxbuf=3D1,in_order=3D1,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,256,2000,64,256,2000=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D +=0D +6. Start vhost testpmd, quit pdump and check virtio-user1 RX-packets is 50= 2 packets and 279232 bytes and 54 packets with 4640 length and 448 packets = with 64 length in pdump-virtio-rx.pcap.=0D +=0D +7. Clear virtio-user1 port stats::=0D +=0D + testpmd>stop=0D + testpmd>clear port stats all=0D + testpmd>start=0D +=0D +8. Relaunch vhost with iova=3Dpa by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 -a = 0000:6a:01.0 -a 0000:6f:01.0 -a 0000:74:01.0 -a 0000:79:01.0 -a 0000:e7:01.= 0 -a 0000:ec:01.0 -a 0000:f1:01.0 -a 0000:f6:01.0 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dpa -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@0000:6a:01.0-q1,lcore2@0000:6f:= 01.0-q2,lcore2@0000:74:01.0-q3,lcore2@0000:79:01.0-q4,lcore2@0000:e7:01.0-q= 5,lcore2@0000:ec:01.0-q6,lcore2@0000:f1:01.0-q7,lcore2@0000:f6:01.0-q7]=0D +=0D +9. Rerun step 4.=0D +=0D +10. virtio-user0 send packets::=0D +=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,256,2000,64,256,2000=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D +=0D +11. Rerun step 6.=0D +=0D +Test Case 9: VM2VM vhost-user/virtio-user packed ring vectorized-tx path a= nd multi-queues indirect descriptor with dsa dpdk driver=0D +--------------------------------------------------------------------------= ---------------------------------------------------------=0D +This case uses testpmd to test the payload is valid and indirect descripto= r after packets forwarding in vhost-user/virtio-user=0D +packed ring vectorized-tx path and multi-queues when vhost uses the asynch= ronous enqueue operations with dsa dpdk driver. =0D +Both iova as VA and PA mode test.=0D +=0D +1. bind 4 dsa device to vfio-pci like common step 1::=0D +=0D + # ./usertools/dpdk-devbind.py -b vfio-pci 6a:01.0 6f:01.0 74:01= .0=0D +=0D +2. Launch vhost by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 -a = 0000:6a:01.0 -a 0000:6f:01.0 -a 0000:74:01.0 -a 0000:79:01.0 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net,queues=3D2,client=3D1,dmas=3D[txq0;t= xq1],dma_ring_size=3D2048' --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2= ,client=3D1,dmas=3D[txq0;txq1],dma_ring_size=3D2048' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D256 --rxd=3D= 256 --no-flush-rx \=0D + --lcore-dma=3D[lcore2@0000:6a:01.0-q0,lcore2@0000:6f:01.0-q1,lcore2@0000:= 74:01.0-q2,lcore2@0000:79:01.0-q3]=0D +=0D +3. Launch virtio-user1 by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 --n= o-pci --file-prefix=3Dvirtio1 --force-max-simd-bitwidth=3D512 \=0D + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost-net1,que= ues=3D2,server=3D1,packed_vq=3D1,mrg_rxbuf=3D1,in_order=3D1,vectorized=3D1,= queue_size=3D256 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D256 --rxd=3D256=0D + testpmd>set fwd rxonly=0D + set verbose 1=0D + testpmd>start=0D +=0D +4. Attach pdump secondary process to primary process by same file-prefix::= =0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix= =3Dvirtio1 -- --pdump 'device_id=3Dnet_virtio_user1,queue=3D*,rx-dev=3D./pd= ump-virtio-rx.pcap,mbuf-size=3D8000'=0D +=0D +5. Launch virtio-user0 and send 8k length packets::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --f= orce-max-simd-bitwidth=3D512 --no-pci --file-prefix=3Dvirtio \=0D + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost-net,queu= es=3D2,server=3D1,packed_vq=3D1,mrg_rxbuf=3D1,in_order=3D1,vectorized=3D1,q= ueue_size=3D256 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D256 --rxd=3D256=0D +=0D + testpmd>set burst 1=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 2000,2000,2000,2000=0D + testpmd>start tx_first 1=0D + testpmd>stop=0D +=0D +6. Start vhost, then quit pdump and three testpmd, about packed virtqueue = vectorized-tx path, it use the indirect descriptors, the 8k length pkt will= just occupies one ring.=0D +So check 512 packets and 112128 bytes received by virtio-user1 and 502 pac= kets with 64 length and 10 packets with 8K length in pdump-virtio-rx.pcap.= =0D +=0D +7.Relaunch vhost with iova=3Dpa by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 -a = 0000:6a:01.0 -a 0000:6f:01.0 -a 0000:74:01.0 -a 0000:79:01.0 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net,queues=3D2,client=3D1,dmas=3D[txq0;t= xq1],dma_ring_size=3D2048' --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2= ,client=3D1,dmas=3D[txq0;txq1],dma_ring_size=3D2048' \=0D + --iova=3Dpa -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D256 --rxd=3D= 256 --no-flush-rx \=0D + --lcore-dma=3D[lcore2@0000:6a:01.0-q1,lcore2@0000:6f:01.0-q2,lcore2@0000:= 74:01.0-q3,lcore2@0000:79:01.0-q4]=0D +=0D +8. Rerun step 3-6.=0D +=0D +Test Case 10: VM2VM vhost-user/virtio-user split ring non-mergeable path a= nd multi-queues payload check with dsa kernel driver=0D +--------------------------------------------------------------------------= ------------------------------------------------------=0D +This case uses testpmd to test the payload is valid after packets forwardi= ng in vhost-user/virtio-user split ring =0D +non-mergeable path and multi-queues when vhost uses the asynchronous enque= ue operations with dsa kernel driver. =0D +=0D +1. bind 1 dsa device to idxd like common step 2::=0D +=0D + ls /dev/dsa #check wq configure, reset if exist=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py --reset x= x=0D + # ./usertools/dpdk-devbind.py -u 6a:01.0=0D + # ./usertools/dpdk-devbind.py -b idxd 6a:01.0=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 4 0=0D + ls /dev/dsa #check wq configure success=0D +=0D +2. Launch vhost by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@wq0.0,lcore2@wq0.1]=0D +=0D +3. Launch virtio-user1 by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 --n= o-pci --file-prefix=3Dvirtio1 \=0D + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost-net1,que= ues=3D2,server=3D1,packed_vq=3D0,mrg_rxbuf=3D0,in_order=3D0,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set fwd rxonly=0D + testpmd>start=0D +=0D +4. Attach pdump secondary process to primary process of virtio-user1 by sa= me file-prefix::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix= =3Dvirtio1 -- --pdump 'device_id=3Dnet_virtio_user1,queue=3D0,rx-dev=3D/tmp= /pdump-virtio-rx.pcap,mbuf-size=3D8000'=0D +=0D +5. Launch virtio-user0 and send packets::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --n= o-pci --file-prefix=3Dvirtio \=0D + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost-net0,que= ues=3D2,server=3D1,packed_vq=3D0,mrg_rxbuf=3D0,in_order=3D0,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,128,256,512=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 1=0D + testpmd>stop=0D +=0D +6. Start vhost testpmd, quit pdump and check virtio-user1 RX-packets is 56= 6 and RX-bytes is 486016 and 502 packets with 960 length and 64 packets wit= h 64 length in pdump-virtio-rx.pcap.=0D +=0D +7. Clear virtio-user1 port stats::=0D +=0D + testpmd>stop=0D + testpmd>clear port stats all=0D + testpmd>start=0D +=0D +8. Quit and relaunch vhost with diff channel by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@wq0.2,lcore2@wq0.3]=0D +=0D +9. Rerun step 4.=0D +=0D +10. Virtio-user0 send packets::=0D +=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,128,256,512=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 1=0D + testpmd>stop=0D +=0D +11. Rerun step 6.=0D +=0D +Test Case 11: VM2VM vhost-user/virtio-user split ring inorder non-mergeabl= e path and multi-queues payload check with dsa kernel driver=0D +--------------------------------------------------------------------------= --------------------------------------------------------------=0D +This case uses testpmd to test the payload is valid after packets forwardi= ng in vhost-user/virtio-user split ring inorder=0D +non-mergeable path and multi-queues when vhost uses the asynchronous enque= ue operations with dsa kernel driver. =0D +=0D +1. bind 3 dsa device to idxd like common step 2::=0D +=0D + ls /dev/dsa #check wq configure, reset if exist=0D + # ./usertools/dpdk-devbind.py -u 6a:01.0 6f:01.0 74:01.0=0D + # ./usertools/dpdk-devbind.py -b idxd 6a:01.0 6f:01.0 74:01.0=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 0=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 2=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 4=0D + ls /dev/dsa #check wq configure success=0D +=0D +2. Launch vhost by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@wq0.0,lcore2@wq2.1,lcore2@wq4.2= ]=0D +=0D +3. Launch virtio-user1 by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 --n= o-pci --file-prefix=3Dvirtio1 \=0D + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost-net1,que= ues=3D2,server=3D1,packed_vq=3D0,mrg_rxbuf=3D0,in_order=3D1,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set fwd rxonly=0D + testpmd>start=0D +=0D +4. Attach pdump secondary process to primary process of virtio-user1 by sa= me file-prefix::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix= =3Dvirtio1 -- --pdump 'device_id=3Dnet_virtio_user1,queue=3D0,rx-dev=3D/tmp= /pdump-virtio-rx.pcap,mbuf-size=3D8000'=0D +=0D +5. Launch virtio-user0 and send packets::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --n= o-pci --file-prefix=3Dvirtio \=0D + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost-net0,que= ues=3D2,server=3D1,packed_vq=3D0,mrg_rxbuf=3D0,in_order=3D1,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,128,256,512=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 1=0D + testpmd>stop=0D +=0D +6. Start vhost testpmd, quit pdump and check virtio-user1 RX-packets is 56= 6 and RX-bytes is 486016 and 502 packets with 960 length and 64 packets wit= h 64 length in pdump-virtio-rx.pcap.=0D +=0D +7. Clear virtio-user1 port stats::=0D +=0D + testpmd>stop=0D + testpmd>clear port stats all=0D + testpmd>start=0D +=0D +8. Quit and relaunch vhost with diff channel by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@wq0.3,lcore2@wq2.4,lcore2@wq4.5= ]=0D +=0D +9. Rerun step 4.=0D +=0D +10. virtio-user0 send packets::=0D +=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,128,256,512=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 1=0D + testpmd>stop=0D +=0D +11. Rerun step 6.=0D +=0D +Test Case 12: VM2VM vhost-user/virtio-user split ring inorder mergeable pa= th and multi-queues non-indirect descriptor with dsa kernel driver=0D +--------------------------------------------------------------------------= -------------------------------------------------------------------=0D +This case uses testpmd to test the payload is valid and non-indirect descr= iptor after packets forwarding in vhost-user/virtio-user=0D +split ring inorder mergeable path and multi-queues when vhost uses the asy= nchronous enqueue operations with dsa kernel driver. =0D +=0D +1. bind 4 dsa device to idxd like common step 2::=0D +=0D + ls /dev/dsa #check wq configure, reset if exist=0D + # ./usertools/dpdk-devbind.py -u 6a:01.0 6f:01.0 74:01.0 79:01.= 0=0D + # ./usertools/dpdk-devbind.py -b idxd 6a:01.0 6f:01.0 74:01.0 7= 9:01.0=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 0=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 2=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 4=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 6=0D + ls /dev/dsa #check wq configure success=0D +=0D +2. Launch vhost by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D256 --rxd=3D= 256 --no-flush-rx --lcore-dma=3D[lcore2@wq0.0,lcore2@wq2.1,lcore2@wq4.2,lco= re2@wq6.3]=0D +=0D +3. Launch virtio-user1 by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 --n= o-pci --file-prefix=3Dvirtio1 \=0D + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost-net1,que= ues=3D2,server=3D1,packed_vq=3D0,mrg_rxbuf=3D1,in_order=3D1,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D256 --rxd=3D256=0D + testpmd>set fwd rxonly=0D + testpmd>start=0D +=0D +4. Attach pdump secondary process to primary process of virtio-user1 by sa= me file-prefix::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix= =3Dvirtio1 -- --pdump 'device_id=3Dnet_virtio_user1,queue=3D0,rx-dev=3D/tmp= /pdump-virtio-rx.pcap,mbuf-size=3D8000'=0D +=0D +5. Launch virtio-user0 and send packets::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --n= o-pci --file-prefix=3Dvirtio \=0D + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost-net0,que= ues=3D2,server=3D1,packed_vq=3D0,mrg_rxbuf=3D1,in_order=3D1,queue_size=3D25= 6 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D256 --rxd=3D256=0D + testpmd>set burst 1=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 2000,2000,2000,2000=0D + testpmd>start tx_first 1=0D + testpmd>stop=0D +=0D +6. Start vhost, then quit pdump and three testpmd, about split virtqueue i= norder mergeable path, it use the direct descriptors, the 8k length pkt wil= l occupies 5 ring:2000,2000,2000,2000 will need 4 consequent ring,=0D +still need one ring put header. So check 504 packets and 48128 bytes recei= ved by virtio-user1 and 502 packets with 64 length and 2 packets with 8K le= ngth in pdump-virtio-rx.pcap.=0D +=0D +7. Clear virtio-user1 port stats::=0D +=0D + testpmd>stop=0D + testpmd>clear port stats all=0D + testpmd>start=0D +=0D +8. Quit and relaunch vhost with diff channel by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D256 --rxd=3D= 256 --no-flush-rx --lcore-dma=3D[lcore2@wq0.3,lcore2@wq2.4,lcore2@wq4.3,lco= re2@wq6.4]=0D +=0D +9. Rerun step 4.=0D +=0D +10. virtio-user0 send packets::=0D +=0D + testpmd>set burst 1=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 2000,2000,2000,2000=0D + testpmd>start tx_first 1=0D + testpmd>stop=0D +=0D +11. Rerun step 6.=0D +=0D +Test Case 13: VM2VM vhost-user/virtio-user split ring mergeable path and m= ulti-queues indirect descriptor with dsa kernel driver=0D +--------------------------------------------------------------------------= --------------------------------------------------------=0D +This case uses testpmd to test the payload is valid and indirect descripto= r after packets forwarding in vhost-user/virtio-user=0D +split ring mergeable path and multi-queues when vhost uses the asynchronou= s enqueue operations with dsa kernel driver. =0D +=0D +1. bind 4 dsa device to idxd like common step 2::=0D +=0D + ls /dev/dsa #check wq configure, reset if exist=0D + # ./usertools/dpdk-devbind.py -u 6a:01.0 6f:01.0 74:01.0 79:01.= 0=0D + # ./usertools/dpdk-devbind.py -b idxd 6a:01.0 6f:01.0 74:01.0 7= 9:01.0=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 0=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 2=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 4=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 6=0D + ls /dev/dsa #check wq configure success=0D +=0D +2. Launch vhost by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D256 --rxd=3D= 256 --no-flush-rx --lcore-dma=3D[lcore2@wq0.0,lcore2@wq2.1,lcore2@wq4.2,lco= re2@wq6.3]=0D +=0D +3. Launch virtio-user1 by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 --n= o-pci --file-prefix=3Dvirtio1 \=0D + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost-net1,que= ues=3D2,server=3D1,packed_vq=3D0,mrg_rxbuf=3D1,in_order=3D0,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D256 --rxd=3D256=0D + testpmd>set fwd rxonly=0D + testpmd>start=0D +=0D +4. Attach pdump secondary process to primary process of virtio-user1 by sa= me file-prefix::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix= =3Dvirtio1 -- --pdump 'device_id=3Dnet_virtio_user1,queue=3D0,rx-dev=3D/tmp= /pdump-virtio-rx.pcap,mbuf-size=3D8000'=0D +=0D +5. Launch virtio-user0 and send packets::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --n= o-pci --file-prefix=3Dvirtio \=0D + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost-net0,que= ues=3D2,server=3D1,packed_vq=3D0,mrg_rxbuf=3D1,in_order=3D0,queue_size=3D25= 6 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D256 --rxd=3D256=0D + testpmd>set burst 1=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 2000,2000,2000,2000=0D + testpmd>start tx_first 1=0D + testpmd>stop=0D +=0D +6. Start vhost, then quit pdump and three testpmd, about split virtqueue i= norder mergeable path, it use the indirect descriptors, the 8k length pkt w= ill just occupies one ring.=0D +So check 512 packets and 112128 bytes received by virtio-user1 and 502 pac= kets with 64 length and 10 packets with 8K length in pdump-virtio-rx.pcap.= =0D +=0D +7. Clear virtio-user1 port stats::=0D +=0D + testpmd>stop=0D + testpmd>clear port stats all=0D + testpmd>start=0D +=0D +8. Quit and relaunch vhost with diff channel by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D256 --rxd=3D= 256 --no-flush-rx --lcore-dma=3D[lcore2@wq0.3,lcore2@wq2.4,lcore2@wq4.3,lco= re2@wq6.4]=0D +=0D +9. Rerun step 4.=0D +=0D +10. Virtio-user0 send packets::=0D +=0D + testpmd>set burst 1=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 2000,2000,2000,2000=0D + testpmd>start tx_first 1=0D + testpmd>stop=0D +=0D +11. Rerun step 6.=0D +=0D +Test Case 14: VM2VM vhost-user/virtio-user packed ring non-mergeable path = and multi-queues payload check with dsa kernel driver=0D +--------------------------------------------------------------------------= --------------------------------------------------------=0D +This case uses testpmd to test the payload is valid after packets forwardi= ng in vhost-user/virtio-user packed ring =0D +non-mergeable path and multi-queues when vhost uses the asynchronous enque= ue operations with dsa kernel driver.=0D +=0D +1. bind 3 dsa device to idxd like common step 2::=0D +=0D + ls /dev/dsa #check wq configure, reset if exist=0D + # ./usertools/dpdk-devbind.py -u 6a:01.0 6f:01.0 74:01.0=0D + # ./usertools/dpdk-devbind.py -b idxd 6a:01.0 6f:01.0 74:01.0=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 0=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 2=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 4=0D + ls /dev/dsa #check wq configure success=0D +=0D +2. Launch vhost by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@wq0.0,lcore2@wq2.1,lcore2@wq4.2= ]=0D +=0D +3. Launch virtio-user1 by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 \=0D + --no-pci --file-prefix=3Dvirtio1 \=0D + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost-net1,que= ues=3D2,server=3D1,packed_vq=3D1,mrg_rxbuf=3D0,in_order=3D0,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set fwd rxonly=0D + testpmd>start=0D +=0D +4. Attach pdump secondary process to primary process of virtio-user1 by sa= me file-prefix::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix= =3Dvirtio1 -- --pdump 'device_id=3Dnet_virtio_user1,queue=3D0,rx-dev=3D/tmp= /pdump-virtio-rx.pcap,mbuf-size=3D8000'=0D +=0D +5. Launch virtio-user0 and send packets::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --n= o-pci --file-prefix=3Dvirtio \=0D + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost-net0,que= ues=3D2,server=3D1,packed_vq=3D1,mrg_rxbuf=3D0,in_order=3D0,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,128,256,512=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 1=0D + testpmd>stop=0D +=0D +6. Start vhost testpmd, quit pdump and check virtio-user1 RX-packets is 5= 66 and RX-bytes is 486016 and 502 packets with 960 length and 64 packets wi= th 64 length in pdump-virtio-rx.pcap.=0D +=0D +7. Clear virtio-user1 port stats::=0D +=0D + testpmd>stop=0D + testpmd>clear port stats all=0D + testpmd>start=0D +=0D +8. Quit and relaunch vhost with diff channel by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@wq0.4,lcore2@wq2.5,lcore2@wq4.6= ]=0D +=0D +9. Rerun step 4.=0D +=0D +10. Virtio-user0 send packets::=0D +=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,128,256,512=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 1=0D + testpmd>stop=0D +=0D +11. Rerun step 6.=0D +=0D +Test Case 15: VM2VM vhost-user/virtio-user packed ring inorder non-mergeab= le path and multi-queues payload check with dsa kernel driver=0D +--------------------------------------------------------------------------= --------------------------------------------------------------=0D +This case uses testpmd to test the payload is valid after packets forwardi= ng in vhost-user/virtio-user packed ring inorder=0D +non-mergeable path and multi-queues when vhost uses the asynchronous enque= ue operations with dsa kernel driver.=0D +=0D +1. bind 4 dsa device to idxd like common step 2::=0D +=0D + ls /dev/dsa #check wq configure, reset if exist=0D + # ./usertools/dpdk-devbind.py -u 6a:01.0 6f:01.0 74:01.0 79:01.= 0=0D + # ./usertools/dpdk-devbind.py -b idxd 6a:01.0 6f:01.0 74:01.0 7= 9:01.0=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 0=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 2=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 4=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 6=0D + ls /dev/dsa #check wq configure success=0D +=0D +2. Launch vhost by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@wq0.0,lcore2@wq2.0,lcore2@wq4.1= ,lcore2@wq6.1]=0D +=0D +3. Launch virtio-user1 by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 --n= o-pci --file-prefix=3Dvirtio1 \=0D + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost-net1,que= ues=3D2,server=3D1,packed_vq=3D1,mrg_rxbuf=3D0,in_order=3D1,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set fwd rxonly=0D + testpmd>start=0D +=0D +4. Attach pdump secondary process to primary process of virtio-user1 by sa= me file-prefix::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix= =3Dvirtio1 -- --pdump 'device_id=3Dnet_virtio_user1,queue=3D0,rx-dev=3D/tmp= /pdump-virtio-rx.pcap,mbuf-size=3D8000'=0D +=0D +5. Launch virtio-user0 and send packets::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --n= o-pci --file-prefix=3Dvirtio \=0D + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost-net0,que= ues=3D2,server=3D1,packed_vq=3D1,mrg_rxbuf=3D0,in_order=3D1,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,128,256,512=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 1=0D +=0D +6. Start vhost testpmd, quit pdump and check virtio-user1 RX-packets is 56= 6 and RX-bytes is 486016 and 502 packets with 960 length and 64 packets wit= h 64 length in pdump-virtio-rx.pcap.=0D +=0D +7. Clear virtio-user1 port stats::=0D +=0D + testpmd>stop=0D + testpmd>clear port stats all=0D + testpmd>start=0D +=0D +8. Quit and relaunch vhost with diff channel by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@wq0.5,lcore2@wq2.6,lcore2@wq4.5= ,lcore2@wq6.6]=0D +=0D +9. Rerun step 4.=0D +=0D +10. virtio-user0 send packets::=0D +=0D + testpmd>stop=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,128,256,512=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 1=0D +=0D +11. Rerun step 6.=0D +=0D +Test Case 16: VM2VM vhost-user/virtio-user packed ring mergeable path and = multi-queues payload check with dsa kernel driver=0D +--------------------------------------------------------------------------= ---------------------------------------------------=0D +This case uses testpmd to test the payload is valid after packets forwardi= ng in vhost-user/virtio-user packed ring =0D +mergeable path and multi-queues when vhost uses the asynchronous enqueue o= perations with dsa kernel driver.=0D +=0D +1. bind 2 dsa device to idxd::=0D +=0D + ls /dev/dsa #check wq configure, reset if exist=0D + # ./usertools/dpdk-devbind.py -u 6a:01.0 6f:01.0=0D + # ./usertools/dpdk-devbind.py -b idxd 6a:01.0 6f:01.0=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 0=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 2=0D + ls /dev/dsa #check wq configure success=0D +=0D +2. Launch vhost by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@wq0.0,lcore2@wq0.1,lcore2@wq0.2= ,lcore2@wq2.3,lcore2@wq2.4]=0D +=0D +3. Launch virtio-user1 by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 \=0D + --no-pci --file-prefix=3Dvirtio1 \=0D + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost-net1,que= ues=3D2,server=3D1,packed_vq=3D1,mrg_rxbuf=3D1,in_order=3D0,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set fwd rxonly=0D + testpmd>start=0D +=0D +4. Attach pdump secondary process to primary process of virtio-user1 by sa= me file-prefix::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix= =3Dvirtio1 -- --pdump 'device_id=3Dnet_virtio_user1,queue=3D0,rx-dev=3D/tmp= /pdump-virtio-rx.pcap,mbuf-size=3D8000'=0D +=0D +5. Launch virtio-user0 and send packets::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --n= o-pci --file-prefix=3Dvirtio \=0D + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost-net0,que= ues=3D2,server=3D1,packed_vq=3D1,mrg_rxbuf=3D1,in_order=3D0,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,256,2000,64,256,2000=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D +=0D +6. Start vhost testpmd, quit pdump and check virtio-user1 check 502 packe= ts and 279232 bytes and 54 packets with 4640 length and 448 packets with 64= length in pdump-virtio-rx.pcap.=0D +=0D +7. Clear virtio-user1 port stats::=0D +=0D + testpmd>stop=0D + testpmd>clear port stats all=0D + testpmd>start=0D +=0D +8. Quit and relaunch vhost with diff channel by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@wq0.6,lcore2@wq0.7,lcore2@wq2.3= ,lcore2@wq2.4,lcore2@wq2.5]=0D +=0D +9. Rerun step 4.=0D +=0D +10. Virtio-user0 send packets::=0D +=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,256,2000,64,256,2000=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D +=0D +11. Rerun step 6.=0D +=0D +Test Case 17: VM2VM vhost-user/virtio-user packed ring inorder mergeable p= ath and multi-queues payload check with dsa kernel driver=0D +--------------------------------------------------------------------------= ----------------------------------------------------------=0D +This case uses testpmd to test the payload is valid after packets forwardi= ng in vhost-user/virtio-user packed ring inorder=0D +mergeable path and multi-queues when vhost uses the asynchronous enqueue o= perations with dsa kernel driver.=0D +=0D +1. bind 8 dsa device to idxd like common step 2::=0D +=0D + ls /dev/dsa #check wq configure, reset if exist=0D + # ./usertools/dpdk-devbind.py -u 6a:01.0 6f:01.0 74:01.0 79:01.= 0 e7:01.0 ec:01.0 f1:01.0 f6:01.0=0D + # ./usertools/dpdk-devbind.py -b idxd 6a:01.0 6f:01.0 74:01.0 7= 9:01.0 e7:01.0 ec:01.0 f1:01.0 f6:01.0=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 0=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 2=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 4=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 6=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 8=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 10=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 12=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 14=0D + ls /dev/dsa #check wq configure success=0D +=0D +2. Launch vhost by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@wq0.0,lcore2@wq2.1,lcore2@wq4.2= ,lcore2@wq6.3,lcore2@wq8.4,lcore2@wq10.5,lcore2@wq12.6,lcore2@wq14.7]=0D +=0D +3. Launch virtio-user1 by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 --n= o-pci --file-prefix=3Dvirtio1 \=0D + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost-net1,que= ues=3D2,server=3D1,packed_vq=3D1,mrg_rxbuf=3D1,in_order=3D1,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set fwd rxonly=0D + testpmd>start=0D +=0D +4. Attach pdump secondary process to primary process of virtio-user1 by sa= me file-prefix::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix= =3Dvirtio1 -- --pdump 'device_id=3Dnet_virtio_user1,queue=3D0,rx-dev=3D/tmp= /pdump-virtio-rx.pcap,mbuf-size=3D8000'=0D +=0D +5. Launch virtio-user0 and send packets::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --n= o-pci --file-prefix=3Dvirtio \=0D + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost-net0,que= ues=3D2,server=3D1,packed_vq=3D1,mrg_rxbuf=3D1,in_order=3D1,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,256,2000,64,256,2000=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D +=0D +6. Start vhost testpmd, quit pdump and check virtio-user1 RX-packets is 50= 2 packets and 279232 bytes and 54 packets with 4640 length and 448 packets = with 64 length in pdump-virtio-rx.pcap.=0D +=0D +7. Clear virtio-user1 port stats::=0D +=0D + testpmd>stop=0D + testpmd>clear port stats all=0D + testpmd>start=0D +=0D +8. Quit and relaunch vhost with diff channel by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@wq0.7,lcore2@wq2.6,lcore2@wq4.5= ,lcore2@wq6.4,lcore2@wq8.3,lcore2@wq10.2,lcore2@wq12.1,lcore2@wq14.0]=0D +=0D +9. Rerun step 4.=0D +=0D +10. virtio-user0 send packets::=0D +=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,256,2000,64,256,2000=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D +=0D +11. Rerun step 6.=0D +=0D +Test Case 18: VM2VM vhost-user/virtio-user packed ring vectorized-tx path = and multi-queues indirect descriptor with dsa kernel driver=0D +--------------------------------------------------------------------------= -----------------------------------------------------------=0D +This case uses testpmd to test the payload is valid and indirect descripto= r after packets forwarding in vhost-user/virtio-user=0D +packed ring vectorized-tx path and multi-queues when vhost uses the asynch= ronous enqueue operations with dsa kernel driver.=0D +=0D +1. bind 4 dsa device to idxd like common step 2::=0D +=0D + ls /dev/dsa #check wq configure, reset if exist=0D + # ./usertools/dpdk-devbind.py -u 6a:01.0 6f:01.0 74:01.0 79:01.= 0=0D + # ./usertools/dpdk-devbind.py -b idxd 6a:01.0 6f:01.0 74:01.0 7= 9:01.0=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 0=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 2=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 4=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 6=0D + ls /dev/dsa #check wq configure success=0D +=0D +2. Launch vhost by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 10-18 -n 4 \= =0D + --vdev 'eth_vhost0,iface=3Dvhost-net,queues=3D2,client=3D1,dmas=3D[txq0;t= xq1],dma_ring_size=3D2048' --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2= ,client=3D1,dmas=3D[txq0;txq1],dma_ring_size=3D2048' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D256 --rxd=3D= 256 --no-flush-rx \=0D + --lcore-dma=3D[lcore11@wq0.0,lcore11@wq2.1,lcore11@wq4.2,lcore11@wq6.3]=0D +=0D +3. Launch virtio-user1 by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 --n= o-pci --file-prefix=3Dvirtio1 --force-max-simd-bitwidth=3D512 \=0D + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost-net1,que= ues=3D2,server=3D1,packed_vq=3D1,mrg_rxbuf=3D1,in_order=3D1,vectorized=3D1,= queue_size=3D256 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D256 --rxd=3D256=0D + testpmd>set fwd rxonly=0D + testpmd>start=0D +=0D +4. Attach pdump secondary process to primary process by same file-prefix::= =0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix= =3Dvirtio1 -- --pdump 'device_id=3Dnet_virtio_user1,queue=3D*,rx-dev=3D./pd= ump-virtio-rx.pcap,mbuf-size=3D8000'=0D +=0D +5. Launch virtio-user0 and send 8k length packets::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --f= orce-max-simd-bitwidth=3D512 --no-pci --file-prefix=3Dvirtio \=0D + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost-net,queu= es=3D2,server=3D1,packed_vq=3D1,mrg_rxbuf=3D1,in_order=3D1,vectorized=3D1,q= ueue_size=3D256 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D256 --rxd=3D256=0D +=0D + testpmd>set burst 1=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D + testpmd>set txpkts 2000,2000,2000,2000=0D + testpmd>start tx_first 1=0D + testpmd>stop=0D +=0D +6. Start vhost, then quit pdump and three testpmd, about packed virtqueue = vectorized-tx path, it use the indirect descriptors, the 8k length pkt will= just occupies one ring.=0D +So check 512 packets and 112128 bytes received by virtio-user1 and 502 pac= kets with 64 length and 10 packets with 8K length in pdump-virtio-rx.pcap.= =0D +=0D +Test Case 19: VM2VM vhost-user/virtio-user packed ring inorder mergeable p= ath and multi-queues payload check with dsa dpdk and kernel driver=0D +--------------------------------------------------------------------------= -------------------------------------------------------------------=0D +This case uses testpmd to test the payload is valid after packets forwardi= ng in vhost-user/virtio-user packed ring inorder=0D +mergeable path and multi-queues when vhost uses the asynchronous enqueue o= perations with dsa dpdk and kernel driver.=0D +=0D +1. bind 2 dsa device to vfio-pci and 2 dsa port to idxd like common step 1= -2::=0D +=0D + ls /dev/dsa #check wq configure, reset if exist=0D + # ./usertools/dpdk-devbind.py -u 6a:01.0 6f:01.0 e7:01.0 ec:01.= 0=0D + # ./usertools/dpdk-devbind.py -b idxd 6a:01.0 6f:01.0=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 0=0D + # ./drivers/dma/idxd/dpdk_idxd_cfg.py -q 8 2=0D + ls /dev/dsa #check wq configure success=0D + # ./usertools/dpdk-devbind.py -b vfio-pci e7:01.0 ec:01.0=0D +=0D +2. Launch vhost by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 -a = 0000:e7:01.0 -a 0000:ec:01.0 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@0000:e7:01.0-q0,lcore2@0000:ec:= 01.0-q1,lcore2@wq0.0,lcore2@wq2.0]=0D +=0D +3. Launch virtio-user1 by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 --n= o-pci --file-prefix=3Dvirtio1 \=0D + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost-net1,que= ues=3D2,server=3D1,packed_vq=3D1,mrg_rxbuf=3D1,in_order=3D1,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set fwd rxonly=0D + testpmd>start=0D +=0D +4. Attach pdump secondary process to primary process of virtio-user1 by sa= me file-prefix::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix= =3Dvirtio1 -- --pdump 'device_id=3Dnet_virtio_user1,queue=3D0,rx-dev=3D/tmp= /dsa-va-rx.pcap,mbuf-size=3D8000'=0D +=0D +5. Launch virtio-user0 and send packets::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --n= o-pci --file-prefix=3Dvirtio \=0D + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost-net0,que= ues=3D2,server=3D1,packed_vq=3D1,mrg_rxbuf=3D1,in_order=3D1,queue_size=3D40= 96 \=0D + -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd=3D4096=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,256,2000,64,256,2000=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D +=0D +6. Start vhost testpmd, quit pdump and check virtio-user1 RX-packets is 50= 2 packets and 279232 bytes and 54 packets with 4640 length and 448 packets = with 64 length in pdump-virtio-rx.pcap.=0D +=0D +7. Clear virtio-user1 port stats::=0D +=0D + testpmd>stop=0D + testpmd>clear port stats all=0D + testpmd>start=0D +=0D +8. Quit and relaunch vhost with diff dsa channel by below command::=0D +=0D + # ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \=0D + --vdev 'eth_vhost0,iface=3Dvhost-net0,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D2,client=3D1,dmas=3D[txq0;= txq1]' \=0D + --iova=3Dva -- -i --nb-cores=3D1 --rxq=3D2 --txq=3D2 --txd=3D4096 --rxd= =3D4096 --no-flush-rx --lcore-dma=3D[lcore2@0000:e7:01.0-q2,lcore2@0000:e7:= 01.0-q5,lcore2@0000:ec:01.0-q4,lcore2@wq0.1,lcore2@wq0.3]=0D +=0D +9. Rerun step 4.=0D +=0D +10. Virtio-user0 send packets::=0D +=0D + testpmd>set burst 1=0D + testpmd>set txpkts 64,256,2000,64,256,2000=0D + testpmd>start tx_first 27=0D + testpmd>stop=0D + testpmd>set burst 32=0D + testpmd>set txpkts 64=0D + testpmd>start tx_first 7=0D + testpmd>stop=0D +=0D +11. Rerun step 6.=0D --=20 2.25.1