From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 7BBBFA0597; Wed, 8 Apr 2020 08:26:29 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 808513195; Wed, 8 Apr 2020 08:26:28 +0200 (CEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id 5D9C12C12 for ; Wed, 8 Apr 2020 08:26:26 +0200 (CEST) IronPort-SDR: RkEnW5ZnlLS6OGsD3wC2+wcEDgXa+dE7UahSimbVF8mJ3b2xJscBuJNwVPBYUt+9DkGa45VZOY Ae8x9jcytPLQ== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2020 23:26:25 -0700 IronPort-SDR: 81j5uQ+KGMB3cKTEAfgV6cbZ2DBame63G/oOabLHpCt7t1qVvVdXpTuq+0kxu2D2x/FrZYTeq8 4po8mkRKw24Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,357,1580803200"; d="scan'208";a="330448878" Received: from yexl-server.sh.intel.com (HELO localhost) ([10.67.117.17]) by orsmga001.jf.intel.com with ESMTP; 07 Apr 2020 23:26:23 -0700 Date: Wed, 8 Apr 2020 14:22:38 +0800 From: Ye Xiaolong To: Marvin Liu Cc: maxime.coquelin@redhat.com, zhihong.wang@intel.com, harry.van.haaren@intel.com, dev@dpdk.org Message-ID: <20200408062238.GC114503@intel.com> References: <20200313174230.74661-1-yong.liu@intel.com> <20200408085313.4487-1-yong.liu@intel.com> <20200408085313.4487-3-yong.liu@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200408085313.4487-3-yong.liu@intel.com> User-Agent: Mutt/1.9.4 (2018-02-28) Subject: Re: [dpdk-dev] [PATCH v3 2/7] net/virtio-user: add vectorized packed ring parameter X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 04/08, Marvin Liu wrote: >Add new parameter "packed_vec" which can disable vectorized packed ring >datapath explicitly. When "packed_vec" option is on, driver will check >packed ring vectorized datapath prerequisites. If any one of them not >matched, vectorized datapath won't be selected. > >Signed-off-by: Marvin Liu > >diff --git a/drivers/net/virtio/virtio_pci.h b/drivers/net/virtio/virtio_pci.h >index 7433d2f08..8103b7a18 100644 >--- a/drivers/net/virtio/virtio_pci.h >+++ b/drivers/net/virtio/virtio_pci.h >@@ -251,6 +251,8 @@ struct virtio_hw { > uint8_t use_msix; > uint8_t modern; > uint8_t use_simple_rx; >+ uint8_t packed_vec_rx; >+ uint8_t packed_vec_tx; > uint8_t use_inorder_rx; > uint8_t use_inorder_tx; > uint8_t weak_barriers; >diff --git a/drivers/net/virtio/virtio_user_ethdev.c b/drivers/net/virtio/virtio_user_ethdev.c >index e61af4068..399ac5511 100644 >--- a/drivers/net/virtio/virtio_user_ethdev.c >+++ b/drivers/net/virtio/virtio_user_ethdev.c >@@ -450,6 +450,8 @@ static const char *valid_args[] = { > VIRTIO_USER_ARG_IN_ORDER, > #define VIRTIO_USER_ARG_PACKED_VQ "packed_vq" > VIRTIO_USER_ARG_PACKED_VQ, >+#define VIRTIO_USER_ARG_PACKED_VEC "packed_vec" >+ VIRTIO_USER_ARG_PACKED_VEC, > NULL > }; > >@@ -552,6 +554,8 @@ virtio_user_pmd_probe(struct rte_vdev_device *dev) > uint64_t mrg_rxbuf = 1; > uint64_t in_order = 1; > uint64_t packed_vq = 0; >+ uint64_t packed_vec = 0; >+ > char *path = NULL; > char *ifname = NULL; > char *mac_addr = NULL; >@@ -668,6 +672,15 @@ virtio_user_pmd_probe(struct rte_vdev_device *dev) > } > } > >+ if (rte_kvargs_count(kvlist, VIRTIO_USER_ARG_PACKED_VEC) == 1) { >+ if (rte_kvargs_process(kvlist, VIRTIO_USER_ARG_PACKED_VEC, >+ &get_integer_arg, &packed_vec) < 0) { >+ PMD_INIT_LOG(ERR, "error to parse %s", >+ VIRTIO_USER_ARG_PACKED_VQ); >+ goto end; >+ } >+ } >+ > if (queues > 1 && cq == 0) { > PMD_INIT_LOG(ERR, "multi-q requires ctrl-q"); > goto end; >@@ -705,6 +718,17 @@ virtio_user_pmd_probe(struct rte_vdev_device *dev) > } > > hw = eth_dev->data->dev_private; >+#if defined(RTE_ARCH_X86) && defined(CC_AVX512_SUPPORT) >+ if (packed_vec) { >+ hw->packed_vec_rx = 1; >+ hw->packed_vec_tx = 1; >+ } >+#else >+ if (packed_vec) >+ PMD_INIT_LOG(ERR, "building environment not match vectorized " >+ "packed ring datapath requirement"); Minor nit: s/not match/doesn't match/ And better to avoid breaking error message strings across multiple source lines. It makes it harder to use tools like grep to find errors in source. E.g. user uses "vectorized packed ring datapath" to grep the code. Thanks, Xiaolong >+#endif >+ > if (virtio_user_dev_init(hw->virtio_user_dev, path, queues, cq, > queue_size, mac_addr, &ifname, server_mode, > mrg_rxbuf, in_order, packed_vq) < 0) { >@@ -777,4 +801,5 @@ RTE_PMD_REGISTER_PARAM_STRING(net_virtio_user, > "server=<0|1> " > "mrg_rxbuf=<0|1> " > "in_order=<0|1> " >- "packed_vq=<0|1>"); >+ "packed_vq=<0|1>" >+ "packed_vec=<0|1>"); >-- >2.17.1 >