From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Hemminger Subject: Re: [PATCH 3/4] virtio: use indirect ring elements Date: Sun, 6 Sep 2015 11:42:02 -0700 Message-ID: <20150906114202.634c8602@urahara> References: <1441400308-5725-1-git-send-email-stephen@networkplumber.org> <1441400308-5725-4-git-send-email-stephen@networkplumber.org> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: "dev@dpdk.org" To: "Ouyang, Changchun" Return-path: Received: from mail-pa0-f48.google.com (mail-pa0-f48.google.com [209.85.220.48]) by dpdk.org (Postfix) with ESMTP id 9B39B8EA0 for ; Sun, 6 Sep 2015 20:41:51 +0200 (CEST) Received: by padhy16 with SMTP id hy16so71328764pad.1 for ; Sun, 06 Sep 2015 11:41:51 -0700 (PDT) In-Reply-To: List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Sun, 6 Sep 2015 08:36:10 +0000 "Ouyang, Changchun" wrote: > > -----Original Message----- > > From: Stephen Hemminger [mailto:stephen@networkplumber.org] > > Sent: Saturday, September 5, 2015 4:58 AM > > To: Xie, Huawei; Ouyang, Changchun > > Cc: dev@dpdk.org; Stephen Hemminger > > Subject: [PATCH 3/4] virtio: use indirect ring elements > > > > The virtio ring in QEMU/KVM is usually limited to 256 entries and the normal > > way that virtio driver was queuing mbufs required nsegs + 1 ring elements. > > By using the indirect ring element feature if available, each packet will take > > only one ring slot even for multi-segment packets. > > > > Signed-off-by: Stephen Hemminger > > --- > > drivers/net/virtio/virtio_ethdev.c | 11 +++++--- > > drivers/net/virtio/virtio_ethdev.h | 3 ++- > > drivers/net/virtio/virtio_rxtx.c | 51 ++++++++++++++++++++++++++++++- > > ------- > > drivers/net/virtio/virtqueue.h | 8 ++++++ > > 4 files changed, 57 insertions(+), 16 deletions(-) > > > > diff --git a/drivers/net/virtio/virtio_ethdev.c > > b/drivers/net/virtio/virtio_ethdev.c > > index 465d3cd..bcfb87b 100644 > > --- a/drivers/net/virtio/virtio_ethdev.c > > +++ b/drivers/net/virtio/virtio_ethdev.c > > @@ -359,12 +359,15 @@ int virtio_dev_queue_setup(struct rte_eth_dev > > *dev, > > if (queue_type == VTNET_TQ) { > > Do we also need implement indirect ring elements for RX path? No. Look at Linux driver, indirect elements are never passed to RX driver.