From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <tiwei.bie@intel.com>
Received: from mga05.intel.com (mga05.intel.com [192.55.52.43])
 by dpdk.org (Postfix) with ESMTP id B7E311B1C6
 for <dev@dpdk.org>; Wed,  3 Jan 2018 12:14:59 +0100 (CET)
X-Amp-Result: UNKNOWN
X-Amp-Original-Verdict: FILE UNKNOWN
X-Amp-File-Uploaded: False
Received: from fmsmga007.fm.intel.com ([10.253.24.52])
 by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;
 03 Jan 2018 03:14:57 -0800
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.45,501,1508828400"; 
   d="scan'208";a="6899014"
Received: from debian-xvivbkq.sh.intel.com ([10.67.104.226])
 by fmsmga007.fm.intel.com with ESMTP; 03 Jan 2018 03:14:56 -0800
Date: Wed, 3 Jan 2018 19:14:29 +0800
From: Tiwei Bie <tiwei.bie@intel.com>
To: =?utf-8?B?546L5b+X5YWL?= <wangzhike@jd.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>, "bluca@debian.org" <bluca@debian.org>,
 "yliu@fridaylinux.org" <yliu@fridaylinux.org>
Message-ID: <20180103111429.dtdo7sucyx6ozts2@debian-xvivbkq.sh.intel.com>
References: <6DAF063A35010343823807B082E5681F41D839EF@mbx05.360buyAD.local>
 <20171230040209.b73z42ymlh4emjxe@debian-xvivbkq.sh.intel.com>
 <6DAF063A35010343823807B082E5681F41D84163@mbx05.360buyAD.local>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <6DAF063A35010343823807B082E5681F41D84163@mbx05.360buyAD.local>
User-Agent: NeoMutt/20170609 (1.8.3)
Subject: Re: [dpdk-dev] net/virtio: fix vector Rx break caused by rxq
	flushing
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Wed, 03 Jan 2018 11:15:00 -0000

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