From: Tiwei Bie <tiwei.bie@intel.com>
To: 王志克 <wangzhike@jd.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>,
"bluca@debian.org" <bluca@debian.org>,
"yliu@fridaylinux.org" <yliu@fridaylinux.org>
Subject: Re: [dpdk-dev] net/virtio: fix vector Rx break caused by rxq flushing
Date: Wed, 3 Jan 2018 19:14:29 +0800 [thread overview]
Message-ID: <20180103111429.dtdo7sucyx6ozts2@debian-xvivbkq.sh.intel.com> (raw)
In-Reply-To: <6DAF063A35010343823807B082E5681F41D84163@mbx05.360buyAD.local>
Hi Zhike,
On Wed, Jan 03, 2018 at 08:21:26AM +0000, 王志克 wrote:
> Hi Tiwei,
>
> Thanks for your help and info.
>
> I have another question about your previous fix below.
> You mentioned that " Otherwise it will lead to incorrect packet collection for port state." Do you mean port statistics? Or such packets may leads to issue, like more TCP restransmission? Thanks.
>
I was just repeating the problem description from another
team who raised the issue. The unexpected behavior caused
some problems when they use virtio PMD. But I don't know
the details of the problems they met. :(
Best regards,
Tiwei Bie
>
> commit d8227497ec5c3de75fe378e09fc9673ae097fa73
> Author: Tiwei Bie <tiwei.bie@intel.com>
> Date: Fri Oct 20 10:09:28 2017 +0800
>
> net/virtio: flush Rx queues on start
>
> After starting a device, the driver shouldn't deliver the
> packets that already existed before the device is started
> to applications. Otherwise it will lead to incorrect packet
> collection for port state. This patch fixes this issue by
> flushing the Rx queues when starting the device.
>
>
> Br,
> Wang Zhike
> -----Original Message-----
> From: Tiwei Bie [mailto:tiwei.bie@intel.com]
> Sent: Saturday, December 30, 2017 12:02 PM
> To: 王志克
> Cc: dev@dpdk.org; bluca@debian.org; yliu@fridaylinux.org
> Subject: Re: net/virtio: fix vector Rx break caused by rxq flushing
>
> Hi Zhike,
>
> On Fri, Dec 29, 2017 at 01:02:04PM +0000, 王志克 wrote:
> > Hi tiwei,
> >
> > Can you please provide a patch for 16.11.4? Thanks.
> >
>
> Normally, most commits in the stable tree are backported
> from the commits in the mainline tree which contains below
> Cc line:
>
> Cc: stable@dpdk.org
>
> This patch also contains such line. So after this patch
> is applied to the mainline tree, it will be backported.
>
> If you need the fix right now, you can download the latest
> patch (which has been applied to dpdk-next-virtio tree)
> from here:
>
> https://dpdk.org/dev/patchwork/patch/32061/
>
> It can be applied to DPDK 16.11.4 with the patch command.
> After the patching, one small change is needed to get it
> work:
>
> diff --git a/drivers/net/virtio/virtqueue.c b/drivers/net/virtio/virtqueue.c
> index 7fd8604..0e24194 100644
> --- a/drivers/net/virtio/virtqueue.c
> +++ b/drivers/net/virtio/virtqueue.c
> @@ -88,7 +88,7 @@ virtqueue_rxvq_flush(struct virtqueue *vq)
> for (i = 0; i < nb_used; i++) {
> used_idx = vq->vq_used_cons_idx & (vq->vq_nentries - 1);
> uep = &vq->vq_ring.used->ring[used_idx];
> - if (hw->use_simple_rx) {
> + if (hw->use_simple_rxtx) {
> desc_idx = used_idx;
> rte_pktmbuf_free(vq->sw_ring[desc_idx]);
> vq->vq_free_cnt++;
> @@ -104,7 +104,7 @@ virtqueue_rxvq_flush(struct virtqueue *vq)
> vq->vq_used_cons_idx++;
> }
>
> - if (hw->use_simple_rx) {
> + if (hw->use_simple_rxtx) {
> while (vq->vq_free_cnt >= RTE_VIRTIO_VPMD_RX_REARM_THRESH) {
> virtio_rxq_rearm_vec(rxq);
> if (virtqueue_kick_prepare(vq))
>
> Besides, I'm not sure whether you are aware of this or not.
> But just FYI, when you want to use the vector Rx of virtio
> PMD, you need to be aware of the fact that the current
> implementation of vector Rx doesn't really follow the virtio
> spec. You can find more details in below link:
>
> http://dpdk.org/ml/archives/dev/2017-December/084101.html
>
> Best regards,
> Tiwei Bie
prev parent reply other threads:[~2018-01-03 11:14 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-29 13:02 王志克
2017-12-30 4:02 ` Tiwei Bie
2018-01-03 8:21 ` 王志克
2018-01-03 11:14 ` Tiwei Bie [this message]
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=20180103111429.dtdo7sucyx6ozts2@debian-xvivbkq.sh.intel.com \
--to=tiwei.bie@intel.com \
--cc=bluca@debian.org \
--cc=dev@dpdk.org \
--cc=wangzhike@jd.com \
--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).