diff mbox series

[V1,1/2] test_plans/vm2vm_virtio_user: modify test plan to coverage more test point

Message ID 20220210061309.3928461-1-linglix.chen@intel.com (mailing list archive)
State Superseded
Headers show
Series [V1,1/2] test_plans/vm2vm_virtio_user: modify test plan to coverage more test point | expand

Commit Message

Lingli Chen Feb. 10, 2022, 6:13 a.m. UTC
1.To cover all paths, four cases related to split ring (test cases 14, 15, 16, 17) and four cases related to packed ring (test cases 20, 21, 22, 23) are added.
2.Cbdma related cases(case 12, 13, 18, 19), the iova = PA step is added.
3.Case 24: to test the indirect feature when choose packed vectorized-tx path, and we have no relevant cases before.

Signed-off-by: Lingli Chen <linglix.chen@intel.com>
---
 test_plans/vm2vm_virtio_user_test_plan.rst | 731 ++++++++++++++++++++-
 1 file changed, 701 insertions(+), 30 deletions(-)
diff mbox series

Patch

diff --git a/test_plans/vm2vm_virtio_user_test_plan.rst b/test_plans/vm2vm_virtio_user_test_plan.rst
index f35cd831..c51d4ced 100644
--- a/test_plans/vm2vm_virtio_user_test_plan.rst
+++ b/test_plans/vm2vm_virtio_user_test_plan.rst
@@ -41,6 +41,8 @@  This test plan test several features in VM2VM topo:
 1. Split virtqueue vm2vm in-order mergeable, in-order non-mergeable, mergeable, non-mergeable, vector_rx path test.
 2. Packed virtqueue vm2vm in-order mergeable, in-order non-mergeable, mergeable, non-mergeable, vectorized path (ringsize not powerof 2) test.
 3. Split ring and packed ring vm2vm test when vhost enqueue operation with multi-CBDMA channels.
+4. Test indirect descriptor feature. For example, the split ring mergeable inorder path use non-indirect descriptor, the 2000,2000,2000,2000 chain packets will need 4 consequent ring, still need one ring put header.
+the split ring mergeable path use indirect descriptor, the 2000,2000,2000,2000 chain packets will only occupy one ring.
 
 Test flow
 =========
@@ -270,7 +272,7 @@  Test Case 4: packed virtqueue vm2vm inorder non-mergeable path test
 
     ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 \
     --no-pci --file-prefix=virtio1 \
-    --vdev=net_virtio_user1,mac=00:01:02:03:04:05,path=./vhost-net1,queues=1,packed_vq=1,mrg_rxbuf=0,in_order=1,packed_vec=1 \
+    --vdev=net_virtio_user1,mac=00:01:02:03:04:05,path=./vhost-net1,queues=1,packed_vq=1,mrg_rxbuf=0,in_order=1,vectorized=1 \
     -- -i --rx-offloads=0x10 --nb-cores=1 --txd=256 --rxd=256
     testpmd>set fwd rxonly
     testpmd>start
@@ -792,13 +794,13 @@  Test Case 11: packed virtqueue vm2vm vectorized path test with ring size is not
 9. Quit pdump,vhost received packets in pdump-vhost-rx.pcap,check headers and payload of all packets in pdump-virtio-rx.pcap and pdump-vhost-rx.pcap and ensure the content are same.
 
 Test Case 12: split virtqueue vm2vm non-mergeable path multi-queues payload check with cbdma enabled
-========================================================================================================
+====================================================================================================
 
-1. Launch vhost by below command::
+1. bind 4 cbdma port to vfio-pci and launch vhost by below command::
 
     ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
-    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@80:04.0;txq1@80:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@80:04.2;txq1@80:04.3]' -- \
-    -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:80:04.0;txq1@0000:80:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:80:04.2;txq1@0000:80:04.3]' \
+    --iova=va -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
     testpmd>vhost enable tx all
 
 2. Launch virtio-user1 by below command::
@@ -806,16 +808,46 @@  Test Case 12: split virtqueue vm2vm non-mergeable path multi-queues payload chec
     ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 \
     --no-pci --file-prefix=virtio1 \
     --vdev=net_virtio_user1,mac=00:01:02:03:04:05,path=./vhost-net1,queues=2,server=1,packed_vq=0,mrg_rxbuf=0,in_order=0,queue_size=4096 \
-    -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096
+    -- -i --enable-hw-vlan-strip --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096
     testpmd>set fwd rxonly
     testpmd>start
 
-3. Launch virtio-user0 and send packets::
+3. Attach pdump secondary process to primary process by same file-prefix::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=virtio1 -- --pdump 'device_id=net_virtio_user1,queue=*,rx-dev=./pdump-virtio-rx.pcap,mbuf-size=8000'
+
+4. Launch virtio-user0 and send packets::
 
     ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 \
     --no-pci --file-prefix=virtio \
     --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,queues=2,server=1,packed_vq=0,mrg_rxbuf=0,in_order=0,queue_size=4096 \
-    -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096
+    -- -i --enable-hw-vlan-strip --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096
+    testpmd>set burst 1
+    testpmd>set txpkts 64,128,256,512
+    testpmd>start tx_first 27
+    testpmd>stop
+    testpmd>set burst 32
+    testpmd>start tx_first 7
+    testpmd>stop
+    testpmd>set txpkts 64
+    testpmd>start tx_first 1
+    testpmd>stop
+
+5. Start vhost testpmd, check virtio-user1 RX-packets is 566 and RX-bytes is 486016, 502 packets with 960 length and 64 packets with 64 length in pdump-virtio-rx.pcap.
+
+6. Quit and relaunch vhost with iova=pa by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:80:04.0;txq1@0000:80:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:80:04.2;txq1@0000:80:04.3]' \
+    --iova=pa -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
+    testpmd>vhost enable tx all
+
+7. Attach pdump secondary process to primary process by same file-prefix::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=virtio1 -- --pdump 'device_id=net_virtio_user1,queue=*,rx-dev=./pdump-virtio-rx.pcap,mbuf-size=8000'
+
+8. Virtio-user0 send packets::
+
     testpmd>set burst 1
     testpmd>set txpkts 64,128,256,512
     testpmd>start tx_first 27
@@ -825,8 +857,13 @@  Test Case 12: split virtqueue vm2vm non-mergeable path multi-queues payload chec
     testpmd>stop
     testpmd>set txpkts 64
     testpmd>start tx_first 1
+    testpmd>stop
+
+9. Clear virtio-user1 port stats::
+
+    testpmd>clear port stats all
 
-4. Start vhost testpmd, check virtio-user1 RX-packets is 566 and RX-bytes is 486016.
+10. Rerun step 5.
 
 Test Case 13: split virtqueue vm2vm mergeable path multi-queues payload check with cbdma enabled
 ================================================================================================
@@ -834,8 +871,8 @@  Test Case 13: split virtqueue vm2vm mergeable path multi-queues payload check wi
 1. Launch vhost by below command::
 
     ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
-    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@00:04.0;txq1@00:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@00:04.2;txq1@00:04.3]' -- \
-    -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:00:04.0;txq1@0000:00:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:00:04.2;txq1@0000:00:04.3]' \
+    --iova=va -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
     testpmd>vhost enable tx all
 
 2. Launch virtio-user1 by below command::
@@ -851,7 +888,7 @@  Test Case 13: split virtqueue vm2vm mergeable path multi-queues payload check wi
 
     ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=virtio1 -- --pdump 'device_id=net_virtio_user1,queue=*,rx-dev=./pdump-virtio-rx.pcap,mbuf-size=8000'
 
-4. Launch virtio-user0 and send 8k length packets::
+4. Launch virtio-user0 and send packets::
 
     ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 \
     --no-pci --file-prefix=virtio \
@@ -864,61 +901,289 @@  Test Case 13: split virtqueue vm2vm mergeable path multi-queues payload check wi
     testpmd>set burst 32
     testpmd>set txpkts 64
     testpmd>start tx_first 7
+    testpmd>stop
 
-5. Start vhost testpmd, check 502 packets received by virtio-user1 and 54 packets with 4640 length and 448 packets with 64 length in pdump-virtio-rx.pcap.
+5. Start vhost testpmd, check 502 packets and 279232 bytes received by virtio-user1 and 54 packets with 4640 length and 448 packets with 64 length in pdump-virtio-rx.pcap.
 
-Test Case 14: packed virtqueue vm2vm non-mergeable path multi-queues payload check with cbdma enabled
-=========================================================================================================
+6. Quit and relaunch vhost with iova=pa by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:00:04.0;txq1@0000:00:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:00:04.2;txq1@0000:00:04.3]' \
+    --iova=pa -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
+    testpmd>vhost enable tx all
+
+7. Attach pdump secondary process to primary process by same file-prefix::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=virtio1 -- --pdump 'device_id=net_virtio_user1,queue=*,rx-dev=./pdump-virtio-rx.pcap,mbuf-size=8000'
+
+8. Virtio-user0 send packets::
+
+    testpmd>set burst 1
+    testpmd>set txpkts 64,256,2000,64,256,2000
+    testpmd>start tx_first 27
+    testpmd>stop
+    testpmd>set burst 32
+    testpmd>set txpkts 64
+    testpmd>start tx_first 7
+    testpmd>stop
+
+9. Clear virtio-user1 port stats::
+
+    testpmd>clear port stats all
+
+10. Rerun step 5.
+
+Test Case 14: split virtqueue vm2vm inorder non-mergeable path multi-queues payload check with cbdma enabled
+============================================================================================================
 
 1. Launch vhost by below command::
 
     ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
-    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@80:04.0;txq1@80:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@80:04.2;txq1@80:04.3]' -- \
-    -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:00:04.0;txq1@0000:00:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:00:04.2;txq1@0000:00:04.3]' \
+    --iova=va -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
     testpmd>vhost enable tx all
 
 2. Launch virtio-user1 by below command::
 
     ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 \
     --no-pci --file-prefix=virtio1 \
-    --vdev=net_virtio_user1,mac=00:01:02:03:04:05,path=./vhost-net1,queues=2,server=1,packed_vq=1,mrg_rxbuf=0,in_order=0,queue_size=4096 \
+    --vdev=net_virtio_user1,mac=00:01:02:03:04:05,path=./vhost-net1,queues=2,server=1,packed_vq=0,mrg_rxbuf=0,in_order=1,queue_size=4096 \
     -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096
     testpmd>set fwd rxonly
     testpmd>start
 
-3. Launch virtio-user0 and send packets::
+3. Attach pdump secondary process to primary process by same file-prefix::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=virtio1 -- --pdump 'device_id=net_virtio_user1,queue=*,rx-dev=./pdump-virtio-rx.pcap,mbuf-size=8000'
+
+4. Launch virtio-user0 and send packets::
 
     ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 \
     --no-pci --file-prefix=virtio \
-    --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,queues=2,server=1,packed_vq=1,mrg_rxbuf=0,in_order=0,queue_size=4096 \
+    --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,queues=2,server=1,packed_vq=0,mrg_rxbuf=0,in_order=1,queue_size=4096 \
     -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096
     testpmd>set burst 1
-    testpmd>set txpkts 64,128,256,512
+    testpmd>set txpkts 64,256,2000,64,256,2000
     testpmd>start tx_first 27
     testpmd>stop
     testpmd>set burst 32
+    testpmd>set txpkts 64
+    testpmd>start tx_first 7
+    testpmd>stop
+
+5. Start vhost testpmd, check 448 packets and 28672 bytes received by virtio-user1 and 448 packets with 64 length in pdump-virtio-rx.pcap.
+
+6. Quit and relaunch vhost with iova=pa by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:00:04.0;txq1@0000:00:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:00:04.2;txq1@0000:00:04.3]' \
+    --iova=pa -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
+    testpmd>vhost enable tx all
+
+7. Attach pdump secondary process to primary process by same file-prefix::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=virtio1 -- --pdump 'device_id=net_virtio_user1,queue=*,rx-dev=./pdump-virtio-rx.pcap,mbuf-size=8000'
+
+8. Virtio-user0 send packets::
+
+    testpmd>set burst 1
+    testpmd>set txpkts 64,256,2000,64,256,2000
+    testpmd>start tx_first 27
+    testpmd>stop
+    testpmd>set burst 32
+    testpmd>set txpkts 64
+    testpmd>start tx_first 7
+    testpmd>stop
+
+9. Clear virtio-user1 port stats::
+
+    testpmd>clear port stats all
+
+10. Rerun step 5.
+
+Test Case 15: split virtqueue vm2vm vectorized path multi-queues payload check with cbdma enabled
+==================================================================================================
+
+1. Launch vhost by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:00:04.0;txq1@0000:00:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:00:04.2;txq1@0000:00:04.3]' \
+    --iova=va -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
+    testpmd>vhost enable tx all
+
+2. Launch virtio-user1 by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 --no-pci --file-prefix=virtio1 \
+    --vdev=net_virtio_user1,mac=00:01:02:03:04:05,path=./vhost-net1,queues=2,server=1,mrg_rxbuf=0,in_order=0,vectorized=1,queue_size=4096 \
+    -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096
+    testpmd>set fwd rxonly
+    testpmd>start
+
+3. Attach pdump secondary process to primary process by same file-prefix::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=virtio1 -- --pdump 'device_id=net_virtio_user1,queue=*,rx-dev=./pdump-virtio-rx.pcap,mbuf-size=8000'
+
+4. Launch virtio-user0 and send packets::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --no-pci --file-prefix=virtio \
+    --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,queues=2,server=1,packed_vq=0,mrg_rxbuf=0,in_order=0,queue_size=4096 \
+    -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096
+    testpmd>set burst 32
+    testpmd>set txpkts 64
     testpmd>start tx_first 7
     testpmd>stop
+    testpmd>set burst 1
+    testpmd>set txpkts 64,256,2000,64,256,2000
+    testpmd>start tx_first 27
+    testpmd>stop
+
+5. Start vhost testpmd, check 448 packets and 28672 bytes received by virtio-user1 and 448 packets with 64 length in pdump-virtio-rx.pcap.
+
+6. Quit and relaunch vhost with iova=pa by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:00:04.0;txq1@0000:00:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:00:04.2;txq1@0000:00:04.3]' \
+    --iova=pa -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
+    testpmd>vhost enable tx all
+
+7. Attach pdump secondary process to primary process by same file-prefix::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=virtio1 -- --pdump 'device_id=net_virtio_user1,queue=*,rx-dev=./pdump-virtio-rx.pcap,mbuf-size=8000'
+
+8. Virtio-user0 send packets::
+
+    testpmd>set burst 32
     testpmd>set txpkts 64
+    testpmd>start tx_first 7
+    testpmd>stop
+    testpmd>set burst 1
+    testpmd>set txpkts 64,256,2000,64,256,2000
+    testpmd>start tx_first 27
+    testpmd>stop
+
+9. Clear virtio-user1 port stats::
+
+    testpmd>clear port stats all
+
+10. Rerun step 5.
+
+Test Case 16: Split virtqueue vm2vm inorder mergeable path test non-indirect descriptor with cbdma enable
+=========================================================================================================
+
+1. Launch testpmd by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:00:04.0;txq1@0000:00:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:00:04.2;txq1@0000:00:04.3]' \
+    --iova=va -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=256 --rxd=256 --no-flush-rx
+    testpmd>vhost enable tx all
+
+2. Launch virtio-user1 by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 \
+    --no-pci --file-prefix=virtio1 \
+    --vdev=net_virtio_user1,mac=00:01:02:03:04:05,path=./vhost-net1,queues=2,server=1,packed_vq=0,mrg_rxbuf=1,in_order=1,queue_size=256 \
+    -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=256 --rxd=256
+    testpmd>set fwd rxonly
+    testpmd>start
+
+3. Attach pdump secondary process to primary process by same file-prefix::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=virtio1 -- --pdump 'device_id=net_virtio_user1,queue=*,rx-dev=./pdump-virtio-rx.pcap,mbuf-size=8000'
+
+4. Launch virtio-user0 and send packets(include 251 small packets and 32 8K packets)::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 \
+    --no-pci --file-prefix=virtio \
+    --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,queues=2,server=1,packed_vq=0,mrg_rxbuf=1,in_order=1,queue_size=256 \
+    -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=256 --rxd=256
+    testpmd>set burst 1
+    testpmd>start tx_first 27
+    testpmd>stop
+    testpmd>set burst 32
+    testpmd>start tx_first 7
+    testpmd>stop
+    testpmd>set txpkts 2000,2000,2000,2000
     testpmd>start tx_first 1
+    testpmd>stop
 
-4. Start vhost testpmd, check virtio-user1 RX-packets is 566 and RX-bytes is 486016.
+5. Start vhost, then quit pdump and three testpmd, about split virtqueue inorder mergeable path, it use the non-indirect descriptors, the 8k length pkt will occupies 5 ring:2000,2000,2000,2000 will need 4 consequent ring,
+still need one ring put header. So check 504 packets and 48128 bytes received by virtio-user1 and 502 packets with 64 length and 2 packets with 8K length in pdump-virtio-rx.pcap.
 
-Test Case 15: packed virtqueue vm2vm mergeable path multi-queues payload check with cbdma enabled
-=================================================================================================
+6. Relaunch vhost with iova=pa by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:00:04.0;txq1@0000:00:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:00:04.2;txq1@0000:00:04.3]' \
+    --iova=pa -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=256 --rxd=256 --no-flush-rx
+    testpmd>vhost enable tx all
+
+7. Rerun step 2-5.
+
+Test Case 17: Split virtqueue vm2vm mergeable path test indirect descriptor with cbdma enable
+=============================================================================================
+
+1. Launch testpmd by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:00:04.0;txq1@0000:00:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:00:04.2;txq1@0000:00:04.3]' \
+    --iova=va -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=256 --rxd=256 --no-flush-rx
+    testpmd>vhost enable tx all
+
+2. Launch virtio-user1 by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 \
+    --no-pci --file-prefix=virtio1 \
+    --vdev=net_virtio_user1,mac=00:01:02:03:04:05,path=./vhost-net1,queues=2,server=1,packed_vq=0,mrg_rxbuf=1,in_order=0,queue_size=256 \
+    -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=256 --rxd=256
+    testpmd>set fwd rxonly
+    testpmd>start
+
+3. Attach pdump secondary process to primary process by same file-prefix::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=virtio1 -- --pdump 'device_id=net_virtio_user1,queue=*,rx-dev=./pdump-virtio-rx.pcap,mbuf-size=8000'
+
+4. Launch virtio-user0 and send packets(include 251 small packets and 32 8K packets)::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 \
+    --no-pci --file-prefix=virtio \
+    --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,queues=2,server=1,packed_vq=0,mrg_rxbuf=1,in_order=0,queue_size=256 \
+    -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=256 --rxd=256
+    testpmd>set burst 1
+    testpmd>start tx_first 27
+    testpmd>stop
+    testpmd>set burst 32
+    testpmd>start tx_first 7
+    testpmd>stop
+    testpmd>set txpkts 2000,2000,2000,2000
+    testpmd>start tx_first 1
+    testpmd>stop
+
+5. Start vhost, then quit pdump and three testpmd, about split virtqueue mergeable path, it use the indirect descriptors, the 8k length pkt will just occupies one ring.
+So check 512 packets and 112128 bytes received by virtio-user1 and 502 packets with 64 length and 10 packets with 8K length in pdump-virtio-rx.pcap.
+
+6. Relaunch vhost with iova=pa by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:00:04.0;txq1@0000:00:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:00:04.2;txq1@0000:00:04.3]' \
+    --iova=pa -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=256 --rxd=256 --no-flush-rx
+    testpmd>vhost enable tx all
+
+7. Rerun step 2-5.
+
+Test Case 18: packed virtqueue vm2vm non-mergeable path multi-queues payload check with cbdma enabled
+=====================================================================================================
 
 1. Launch vhost by below command::
 
     ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
-    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@00:04.0;txq1@00:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@00:04.2;txq1@00:04.3]' -- \
-    -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:80:04.0;txq1@0000:80:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:80:04.2;txq1@0000:80:04.3]' \
+    --iova=va -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
     testpmd>vhost enable tx all
 
 2. Launch virtio-user1 by below command::
 
     ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 \
     --no-pci --file-prefix=virtio1 \
-    --vdev=net_virtio_user1,mac=00:01:02:03:04:05,path=./vhost-net1,queues=2,server=1,packed_vq=1,mrg_rxbuf=1,in_order=0,queue_size=4096 \
+    --vdev=net_virtio_user1,mac=00:01:02:03:04:05,path=./vhost-net1,queues=2,server=1,packed_vq=1,mrg_rxbuf=0,in_order=0,queue_size=4096 \
     -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096
     testpmd>set fwd rxonly
     testpmd>start
@@ -927,18 +1192,424 @@  Test Case 15: packed virtqueue vm2vm mergeable path multi-queues payload check w
 
     ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=virtio1 -- --pdump 'device_id=net_virtio_user1,queue=*,rx-dev=./pdump-virtio-rx.pcap,mbuf-size=8000'
 
-4. Launch virtio-user0 and send 8k length packets::
+4. Launch virtio-user0 and send packets::
 
     ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 \
     --no-pci --file-prefix=virtio \
-    --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,queues=2,server=1,packed_vq=1,mrg_rxbuf=1,in_order=0,queue_size=4096 \
+    --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,queues=2,server=1,packed_vq=1,mrg_rxbuf=0,in_order=0,queue_size=4096 \
     -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096
+    testpmd>set burst 32
+    testpmd>set txpkts 64
+    testpmd>start tx_first 7
+    testpmd>stop
     testpmd>set burst 1
     testpmd>set txpkts 64,256,2000,64,256,2000
     testpmd>start tx_first 27
     testpmd>stop
+
+5. Start vhost testpmd, check virtio-user1 RX-packets is 448 and RX-bytes is 28672, 448 packets with 64 length in pdump-virtio-rx.pcap.
+
+6. Quit and relaunch vhost with iova=pa by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:80:04.0;txq1@0000:80:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:80:04.2;txq1@0000:80:04.3]' \
+    --iova=pa -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
+    testpmd>vhost enable tx all
+
+7. Attach pdump secondary process to primary process by same file-prefix::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=virtio1 -- --pdump 'device_id=net_virtio_user1,queue=*,rx-dev=./pdump-virtio-rx.pcap,mbuf-size=8000'
+
+8. Virtio-user0 send packets::
+
     testpmd>set burst 32
     testpmd>set txpkts 64
     testpmd>start tx_first 7
+    testpmd>stop
+    testpmd>set burst 1
+    testpmd>set txpkts 64,256,2000,64,256,2000
+    testpmd>start tx_first 27
+    testpmd>stop
+
+9. Clear virtio-user1 port stats::
+
+    testpmd>clear port stats all
+
+10. Rerun step 5.
+
+Test Case 19: packed virtqueue vm2vm mergeable path multi-queues payload check with cbdma enabled
+=================================================================================================
+
+1. Launch vhost by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:00:04.0;txq1@0000:00:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:00:04.2;txq1@0000:00:04.3]' \
+    --iova=va -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
+    testpmd>vhost enable tx all
+
+2. Launch virtio-user1 by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 \
+    --no-pci --file-prefix=virtio1 \
+    --vdev=net_virtio_user1,mac=00:01:02:03:04:05,path=./vhost-net1,queues=2,server=1,packed_vq=1,mrg_rxbuf=1,in_order=0,queue_size=4096 \
+    -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096
+    testpmd>set fwd rxonly
+    testpmd>start
+
+3. Attach pdump secondary process to primary process by same file-prefix::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=virtio1 -- --pdump 'device_id=net_virtio_user1,queue=*,rx-dev=./pdump-virtio-rx.pcap,mbuf-size=8000'
+
+4. Launch virtio-user0 and send packets::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 \
+    --no-pci --file-prefix=virtio \
+    --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,queues=2,server=1,packed_vq=1,mrg_rxbuf=1,in_order=0,queue_size=4096 \
+    -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096
+    testpmd>set burst 1
+    testpmd>set txpkts 64,256,2000,64,256,2000
+    testpmd>start tx_first 27
+    testpmd>stop
+    testpmd>set burst 32
+    testpmd>set txpkts 64
+    testpmd>start tx_first 7
+    testpmd>stop
+
+5. Start vhost testpmd, then quit pdump, check 502 packets and 279232 bytes received by virtio-user1 and 54 packets with 4640 length and 448 packets with 64 length in pdump-virtio-rx.pcap.
+
+6. Quit and relaunch vhost with iova=pa by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:00:04.0;txq1@0000:00:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:00:04.2;txq1@0000:00:04.3]' \
+    --iova=pa -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
+    testpmd>vhost enable tx all
+
+7. Attach pdump secondary process to primary process by same file-prefix::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=virtio1 -- --pdump 'device_id=net_virtio_user1,queue=*,rx-dev=./pdump-virtio-rx.pcap,mbuf-size=8000'
+
+8. Virtio-user0 send packets::
+
+    testpmd>set burst 1
+    testpmd>set txpkts 64,256,2000,64,256,2000
+    testpmd>start tx_first 27
+    testpmd>stop
+    testpmd>set burst 32
+    testpmd>set txpkts 64
+    testpmd>start tx_first 7
+    testpmd>stop
+
+9. Clear virtio-user1 port stats::
+
+    testpmd>clear port stats all
+
+10. Rerun step 5.
+
+Test Case 20: packed virtqueue vm2vm inorder mergeable path multi-queues payload check with cbdma enabled
+=========================================================================================================
+
+1. Launch vhost by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:00:04.0;txq1@0000:00:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:00:04.2;txq1@0000:00:04.3]' \
+    --iova=va -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
+    testpmd>vhost enable tx all
+
+2. Launch virtio-user1 by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 \
+    --no-pci --file-prefix=virtio1 \
+    --vdev=net_virtio_user1,mac=00:01:02:03:04:05,path=./vhost-net1,queues=2,server=1,packed_vq=1,mrg_rxbuf=1,in_order=1,queue_size=4096 \
+    -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096
+    testpmd>set fwd rxonly
+    testpmd>start
+
+3. Attach pdump secondary process to primary process by same file-prefix::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=virtio1 -- --pdump 'device_id=net_virtio_user1,queue=*,rx-dev=./pdump-virtio-rx.pcap,mbuf-size=8000'
+
+4. Launch virtio-user0 and send packets::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 \
+    --no-pci --file-prefix=virtio \
+    --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,queues=2,server=1,packed_vq=1,mrg_rxbuf=1,in_order=1,queue_size=4096 \
+    -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096
+    testpmd>set burst 1
+    testpmd>set txpkts 64,256,2000,64,256,2000
+    testpmd>start tx_first 27
+    testpmd>stop
+    testpmd>set burst 32
+    testpmd>set txpkts 64
+    testpmd>start tx_first 7
+    testpmd>stop
+
+5. Start vhost testpmd, then quit pdump, check 502 packets and 279232 bytes received by virtio-user1 and 54 packets with 4640 length and 448 packets with 64 length in pdump-virtio-rx.pcap.
+
+6. Quit and relaunch vhost with iova=pa by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:00:04.0;txq1@0000:00:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:00:04.2;txq1@0000:00:04.3]' \
+    --iova=pa -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
+    testpmd>vhost enable tx all
+
+7. Attach pdump secondary process to primary process by same file-prefix::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=virtio1 -- --pdump 'device_id=net_virtio_user1,queue=*,rx-dev=./pdump-virtio-rx.pcap,mbuf-size=8000'
+
+8. Virtio-user0 send packets::
+
+    testpmd>set burst 1
+    testpmd>set txpkts 64,256,2000,64,256,2000
+    testpmd>start tx_first 27
+    testpmd>stop
+    testpmd>set burst 32
+    testpmd>set txpkts 64
+    testpmd>start tx_first 7
+    testpmd>stop
+
+9. Clear virtio-user1 port stats::
+
+    testpmd>clear port stats all
+
+10. Rerun step 5.
+
+Test Case 21: packed virtqueue vm2vm inorder non-mergeable path multi-queues payload check with cbdma enabled
+=============================================================================================================
+
+1. Launch vhost by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:00:04.0;txq1@0000:00:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:00:04.2;txq1@0000:00:04.3]' \
+    --iova=va -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
+    testpmd>vhost enable tx all
+
+2. Launch virtio-user1 by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 \
+    --no-pci --file-prefix=virtio1 \
+    --vdev=net_virtio_user1,mac=00:01:02:03:04:05,path=./vhost-net1,queues=2,server=1,packed_vq=1,mrg_rxbuf=0,in_order=1,queue_size=4096 \
+    -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096
+    testpmd>set fwd rxonly
+    testpmd>start
+
+3. Attach pdump secondary process to primary process by same file-prefix::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=virtio1 -- --pdump 'device_id=net_virtio_user1,queue=*,rx-dev=./pdump-virtio-rx.pcap,mbuf-size=8000'
+
+4. Launch virtio-user0 and send 8k length packets::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 \
+    --no-pci --file-prefix=virtio \
+    --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,queues=2,server=1,packed_vq=1,mrg_rxbuf=0,in_order=1,queue_size=4096 \
+    -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096
+
+    testpmd>set burst 32
+    testpmd>set txpkts 64
+    testpmd>start tx_first 7
+    testpmd>stop
+    testpmd>set burst 1
+    testpmd>set txpkts 64,256,2000,64,256,2000
+    testpmd>start tx_first 27
+    testpmd>stop
+
+5. Start vhost testpmd, then quit pdump, check 448 packets and 28672 bytes received by virtio-user1 and 448 packets with 64 length in pdump-virtio-rx.pcap.
+
+6. Quit and relaunch vhost with iova=pa by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:00:04.0;txq1@0000:00:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:00:04.2;txq1@0000:00:04.3]' \
+    --iova=pa -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
+    testpmd>vhost enable tx all
+
+7. Attach pdump secondary process to primary process by same file-prefix::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=virtio1 -- --pdump 'device_id=net_virtio_user1,queue=*,rx-dev=./pdump-virtio-rx.pcap,mbuf-size=8000'
+
+8. Virtio-user0 send packets::
+
+    testpmd>set burst 32
+    testpmd>set txpkts 64
+    testpmd>start tx_first 7
+    testpmd>stop
+    testpmd>set burst 1
+    testpmd>set txpkts 64,256,2000,64,256,2000
+    testpmd>start tx_first 27
+    testpmd>stop
+
+9. Clear virtio-user1 port stats::
+
+    testpmd>clear port stats all
+
+10. Rerun step 5.
+
+Test Case 22: packed virtqueue vm2vm vectorized path multi-queues payload check with cbdma enabled
+===================================================================================================
+
+1. Launch vhost by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:00:04.0;txq1@0000:00:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:00:04.2;txq1@0000:00:04.3]' \
+    --iova=va -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
+    testpmd>vhost enable tx all
+
+2. Launch virtio-user1 by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 --no-pci --file-prefix=virtio1 --force-max-simd-bitwidth=512 \
+    --vdev=net_virtio_user1,mac=00:01:02:03:04:05,path=./vhost-net1,queues=2,server=1,packed_vq=1,mrg_rxbuf=0,in_order=1,vectorized=1,queue_size=4096 \
+    -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096
+    testpmd>set fwd rxonly
+    testpmd>start
+
+3. Attach pdump secondary process to primary process by same file-prefix::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=virtio1 -- --pdump 'device_id=net_virtio_user1,queue=*,rx-dev=./pdump-virtio-rx.pcap,mbuf-size=8000'
+
+4. Launch virtio-user0 and send 8k length packets::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --force-max-simd-bitwidth=512 --no-pci --file-prefix=virtio \
+    --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,queues=2,server=1,packed_vq=1,mrg_rxbuf=0,in_order=1,vectorized=1,queue_size=4096 \
+    -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096
+    testpmd>set burst 32
+    testpmd>set txpkts 64
+    testpmd>start tx_first 7
+    testpmd>stop
+    testpmd>set burst 1
+    testpmd>set txpkts 64,256,2000,64,256,2000
+    testpmd>start tx_first 27
+    testpmd>stop
+
+5. Start vhost testpmd, then quit pdump, check 448 packets and 28672 bytes received by virtio-user1 and 448 packets with 64 length in pdump-virtio-rx.pcap.
+
+6. Quit and relaunch vhost with iova=pa by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:00:04.0;txq1@0000:00:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:00:04.2;txq1@0000:00:04.3]' \
+    --iova=pa -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
+    testpmd>vhost enable tx all
+
+7. Attach pdump secondary process to primary process by same file-prefix::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=virtio1 -- --pdump 'device_id=net_virtio_user1,queue=*,rx-dev=./pdump-virtio-rx.pcap,mbuf-size=8000'
+
+8. Virtio-user0 send packets::
+
+    testpmd>set burst 32
+    testpmd>set txpkts 64
+    testpmd>start tx_first 7
+    testpmd>stop
+    testpmd>set burst 1
+    testpmd>set txpkts 64,256,2000,64,256,2000
+    testpmd>start tx_first 27
+    testpmd>stop
+
+9. Clear virtio-user1 port stats::
+
+    testpmd>clear port stats all
+
+10. Rerun step 5.
+
+Test Case 23: packed virtqueue vm2vm vectorized path multi-queues payload check with ring size is not power of 2 and cbdma enabled
+==================================================================================================================================
+
+1. Launch vhost by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:00:04.0;txq1@0000:00:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:00:04.2;txq1@0000:00:04.3]' \
+    --iova=va -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
+    testpmd>vhost enable tx all
+
+2. Launch virtio-user1 by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 7-8 --force-max-simd-bitwidth=512  --no-pci --file-prefix=virtio1 \
+    --vdev=net_virtio_user1,mac=00:01:02:03:04:05,path=./vhost-net1,queues=2,server=1,packed_vq=1,mrg_rxbuf=0,in_order=1,vectorized=1,queue_size=4097 \
+    -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4097 --rxd=4097
+    testpmd>set fwd rxonly
+    testpmd>start
+
+3. Attach pdump secondary process to primary process by same file-prefix::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=virtio1 -- --pdump 'device_id=net_virtio_user1,queue=*,rx-dev=./pdump-virtio-rx.pcap,mbuf-size=8000'
+
+4. Launch virtio-user0 and send 8k length packets::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --force-max-simd-bitwidth=512 --no-pci --file-prefix=virtio \
+    --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,queues=2,server=1,packed_vq=1,mrg_rxbuf=0,in_order=1,vectorized=1,queue_size=4097 \
+    -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4097 --rxd=4097
+    testpmd>set burst 32
+    testpmd>set txpkts 64
+    testpmd>start tx_first 7
+    testpmd>stop
+    testpmd>set burst 1
+    testpmd>set txpkts 64,256,2000,64,256,2000
+    testpmd>start tx_first 27
+    testpmd>stop
+
+5. Start vhost testpmd, then quit pdump, check 448 packets and 28672 bytes received by virtio-user1 and 448 packets with 64 length in pdump-virtio-rx.pcap.
+
+6. Quit and relaunch vhost with iova=pa by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 1-2 -n 4 \
+    --vdev 'eth_vhost0,iface=vhost-net,queues=2,client=1,dmas=[txq0@0000:00:04.0;txq1@0000:00:04.1]' --vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@0000:00:04.2;txq1@0000:00:04.3]' \
+    --iova=pa -- -i --nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx
+    testpmd>vhost enable tx all
+
+7. Attach pdump secondary process to primary process by same file-prefix::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=virtio1 -- --pdump 'device_id=net_virtio_user1,queue=*,rx-dev=./pdump-virtio-rx.pcap,mbuf-size=8000'
+
+8. Virtio-user0 send packets::
+
+    testpmd>set burst 32
+    testpmd>set txpkts 64
+    testpmd>start tx_first 7
+    testpmd>stop
+    testpmd>set burst 1
+    testpmd>set txpkts 64,256,2000,64,256,2000
+    testpmd>start tx_first 27
+    testpmd>stop
+
+9. Clear virtio-user1 port stats::
+
+    testpmd>clear port stats all
+
+10. Rerun step 5.
+
+Test Case 24: packed virtqueue vm2vm vectorized-tx path multi-queues test indirect descriptor
+=============================================================================================
+
+1. Launch vhost by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/testpmd -l 1-2 -n 4 --no-pci \
+    --vdev 'eth_vhost0,iface=vhost-net,queues=1' --vdev 'eth_vhost1,iface=vhost-net1,queues=1' -- \
+    -i --nb-cores=1 --no-flush-rx
+
+2. Launch virtio-user1 by below command::
+
+    ./x86_64-native-linuxapp-gcc/app/testpmd -n 4 -l 7-8 --no-pci --file-prefix=virtio1 --force-max-simd-bitwidth=512 \
+    --vdev=net_virtio_user1,mac=00:01:02:03:04:05,path=./vhost-net1,queues=1,packed_vq=1,mrg_rxbuf=1,in_order=1,vectorized=1,queue_size=256 \
+    -- -i --nb-cores=1 --txd=256 --rxd=256
+    testpmd>set fwd rxonly
+    testpmd>start
+
+3. Attach pdump secondary process to primary process by same file-prefix::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=virtio1 -- --pdump 'device_id=net_virtio_user1,queue=*,rx-dev=./pdump-virtio-rx.pcap,mbuf-size=8000'
+
+4. Launch virtio-user0 and send 8k length packets::
+
+    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -n 4 -l 5-6 --force-max-simd-bitwidth=512 --no-pci --file-prefix=virtio \
+    --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,queues=1,packed_vq=1,mrg_rxbuf=1,in_order=1,vectorized=1,queue_size=256 \
+    -- -i --nb-cores=1 --txd=256 --rxd=256
+
+    testpmd>set burst 1
+    testpmd>start tx_first 27
+    testpmd>stop
+    testpmd>set burst 32
+    testpmd>start tx_first 7
+    testpmd>stop
+    testpmd>set txpkts 2000,2000,2000,2000
+    testpmd>start tx_first 1
+    testpmd>stop
 
-5. Start vhost testpmd, then quit pdump, check 502 packets received by virtio-user1 and 54 packets with 4640 length and 448 packets with 64 length in pdump-virtio-rx.pcap.
+5. 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.
+So check 256 packets and 56064 bytes received by virtio-user1 and 251 packets with 64 length and 5 packets with 8K length in pdump-virtio-rx.pcap.