patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Yongseok Koh <yskoh@mellanox.com>
To: Jianfeng Tan <jianfeng.tan@intel.com>
Cc: Bruce Richardson <bruce.richardson@intel.com>,
	Qi Zhang <qi.z.zhang@intel.com>, dpdk stable <stable@dpdk.org>
Subject: [dpdk-stable] patch 'drivers/net: do not use private ethdev data' has been queued to LTS release 17.11.7
Date: Mon, 22 Jul 2019 17:59:30 -0700	[thread overview]
Message-ID: <20190723010115.6446-3-yskoh@mellanox.com> (raw)
In-Reply-To: <20190723010115.6446-1-yskoh@mellanox.com>

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 <jianfeng.tan@intel.com>
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 <bruce.richardson@intel.com>
Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
Reviewed-by: Qi Zhang <qi.z.zhang@intel.com>
---
 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 <rte_ether.h>
 #include <rte_ethdev.h>
 #include <rte_ethdev_pci.h>
-#include <rte_malloc.h>
 #include <rte_random.h>
 #include <rte_dev.h>
 
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 = &eth_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 = &eth_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 <jianfeng.tan@intel.com>
 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 <rte_ether.h>
- #include <rte_ethdev_driver.h>
+ #include <rte_ethdev.h>
  #include <rte_ethdev_pci.h>
 -#include <rte_malloc.h>
  #include <rte_random.h>
  #include <rte_dev.h>
- #include <rte_kvargs.h>
+ 
 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 = &eth_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 = &eth_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;
  

  parent reply	other threads:[~2019-07-23  1:01 UTC|newest]

Thread overview: 108+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-23  0:59 [dpdk-stable] patch 'eal: improve musl compatibility of string functions' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'net/mlx5: fix instruction hotspot on replenishing Rx buffer' " Yongseok Koh
2019-07-23  0:59 ` Yongseok Koh [this message]
2019-07-23  0:59 ` [dpdk-stable] patch 'net/sfc: log port ID as 16-bit unsigned integer on panic' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'net/sfc: remove control path logging from Rx queue count' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'net/virtio: remove forward declaration' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'eal: support strlcat function' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'mbuf: fix a typo' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'net/bnxt: support IOVA VA mode' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'doc: fix a minor typo in testpmd guide' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'net/bonding: avoid warning for invalid port' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'net/bonding: fix reset active slave' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'mk: fix build of shared library with libbsd' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'net/bnx2x: fix segfaults due to stale interrupt status' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'doc: remove reference to rte.doc.mk in programmers guide' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'examples/ethtool: fix two typos' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'doc: fix link in Linux getting started guide' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'mk: fix AVX512 disabled warning on non x86' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'bus/vdev: fix debug message on probing' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'eal: fix check when retrieving current CPU affinity' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'eal: remove dead code in core list parsing' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'net/enic: fix flow director SCTP matching' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'net/enic: fix SCTP match for flow API' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'net/enic: check for unsupported flow item types' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'net/ixgbe: fix crash on remove' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'net/mlx5: fix hex dump of error completion' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'net/mlx5: fix sync when handling Tx completions' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'net/i40e: fix time sync for 25G' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'net/qede: support IOVA VA mode' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'net/mlx5: fix packet inline on Tx queue wraparound' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'net/nfp: fix RSS query' " Yongseok Koh
2019-07-23  0:59 ` [dpdk-stable] patch 'app/testpmd: remove unused field from port struct' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'app/testpmd: fix a typo in log message' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'net/octeontx: fix vdev name' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'app/testpmd: fix stdout flush after printing stats' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'net/bonding: fix LACP negotiation' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'doc: fix examples in bonding guide' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'net/bonding: fix port id types' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'net/bonding: fix queue index " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'drivers/net: fix possible overflow using strlcat' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'examples/ipsec-secgw: fix AES-CTR block size' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'examples/ipsec-secgw: fix debug logs' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'cryptodev: fix driver name comparison' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'malloc: fix documentation of realloc function' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'eal/linux: fix log levels for pagemap reading failure' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'test/spinlock: remove delay for correct benchmarking' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'test/spinlock: amortize the cost of getting time' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'spinlock: reimplement with atomic one-way barrier' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'eal/ppc: fix global memory " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'bus/dpaa: fix Rx discard register mask' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'power: fix frequency list buffer validation' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'bus/fslmc: remove unused include of error.h' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'bus/fslmc: fix build with musl libc' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'app/test: " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'app/testpmd: remove useless casts on statistics' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'ethdev: fix a typo' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'net/bnxt: fix Rx VLAN offload flags' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'net/fm10k: fix VLAN strip offload flag' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'net/virtio: fix duplicate naming of include guard' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'net/virtio: remove useless condition' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'app/test: fix sprintf with strlcat' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'maintainers: update for IBM POWER' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'ring: fix an error message' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'event/sw: fix enqueue checks in self-test' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'crypto/dpaa2_sec: fix session clearing' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'ring: fix namesize macro documentation block' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'net/bonding: fix buffer length when printing strings' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'test/distributor: replace sprintf with strlcpy' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'test/hash: replace sprintf with snprintf' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'eal: fix typo in comment of vector function' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'doc: fix links to doxygen and sphinx sites' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'cfgfile: replace strcat with strlcat' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'app/testpmd: fix typo in comment' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'net: fix Tx VLAN flag for offload emulation' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'examples/l2fwd-cat: fix build on FreeBSD' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'app/crypto-perf: check range of socket id' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'kni: fix build with Linux 5.1' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'net/bnx2x: fix memory leak' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'net/bnx2x: fix ramrod timeout' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'net/bnx2x: fix DMAE " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'net/bnx2x: fix race for periodic flags' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'net/bnx2x: fix optic module verification' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'app/testpmd: set fixed flag for exact link speed' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'vhost: fix device leak on connection add failure' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'vhost: fix silent queue enabling with legacy guests' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'net/virtio: fix dangling pointer on failure' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'examples/vhost_scsi: fix null-check for parameter' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'net/i40e: fix dereference before null check in mbuf release' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'bitrate: fix unchecked return value' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'net/ixgbe: fix warning with GCC 9' " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'bus/fslmc: " Yongseok Koh
2019-07-23  1:00 ` [dpdk-stable] patch 'build: fix crash by disabling AVX512 with binutils 2.31' " Yongseok Koh
2019-07-23  1:01 ` [dpdk-stable] patch 'net/mlx5: fix comments mixing Rx and Tx' " Yongseok Koh
2019-07-23  1:01 ` [dpdk-stable] patch 'doc: fix interactive commands in testpmd guide' " Yongseok Koh
2019-07-23  1:01 ` [dpdk-stable] patch 'net/ring: avoid hard-coded length' " Yongseok Koh
2019-07-23  1:01 ` [dpdk-stable] patch 'net/ring: use calloc style where appropriate' " Yongseok Koh
2019-07-23  1:01 ` [dpdk-stable] patch 'net/ring: check length of ring name' " Yongseok Koh
2019-07-23  1:01 ` [dpdk-stable] patch 'net/ring: fix return value check' " Yongseok Koh
2019-07-23  1:01 ` [dpdk-stable] patch 'net/kni: " Yongseok Koh
2019-07-23  1:01 ` [dpdk-stable] patch 'net/i40e: fix link speed for X722' " Yongseok Koh
2019-07-23  1:01 ` [dpdk-stable] patch 'net/mlx5: check Tx queue size overflow' " Yongseok Koh
2019-07-23  1:01 ` [dpdk-stable] patch 'net/mlx5: fix max number of queues for NEON Tx' " Yongseok Koh
2019-07-23  1:01 ` [dpdk-stable] patch 'app/testpmd: revert fixed flag for exact link speed' " Yongseok Koh
2019-07-23  1:01 ` [dpdk-stable] patch 'hash: fix doc about thread/process safety' " Yongseok Koh
2019-07-23  1:01 ` [dpdk-stable] patch 'doc: fix broken link in LPM guide' " Yongseok Koh
2019-07-23  1:01 ` [dpdk-stable] patch 'net/mlx5: fix release of Rx queue object' " Yongseok Koh
2019-07-23  1:01 ` [dpdk-stable] patch 'doc: fix typo in mlx5 guide' " Yongseok Koh
2019-07-23  1:01 ` [dpdk-stable] patch 'examples/ipsec-secgw: fix build error log' " Yongseok Koh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190723010115.6446-3-yskoh@mellanox.com \
    --to=yskoh@mellanox.com \
    --cc=bruce.richardson@intel.com \
    --cc=jianfeng.tan@intel.com \
    --cc=qi.z.zhang@intel.com \
    --cc=stable@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).