From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f43.google.com (mail-wm0-f43.google.com [74.125.82.43]) by dpdk.org (Postfix) with ESMTP id 4E7E9D21F for ; Tue, 11 Apr 2017 17:45:10 +0200 (CEST) Received: by mail-wm0-f43.google.com with SMTP id w204so14461891wmd.1 for ; Tue, 11 Apr 2017 08:45:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=Nhd8HsMfP7WDL0XsOIR8BOZoPyyHmGkytFC4oQNgREA=; b=VDUZhsMSkdc0BzL7uzf1DyKsKKy/64WE2zVjYA5N/yOPZOutPgLQBgBRzbzHIHB6S3 IPKIE5iISP2jIXM7Q1ez1WISli3TvThzHTzOFucK17rVLaHJ9fSGs/7u5m0oNc8dCOGT NyKswnLLK3mhaTiM/zAjN9shHSEp1oIfToWCmI799K3Yp/avSa5Cn5spu5iVn5y8LLV7 pIMBDp7CBcyxYwcvDGg1dJqDpKwZFcRkdrRD3SXEYasSkaaSxbqclxaaS0jjykV+R/bn oCykg51yq5eywlTXjOGmnRDVDKsN57x5jD1diUZ8qQLSVjL9qNEaPkwEVsGy31XsTuFj Zmag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=Nhd8HsMfP7WDL0XsOIR8BOZoPyyHmGkytFC4oQNgREA=; b=X5L+GU82bQEd0M40+7j12LJ2clX1EKudK/e+4wcpqEz05sXJgfWu/nozVJwlbDsrr9 omWjk/aY1zU9/jmyZaWzLa7GYhXmhcIUqwkb23Mw+8991Wj931ZDQchwrDrhi/oX0rmd 5fArm92uM0YroPlgvcCdoU0RmKyB5gIS4lNzh9savEByG0pQE0T66yH+JX9j4U2iWmni g2YX/JUZwJ9PwV4OMupBvjmf3/2gM9AmXQJFZ0YbRgcjv12tBww2Je2Zt2h/sc26FwlT 4mI2Ny4qrytYNAp/2DSdtUfxOVLtTdPDlA2HtXgFHVWD32w3WM5dAxgw6PssBu0CUt/B /qoA== X-Gm-Message-State: AN3rC/4cpyuo2kqRrTQgsfed/IybS/T3N6h2L/lOW05Emmex4wZTzNl6 qdpAdrM6OV4shcnNKlM= X-Received: by 10.28.0.201 with SMTP id 192mr11962991wma.126.1491925509686; Tue, 11 Apr 2017 08:45:09 -0700 (PDT) Received: from bidouze.dev.6wind.com (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id u63sm2933738wmu.22.2017.04.11.08.45.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 11 Apr 2017 08:45:08 -0700 (PDT) From: Gaetan Rivet To: dev@dpdk.org Cc: Jan Blunck Date: Tue, 11 Apr 2017 17:44:13 +0200 Message-Id: <5497f8018eb9de08571c1f7cde23411b0ba6cb0d.1491924900.git.gaetan.rivet@6wind.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: References: <1488794430-25179-1-git-send-email-jblunck@infradead.org> In-Reply-To: References: Subject: [dpdk-dev] [PATCH v2 06/42] net/vhost: use ethdev allocation helper for virtual devices 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: Tue, 11 Apr 2017 15:45:10 -0000 From: Jan Blunck Signed-off-by: Jan Blunck --- drivers/net/vhost/rte_eth_vhost.c | 54 +++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c index cdd8c31..9663e55 100644 --- a/drivers/net/vhost/rte_eth_vhost.c +++ b/drivers/net/vhost/rte_eth_vhost.c @@ -36,6 +36,7 @@ #include #include +#include #include #include #include @@ -983,9 +984,10 @@ static const struct eth_dev_ops ops = { static struct rte_vdev_driver pmd_vhost_drv; static int -eth_dev_vhost_create(const char *name, char *iface_name, int16_t queues, - const unsigned numa_node, uint64_t flags) +eth_dev_vhost_create(struct rte_vdev_device *dev, char *iface_name, + int16_t queues, const unsigned int numa_node, uint64_t flags) { + const char *name = rte_vdev_device_name(dev); struct rte_eth_dev_data *data = NULL; struct pmd_internal *internal = NULL; struct rte_eth_dev *eth_dev = NULL; @@ -996,23 +998,19 @@ eth_dev_vhost_create(const char *name, char *iface_name, int16_t queues, RTE_LOG(INFO, PMD, "Creating VHOST-USER backend on numa socket %u\n", numa_node); - /* now do all data allocation - for eth_dev structure, dummy pci driver - * and internal (private) data + /* now do all data allocation - for eth_dev structure and internal + * (private) data */ data = rte_zmalloc_socket(name, sizeof(*data), 0, numa_node); if (data == NULL) goto error; - internal = rte_zmalloc_socket(name, sizeof(*internal), 0, numa_node); - if (internal == NULL) - goto error; - list = rte_zmalloc_socket(name, sizeof(*list), 0, numa_node); if (list == NULL) goto error; /* reserve an ethdev entry */ - eth_dev = rte_eth_dev_allocate(name); + eth_dev = rte_eth_vdev_allocate(dev, sizeof(*internal)); if (eth_dev == NULL) goto error; @@ -1029,10 +1027,10 @@ eth_dev_vhost_create(const char *name, char *iface_name, int16_t queues, /* now put it all together * - store queue data in internal, - * - store numa_node info in ethdev data * - point eth_dev_data to internals * - and point eth_dev structure to new eth_dev_data structure */ + internal = eth_dev->data->dev_private; internal->dev_name = strdup(name); if (internal->dev_name == NULL) goto error; @@ -1048,26 +1046,21 @@ eth_dev_vhost_create(const char *name, char *iface_name, int16_t queues, rte_spinlock_init(&vring_state->lock); vring_states[eth_dev->data->port_id] = vring_state; - data->dev_private = internal; - data->port_id = eth_dev->data->port_id; - memmove(data->name, eth_dev->data->name, sizeof(data->name)); + /* We'll replace the 'data' originally allocated by eth_dev. So the + * vhost PMD resources won't be shared between multi processes. + */ + rte_memcpy(data, eth_dev->data, sizeof(*data)); + eth_dev->data = data; + data->nb_rx_queues = queues; data->nb_tx_queues = queues; internal->max_queues = queues; data->dev_link = pmd_link; data->mac_addrs = eth_addr; - - /* We'll replace the 'data' originally allocated by eth_dev. So the - * vhost PMD resources won't be shared between multi processes. - */ - eth_dev->data = data; - eth_dev->dev_ops = &ops; - eth_dev->driver = NULL; data->dev_flags = RTE_ETH_DEV_DETACHABLE | RTE_ETH_DEV_INTR_LSC; - data->kdrv = RTE_KDRV_NONE; - data->drv_name = pmd_vhost_drv.driver.name; - data->numa_node = numa_node; + + eth_dev->dev_ops = &ops; /* finally assign rx and tx ops */ eth_dev->rx_pkt_burst = eth_vhost_rx; @@ -1090,8 +1083,10 @@ eth_dev_vhost_create(const char *name, char *iface_name, int16_t queues, return data->port_id; error: - if (internal) + if (internal) { + free(internal->iface_name); free(internal->dev_name); + } rte_free(vring_state); rte_free(eth_addr); if (eth_dev) @@ -1134,7 +1129,6 @@ open_int(const char *key __rte_unused, const char *value, void *extra_args) static int rte_pmd_vhost_probe(struct rte_vdev_device *dev) { - const char *name; struct rte_kvargs *kvlist = NULL; int ret = 0; char *iface_name; @@ -1143,8 +1137,8 @@ rte_pmd_vhost_probe(struct rte_vdev_device *dev) int client_mode = 0; int dequeue_zero_copy = 0; - name = rte_vdev_device_name(dev); - RTE_LOG(INFO, PMD, "Initializing pmd_vhost for %s\n", name); + RTE_LOG(INFO, PMD, "Initializing pmd_vhost for %s\n", + rte_vdev_device_name(dev)); kvlist = rte_kvargs_parse(rte_vdev_device_args(dev), valid_arguments); if (kvlist == NULL) @@ -1189,7 +1183,11 @@ rte_pmd_vhost_probe(struct rte_vdev_device *dev) flags |= RTE_VHOST_USER_DEQUEUE_ZERO_COPY; } - eth_dev_vhost_create(name, iface_name, queues, rte_socket_id(), flags); + if (dev->device.numa_node == SOCKET_ID_ANY) + dev->device.numa_node = rte_socket_id(); + + eth_dev_vhost_create(dev, iface_name, queues, dev->device.numa_node, + flags); out_free: rte_kvargs_free(kvlist); -- 2.1.4