From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by dpdk.org (Postfix) with ESMTP id 5F3CE1BB15 for ; Wed, 27 Jun 2018 08:53:37 +0200 (CEST) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id CD65481A4EA6; Wed, 27 Jun 2018 06:53:36 +0000 (UTC) Received: from [10.36.112.39] (ovpn-112-39.ams2.redhat.com [10.36.112.39]) by smtp.corp.redhat.com (Postfix) with ESMTPS id CE3811C5B3; Wed, 27 Jun 2018 06:53:35 +0000 (UTC) To: Marvin Liu , tiwei.bie@intel.com Cc: zhihong.wang@intel.com, dev@dpdk.org References: <20180625151710.29437-1-yong.liu@intel.com> <20180625151710.29437-4-yong.liu@intel.com> From: Maxime Coquelin Message-ID: <42496d13-3583-4ef4-a813-3157cdce48de@redhat.com> Date: Wed, 27 Jun 2018 08:53:33 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: <20180625151710.29437-4-yong.liu@intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.8]); Wed, 27 Jun 2018 06:53:36 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.8]); Wed, 27 Jun 2018 06:53:36 +0000 (UTC) for IP:'10.11.54.5' DOMAIN:'int-mx05.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'maxime.coquelin@redhat.com' RCPT:'' Subject: Re: [dpdk-dev] [PATCH v2 3/8] net/virtio-user: add mrg_rxbuf and in_order vdev parameters 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: , X-List-Received-Date: Wed, 27 Jun 2018 06:53:37 -0000 On 06/25/2018 05:17 PM, Marvin Liu wrote: > Add parameters for configuring VIRTIO_NET_F_MRG_RXBUF and > VIRTIO_F_IN_ORDER feature bits. If feature is disabled, also update > corresponding unsupported feature bit. > > Signed-off-by: Marvin Liu > > diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.c b/drivers/net/virtio/virtio_user/virtio_user_dev.c > index 360a92eae..34a7f53ac 100644 > --- a/drivers/net/virtio/virtio_user/virtio_user_dev.c > +++ b/drivers/net/virtio/virtio_user/virtio_user_dev.c > @@ -375,7 +375,8 @@ virtio_user_dev_setup(struct virtio_user_dev *dev) > > int > virtio_user_dev_init(struct virtio_user_dev *dev, char *path, int queues, > - int cq, int queue_size, const char *mac, char **ifname) > + int cq, int queue_size, const char *mac, char **ifname, > + int mrg_rxbuf, int in_order) > { > pthread_mutex_init(&dev->mutex, NULL); > snprintf(dev->path, PATH_MAX, "%s", path); > @@ -420,6 +421,16 @@ virtio_user_dev_init(struct virtio_user_dev *dev, char *path, int queues, > dev->device_features = VIRTIO_USER_SUPPORTED_FEATURES; > } > > + if (!mrg_rxbuf) { > + dev->device_features &= ~(1ull << VIRTIO_NET_F_MRG_RXBUF); > + dev->unmask_features |= (1ull << VIRTIO_NET_F_MRG_RXBUF); > + } > + > + if (!in_order) { > + dev->device_features &= ~(1ull << VIRTIO_F_IN_ORDER); > + dev->unmask_features |= (1ull << VIRTIO_F_IN_ORDER); > + } > + > if (dev->mac_specified) > dev->device_features |= (1ull << VIRTIO_NET_F_MAC); > else { > diff --git a/drivers/net/virtio/virtio_user/virtio_user_dev.h b/drivers/net/virtio/virtio_user/virtio_user_dev.h > index a1da5f56c..b97eec075 100644 > --- a/drivers/net/virtio/virtio_user/virtio_user_dev.h > +++ b/drivers/net/virtio/virtio_user/virtio_user_dev.h > @@ -48,7 +48,8 @@ int is_vhost_user_by_type(const char *path); > int virtio_user_start_device(struct virtio_user_dev *dev); > int virtio_user_stop_device(struct virtio_user_dev *dev); > int virtio_user_dev_init(struct virtio_user_dev *dev, char *path, int queues, > - int cq, int queue_size, const char *mac, char **ifname); > + int cq, int queue_size, const char *mac, char **ifname, > + int mrg_rxbuf, int in_order); > void virtio_user_dev_uninit(struct virtio_user_dev *dev); > void virtio_user_handle_cq(struct virtio_user_dev *dev, uint16_t queue_idx); > uint8_t virtio_user_handle_mq(struct virtio_user_dev *dev, uint16_t q_pairs); > diff --git a/drivers/net/virtio/virtio_user_ethdev.c b/drivers/net/virtio/virtio_user_ethdev.c > index 0c02c6851..e9a5039aa 100644 > --- a/drivers/net/virtio/virtio_user_ethdev.c > +++ b/drivers/net/virtio/virtio_user_ethdev.c > @@ -358,8 +358,12 @@ static const char *valid_args[] = { > VIRTIO_USER_ARG_QUEUE_SIZE, > #define VIRTIO_USER_ARG_INTERFACE_NAME "iface" > VIRTIO_USER_ARG_INTERFACE_NAME, > -#define VIRTIO_USER_ARG_SERVER_MODE "server" > +#define VIRTIO_USER_ARG_SERVER_MODE "server" > VIRTIO_USER_ARG_SERVER_MODE, > +#define VIRTIO_USER_ARG_MRG_RXBUF "mrg_rxbuf" > + VIRTIO_USER_ARG_MRG_RXBUF, > +#define VIRTIO_USER_ARG_IN_ORDER "in_order" > + VIRTIO_USER_ARG_IN_ORDER, > NULL > }; > > @@ -462,6 +466,8 @@ virtio_user_pmd_probe(struct rte_vdev_device *dev) > uint64_t cq = VIRTIO_USER_DEF_CQ_EN; > uint64_t queue_size = VIRTIO_USER_DEF_Q_SZ; > uint64_t server_mode = VIRTIO_USER_DEF_SERVER_MODE; > + uint64_t mrg_rxbuf = 1; > + uint64_t in_order = 1; > char *path = NULL; > char *ifname = NULL; > char *mac_addr = NULL; > @@ -561,6 +567,24 @@ virtio_user_pmd_probe(struct rte_vdev_device *dev) > goto end; > } > > + if (rte_kvargs_count(kvlist, VIRTIO_USER_ARG_MRG_RXBUF) == 1) { > + if (rte_kvargs_process(kvlist, VIRTIO_USER_ARG_MRG_RXBUF, > + &get_integer_arg, &mrg_rxbuf) < 0) { > + PMD_INIT_LOG(ERR, "error to parse %s", > + VIRTIO_USER_ARG_MRG_RXBUF); > + goto end; > + } > + } > + > + if (rte_kvargs_count(kvlist, VIRTIO_USER_ARG_IN_ORDER) == 1) { > + if (rte_kvargs_process(kvlist, VIRTIO_USER_ARG_IN_ORDER, > + &get_integer_arg, &in_order) < 0) { > + PMD_INIT_LOG(ERR, "error to parse %s", > + VIRTIO_USER_ARG_IN_ORDER); > + goto end; > + } > + } > + > if (rte_eal_process_type() == RTE_PROC_PRIMARY) { > struct virtio_user_dev *vu_dev; > > @@ -577,7 +601,8 @@ virtio_user_pmd_probe(struct rte_vdev_device *dev) > else > vu_dev->is_server = false; > if (virtio_user_dev_init(hw->virtio_user_dev, path, queues, cq, > - queue_size, mac_addr, &ifname) < 0) { > + queue_size, mac_addr, &ifname, mrg_rxbuf, > + in_order) < 0) { Doesn't the indent change looks weird here? > PMD_INIT_LOG(ERR, "virtio_user_dev_init fails"); > virtio_user_eth_dev_free(eth_dev); > goto end; > @@ -655,4 +680,6 @@ RTE_PMD_REGISTER_PARAM_STRING(net_virtio_user, > "cq= " > "queue_size= " > "queues= " > - "iface="); > + "iface=" > + "mrg_rxbuf=<0|1>" > + "in_order=<0|1>"); > Maybe the new options should be documented? Regards, Maxime