From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 8AA567CF1; Wed, 6 Dec 2017 06:26:01 +0100 (CET) Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Dec 2017 21:26:00 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,367,1508828400"; d="scan'208";a="514161" Received: from deepin-15.sh.intel.com (HELO debian-xvivbkq) ([10.67.104.165]) by orsmga006.jf.intel.com with ESMTP; 05 Dec 2017 21:25:58 -0800 Date: Wed, 6 Dec 2017 13:25:29 +0800 From: Tiwei Bie To: Olivier Matz , maxime.coquelin@redhat.com Cc: yliu@fridaylinux.org, stephen@networkplumber.org, dev@dpdk.org, stable@dpdk.org, antonio.fischetti@intel.com Message-ID: <20171206052528.xmxjxfkkurq7hhsp@debian-xvivbkq> References: <20170831134015.1383-1-olivier.matz@6wind.com> <20170907121347.16208-1-olivier.matz@6wind.com> <20170907121347.16208-7-olivier.matz@6wind.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20170907121347.16208-7-olivier.matz@6wind.com> User-Agent: NeoMutt/20170609 (1.8.3) Subject: Re: [dpdk-dev] [PATCH v2 06/10] net/virtio: fix queue setup consistency X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Dec 2017 05:26:02 -0000 Hi Maxime and Olivier: On Thu, Sep 07, 2017 at 02:13:43PM +0200, Olivier Matz wrote: [...] > diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c > index 8eee3ff80..c7888f103 100644 > --- a/drivers/net/virtio/virtio_ethdev.c > +++ b/drivers/net/virtio/virtio_ethdev.c > @@ -1737,6 +1737,19 @@ virtio_dev_start(struct rte_eth_dev *dev) > struct virtnet_rx *rxvq; > struct virtnet_tx *txvq __rte_unused; > struct virtio_hw *hw = dev->data->dev_private; > + int ret; > + > + /* Finish the initialization of the queues */ > + for (i = 0; i < dev->data->nb_rx_queues; i++) { > + ret = virtio_dev_rx_queue_setup_finish(dev, i); > + if (ret < 0) > + return ret; > + } I'm trying to fix an issue [1] reported by Antonio. And during the debugging, I found that vector Rx of virtio PMD has been broken (when doing port stop/start) since below two patches were applied: 25bf7a0b0936 ("vhost: make error handling consistent in Rx path") -- needed on the Tx side (testpmd/vhost-pmd in below test) efc83a1e7fc3 ("net/virtio: fix queue setup consistency") -- needed on the Rx side (testpmd/virtio-user in below test) Below are the steps to reproduce the issue: #0. Checkout the commit # 25bf7a0b0936 was applied after efc83a1e7fc3 git checkout 25bf7a0b0936 (There is another vector Rx bug caused by rxq flushing on the HEAD. So it's better to checkout the old commit first.) #1. Apply below patch to disable mergeable Rx, and build DPDK diff --git a/drivers/net/virtio/virtio_ethdev.h b/drivers/net/virtio/virtio_ethdev.h index 2039bc5..d45ffa5 100644 --- a/drivers/net/virtio/virtio_ethdev.h +++ b/drivers/net/virtio/virtio_ethdev.h @@ -65,7 +65,6 @@ 1u << VIRTIO_NET_F_CSUM | \ 1u << VIRTIO_NET_F_HOST_TSO4 | \ 1u << VIRTIO_NET_F_HOST_TSO6 | \ - 1u << VIRTIO_NET_F_MRG_RXBUF | \ 1u << VIRTIO_NET_F_MTU | \ 1u << VIRTIO_RING_F_INDIRECT_DESC | \ 1ULL << VIRTIO_F_VERSION_1 | \ #2. Launch testpmd/vhost-pmd: ./x86_64-native-linuxapp-gcc/app/testpmd -l 1,2 \ --socket-mem 1024,1024 \ --file-prefix=vhost \ --no-pci \ --vdev=net_vhost0,iface=/tmp/socket-0,queues=1 \ -- \ --port-topology=chained \ -i \ --nb-cores=1 #3. Launch testpmd/virtio-user: ./x86_64-native-linuxapp-gcc/app/testpmd -l 5,6 \ --socket-mem 1024,1024 \ --file-prefix=virtio-user \ --no-pci \ --vdev=net_virtio_user0,path=/tmp/socket-0 \ -- \ --port-topology=chained \ -i \ --nb-cores=1 \ --disable-hw-vlan \ --txqflags=0xf01 #4. In testpmd/virtio-user run below commands: testpmd> set fwd rxonly testpmd> start #5. In testpmd/vhost-pmd run below commands: testpmd> set burst 1 testpmd> set fwd rxonly testpmd> start tx_first 1 testpmd> stop #6. In testpmd/virtio-user run below commands: testpmd> stop testpmd> port stop all testpmd> port start all testpmd> start #7. In testpmd/vhost-pmd run below commands: testpmd> set fwd txonly testpmd> start #8. In testpmd/virtio-user run below commands: testpmd> show port stats all And you will see that there is no traffic any more after receiving a few hundred packets. [1] http://dpdk.org/ml/archives/dev/2017-December/082983.html Best regards, Tiwei Bie