From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf0-f181.google.com (mail-pf0-f181.google.com [209.85.192.181]) by dpdk.org (Postfix) with ESMTP id E7DC993A0 for ; Wed, 27 Jan 2016 03:23:22 +0100 (CET) Received: by mail-pf0-f181.google.com with SMTP id 65so21429095pfd.2 for ; Tue, 26 Jan 2016 18:23:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mvista-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=ebWCqFMBfwuMs7YKREBzW7LVXCrMmxwrjDCLNHF1Ry0=; b=GF7whdOi94666RCNnH+psbelYrr/4tpfJ6TsCArELaNhRh3izoNMbiIQLyZ1+TovYD oH4eUMi0Fn60vngHS+5z3cRTjoZAECkc27FAULAwVlcFVYu/kuwVDFj8Kqjxa5eQJSD3 fBSIR0HmOv2BqkOBTT7Bt0Q78br+9ogIMIozKyEDjUnnNZAXAhCs44oCDRftAmuJ0OYD qCFo4vP2vUSX5Z+J1JzXIp+bfkGFIf25YSAU1NwmzfMILjClL40aF8dKg58z0eH6lt4E Nz+34xyVW+ypvLiXWFwos3yBgkiKoQ143TptGf6tIP50FZABslUIlWYNZ2XmDTzcHlEx 6VdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=ebWCqFMBfwuMs7YKREBzW7LVXCrMmxwrjDCLNHF1Ry0=; b=Du7OjmVhSOFNpSkGyvxgJe7i97PUwBRK0Bfqb4CgQdSZWB5QgkNGuHJShxdCdmoccF tjtXO8hUXmY97flwiA97+9ilqGL0D4ZcUViuOsGgScXz2Eqy93zXshLQsp4j2aG+C6Z2 NDtWaGqyo+8hZbl2OkPIQy8Yl5Q5xpkCUqHxPyu+zhryJrZVKt4BmWa70q5IvOh4M6f+ y5H23bhUOVsv+KzEMN7Cg4KOdgsM/fYWfTKglFLX6Urmpmv96sRM/0nLneKQpikghokk 7Qk+SOppi5ivlfB4H5QBgsyQUAv6oB0Zk1xfVKMQWyNM7a0S3Rik/KE3CGPBi1ui6yBk +UVg== X-Gm-Message-State: AG10YOSpq58Xc1UTu2tTJ/G2tDeQJ7dWPEX4TnRO3VKmVXPZ4nPFFdZsYHvORYq+axDtl725hIhAvvq7l+CjC6Bo MIME-Version: 1.0 X-Received: by 10.98.14.69 with SMTP id w66mr38858399pfi.144.1453861402236; Tue, 26 Jan 2016 18:23:22 -0800 (PST) Received: by 10.66.196.81 with HTTP; Tue, 26 Jan 2016 18:23:21 -0800 (PST) Received: by 10.66.196.81 with HTTP; Tue, 26 Jan 2016 18:23:21 -0800 (PST) In-Reply-To: <1453203972-24855-2-git-send-email-sshukla@mvista.com> References: <1453203972-24855-1-git-send-email-sshukla@mvista.com> <1453203972-24855-2-git-send-email-sshukla@mvista.com> Date: Wed, 27 Jan 2016 07:53:21 +0530 Message-ID: From: Santosh Shukla To: dev@dpdk.org Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] [PATCH v5 01/11] virtio: Introduce config RTE_VIRTIO_INC_VECTOR 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: Wed, 27 Jan 2016 02:23:23 -0000 Ping? On Jan 19, 2016 5:16 PM, "Santosh Shukla" wrote: > - virtio_recv_pkts_vec and other virtio vector friend apis are written for > sse/avx instructions. For arm64 in particular, virtio vector > implementation > does not exist(todo). > > So virtio pmd driver wont build for targets like i686, arm64. By making > RTE_VIRTIO_INC_VECTOR=n, Driver can build for non-sse/avx targets and will > work > in non-vectored virtio mode. > > Disabling RTE_VIRTIO_INC_VECTOR config for : > > - i686 arch as i686 target config says: > config/defconfig_i686-native-linuxapp-gcc says "Vectorized PMD is not > supported on 32-bit". > > - armv7/v8 arch. > > Signed-off-by: Santosh Shukla > --- > v4--> v5: > - squashed v4's RTE_VIRTIO_INC_VECTOR patches into one patch. > - Added ifdefs RTE_xx_xx_INC_VECTOR across _simple_rx_tx flag occurance in > code. > > > config/common_linuxapp | 1 + > config/defconfig_arm-armv7a-linuxapp-gcc | 4 +++- > config/defconfig_arm64-armv8a-linuxapp-gcc | 4 +++- > config/defconfig_i686-native-linuxapp-gcc | 1 + > config/defconfig_i686-native-linuxapp-icc | 1 + > drivers/net/virtio/Makefile | 2 +- > drivers/net/virtio/virtio_rxtx.c | 16 +++++++++++++++- > drivers/net/virtio/virtio_rxtx.h | 2 ++ > 8 files changed, 27 insertions(+), 4 deletions(-) > > diff --git a/config/common_linuxapp b/config/common_linuxapp > index 74bc515..8677697 100644 > --- a/config/common_linuxapp > +++ b/config/common_linuxapp > @@ -274,6 +274,7 @@ CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_RX=n > CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_TX=n > CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DRIVER=n > CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DUMP=n > +CONFIG_RTE_VIRTIO_INC_VECTOR=y > > # > # Compile burst-oriented VMXNET3 PMD driver > diff --git a/config/defconfig_arm-armv7a-linuxapp-gcc > b/config/defconfig_arm-armv7a-linuxapp-gcc > index cbebd64..9f852ce 100644 > --- a/config/defconfig_arm-armv7a-linuxapp-gcc > +++ b/config/defconfig_arm-armv7a-linuxapp-gcc > @@ -43,6 +43,9 @@ CONFIG_RTE_FORCE_INTRINSICS=y > CONFIG_RTE_TOOLCHAIN="gcc" > CONFIG_RTE_TOOLCHAIN_GCC=y > > +# Disable VIRTIO VECTOR support > +CONFIG_RTE_VIRTIO_INC_VECTOR=n > + > # ARM doesn't have support for vmware TSC map > CONFIG_RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT=n > > @@ -70,7 +73,6 @@ CONFIG_RTE_LIBRTE_I40E_PMD=n > CONFIG_RTE_LIBRTE_IXGBE_PMD=n > CONFIG_RTE_LIBRTE_MLX4_PMD=n > CONFIG_RTE_LIBRTE_MPIPE_PMD=n > -CONFIG_RTE_LIBRTE_VIRTIO_PMD=n > CONFIG_RTE_LIBRTE_VMXNET3_PMD=n > CONFIG_RTE_LIBRTE_PMD_XENVIRT=n > CONFIG_RTE_LIBRTE_PMD_BNX2X=n > diff --git a/config/defconfig_arm64-armv8a-linuxapp-gcc > b/config/defconfig_arm64-armv8a-linuxapp-gcc > index 504f3ed..1a638b3 100644 > --- a/config/defconfig_arm64-armv8a-linuxapp-gcc > +++ b/config/defconfig_arm64-armv8a-linuxapp-gcc > @@ -45,8 +45,10 @@ CONFIG_RTE_TOOLCHAIN_GCC=y > > CONFIG_RTE_CACHE_LINE_SIZE=64 > > +# Disable VIRTIO VECTOR support > +CONFIG_RTE_VIRTIO_INC_VECTOR=n > + > CONFIG_RTE_IXGBE_INC_VECTOR=n > -CONFIG_RTE_LIBRTE_VIRTIO_PMD=n > CONFIG_RTE_LIBRTE_IVSHMEM=n > CONFIG_RTE_LIBRTE_FM10K_PMD=n > CONFIG_RTE_LIBRTE_I40E_PMD=n > diff --git a/config/defconfig_i686-native-linuxapp-gcc > b/config/defconfig_i686-native-linuxapp-gcc > index a90de9b..a4b1c49 100644 > --- a/config/defconfig_i686-native-linuxapp-gcc > +++ b/config/defconfig_i686-native-linuxapp-gcc > @@ -49,3 +49,4 @@ CONFIG_RTE_LIBRTE_KNI=n > # Vectorized PMD is not supported on 32-bit > # > CONFIG_RTE_IXGBE_INC_VECTOR=n > +CONFIG_RTE_VIRTIO_INC_VECTOR=n > diff --git a/config/defconfig_i686-native-linuxapp-icc > b/config/defconfig_i686-native-linuxapp-icc > index c021321..f8eb6ad 100644 > --- a/config/defconfig_i686-native-linuxapp-icc > +++ b/config/defconfig_i686-native-linuxapp-icc > @@ -49,3 +49,4 @@ CONFIG_RTE_LIBRTE_KNI=n > # Vectorized PMD is not supported on 32-bit > # > CONFIG_RTE_IXGBE_INC_VECTOR=n > +CONFIG_RTE_VIRTIO_INC_VECTOR=n > diff --git a/drivers/net/virtio/Makefile b/drivers/net/virtio/Makefile > index 43835ba..25a842d 100644 > --- a/drivers/net/virtio/Makefile > +++ b/drivers/net/virtio/Makefile > @@ -50,7 +50,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_VIRTIO_PMD) += virtqueue.c > SRCS-$(CONFIG_RTE_LIBRTE_VIRTIO_PMD) += virtio_pci.c > SRCS-$(CONFIG_RTE_LIBRTE_VIRTIO_PMD) += virtio_rxtx.c > SRCS-$(CONFIG_RTE_LIBRTE_VIRTIO_PMD) += virtio_ethdev.c > -SRCS-$(CONFIG_RTE_LIBRTE_VIRTIO_PMD) += virtio_rxtx_simple.c > +SRCS-$(CONFIG_RTE_VIRTIO_INC_VECTOR) += virtio_rxtx_simple.c > > # this lib depends upon: > DEPDIRS-$(CONFIG_RTE_LIBRTE_VIRTIO_PMD) += lib/librte_eal lib/librte_ether > diff --git a/drivers/net/virtio/virtio_rxtx.c > b/drivers/net/virtio/virtio_rxtx.c > index 41a1366..d8169d1 100644 > --- a/drivers/net/virtio/virtio_rxtx.c > +++ b/drivers/net/virtio/virtio_rxtx.c > @@ -67,7 +67,9 @@ > #define VIRTIO_SIMPLE_FLAGS ((uint32_t)ETH_TXQ_FLAGS_NOMULTSEGS | \ > ETH_TXQ_FLAGS_NOOFFLOADS) > > +#ifdef RTE_VIRTIO_INC_VECTOR > static int use_simple_rxtx; > +#endif > > static void > vq_ring_free_chain(struct virtqueue *vq, uint16_t desc_idx) > @@ -307,12 +309,13 @@ virtio_dev_vring_start(struct virtqueue *vq, int > queue_type) > nbufs = 0; > error = ENOSPC; > > +#ifdef RTE_VIRTIO_INC_VECTOR > if (use_simple_rxtx) > for (i = 0; i < vq->vq_nentries; i++) { > vq->vq_ring.avail->ring[i] = i; > vq->vq_ring.desc[i].flags = > VRING_DESC_F_WRITE; > } > - > +#endif > memset(&vq->fake_mbuf, 0, sizeof(vq->fake_mbuf)); > for (i = 0; i < RTE_PMD_VIRTIO_RX_MAX_BURST; i++) > vq->sw_ring[vq->vq_nentries + i] = &vq->fake_mbuf; > @@ -325,9 +328,11 @@ virtio_dev_vring_start(struct virtqueue *vq, int > queue_type) > /****************************************** > * Enqueue allocated buffers * > *******************************************/ > +#ifdef RTE_VIRTIO_INC_VECTOR > if (use_simple_rxtx) > error = > virtqueue_enqueue_recv_refill_simple(vq, m); > else > +#endif > error = virtqueue_enqueue_recv_refill(vq, > m); > if (error) { > rte_pktmbuf_free(m); > @@ -340,6 +345,7 @@ virtio_dev_vring_start(struct virtqueue *vq, int > queue_type) > > PMD_INIT_LOG(DEBUG, "Allocated %d bufs", nbufs); > } else if (queue_type == VTNET_TQ) { > +#ifdef RTE_VIRTIO_INC_VECTOR > if (use_simple_rxtx) { > int mid_idx = vq->vq_nentries >> 1; > for (i = 0; i < mid_idx; i++) { > @@ -357,6 +363,7 @@ virtio_dev_vring_start(struct virtqueue *vq, int > queue_type) > for (i = mid_idx; i < vq->vq_nentries; i++) > vq->vq_ring.avail->ring[i] = i; > } > +#endif > } > } > > @@ -423,7 +430,9 @@ virtio_dev_rx_queue_setup(struct rte_eth_dev *dev, > > dev->data->rx_queues[queue_idx] = vq; > > +#ifdef RTE_VIRTIO_INC_VECTOR > virtio_rxq_vec_setup(vq); > +#endif > > return 0; > } > @@ -449,7 +458,10 @@ virtio_dev_tx_queue_setup(struct rte_eth_dev *dev, > const struct rte_eth_txconf *tx_conf) > { > uint8_t vtpci_queue_idx = 2 * queue_idx + VTNET_SQ_TQ_QUEUE_IDX; > + > +#ifdef RTE_VIRTIO_INC_VECTOR > struct virtio_hw *hw = dev->data->dev_private; > +#endif > struct virtqueue *vq; > uint16_t tx_free_thresh; > int ret; > @@ -462,6 +474,7 @@ virtio_dev_tx_queue_setup(struct rte_eth_dev *dev, > return -EINVAL; > } > > +#ifdef RTE_VIRTIO_INC_VECTOR > /* Use simple rx/tx func if single segment and no offloads */ > if ((tx_conf->txq_flags & VIRTIO_SIMPLE_FLAGS) == > VIRTIO_SIMPLE_FLAGS && > !vtpci_with_feature(hw, VIRTIO_NET_F_MRG_RXBUF)) { > @@ -470,6 +483,7 @@ virtio_dev_tx_queue_setup(struct rte_eth_dev *dev, > dev->rx_pkt_burst = virtio_recv_pkts_vec; > use_simple_rxtx = 1; > } > +#endif > > ret = virtio_dev_queue_setup(dev, VTNET_TQ, queue_idx, > vtpci_queue_idx, > nb_desc, socket_id, &vq); > diff --git a/drivers/net/virtio/virtio_rxtx.h > b/drivers/net/virtio/virtio_rxtx.h > index 831e492..9be1378 100644 > --- a/drivers/net/virtio/virtio_rxtx.h > +++ b/drivers/net/virtio/virtio_rxtx.h > @@ -33,7 +33,9 @@ > > #define RTE_PMD_VIRTIO_RX_MAX_BURST 64 > > +#ifdef RTE_VIRTIO_INC_VECTOR > int virtio_rxq_vec_setup(struct virtqueue *rxq); > > int virtqueue_enqueue_recv_refill_simple(struct virtqueue *vq, > struct rte_mbuf *m); > +#endif > -- > 1.7.9.5 > >