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 0EF39A046B for ; Tue, 23 Jul 2019 03:01:26 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C4BB41BEE6; Tue, 23 Jul 2019 03:01:25 +0200 (CEST) Received: from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129]) by dpdk.org (Postfix) with ESMTP id 8B3A51BEDA for ; Tue, 23 Jul 2019 03:01:24 +0200 (CEST) Received: from Internal Mail-Server by MTLPINE2 (envelope-from yskoh@mellanox.com) with ESMTPS (AES256-SHA encrypted); 23 Jul 2019 04:01:22 +0300 Received: from scfae-sc-2.mti.labs.mlnx (scfae-sc-2.mti.labs.mlnx [10.101.0.96]) by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id x6N11Hen026580; Tue, 23 Jul 2019 04:01:21 +0300 From: Yongseok Koh To: Jianfeng Tan Cc: Bruce Richardson , Qi Zhang , dpdk stable Date: Mon, 22 Jul 2019 17:59:30 -0700 Message-Id: <20190723010115.6446-3-yskoh@mellanox.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190723010115.6446-1-yskoh@mellanox.com> References: <20190723010115.6446-1-yskoh@mellanox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'drivers/net: do not use private ethdev data' has been queued to LTS release 17.11.7 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Hi, FYI, your patch has been queued to LTS release 17.11.7 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objection by 07/27/19. So please shout if anyone has objection. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Thanks. Yongseok --- >From dbe11dd6d5af06df1f811b838ab15e0e69380a6e Mon Sep 17 00:00:00 2001 From: Jianfeng Tan Date: Tue, 24 Apr 2018 05:51:23 +0000 Subject: [PATCH] drivers/net: do not use private ethdev data [ backported from upstream commit 5f19dee604ed5760d819743d1d364493ead2aae6 ] We introduced private rte_eth_dev_data to allow vdev to be created both in primary process and secondary process(es). This is not friendly to multi-process model, for example, it leads to port id contention issue if two processes both find the data entry is free. And to get stats of primary vdev in secondary, we must allocate from the pre-defined array so that we can find it. Suggested-by: Bruce Richardson Signed-off-by: Jianfeng Tan Reviewed-by: Qi Zhang --- drivers/net/af_packet/rte_eth_af_packet.c | 26 ++++++----------------- drivers/net/cxgbe/cxgbe_main.c | 1 - drivers/net/kni/rte_eth_kni.c | 14 ++---------- drivers/net/null/rte_eth_null.c | 18 +++------------- drivers/net/octeontx/octeontx_ethdev.c | 15 ++----------- drivers/net/pcap/rte_eth_pcap.c | 19 +++-------------- drivers/net/ring/rte_eth_ring.c | 17 +-------------- drivers/net/tap/rte_eth_tap.c | 11 +--------- drivers/net/vhost/rte_eth_vhost.c | 19 ++--------------- 9 files changed, 21 insertions(+), 119 deletions(-) diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c index fba8575549..5cb348f675 100644 --- a/drivers/net/af_packet/rte_eth_af_packet.c +++ b/drivers/net/af_packet/rte_eth_af_packet.c @@ -593,25 +593,17 @@ rte_pmd_init_internals(struct rte_vdev_device *dev, RTE_LOG(ERR, PMD, "%s: no interface specified for AF_PACKET ethdev\n", name); - goto error_early; + return -1; } RTE_LOG(INFO, PMD, "%s: creating AF_PACKET-backed ethdev on numa socket %u\n", name, numa_node); - /* - * now do all data allocation - for eth_dev structure, dummy pci driver - * and internal (private) data - */ - data = rte_zmalloc_socket(name, sizeof(*data), 0, numa_node); - if (data == NULL) - goto error_early; - *internals = rte_zmalloc_socket(name, sizeof(**internals), 0, numa_node); if (*internals == NULL) - goto error_early; + return -1; for (q = 0; q < nb_queues; q++) { (*internals)->rx_queue[q].map = MAP_FAILED; @@ -633,24 +625,24 @@ rte_pmd_init_internals(struct rte_vdev_device *dev, RTE_LOG(ERR, PMD, "%s: I/F name too long (%s)\n", name, pair->value); - goto error_early; + return -1; } if (ioctl(sockfd, SIOCGIFINDEX, &ifr) == -1) { RTE_LOG(ERR, PMD, "%s: ioctl failed (SIOCGIFINDEX)\n", name); - goto error_early; + return -1; } (*internals)->if_name = strdup(pair->value); if ((*internals)->if_name == NULL) - goto error_early; + return -1; (*internals)->if_index = ifr.ifr_ifindex; if (ioctl(sockfd, SIOCGIFHWADDR, &ifr) == -1) { RTE_LOG(ERR, PMD, "%s: ioctl failed (SIOCGIFHWADDR)\n", name); - goto error_early; + return -1; } memcpy(&(*internals)->eth_addr, ifr.ifr_hwaddr.sa_data, ETH_ALEN); @@ -804,14 +796,13 @@ rte_pmd_init_internals(struct rte_vdev_device *dev, (*internals)->nb_queues = nb_queues; - rte_memcpy(data, (*eth_dev)->data, sizeof(*data)); + data = (*eth_dev)->data; data->dev_private = *internals; data->nb_rx_queues = (uint16_t)nb_queues; data->nb_tx_queues = (uint16_t)nb_queues; data->dev_link = pmd_link; data->mac_addrs = &(*internals)->eth_addr; - (*eth_dev)->data = data; (*eth_dev)->dev_ops = &ops; return 0; @@ -831,8 +822,6 @@ error: } free((*internals)->if_name); rte_free(*internals); -error_early: - rte_free(data); return -1; } @@ -1014,7 +1003,6 @@ rte_pmd_af_packet_remove(struct rte_vdev_device *dev) free(internals->if_name); rte_free(eth_dev->data->dev_private); - rte_free(eth_dev->data); rte_eth_dev_release_port(eth_dev); diff --git a/drivers/net/cxgbe/cxgbe_main.c b/drivers/net/cxgbe/cxgbe_main.c index 5b828c237b..71dfa431aa 100644 --- a/drivers/net/cxgbe/cxgbe_main.c +++ b/drivers/net/cxgbe/cxgbe_main.c @@ -57,7 +57,6 @@ #include #include #include -#include #include #include diff --git a/drivers/net/kni/rte_eth_kni.c b/drivers/net/kni/rte_eth_kni.c index 5c7950117b..218d5eb583 100644 --- a/drivers/net/kni/rte_eth_kni.c +++ b/drivers/net/kni/rte_eth_kni.c @@ -366,25 +366,17 @@ eth_kni_create(struct rte_vdev_device *vdev, struct pmd_internals *internals; struct rte_eth_dev_data *data; struct rte_eth_dev *eth_dev; - const char *name; RTE_LOG(INFO, PMD, "Creating kni ethdev on numa socket %u\n", numa_node); - name = rte_vdev_device_name(vdev); - data = rte_zmalloc_socket(name, sizeof(*data), 0, numa_node); - if (data == NULL) - return NULL; - /* reserve an ethdev entry */ eth_dev = rte_eth_vdev_allocate(vdev, sizeof(*internals)); - if (eth_dev == NULL) { - rte_free(data); + if (!eth_dev) return NULL; - } internals = eth_dev->data->dev_private; - rte_memcpy(data, eth_dev->data, sizeof(*data)); + data = eth_dev->data; data->nb_rx_queues = 1; data->nb_tx_queues = 1; data->dev_link = pmd_link; @@ -392,7 +384,6 @@ eth_kni_create(struct rte_vdev_device *vdev, eth_random_addr(internals->eth_addr.addr_bytes); - eth_dev->data = data; eth_dev->dev_ops = ð_kni_ops; internals->no_request_thread = args->no_request_thread; @@ -488,7 +479,6 @@ eth_kni_remove(struct rte_vdev_device *vdev) rte_kni_release(internals->kni); rte_free(internals); - rte_free(eth_dev->data); rte_eth_dev_release_port(eth_dev); diff --git a/drivers/net/null/rte_eth_null.c b/drivers/net/null/rte_eth_null.c index 7a5f125707..2ead071402 100644 --- a/drivers/net/null/rte_eth_null.c +++ b/drivers/net/null/rte_eth_null.c @@ -483,7 +483,7 @@ eth_dev_null_create(struct rte_vdev_device *dev, { const unsigned nb_rx_queues = 1; const unsigned nb_tx_queues = 1; - struct rte_eth_dev_data *data = NULL; + struct rte_eth_dev_data *data; struct pmd_internals *internals = NULL; struct rte_eth_dev *eth_dev = NULL; @@ -500,19 +500,9 @@ eth_dev_null_create(struct rte_vdev_device *dev, RTE_LOG(INFO, PMD, "Creating null ethdev on numa socket %u\n", dev->device.numa_node); - /* now do all data allocation - for eth_dev structure, dummy pci driver - * and internal (private) data - */ - data = rte_zmalloc_socket(rte_vdev_device_name(dev), sizeof(*data), 0, - dev->device.numa_node); - if (!data) - return -ENOMEM; - eth_dev = rte_eth_vdev_allocate(dev, sizeof(*internals)); - if (!eth_dev) { - rte_free(data); + if (!eth_dev) return -ENOMEM; - } /* now put it all together * - store queue data in internals, @@ -533,13 +523,12 @@ eth_dev_null_create(struct rte_vdev_device *dev, rte_memcpy(internals->rss_key, default_rss_key, 40); - rte_memcpy(data, eth_dev->data, sizeof(*data)); + data = eth_dev->data; data->nb_rx_queues = (uint16_t)nb_rx_queues; data->nb_tx_queues = (uint16_t)nb_tx_queues; data->dev_link = pmd_link; data->mac_addrs = ð_addr; - eth_dev->data = data; eth_dev->dev_ops = &ops; /* finally assign rx and tx ops */ @@ -657,7 +646,6 @@ rte_pmd_null_remove(struct rte_vdev_device *dev) return -1; rte_free(eth_dev->data->dev_private); - rte_free(eth_dev->data); rte_eth_dev_release_port(eth_dev); diff --git a/drivers/net/octeontx/octeontx_ethdev.c b/drivers/net/octeontx/octeontx_ethdev.c index 049bc32b43..12e3b2df3d 100644 --- a/drivers/net/octeontx/octeontx_ethdev.c +++ b/drivers/net/octeontx/octeontx_ethdev.c @@ -1033,7 +1033,7 @@ octeontx_create(struct rte_vdev_device *dev, int port, uint8_t evdev, char octtx_name[OCTEONTX_MAX_NAME_LEN]; struct octeontx_nic *nic = NULL; struct rte_eth_dev *eth_dev = NULL; - struct rte_eth_dev_data *data = NULL; + struct rte_eth_dev_data *data; const char *name = rte_vdev_device_name(dev); PMD_INIT_FUNC_TRACE(); @@ -1049,13 +1049,6 @@ octeontx_create(struct rte_vdev_device *dev, int port, uint8_t evdev, return 0; } - data = rte_zmalloc_socket(octtx_name, sizeof(*data), 0, socket_id); - if (data == NULL) { - octeontx_log_err("failed to allocate devdata"); - res = -ENOMEM; - goto err; - } - nic = rte_zmalloc_socket(octtx_name, sizeof(*nic), 0, socket_id); if (nic == NULL) { octeontx_log_err("failed to allocate nic structure"); @@ -1091,11 +1084,9 @@ octeontx_create(struct rte_vdev_device *dev, int port, uint8_t evdev, eth_dev->data->kdrv = RTE_KDRV_NONE; eth_dev->data->numa_node = dev->device.numa_node; - rte_memcpy(data, (eth_dev)->data, sizeof(*data)); + data = eth_dev->data; data->dev_private = nic; - data->port_id = eth_dev->data->port_id; - snprintf(data->name, sizeof(data->name), "%s", eth_dev->data->name); nic->ev_queues = 1; nic->ev_ports = 1; @@ -1114,7 +1105,6 @@ octeontx_create(struct rte_vdev_device *dev, int port, uint8_t evdev, goto err; } - eth_dev->data = data; eth_dev->dev_ops = &octeontx_dev_ops; /* Finally save ethdev pointer to the NIC structure */ @@ -1182,7 +1172,6 @@ octeontx_remove(struct rte_vdev_device *dev) rte_free(eth_dev->data->mac_addrs); rte_free(eth_dev->data->dev_private); - rte_free(eth_dev->data); rte_eth_dev_release_port(eth_dev); rte_event_dev_close(nic->evdev); } diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c index f71ba001e1..89ff6c3f32 100644 --- a/drivers/net/pcap/rte_eth_pcap.c +++ b/drivers/net/pcap/rte_eth_pcap.c @@ -801,27 +801,16 @@ pmd_init_internals(struct rte_vdev_device *vdev, struct pmd_internals **internals, struct rte_eth_dev **eth_dev) { - struct rte_eth_dev_data *data = NULL; + struct rte_eth_dev_data *data; unsigned int numa_node = vdev->device.numa_node; - const char *name; - name = rte_vdev_device_name(vdev); RTE_LOG(INFO, PMD, "Creating pcap-backed ethdev on numa socket %d\n", numa_node); - /* 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) - return -1; - /* reserve an ethdev entry */ *eth_dev = rte_eth_vdev_allocate(vdev, sizeof(**internals)); - if (*eth_dev == NULL) { - rte_free(data); + if (!(*eth_dev)) return -1; - } /* now put it all together * - store queue data in internals, @@ -830,7 +819,7 @@ pmd_init_internals(struct rte_vdev_device *vdev, * - and point eth_dev structure to new eth_dev_data structure */ *internals = (*eth_dev)->data->dev_private; - rte_memcpy(data, (*eth_dev)->data, sizeof(*data)); + data = (*eth_dev)->data; data->nb_rx_queues = (uint16_t)nb_rx_queues; data->nb_tx_queues = (uint16_t)nb_tx_queues; data->dev_link = pmd_link; @@ -840,7 +829,6 @@ pmd_init_internals(struct rte_vdev_device *vdev, * NOTE: we'll replace the data element, of originally allocated * eth_dev so the rings are local per-process */ - (*eth_dev)->data = data; (*eth_dev)->dev_ops = &ops; return 0; @@ -1034,7 +1022,6 @@ pmd_pcap_remove(struct rte_vdev_device *dev) return -1; rte_free(eth_dev->data->dev_private); - rte_free(eth_dev->data); rte_eth_dev_release_port(eth_dev); diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c index dbd350e183..77976ce777 100644 --- a/drivers/net/ring/rte_eth_ring.c +++ b/drivers/net/ring/rte_eth_ring.c @@ -288,15 +288,6 @@ do_eth_dev_ring_create(const char *name, RTE_LOG(INFO, PMD, "Creating rings-backed ethdev on numa socket %u\n", numa_node); - /* now do all data allocation - for eth_dev structure, dummy pci driver - * and internal (private) data - */ - data = rte_zmalloc_socket(name, sizeof(*data), 0, numa_node); - if (data == NULL) { - rte_errno = ENOMEM; - goto error; - } - rx_queues_local = rte_zmalloc_socket(name, sizeof(void *) * nb_rx_queues, 0, numa_node); if (rx_queues_local == NULL) { @@ -330,10 +321,8 @@ do_eth_dev_ring_create(const char *name, * - point eth_dev_data to internals * - and point eth_dev structure to new eth_dev_data structure */ - /* NOTE: we'll replace the data element, of originally allocated eth_dev - * so the rings are local per-process */ - rte_memcpy(data, eth_dev->data, sizeof(*data)); + data = eth_dev->data; data->rx_queues = rx_queues_local; data->tx_queues = tx_queues_local; @@ -355,7 +344,6 @@ do_eth_dev_ring_create(const char *name, data->dev_link = pmd_link; data->mac_addrs = &internals->address; - eth_dev->data = data; eth_dev->dev_ops = &ops; data->kdrv = RTE_KDRV_NONE; data->numa_node = numa_node; @@ -371,7 +359,6 @@ do_eth_dev_ring_create(const char *name, error: rte_free(rx_queues_local); rte_free(tx_queues_local); - rte_free(data); rte_free(internals); return -1; @@ -704,8 +691,6 @@ rte_pmd_ring_remove(struct rte_vdev_device *dev) rte_free(eth_dev->data->tx_queues); rte_free(eth_dev->data->dev_private); - rte_free(eth_dev->data); - rte_eth_dev_release_port(eth_dev); return 0; } diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c index bd2b4d9958..220421623b 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c @@ -1253,12 +1253,6 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name, RTE_LOG(DEBUG, PMD, " TAP device on numa %u\n", rte_socket_id()); - data = rte_zmalloc_socket(tap_name, sizeof(*data), 0, numa_node); - if (!data) { - RTE_LOG(ERR, PMD, "TAP Failed to allocate data\n"); - goto error_exit_nodev; - } - dev = rte_eth_vdev_allocate(vdev, sizeof(*pmd)); if (!dev) { RTE_LOG(ERR, PMD, "TAP Unable to allocate device struct\n"); @@ -1278,7 +1272,7 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name, } /* Setup some default values */ - rte_memcpy(data, dev->data, sizeof(*data)); + data = dev->data; data->dev_private = pmd; data->dev_flags = RTE_ETH_DEV_INTR_LSC; data->numa_node = numa_node; @@ -1289,7 +1283,6 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name, data->nb_rx_queues = 0; data->nb_tx_queues = 0; - dev->data = data; dev->dev_ops = &ops; dev->rx_pkt_burst = pmd_rx_burst; dev->tx_pkt_burst = pmd_tx_burst; @@ -1440,7 +1433,6 @@ error_exit_nodev: RTE_LOG(ERR, PMD, "TAP Unable to initialize %s\n", rte_vdev_device_name(vdev)); - rte_free(data); return -EINVAL; } @@ -1611,7 +1603,6 @@ rte_pmd_tap_remove(struct rte_vdev_device *dev) close(internals->ioctl_sock); rte_free(eth_dev->data->dev_private); - rte_free(eth_dev->data); rte_eth_dev_release_port(eth_dev); diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c index 0ba25b531f..7b7780c9c4 100644 --- a/drivers/net/vhost/rte_eth_vhost.c +++ b/drivers/net/vhost/rte_eth_vhost.c @@ -1041,7 +1041,7 @@ 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 rte_eth_dev_data *data; struct pmd_internal *internal = NULL; struct rte_eth_dev *eth_dev = NULL; struct ether_addr *eth_addr = NULL; @@ -1051,13 +1051,6 @@ eth_dev_vhost_create(struct rte_vdev_device *dev, char *iface_name, RTE_LOG(INFO, PMD, "Creating VHOST-USER backend on numa socket %u\n", numa_node); - /* 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; - list = rte_zmalloc_socket(name, sizeof(*list), 0, numa_node); if (list == NULL) goto error; @@ -1099,12 +1092,7 @@ eth_dev_vhost_create(struct rte_vdev_device *dev, char *iface_name, rte_spinlock_init(&vring_state->lock); vring_states[eth_dev->data->port_id] = vring_state; - /* 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 = eth_dev->data; data->nb_rx_queues = queues; data->nb_tx_queues = queues; internal->max_queues = queues; @@ -1146,7 +1134,6 @@ error: rte_eth_dev_release_port(eth_dev); rte_free(internal); rte_free(list); - rte_free(data); return -1; } @@ -1277,8 +1264,6 @@ rte_pmd_vhost_remove(struct rte_vdev_device *dev) rte_free(vring_states[eth_dev->data->port_id]); vring_states[eth_dev->data->port_id] = NULL; - rte_free(eth_dev->data); - rte_eth_dev_release_port(eth_dev); return 0; -- 2.21.0 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2019-07-22 17:55:06.688256683 -0700 +++ 0003-drivers-net-do-not-use-private-ethdev-data.patch 2019-07-22 17:55:05.733467000 -0700 @@ -1,8 +1,10 @@ -From 5f19dee604ed5760d819743d1d364493ead2aae6 Mon Sep 17 00:00:00 2001 +From dbe11dd6d5af06df1f811b838ab15e0e69380a6e Mon Sep 17 00:00:00 2001 From: Jianfeng Tan Date: Tue, 24 Apr 2018 05:51:23 +0000 Subject: [PATCH] drivers/net: do not use private ethdev data +[ backported from upstream commit 5f19dee604ed5760d819743d1d364493ead2aae6 ] + We introduced private rte_eth_dev_data to allow vdev to be created both in primary process and secondary process(es). This is not friendly to multi-process model, for example, it leads to port id @@ -18,19 +20,19 @@ drivers/net/af_packet/rte_eth_af_packet.c | 26 ++++++----------------- drivers/net/cxgbe/cxgbe_main.c | 1 - drivers/net/kni/rte_eth_kni.c | 14 ++---------- - drivers/net/null/rte_eth_null.c | 19 ++++------------- + drivers/net/null/rte_eth_null.c | 18 +++------------- drivers/net/octeontx/octeontx_ethdev.c | 15 ++----------- drivers/net/pcap/rte_eth_pcap.c | 19 +++-------------- drivers/net/ring/rte_eth_ring.c | 17 +-------------- drivers/net/tap/rte_eth_tap.c | 11 +--------- drivers/net/vhost/rte_eth_vhost.c | 19 ++--------------- - 9 files changed, 22 insertions(+), 119 deletions(-) + 9 files changed, 21 insertions(+), 119 deletions(-) diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c -index 57eccfd047..110e8a5cc6 100644 +index fba8575549..5cb348f675 100644 --- a/drivers/net/af_packet/rte_eth_af_packet.c +++ b/drivers/net/af_packet/rte_eth_af_packet.c -@@ -564,25 +564,17 @@ rte_pmd_init_internals(struct rte_vdev_device *dev, +@@ -593,25 +593,17 @@ rte_pmd_init_internals(struct rte_vdev_device *dev, RTE_LOG(ERR, PMD, "%s: no interface specified for AF_PACKET ethdev\n", name); @@ -58,7 +60,7 @@ for (q = 0; q < nb_queues; q++) { (*internals)->rx_queue[q].map = MAP_FAILED; -@@ -604,24 +596,24 @@ rte_pmd_init_internals(struct rte_vdev_device *dev, +@@ -633,24 +625,24 @@ rte_pmd_init_internals(struct rte_vdev_device *dev, RTE_LOG(ERR, PMD, "%s: I/F name too long (%s)\n", name, pair->value); @@ -87,7 +89,7 @@ } memcpy(&(*internals)->eth_addr, ifr.ifr_hwaddr.sa_data, ETH_ALEN); -@@ -775,14 +767,13 @@ rte_pmd_init_internals(struct rte_vdev_device *dev, +@@ -804,14 +796,13 @@ rte_pmd_init_internals(struct rte_vdev_device *dev, (*internals)->nb_queues = nb_queues; @@ -103,7 +105,7 @@ (*eth_dev)->dev_ops = &ops; return 0; -@@ -802,8 +793,6 @@ error: +@@ -831,8 +822,6 @@ error: } free((*internals)->if_name); rte_free(*internals); @@ -112,7 +114,7 @@ return -1; } -@@ -985,7 +974,6 @@ rte_pmd_af_packet_remove(struct rte_vdev_device *dev) +@@ -1014,7 +1003,6 @@ rte_pmd_af_packet_remove(struct rte_vdev_device *dev) free(internals->if_name); rte_free(eth_dev->data->dev_private); @@ -121,22 +123,22 @@ rte_eth_dev_release_port(eth_dev); diff --git a/drivers/net/cxgbe/cxgbe_main.c b/drivers/net/cxgbe/cxgbe_main.c -index c786a1a363..74bccd514b 100644 +index 5b828c237b..71dfa431aa 100644 --- a/drivers/net/cxgbe/cxgbe_main.c +++ b/drivers/net/cxgbe/cxgbe_main.c -@@ -29,7 +29,6 @@ +@@ -57,7 +57,6 @@ #include - #include + #include #include -#include #include #include - #include + diff --git a/drivers/net/kni/rte_eth_kni.c b/drivers/net/kni/rte_eth_kni.c -index c10e970c21..b7897b6563 100644 +index 5c7950117b..218d5eb583 100644 --- a/drivers/net/kni/rte_eth_kni.c +++ b/drivers/net/kni/rte_eth_kni.c -@@ -336,25 +336,17 @@ eth_kni_create(struct rte_vdev_device *vdev, +@@ -366,25 +366,17 @@ eth_kni_create(struct rte_vdev_device *vdev, struct pmd_internals *internals; struct rte_eth_dev_data *data; struct rte_eth_dev *eth_dev; @@ -164,7 +166,7 @@ data->nb_rx_queues = 1; data->nb_tx_queues = 1; data->dev_link = pmd_link; -@@ -362,7 +354,6 @@ eth_kni_create(struct rte_vdev_device *vdev, +@@ -392,7 +384,6 @@ eth_kni_create(struct rte_vdev_device *vdev, eth_random_addr(internals->eth_addr.addr_bytes); @@ -172,7 +174,7 @@ eth_dev->dev_ops = ð_kni_ops; internals->no_request_thread = args->no_request_thread; -@@ -458,7 +449,6 @@ eth_kni_remove(struct rte_vdev_device *vdev) +@@ -488,7 +479,6 @@ eth_kni_remove(struct rte_vdev_device *vdev) rte_kni_release(internals->kni); rte_free(internals); @@ -181,10 +183,10 @@ rte_eth_dev_release_port(eth_dev); diff --git a/drivers/net/null/rte_eth_null.c b/drivers/net/null/rte_eth_null.c -index 74dde9521b..7d89a32597 100644 +index 7a5f125707..2ead071402 100644 --- a/drivers/net/null/rte_eth_null.c +++ b/drivers/net/null/rte_eth_null.c -@@ -495,7 +495,7 @@ eth_dev_null_create(struct rte_vdev_device *dev, +@@ -483,7 +483,7 @@ eth_dev_null_create(struct rte_vdev_device *dev, { const unsigned nb_rx_queues = 1; const unsigned nb_tx_queues = 1; @@ -193,7 +195,7 @@ struct pmd_internals *internals = NULL; struct rte_eth_dev *eth_dev = NULL; -@@ -512,19 +512,10 @@ eth_dev_null_create(struct rte_vdev_device *dev, +@@ -500,19 +500,9 @@ eth_dev_null_create(struct rte_vdev_device *dev, RTE_LOG(INFO, PMD, "Creating null ethdev on numa socket %u\n", dev->device.numa_node); @@ -211,11 +213,10 @@ + if (!eth_dev) return -ENOMEM; - } -+ + /* now put it all together * - store queue data in internals, - * - store numa_node info in ethdev data -@@ -545,13 +536,12 @@ eth_dev_null_create(struct rte_vdev_device *dev, +@@ -533,13 +523,12 @@ eth_dev_null_create(struct rte_vdev_device *dev, rte_memcpy(internals->rss_key, default_rss_key, 40); @@ -224,13 +225,13 @@ data->nb_rx_queues = (uint16_t)nb_rx_queues; data->nb_tx_queues = (uint16_t)nb_tx_queues; data->dev_link = pmd_link; - data->mac_addrs = &internals->eth_addr; + data->mac_addrs = ð_addr; - eth_dev->data = data; eth_dev->dev_ops = &ops; /* finally assign rx and tx ops */ -@@ -669,7 +659,6 @@ rte_pmd_null_remove(struct rte_vdev_device *dev) +@@ -657,7 +646,6 @@ rte_pmd_null_remove(struct rte_vdev_device *dev) return -1; rte_free(eth_dev->data->dev_private); @@ -239,10 +240,10 @@ rte_eth_dev_release_port(eth_dev); diff --git a/drivers/net/octeontx/octeontx_ethdev.c b/drivers/net/octeontx/octeontx_ethdev.c -index 6d67d257c0..ee06cd3554 100644 +index 049bc32b43..12e3b2df3d 100644 --- a/drivers/net/octeontx/octeontx_ethdev.c +++ b/drivers/net/octeontx/octeontx_ethdev.c -@@ -1068,7 +1068,7 @@ octeontx_create(struct rte_vdev_device *dev, int port, uint8_t evdev, +@@ -1033,7 +1033,7 @@ octeontx_create(struct rte_vdev_device *dev, int port, uint8_t evdev, char octtx_name[OCTEONTX_MAX_NAME_LEN]; struct octeontx_nic *nic = NULL; struct rte_eth_dev *eth_dev = NULL; @@ -251,7 +252,7 @@ const char *name = rte_vdev_device_name(dev); PMD_INIT_FUNC_TRACE(); -@@ -1084,13 +1084,6 @@ octeontx_create(struct rte_vdev_device *dev, int port, uint8_t evdev, +@@ -1049,13 +1049,6 @@ octeontx_create(struct rte_vdev_device *dev, int port, uint8_t evdev, return 0; } @@ -265,7 +266,7 @@ nic = rte_zmalloc_socket(octtx_name, sizeof(*nic), 0, socket_id); if (nic == NULL) { octeontx_log_err("failed to allocate nic structure"); -@@ -1126,11 +1119,9 @@ octeontx_create(struct rte_vdev_device *dev, int port, uint8_t evdev, +@@ -1091,11 +1084,9 @@ octeontx_create(struct rte_vdev_device *dev, int port, uint8_t evdev, eth_dev->data->kdrv = RTE_KDRV_NONE; eth_dev->data->numa_node = dev->device.numa_node; @@ -278,7 +279,7 @@ nic->ev_queues = 1; nic->ev_ports = 1; -@@ -1149,7 +1140,6 @@ octeontx_create(struct rte_vdev_device *dev, int port, uint8_t evdev, +@@ -1114,7 +1105,6 @@ octeontx_create(struct rte_vdev_device *dev, int port, uint8_t evdev, goto err; } @@ -286,7 +287,7 @@ eth_dev->dev_ops = &octeontx_dev_ops; /* Finally save ethdev pointer to the NIC structure */ -@@ -1217,7 +1207,6 @@ octeontx_remove(struct rte_vdev_device *dev) +@@ -1182,7 +1172,6 @@ octeontx_remove(struct rte_vdev_device *dev) rte_free(eth_dev->data->mac_addrs); rte_free(eth_dev->data->dev_private); @@ -295,10 +296,10 @@ rte_event_dev_close(nic->evdev); } diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c -index c1571e1fe9..8740d527f0 100644 +index f71ba001e1..89ff6c3f32 100644 --- a/drivers/net/pcap/rte_eth_pcap.c +++ b/drivers/net/pcap/rte_eth_pcap.c -@@ -773,27 +773,16 @@ pmd_init_internals(struct rte_vdev_device *vdev, +@@ -801,27 +801,16 @@ pmd_init_internals(struct rte_vdev_device *vdev, struct pmd_internals **internals, struct rte_eth_dev **eth_dev) { @@ -328,7 +329,7 @@ /* now put it all together * - store queue data in internals, -@@ -802,7 +791,7 @@ pmd_init_internals(struct rte_vdev_device *vdev, +@@ -830,7 +819,7 @@ pmd_init_internals(struct rte_vdev_device *vdev, * - and point eth_dev structure to new eth_dev_data structure */ *internals = (*eth_dev)->data->dev_private; @@ -337,7 +338,7 @@ data->nb_rx_queues = (uint16_t)nb_rx_queues; data->nb_tx_queues = (uint16_t)nb_tx_queues; data->dev_link = pmd_link; -@@ -812,7 +801,6 @@ pmd_init_internals(struct rte_vdev_device *vdev, +@@ -840,7 +829,6 @@ pmd_init_internals(struct rte_vdev_device *vdev, * NOTE: we'll replace the data element, of originally allocated * eth_dev so the rings are local per-process */ @@ -345,7 +346,7 @@ (*eth_dev)->dev_ops = &ops; return 0; -@@ -1020,7 +1008,6 @@ pmd_pcap_remove(struct rte_vdev_device *dev) +@@ -1034,7 +1022,6 @@ pmd_pcap_remove(struct rte_vdev_device *dev) return -1; rte_free(eth_dev->data->dev_private); @@ -354,10 +355,10 @@ rte_eth_dev_release_port(eth_dev); diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c -index df13c44be4..e53823adb3 100644 +index dbd350e183..77976ce777 100644 --- a/drivers/net/ring/rte_eth_ring.c +++ b/drivers/net/ring/rte_eth_ring.c -@@ -259,15 +259,6 @@ do_eth_dev_ring_create(const char *name, +@@ -288,15 +288,6 @@ do_eth_dev_ring_create(const char *name, RTE_LOG(INFO, PMD, "Creating rings-backed ethdev on numa socket %u\n", numa_node); @@ -373,7 +374,7 @@ rx_queues_local = rte_zmalloc_socket(name, sizeof(void *) * nb_rx_queues, 0, numa_node); if (rx_queues_local == NULL) { -@@ -301,10 +292,8 @@ do_eth_dev_ring_create(const char *name, +@@ -330,10 +321,8 @@ do_eth_dev_ring_create(const char *name, * - point eth_dev_data to internals * - and point eth_dev structure to new eth_dev_data structure */ @@ -385,7 +386,7 @@ data->rx_queues = rx_queues_local; data->tx_queues = tx_queues_local; -@@ -326,7 +315,6 @@ do_eth_dev_ring_create(const char *name, +@@ -355,7 +344,6 @@ do_eth_dev_ring_create(const char *name, data->dev_link = pmd_link; data->mac_addrs = &internals->address; @@ -393,7 +394,7 @@ eth_dev->dev_ops = &ops; data->kdrv = RTE_KDRV_NONE; data->numa_node = numa_node; -@@ -342,7 +330,6 @@ do_eth_dev_ring_create(const char *name, +@@ -371,7 +359,6 @@ do_eth_dev_ring_create(const char *name, error: rte_free(rx_queues_local); rte_free(tx_queues_local); @@ -401,7 +402,7 @@ rte_free(internals); return -1; -@@ -675,8 +662,6 @@ rte_pmd_ring_remove(struct rte_vdev_device *dev) +@@ -704,8 +691,6 @@ rte_pmd_ring_remove(struct rte_vdev_device *dev) rte_free(eth_dev->data->tx_queues); rte_free(eth_dev->data->dev_private); @@ -411,23 +412,23 @@ return 0; } diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c -index 915d9373f8..b18efd8b70 100644 +index bd2b4d9958..220421623b 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c -@@ -1386,12 +1386,6 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name, - RTE_LOG(DEBUG, PMD, "%s device on numa %u\n", - tuntap_name, rte_socket_id()); +@@ -1253,12 +1253,6 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name, + + RTE_LOG(DEBUG, PMD, " TAP device on numa %u\n", rte_socket_id()); - data = rte_zmalloc_socket(tap_name, sizeof(*data), 0, numa_node); - if (!data) { -- RTE_LOG(ERR, PMD, "%s Failed to allocate data\n", tuntap_name); +- RTE_LOG(ERR, PMD, "TAP Failed to allocate data\n"); - goto error_exit_nodev; - } - dev = rte_eth_vdev_allocate(vdev, sizeof(*pmd)); if (!dev) { - RTE_LOG(ERR, PMD, "%s Unable to allocate device struct\n", -@@ -1412,7 +1406,7 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name, + RTE_LOG(ERR, PMD, "TAP Unable to allocate device struct\n"); +@@ -1278,7 +1272,7 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name, } /* Setup some default values */ @@ -436,7 +437,7 @@ data->dev_private = pmd; data->dev_flags = RTE_ETH_DEV_INTR_LSC; data->numa_node = numa_node; -@@ -1423,7 +1417,6 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name, +@@ -1289,7 +1283,6 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name, data->nb_rx_queues = 0; data->nb_tx_queues = 0; @@ -444,15 +445,15 @@ dev->dev_ops = &ops; dev->rx_pkt_burst = pmd_rx_burst; dev->tx_pkt_burst = pmd_tx_burst; -@@ -1574,7 +1567,6 @@ error_exit_nodev: - RTE_LOG(ERR, PMD, "%s Unable to initialize %s\n", - tuntap_name, rte_vdev_device_name(vdev)); +@@ -1440,7 +1433,6 @@ error_exit_nodev: + RTE_LOG(ERR, PMD, "TAP Unable to initialize %s\n", + rte_vdev_device_name(vdev)); - rte_free(data); return -EINVAL; } -@@ -1828,7 +1820,6 @@ rte_pmd_tap_remove(struct rte_vdev_device *dev) +@@ -1611,7 +1603,6 @@ rte_pmd_tap_remove(struct rte_vdev_device *dev) close(internals->ioctl_sock); rte_free(eth_dev->data->dev_private); @@ -461,10 +462,10 @@ rte_eth_dev_release_port(eth_dev); diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c -index d7d44a0eb3..fea13eb554 100644 +index 0ba25b531f..7b7780c9c4 100644 --- a/drivers/net/vhost/rte_eth_vhost.c +++ b/drivers/net/vhost/rte_eth_vhost.c -@@ -1227,7 +1227,7 @@ eth_dev_vhost_create(struct rte_vdev_device *dev, char *iface_name, +@@ -1041,7 +1041,7 @@ 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); @@ -473,7 +474,7 @@ struct pmd_internal *internal = NULL; struct rte_eth_dev *eth_dev = NULL; struct ether_addr *eth_addr = NULL; -@@ -1237,13 +1237,6 @@ eth_dev_vhost_create(struct rte_vdev_device *dev, char *iface_name, +@@ -1051,13 +1051,6 @@ eth_dev_vhost_create(struct rte_vdev_device *dev, char *iface_name, RTE_LOG(INFO, PMD, "Creating VHOST-USER backend on numa socket %u\n", numa_node); @@ -487,7 +488,7 @@ list = rte_zmalloc_socket(name, sizeof(*list), 0, numa_node); if (list == NULL) goto error; -@@ -1285,12 +1278,7 @@ eth_dev_vhost_create(struct rte_vdev_device *dev, char *iface_name, +@@ -1099,12 +1092,7 @@ eth_dev_vhost_create(struct rte_vdev_device *dev, char *iface_name, rte_spinlock_init(&vring_state->lock); vring_states[eth_dev->data->port_id] = vring_state; @@ -501,7 +502,7 @@ data->nb_rx_queues = queues; data->nb_tx_queues = queues; internal->max_queues = queues; -@@ -1331,7 +1319,6 @@ error: +@@ -1146,7 +1134,6 @@ error: rte_eth_dev_release_port(eth_dev); rte_free(internal); rte_free(list); @@ -509,7 +510,7 @@ return -1; } -@@ -1462,8 +1449,6 @@ rte_pmd_vhost_remove(struct rte_vdev_device *dev) +@@ -1277,8 +1264,6 @@ rte_pmd_vhost_remove(struct rte_vdev_device *dev) rte_free(vring_states[eth_dev->data->port_id]); vring_states[eth_dev->data->port_id] = NULL;