From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jens Freimann Subject: Re: [PATCH] net/virtio: fix an incorrect behavior of device stop/start Date: Wed, 30 Aug 2017 11:13:06 +0200 Message-ID: <20170830091306.a5whdd7xrgb4jbtn@dhcp-192-218.str.redhat.com> References: <20170829082601.30349-1-tiwei.bie@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Cc: dev@dpdk.org, yliu@fridaylinux.org, maxime.coquelin@redhat.com, stable@dpdk.org To: Tiwei Bie Return-path: Content-Disposition: inline In-Reply-To: <20170829082601.30349-1-tiwei.bie@intel.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Hi Tiwei, On Tue, Aug 29, 2017 at 04:26:01PM +0800, Tiwei Bie wrote: >After starting a device, the driver shouldn't deliver the >packets that already existed in the device before it is >started to the applications. This patch fixes this issue >by flushing the Rx queues when starting the device. > >Fixes: a85786dc816f ("virtio: fix states handling during initialization") >Cc: stable@dpdk.org > >Signed-off-by: Tiwei Bie >--- > drivers/net/virtio/virtio_ethdev.c | 6 ++++++ > drivers/net/virtio/virtio_rxtx.c | 2 +- > drivers/net/virtio/virtqueue.c | 25 +++++++++++++++++++++++++ > drivers/net/virtio/virtqueue.h | 5 +++++ > 4 files changed, 37 insertions(+), 1 deletion(-) why don't we flush Tx queues as well? > >diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c >index e320811..6d60bc1 100644 >--- a/drivers/net/virtio/virtio_ethdev.c >+++ b/drivers/net/virtio/virtio_ethdev.c >@@ -1737,6 +1737,12 @@ virtio_dev_start(struct rte_eth_dev *dev) > } > } > >+ /* Flush the packets in Rx queues. */ >+ for (i = 0; i < dev->data->nb_rx_queues; i++) { >+ rxvq = dev->data->rx_queues[i]; >+ virtqueue_flush(rxvq->vq); >+ } >+ A little bit further down is a for loop going over rx queues calling notify. Could we flush directly before the notify and save the additional loop? regards, Jens