From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id 65ADC3B5 for ; Tue, 8 Nov 2016 10:44:38 +0100 (CET) Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C40FAC05AA4C; Tue, 8 Nov 2016 09:44:37 +0000 (UTC) Received: from [10.36.5.115] (vpn1-5-115.ams2.redhat.com [10.36.5.115]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id uA89iZge019936 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 8 Nov 2016 04:44:36 -0500 To: "Pierre Pfister (ppfister)" , "dev@dpdk.org" References: <82834CFE-767C-41B0-9327-E64B8210E076@cisco.com> From: Maxime Coquelin Message-ID: <46762894-5016-f634-c355-77af881685e6@redhat.com> Date: Tue, 8 Nov 2016 10:44:34 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 In-Reply-To: <82834CFE-767C-41B0-9327-E64B8210E076@cisco.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Tue, 08 Nov 2016 09:44:37 +0000 (UTC) Subject: Re: [dpdk-dev] [PATCH] virtio: tx with can_push when VERSION_1 is set X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Nov 2016 09:44:38 -0000 Hi Pierre, On 11/08/2016 10:31 AM, Pierre Pfister (ppfister) wrote: > Current virtio driver advertises VERSION_1 support, > but does not handle device's VERSION_1 support when > sending packets (it looks for ANY_LAYOUT feature, > which is absent). > > This patch enables 'can_push' in tx path when VERSION_1 > is advertised by the device. > > This significantly improves small packets forwarding rate > towards devices advertising VERSION_1 feature. I think it depends whether offloading is enabled or not. If no offloading enabled, I measured significant drop. Indeed, when no offloading is enabled, the Tx path in Virtio does not access the virtio header before your patch, as the header is memset to zero at device init time. With your patch, it gets memset to zero at every transmit in the hot path. With offloading enabled, it does makes sense though, as the header will be accessed. This patch is for v17.02 anyway, and we may provide a way to enable and disable features at Virtio PMD init time by this release. Thanks, Maxime > > Signed-off-by: Pierre Pfister > --- > drivers/net/virtio/virtio_rxtx.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/virtio/virtio_rxtx.c b/drivers/net/virtio/virtio_rxtx.c > index 724517e..2fe0338 100644 > --- a/drivers/net/virtio/virtio_rxtx.c > +++ b/drivers/net/virtio/virtio_rxtx.c > @@ -925,7 +925,8 @@ virtio_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) > } > > /* optimize ring usage */ > - if (vtpci_with_feature(hw, VIRTIO_F_ANY_LAYOUT) && > + if ((vtpci_with_feature(hw, VIRTIO_F_ANY_LAYOUT) || > + vtpci_with_feature(hw, VIRTIO_F_VERSION_1)) && > rte_mbuf_refcnt_read(txm) == 1 && > RTE_MBUF_DIRECT(txm) && > txm->nb_segs == 1 && > -- > 2.7.4 (Apple Git-66) >