patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Tiwei Bie <tiwei.bie@intel.com>
To: Olivier Matz <olivier.matz@6wind.com>
Cc: dev@dpdk.org, Yuanhan Liu <yliu@fridaylinux.org>,
	Maxime Coquelin <maxime.coquelin@redhat.com>,
	stable@dpdk.org
Subject: Re: [dpdk-stable] [PATCH 2/3] net/virtio: rationalize queue flushing
Date: Thu, 18 Jan 2018 23:48:09 +0800	[thread overview]
Message-ID: <20180118154809.lkc7cjbagg3pg6k2@debian-xvivbkq.sh.intel.com> (raw)
In-Reply-To: <20180118145553.4sttsn7l3dcdmvfw@platinum>

On Thu, Jan 18, 2018 at 03:55:53PM +0100, Olivier Matz wrote:
> On Thu, Jan 18, 2018 at 10:05:49PM +0800, Tiwei Bie wrote:
> > On Thu, Jan 18, 2018 at 10:07:32AM +0100, Olivier Matz wrote:
> > > Rationalize the function virtio_dev_free_mbufs():
> > > 
> > > - skip NULL vqs instead of crashing: this is required for the
> > >   next commit
> > > - use the same kind of loop than in virtio_free_queues()
> > > - also flush mbufs from the control queue (this is useless yet)
> > > - factorize common code between rxq, txq, cq
> > > 
> > > Cc: stable@dpdk.org
> > > 
> > > Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
> > > ---
> > >  drivers/net/virtio/virtio_ethdev.c | 55 ++++++++++++++++++--------------------
> > >  1 file changed, 26 insertions(+), 29 deletions(-)
> > > 
> > > diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c
> > > index c7426951c..d8b3b8ed7 100644
> > > --- a/drivers/net/virtio/virtio_ethdev.c
> > > +++ b/drivers/net/virtio/virtio_ethdev.c
> > > @@ -1868,47 +1868,44 @@ virtio_dev_start(struct rte_eth_dev *dev)
> > >  
> > >  static void virtio_dev_free_mbufs(struct rte_eth_dev *dev)
> > >  {
> > [...]
> > >  
> > > -		mbuf_num = 0;
> > > -		while ((buf = virtqueue_detach_unused(txvq->vq)) != NULL) {
> > > +		while ((buf = virtqueue_detach_unused(vq)) != NULL) {
> > 
> > Thanks for working on this! The virtqueue_detach_unused() can't
> > handle the vector Rx case correctly. Because vq->vq_descx[] is
> > initialized for vector Rx, but isn't updated by the vector Rx.
> > So together with the next commit, it may cause problems during
> > dev_stop/dev_configure/dev_start if vector Rx is used.
> 
> What would be the appropriate way to fix it?
> 
> Either we fix the vector functions to set vq->vq_descx, or we find
> another method to flush the mbufs in case of vector rx. Can we use
> vq->sw_ring[] to get the mbufs instead?

The first one may hurt the performance. If not, it would be the
best choice IMO. For the second one and your question, there is
some related code in virtqueue_rxvq_flush() you could refer to:

https://github.com/DPDK/dpdk/blob/e00093f381a1/drivers/net/virtio/virtqueue.c#L51

Thanks,
Tiwei

  reply	other threads:[~2018-01-18 15:48 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20180118090733.12728-1-olivier.matz@6wind.com>
2018-01-18  9:07 ` [dpdk-stable] [PATCH 1/3] net/virtio: fix typo in function name Olivier Matz
2018-01-18 13:27   ` Yuanhan Liu
2018-01-18 13:45     ` Olivier Matz
2018-01-18 14:06       ` Yuanhan Liu
2018-01-18  9:07 ` [dpdk-stable] [PATCH 2/3] net/virtio: rationalize queue flushing Olivier Matz
2018-01-18 13:26   ` Yuanhan Liu
2018-01-18 13:55     ` Olivier Matz
2018-01-18 14:04       ` Yuanhan Liu
2018-01-18 14:05   ` Tiwei Bie
2018-01-18 14:55     ` Olivier Matz
2018-01-18 15:48       ` Tiwei Bie [this message]
2018-01-18 15:56         ` Olivier Matz
2018-01-18  9:07 ` [dpdk-stable] [PATCH 3/3] net/virtio: fix memory leak when reinitializing device Olivier Matz
     [not found] ` <20180119155556.32597-1-olivier.matz@6wind.com>
2018-01-19 15:55   ` [dpdk-stable] [PATCH v2 1/4] net/virtio: fix queue flushing with vector Rx enabled Olivier Matz
2018-01-22  2:56     ` Tiwei Bie
2018-01-22 10:38       ` Olivier Matz
2018-01-23  2:05         ` Tiwei Bie
2018-01-19 15:55   ` [dpdk-stable] [PATCH v2 2/4] net/virtio: fix memory leak when reinitializing device Olivier Matz
     [not found]   ` <20180123155443.8883-1-olivier.matz@6wind.com>
2018-01-23 15:54     ` [dpdk-stable] [PATCH v3 1/4] net/virtio: fix queue flushing with vector Rx enabled Olivier Matz
2018-01-23 15:54     ` [dpdk-stable] [PATCH v3 2/4] net/virtio: fix memory leak when reinitializing device Olivier Matz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180118154809.lkc7cjbagg3pg6k2@debian-xvivbkq.sh.intel.com \
    --to=tiwei.bie@intel.com \
    --cc=dev@dpdk.org \
    --cc=maxime.coquelin@redhat.com \
    --cc=olivier.matz@6wind.com \
    --cc=stable@dpdk.org \
    --cc=yliu@fridaylinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).