From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 98CC9A04F7; Fri, 20 Dec 2019 09:13:09 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 805552BF9; Fri, 20 Dec 2019 09:13:09 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 045801F1C for ; Fri, 20 Dec 2019 09:13:07 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 20 Dec 2019 00:13:06 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,335,1571727600"; d="scan'208";a="210744848" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by orsmga008.jf.intel.com with ESMTP; 20 Dec 2019 00:13:06 -0800 Received: from fmsmsx111.amr.corp.intel.com (10.18.116.5) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 20 Dec 2019 00:13:01 -0800 Received: from shsmsx103.ccr.corp.intel.com (10.239.4.69) by fmsmsx111.amr.corp.intel.com (10.18.116.5) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 20 Dec 2019 00:13:01 -0800 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.19]) by SHSMSX103.ccr.corp.intel.com ([169.254.4.29]) with mapi id 14.03.0439.000; Fri, 20 Dec 2019 16:12:59 +0800 From: "Tu, Lijuan" To: "Wang, Yinan" , "dts@dpdk.org" CC: "Wang, Yinan" Thread-Topic: [dts] [PATCH v1] test_plans: add packed virtqueue test in vm2vm topology Thread-Index: AQHVtt7+rwrb/M0VcUys3Xc7tiJY7KfCrNPg Date: Fri, 20 Dec 2019 08:12:59 +0000 Message-ID: <8CE3E05A3F976642AAB0F4675D0AD20E0BB8A27D@SHSMSX101.ccr.corp.intel.com> References: <20191219193633.77352-1-yinan.wang@intel.com> In-Reply-To: <20191219193633.77352-1-yinan.wang@intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dts] [PATCH v1] test_plans: add packed virtqueue test in vm2vm topology X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 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 Sender: "dts" applied > -----Original Message----- > From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of Yinan > Sent: Friday, December 20, 2019 3:37 AM > To: dts@dpdk.org > Cc: Wang, Yinan > Subject: [dts] [PATCH v1] test_plans: add packed virtqueue test in vm2vm > topology >=20 > From: Wang Yinan >=20 > Add packed virtqueue and split virtqueue test in > vm2vm_virtio_user_test_plan.rst >=20 > Signed-off-by: Wang Yinan > --- > test_plans/vm2vm_virtio_user_test_plan.rst | 675 +++++++++++++++++++++ > 1 file changed, 675 insertions(+) > create mode 100644 test_plans/vm2vm_virtio_user_test_plan.rst >=20 > diff --git a/test_plans/vm2vm_virtio_user_test_plan.rst > b/test_plans/vm2vm_virtio_user_test_plan.rst > new file mode 100644 > index 0000000..a28ca92 > --- /dev/null > +++ b/test_plans/vm2vm_virtio_user_test_plan.rst > @@ -0,0 +1,675 @@ > +.. Copyright (c) <2019>, Intel Corporation > + All rights reserved. > + > + Redistribution and use in source and binary forms, with or without > + modification, are permitted provided that the following conditions > + are met: > + > + - Redistributions of source code must retain the above copyright > + notice, this list of conditions and the following disclaimer. > + > + - Redistributions in binary form must reproduce the above copyright > + notice, this list of conditions and the following disclaimer in > + the documentation and/or other materials provided with the > + distribution. > + > + - Neither the name of Intel Corporation nor the names of its > + contributors may be used to endorse or promote products derived > + from this software without specific prior written permission. > + > + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND > CONTRIBUTORS > + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT > + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND > FITNESS > + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE > + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, > INDIRECT, > + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES > + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE > GOODS OR > + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) > + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > CONTRACT, > + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF > ADVISED > + OF THE POSSIBILITY OF SUCH DAMAGE. > + > +=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 > +vm2vm vhost-user/virtio-user test plan > +=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 > + > +Description > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +This test plan includes split virtqueue vm2vm in-order mergeable, in-ord= er > non-mergeable, mergeable, non-mergeable, vector_rx path test, and packed > virtqueue vm2vm in-order mergeable, in-order non-mergeable, mergeable, > non-mergeable path test. This plan also check the payload of packets is > accurate. For packed virtqueue test, need using qemu version > 4.2.0. > + > +Prerequisites > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +Enable pcap lib in dpdk code and recompile:: > + > + --- a/config/common_base > + +++ b/config/common_base > + @@ -492,7 +492,7 @@ CONFIG_RTE_LIBRTE_PMD_NULL=3Dy > + # > + # Compile software PMD backed by PCAP files > + # > + -CONFIG_RTE_LIBRTE_PMD_PCAP=3Dn > + +CONFIG_RTE_LIBRTE_PMD_PCAP=3Dy > + > +Then build DPDK. > + > +Test flow > +=3D=3D=3D=3D=3D=3D=3D=3D=3D > +Virtio-user <-> Vhost-user <-> Testpmd <-> Vhost-user <-> Virtio-user > + > +Test Case 1: packed virtqueue vm2vm mergeable path test > +=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=3D > + > +1. Launch vhost by below command:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -l 1-2 -n 4 --socket-mem > 1024,1024 --no-pci \ > + --vdev 'eth_vhost0,iface=3Dvhost-net,queues=3D1' --vdev > 'eth_vhost1,iface=3Dvhost-net1,queues=3D1' -- \ > + -i --nb-cores=3D1 --no-flush-rx > + > +2. Launch virtio-user1 by below command:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -n 4 -l 7-8 --socket-mem > 1024,1024 \ > + --no-pci --file-prefix=3Dvirtio1 \ > + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost- > net1,queues=3D1,packed_vq=3D1,mrg_rxbuf=3D1,in_order=3D0 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + 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=3Dvirti= o1 -- -- > pdump 'device_id=3Dnet_virtio_user1,queue=3D*,rx-dev=3D./pdump-virtio- > rx.pcap,mbuf-size=3D8000' > + > +4. Launch virtio-user0 and send 8k length packets:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -n 4 -l 5-6 --socket-mem > 1024,1024 \ > + --no-pci --file-prefix=3Dvirtio \ > + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost- > net,queues=3D1,packed_vq=3D1,mrg_rxbuf=3D1,in_order=3D0 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + 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 > + > +5. Start vhost, then send 8k length packets by virtio-user0 again:: > + > + testpmd>stop > + testpmd>set txpkts 2000 > + testpmd>start tx_first 1 > + > +6. Quit pdump and three testpmd, get 284 packets received by virtio-user= 1 > in pdump-virtio-rx.pcap. > + > +7. Launch testpmd by below command:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -l 1-2 -n 4 --socket-mem > 1024,1024 --no-pci --file-prefix=3Dvhost \ > + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D1' -- \ > + -i --nb-cores=3D1 --no-flush-rx > + testpmd>set fwd rxonly > + testpmd>start > + > +8. Attach pdump secondary process to primary process by same file-prefix= :: > + > + ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=3Dvhost= -- -- > pdump 'port=3D0,queue=3D*,rx-dev=3D/root/pdump-vhost-rx.pcap,mbuf- > size=3D8000' > + > +9. Launch virtio-user1 by below command:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -n 4 -l 7-8 --socket-mem > 1024,1024 --no-pci \ > + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost- > net1,queues=3D1,packed_vq=3D1,mrg_rxbuf=3D1,in_order=3D0 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + testpmd>set burst 1 > + testpmd>start tx_first 27 > + testpmd>stop > + testpmd>set burst 32 > + testpmd>start tx_first 7 > + testpmd>stop > + testpmd>set burst 1 > + testpmd>set txpkts 2000,2000,2000,2000 > + testpmd>start tx_first 1 > + testpmd>stop > + testpmd>set burst 32 > + testpmd>set txpkts 2000 > + testpmd>start tx_first 1 > + > +10. 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 2: packed virtqueue vm2vm inorder mergeable path test > +=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=3D=3D=3D=3D=3D=3D=3D=3D=3D > + > +1. Launch testpmd by below command:: > + > + ./testpmd -l 1-2 -n 4 --socket-mem 1024,1024 --no-pci \ > + --vdev 'eth_vhost0,iface=3Dvhost-net,queues=3D1' --vdev > 'eth_vhost1,iface=3Dvhost-net1,queues=3D1' -- \ > + -i --nb-cores=3D1 --no-flush-rx > + > +2. Launch virtio-user1 by below command:: > + > + ./testpmd -n 4 -l 7-8 --socket-mem 1024,1024 \ > + --no-pci --file-prefix=3Dvirtio1 \ > + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost- > net1,queues=3D1,packed_vq=3D1,mrg_rxbuf=3D1,in_order=3D1 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + 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=3Dvirti= o1 -- -- > pdump 'device_id=3Dnet_virtio_user1,queue=3D*,rx-dev=3D/root/pdump- > rx.pcap,mbuf-size=3D8000' > + > +4. Launch virtio-user0 and send 8k length packets:: > + > + ./testpmd -n 4 -l 5-6 --socket-mem 1024,1024 \ > + --no-pci --file-prefix=3Dvirtio \ > + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost- > net,queues=3D1,packed_vq=3D1,mrg_rxbuf=3D1,in_order=3D1 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + testpmd>set burst 1 > + testpmd>start tx_first 27 > + testpmd>stop > + testpmd>set burst 32 > + testpmd>start tx_first 7 > + testpmd>stop > + testpmd>set burst 1 > + testpmd>set txpkts 2000,2000,2000,2000 > + testpmd>start tx_first 1 > + > +5. Start vhost, then quit pdump and three testpmd, get 252 packets recei= ved > by virtio-user1 in pdump-virtio-rx.pcap. > + > +6. Launch testpmd by below command:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -l 1-2 -n 4 --socket-mem > 1024,1024 --no-pci --file-prefix=3Dvhost \ > + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D1' -- \ > + -i --nb-cores=3D1 --no-flush-rx > + testpmd>set fwd rxonly > + testpmd>start > + > +7. Attach pdump secondary process to primary process by same file-prefix= :: > + > + ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=3Dvhost= -- -- > pdump 'port=3D0,queue=3D*,rx-dev=3D/root/pdump-vhost-rx.pcap,mbuf- > size=3D8000' > + > +8. Launch virtio-user1 by below command:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -n 4 -l 7-8 --socket-mem > 1024,1024 \ > + --no-pci \ > + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost- > net1,queues=3D1,packed_vq=3D1,mrg_rxbuf=3D1,in_order=3D1 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + testpmd>set burst 1 > + testpmd>start tx_first 27 > + testpmd>stop > + testpmd>set burst 32 > + testpmd>start tx_first 7 > + testpmd>stop > + testpmd>set burst 1 > + testpmd>set txpkts 2000,2000,2000,2000 > + testpmd>start tx_first 1 > + > +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 3: packed virtqueue vm2vm non-mergeable path test > +=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=3D=3D=3D=3D=3D > + > +1. Launch testpmd by below command:: > + > + ./testpmd -l 1-2 -n 4 --socket-mem 1024,1024 --no-pci \ > + --vdev 'eth_vhost0,iface=3Dvhost-net,queues=3D1' --vdev > 'eth_vhost1,iface=3Dvhost-net1,queues=3D1' -- \ > + -i --nb-cores=3D1 --no-flush-rx > + > +2. Launch virtio-user1 by below command:: > + > + ./testpmd -n 4 -l 7-8 --socket-mem 1024,1024 \ > + --no-pci --file-prefix=3Dvirtio1 \ > + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost- > net1,queues=3D1,packed_vq=3D1,mrg_rxbuf=3D0,in_order=3D0 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + > +3. Attach pdump secondary process to primary process by same file-prefix= :: > + > + ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=3Dvirti= o1 -- -- > pdump 'device_id=3Dnet_virtio_user1,queue=3D*,rx-dev=3D/root/pdump- > rx.pcap,mbuf-size=3D8000' > + > +4. Launch virtio-user0 and send 8k length packets:: > + > + ./testpmd -n 4 -l 5-6 --socket-mem 1024,1024 \ > + --no-pci --file-prefix=3Dvirtio \ > + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost- > net,queues=3D1,packed_vq=3D1,mrg_rxbuf=3D0,in_order=3D0 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + 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 > + > +5. Start vhost, then quit pdump and three testpmd, get 251 packets recei= ved > by virtio-user1 in pdump-virtio-rx.pcap. > + > +6. Launch testpmd by below command:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -l 1-2 -n 4 --socket-mem > 1024,1024 --no-pci --file-prefix=3Dvhost \ > + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D1' -- \ > + -i --nb-cores=3D1 --no-flush-rx > + testpmd>set fwd rxonly > + testpmd>start > + > +7. Attach pdump secondary process to primary process by same file-prefix= :: > + > + ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=3Dvhost= -- -- > pdump 'port=3D0,queue=3D*,rx-dev=3D/root/pdump-vhost-rx.pcap,mbuf- > size=3D8000' > + > +8. Launch virtio-user1 by below command:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -n 4 -l 7-8 --socket-mem > 1024,1024 \ > + --no-pci \ > + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost- > net1,queues=3D1,packed_vq=3D1,mrg_rxbuf=3D0,in_order=3D0 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + testpmd>set burst 1 > + testpmd>start tx_first 27 > + testpmd>stop > + testpmd>set burst 32 > + testpmd>start tx_first 7 > + > +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 4: packed virtqueue vm2vm inorder non-mergeable path test > +=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=3D=3D=3D=3D=3D=3D=3D=3D=3D > =3D=3D=3D=3D > + > +1. Launch testpmd by below command:: > + > + ./testpmd -l 1-2 -n 4 --socket-mem 1024,1024 --no-pci \ > + --vdev 'eth_vhost0,iface=3Dvhost-net,queues=3D1' --vdev > 'eth_vhost1,iface=3Dvhost-net1,queues=3D1' -- \ > + -i --nb-cores=3D1 --no-flush-rx > + > +2. Launch virtio-user1 by below command:: > + > + ./testpmd -n 4 -l 7-8 --socket-mem 1024,1024 \ > + --no-pci --file-prefix=3Dvirtio1 \ > + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost- > net1,queues=3D1,packed_vq=3D1,mrg_rxbuf=3D0,in_order=3D1 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + 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=3Dvirti= o1 -- -- > pdump 'device_id=3Dnet_virtio_user1,queue=3D*,rx-dev=3D/root/pdump- > rx.pcap,mbuf-size=3D8000' > + > +4. Launch virtio-user0 and send 8k length packets:: > + > + ./testpmd -n 4 -l 5-6 --socket-mem 1024,1024 \ > + --no-pci --file-prefix=3Dvirtio \ > + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost- > net,queues=3D1,packed_vq=3D1,mrg_rxbuf=3D0,in_order=3D1 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + 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 > + > +5. Start vhost, then quit pdump and three testpmd, get 251 packets recei= ved > by virtio-user1 in pdump-virtio-rx.pcap. > + > +6. Launch testpmd by below command:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -l 1-2 -n 4 --socket-mem > 1024,1024 --no-pci --file-prefix=3Dvhost \ > + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D1' -- \ > + -i --nb-cores=3D1 --no-flush-rx > + testpmd>set fwd rxonly > + testpmd>start > + > +7. Attach pdump secondary process to primary process by same file-prefix= :: > + > + ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=3Dvhost= -- -- > pdump 'port=3D0,queue=3D*,rx-dev=3D/root/pdump-vhost-rx.pcap,mbuf- > size=3D8000' > + > +8. Launch virtio-user1 by below command:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -n 4 -l 7-8 --socket-mem > 1024,1024 \ > + --no-pci \ > + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost- > net1,queues=3D1,packed_vq=3D1,mrg_rxbuf=3D0,in_order=3D1 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + testpmd>set burst 1 > + testpmd>start tx_first 27 > + testpmd>stop > + testpmd>set burst 32 > + testpmd>start tx_first 7 > + > +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 5: split virtqueue vm2vm mergeable path test > +=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 > + > +1. Launch vhost by below command:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -l 1-2 -n 4 --socket-mem > 1024,1024 --no-pci \ > + --vdev 'eth_vhost0,iface=3Dvhost-net,queues=3D1' --vdev > 'eth_vhost1,iface=3Dvhost-net1,queues=3D1' -- \ > + -i --nb-cores=3D1 --no-flush-rx > + > +2. Launch virtio-user1 by below command:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -n 4 -l 7-8 --socket-mem > 1024,1024 \ > + --no-pci --file-prefix=3Dvirtio1 \ > + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost- > net1,queues=3D1,packed_vq=3D0,mrg_rxbuf=3D1,in_order=3D0 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + 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=3Dvirti= o1 -- -- > pdump 'device_id=3Dnet_virtio_user1,queue=3D*,rx-dev=3D./pdump-virtio- > rx.pcap,mbuf-size=3D8000' > + > +4. Launch virtio-user0 and send 8k length packets:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -n 4 -l 5-6 --socket-mem > 1024,1024 \ > + --no-pci --file-prefix=3Dvirtio \ > + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost- > net,queues=3D1,packed_vq=3D0,mrg_rxbuf=3D1,in_order=3D0 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + 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 > + > +5. Start vhost, then send 8k length packets by virtio-user0 again:: > + > + testpmd>stop > + testpmd>set txpkts 2000 > + testpmd>start tx_first 1 > + > +6. Quit pdump and three testpmd, get 288 packets received by virtio-user= 1 > in pdump-virtio-rx.pcap. > + > +7. Launch testpmd by below command:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -l 1-2 -n 4 --socket-mem > 1024,1024 --no-pci --file-prefix=3Dvhost \ > + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D1' -- \ > + -i --nb-cores=3D1 --no-flush-rx > + testpmd>set fwd rxonly > + testpmd>start > + > +8. Attach pdump secondary process to primary process by same file-prefix= :: > + > + ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=3Dvhost= -- -- > pdump 'port=3D0,queue=3D*,rx-dev=3D/root/pdump-vhost-rx.pcap,mbuf- > size=3D8000' > + > +9. Launch virtio-user1 by below command:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -n 4 -l 7-8 --socket-mem > 1024,1024 \ > + --no-pci \ > + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost- > net1,queues=3D1,packed_vq=3D0,mrg_rxbuf=3D1,in_order=3D0 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + testpmd>set burst 1 > + testpmd>start tx_first 27 > + testpmd>stop > + testpmd>set burst 32 > + testpmd>start tx_first 7 > + testpmd>stop > + testpmd>set burst 5 > + testpmd>set txpkts 2000,2000,2000,2000 > + testpmd>start tx_first 1 > + testpmd>stop > + testpmd>set burst 32 > + testpmd>set txpkts 2000 > + testpmd>start tx_first 1 > + > +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 6: split virtqueue vm2vm inorder mergeable path test > +=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=3D=3D=3D=3D=3D=3D=3D=3D > + > +1. Launch testpmd by below command:: > + > + ./testpmd -l 1-2 -n 4 --socket-mem 1024,1024 --no-pci \ > + --vdev 'eth_vhost0,iface=3Dvhost-net,queues=3D1' --vdev > 'eth_vhost1,iface=3Dvhost-net1,queues=3D1' -- \ > + -i --nb-cores=3D1 --no-flush-rx > + > +2. Launch virtio-user1 by below command:: > + > + ./testpmd -n 4 -l 7-8 --socket-mem 1024,1024 \ > + --no-pci --file-prefix=3Dvirtio1 \ > + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost- > net1,queues=3D1,packed_vq=3D0,mrg_rxbuf=3D1,in_order=3D1 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + 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=3Dvirti= o1 -- -- > pdump 'device_id=3Dnet_virtio_user1,queue=3D*,rx-dev=3D/root/pdump- > rx.pcap,mbuf-size=3D8000' > + > +4. Launch virtio-user0 and send 8k length packets:: > + > + ./testpmd -n 4 -l 5-6 --socket-mem 1024,1024 \ > + --no-pci --file-prefix=3Dvirtio \ > + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost- > net,queues=3D1,packed_vq=3D0,mrg_rxbuf=3D1,in_order=3D1 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + 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 > + > +5. Start vhost, then quit pdump and three testpmd, get 256 packets recei= ved > by virtio-user1 in pdump-virtio-rx.pcap. > + > +6. Launch testpmd by below command:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -l 1-2 -n 4 --socket-mem > 1024,1024 --no-pci --file-prefix=3Dvhost \ > + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D1' -- \ > + -i --nb-cores=3D1 --no-flush-rx > + testpmd>set fwd rxonly > + testpmd>start > + > +7. Attach pdump secondary process to primary process by same file-prefix= :: > + > + ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=3Dvhost= -- -- > pdump 'port=3D0,queue=3D*,rx-dev=3D/root/pdump-vhost-rx.pcap,mbuf- > size=3D8000' > + > +8. Launch virtio-user1 by below command:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -n 4 -l 7-8 --socket-mem > 1024,1024 \ > + --no-pci \ > + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost- > net1,queues=3D1,packed_vq=3D0,mrg_rxbuf=3D1,in_order=3D1 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + testpmd>set burst 1 > + testpmd>start tx_first 27 > + testpmd>stop > + testpmd>set burst 32 > + testpmd>start tx_first 7 > + testpmd>stop > + testpmd>set burst 5 > + testpmd>set txpkts 2000,2000,2000,2000 > + testpmd>start tx_first 1 > + > +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 7: split virtqueue vm2vm non-mergeable path test > +=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=3D=3D=3D=3D > + > +1. Launch testpmd by below command:: > + > + ./testpmd -l 1-2 -n 4 --socket-mem 1024,1024 --no-pci \ > + --vdev 'eth_vhost0,iface=3Dvhost-net,queues=3D1' --vdev > 'eth_vhost1,iface=3Dvhost-net1,queues=3D1' -- \ > + -i --nb-cores=3D1 --no-flush-rx > + > +2. Launch virtio-user1 by below command:: > + > + ./testpmd -n 4 -l 7-8 --socket-mem 1024,1024 \ > + --no-pci --file-prefix=3Dvirtio1 \ > + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost- > net1,queues=3D1,packed_vq=3D0,mrg_rxbuf=3D0,in_order=3D0 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 --enable-hw-vlan-strip > + > +3. Attach pdump secondary process to primary process by same file-prefix= :: > + > + ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=3Dvirti= o1 -- -- > pdump 'device_id=3Dnet_virtio_user1,queue=3D*,rx-dev=3D/root/pdump- > rx.pcap,mbuf-size=3D8000' > + > +4. Launch virtio-user0 and send 8k length packets:: > + > + ./testpmd -n 4 -l 5-6 --socket-mem 1024,1024 \ > + --no-pci --file-prefix=3Dvirtio \ > + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost- > net,queues=3D1,packed_vq=3D0,mrg_rxbuf=3D0,in_order=3D0 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 --enable-hw-vlan-strip > + 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 > + > +5. Start vhost, then quit pdump and three testpmd, get 251 packets recei= ved > by virtio-user1 in pdump-virtio-rx.pcap. > + > +6. Launch testpmd by below command:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -l 1-2 -n 4 --socket-mem > 1024,1024 --no-pci --file-prefix=3Dvhost \ > + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D1' -- \ > + -i --nb-cores=3D1 --no-flush-rx > + testpmd>set fwd rxonly > + testpmd>start > + > +7. Attach pdump secondary process to primary process by same file-prefix= :: > + > + ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=3Dvhost= -- -- > pdump 'port=3D0,queue=3D*,rx-dev=3D/root/pdump-vhost-rx.pcap,mbuf- > size=3D8000' > + > +8. Launch virtio-user1 by below command:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -n 4 -l 7-8 --socket-mem > 1024,1024 \ > + --no-pci \ > + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost- > net1,queues=3D1,packed_vq=3D0,mrg_rxbuf=3D0,in_order=3D0 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 --enable-hw-vlan-strip > + testpmd>set burst 1 > + testpmd>start tx_first 27 > + testpmd>stop > + testpmd>set burst 32 > + testpmd>start tx_first 7 > + > +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 8: split virtqueue vm2vm inorder non-mergeable path test > +=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=3D=3D=3D=3D=3D=3D=3D=3D=3D > =3D=3D=3D > + > +1. Launch testpmd by below command:: > + > + ./testpmd -l 1-2 -n 4 --socket-mem 1024,1024 --no-pci \ > + --vdev 'eth_vhost0,iface=3Dvhost-net,queues=3D1' --vdev > 'eth_vhost1,iface=3Dvhost-net1,queues=3D1' -- \ > + -i --nb-cores=3D1 --no-flush-rx > + > +2. Launch virtio-user1 by below command:: > + > + ./testpmd -n 4 -l 7-8 --socket-mem 1024,1024 \ > + --no-pci --file-prefix=3Dvirtio1 \ > + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost- > net1,queues=3D1,packed_vq=3D0,mrg_rxbuf=3D0,in_order=3D1 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + 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=3Dvirti= o1 -- -- > pdump 'device_id=3Dnet_virtio_user1,queue=3D*,rx-dev=3D/root/pdump- > rx.pcap,mbuf-size=3D8000' > + > +4. Launch virtio-user0 and send 8k length packets:: > + > + ./testpmd -n 4 -l 5-6 --socket-mem 1024,1024 \ > + --no-pci --file-prefix=3Dvirtio \ > + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost- > net,queues=3D1,packed_vq=3D0,mrg_rxbuf=3D0,in_order=3D1 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + 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 > + > +5. Start vhost, then quit pdump and three testpmd, get 251 packets recei= ved > by virtio-user1 in pdump-virtio-rx.pcap. > + > +6. Launch testpmd by below command:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -l 1-2 -n 4 --socket-mem > 1024,1024 --no-pci --file-prefix=3Dvhost \ > + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D1' -- \ > + -i --nb-cores=3D1 --no-flush-rx > + testpmd>set fwd rxonly > + testpmd>start > + > +7. Attach pdump secondary process to primary process by same file-prefix= :: > + > + ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=3Dvhost= -- -- > pdump 'port=3D0,queue=3D*,rx-dev=3D/root/pdump-vhost-rx.pcap,mbuf- > size=3D8000' > + > +8. Launch virtio-user1 by below command:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -n 4 -l 7-8 --socket-mem > 1024,1024 \ > + --no-pci \ > + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost- > net1,queues=3D1,packed_vq=3D0,mrg_rxbuf=3D0,in_order=3D1 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + testpmd>set burst 1 > + testpmd>start tx_first 27 > + testpmd>stop > + testpmd>set burst 32 > + testpmd>start tx_first 7 > + > +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 9: split virtqueue vm2vm vector_rx path test > +=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 > + > +1. Launch testpmd by below command:: > + > + ./testpmd -l 1-2 -n 4 --socket-mem 1024,1024 --no-pci \ > + --vdev 'eth_vhost0,iface=3Dvhost-net,queues=3D1' --vdev > 'eth_vhost1,iface=3Dvhost-net1,queues=3D1' -- \ > + -i --nb-cores=3D1 --no-flush-rx > + > +2. Launch virtio-user1 by below command:: > + > + ./testpmd -n 4 -l 7-8 --socket-mem 1024,1024 \ > + --no-pci --file-prefix=3Dvirtio1 \ > + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost- > net1,queues=3D1,packed_vq=3D0,mrg_rxbuf=3D0,in_order=3D0 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + > +3. Attach pdump secondary process to primary process by same file-prefix= :: > + > + ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=3Dvirti= o1 -- -- > pdump 'device_id=3Dnet_virtio_user1,queue=3D*,rx-dev=3D/root/pdump- > rx.pcap,mbuf-size=3D8000' > + > +4. Launch virtio-user0 and send 8k length packets:: > + > + ./testpmd -n 4 -l 5-6 --socket-mem 1024,1024 \ > + --no-pci --file-prefix=3Dvirtio \ > + --vdev=3Dnet_virtio_user0,mac=3D00:01:02:03:04:05,path=3D./vhost- > net,queues=3D1,packed_vq=3D0,mrg_rxbuf=3D0,in_order=3D0 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + 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 > + > +5. Start vhost, then quit pdump and three testpmd, get 251 packets recei= ved > by virtio-user1 in pdump-virtio-rx.pcap. > + > +6. Launch testpmd by below command:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -l 1-2 -n 4 --socket-mem > 1024,1024 --no-pci --file-prefix=3Dvhost \ > + --vdev 'eth_vhost1,iface=3Dvhost-net1,queues=3D1' -- \ > + -i --nb-cores=3D1 --no-flush-rx > + testpmd>set fwd rxonly > + testpmd>start > + > +7. Attach pdump secondary process to primary process by same file-prefix= :: > + > + ./x86_64-native-linuxapp-gcc/app/dpdk-pdump -v --file-prefix=3Dvhost= -- -- > pdump 'port=3D0,queue=3D*,rx-dev=3D/root/pdump-vhost-rx.pcap,mbuf- > size=3D8000' > + > +8. Launch virtio-user1 by below command:: > + > + ./x86_64-native-linuxapp-gcc/app/testpmd -n 4 -l 7-8 --socket-mem > 1024,1024 \ > + --no-pci \ > + --vdev=3Dnet_virtio_user1,mac=3D00:01:02:03:04:05,path=3D./vhost- > net1,queues=3D1,packed_vq=3D0,mrg_rxbuf=3D0,in_order=3D0 \ > + -- -i --nb-cores=3D1 --txd=3D256 --rxd=3D256 > + testpmd>set burst 1 > + testpmd>start tx_first 27 > + testpmd>stop > + testpmd>set burst 32 > + testpmd>start tx_first 7 > + > +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. > \ No newline at end of file > -- > 2.17.1