DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs
       [not found] <PATCH v2>
@ 2015-10-05 10:30 ` Bernard Iremonger
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 01/20] librte_eal: add RTE_KDRV_NONE for vdevs Bernard Iremonger
                     ` (19 more replies)
  2015-10-22 13:21 ` [dpdk-dev] [PATCH v2 1/1] vhost_xen: fix compile error in main.c Bernard Iremonger
                   ` (2 subsequent siblings)
  3 siblings, 20 replies; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-05 10:30 UTC (permalink / raw)
  To: dev

There is a dummy pci driver in the vdev PMD's at present.
This patch set removes the pci driver from the vdev PMD's.
Changes have been made to librte_ether to handle vdevs and pdevs in the same way.

The following vdev PMD's have had the pci driver removed:

null
ring
bonding
pcap
af_packet
xenvirt
mpipe

All the pdev PMD's have been modified to copy the pci device info into ethdev data.

Changes in V2:
rebase to latest code.
fix  compile error in rte_ethdev.c when debug disabled.
remove intel copyright from bnx2x, cxgbe, enic, mlx4, mpipe and null PMD's.

Bernard Iremonger (17):
  librte_eal: add RTE_KDRV_NONE for vdevs
  librte_ether: add fields from rte_pci_driver to rte_eth_dev_data
  librte_ether: add function rte_eth_copy_dev_info()
  null: remove pci device driver
  ring: remove pci device driver
  bonding: remove pci device driver
  pcap: remove pci device driver
  ixgbe: copy pci device info to eth_dev data
  e1000: copy pci device info to eth_dev data
  i40e: copy pci device info to eth_dev data
  fm10k: copy pci device info to eth_dev data
  bnx2x: copy pci device info to eth_dev data
  cxgbe: copy pci device info to eth_dev data
  enic: copy pci device info to eth_dev data
  mlx4: copy pci device info to eth_dev data
  virtio: copy pci device info to eth_dev data
  vmxnet3: copy pci device info to eth_dev data

David Hunt (3):
  af_packet: remove pci device driver
  xenvirt: remove pci device driver
  mpipe: remove pci device driver

 drivers/net/af_packet/rte_eth_af_packet.c  | 20 +++++------
 drivers/net/bnx2x/bnx2x_ethdev.c           |  3 ++
 drivers/net/bonding/rte_eth_bond_alb.c     |  2 +-
 drivers/net/bonding/rte_eth_bond_api.c     | 58 +++++++++---------------------
 drivers/net/bonding/rte_eth_bond_pmd.c     | 16 ++++-----
 drivers/net/bonding/rte_eth_bond_private.h |  2 +-
 drivers/net/cxgbe/cxgbe_ethdev.c           |  3 ++
 drivers/net/e1000/em_ethdev.c              |  3 ++
 drivers/net/e1000/igb_ethdev.c             |  5 +++
 drivers/net/enic/enic_ethdev.c             |  1 +
 drivers/net/fm10k/fm10k_ethdev.c           |  2 ++
 drivers/net/i40e/i40e_ethdev.c             |  3 ++
 drivers/net/i40e/i40e_ethdev_vf.c          |  2 ++
 drivers/net/ixgbe/ixgbe_ethdev.c           |  4 +++
 drivers/net/mlx4/mlx4.c                    |  3 ++
 drivers/net/mpipe/mpipe_tilegx.c           |  9 +++--
 drivers/net/null/rte_eth_null.c            | 28 ++++-----------
 drivers/net/pcap/rte_eth_pcap.c            | 31 +++++-----------
 drivers/net/ring/rte_eth_ring.c            | 37 +++++--------------
 drivers/net/virtio/virtio_ethdev.c         |  3 ++
 drivers/net/vmxnet3/vmxnet3_ethdev.c       |  2 ++
 drivers/net/xenvirt/rte_eth_xenvirt.c      | 14 +++-----
 lib/librte_eal/common/include/rte_pci.h    |  3 +-
 lib/librte_ether/rte_ethdev.c              | 55 ++++++++++++++++------------
 lib/librte_ether/rte_ethdev.h              | 29 +++++++++++++++
 lib/librte_ether/rte_ether_version.map     |  7 ++++
 26 files changed, 173 insertions(+), 172 deletions(-)

-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 01/20] librte_eal: add RTE_KDRV_NONE for vdevs
  2015-10-05 10:30 ` [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs Bernard Iremonger
@ 2015-10-05 10:30   ` Bernard Iremonger
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 02/20] librte_ether: add fields from rte_pci_driver to rte_eth_dev_data Bernard Iremonger
                     ` (18 subsequent siblings)
  19 siblings, 0 replies; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-05 10:30 UTC (permalink / raw)
  To: dev

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 lib/librte_eal/common/include/rte_pci.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/librte_eal/common/include/rte_pci.h b/lib/librte_eal/common/include/rte_pci.h
index 83e3c28..334c12e 100644
--- a/lib/librte_eal/common/include/rte_pci.h
+++ b/lib/librte_eal/common/include/rte_pci.h
@@ -1,7 +1,7 @@
 /*-
  *   BSD LICENSE
  *
- *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+ *   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
  *   All rights reserved.
  *
  *   Redistribution and use in source and binary forms, with or without
@@ -149,6 +149,7 @@ enum rte_kernel_driver {
 	RTE_KDRV_VFIO,
 	RTE_KDRV_UIO_GENERIC,
 	RTE_KDRV_NIC_UIO,
+	RTE_KDRV_NONE,
 };
 
 /**
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 02/20] librte_ether: add fields from rte_pci_driver to rte_eth_dev_data
  2015-10-05 10:30 ` [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs Bernard Iremonger
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 01/20] librte_eal: add RTE_KDRV_NONE for vdevs Bernard Iremonger
@ 2015-10-05 10:30   ` Bernard Iremonger
  2015-10-12 10:46     ` Mcnamara, John
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 03/20] librte_ether: add function rte_eth_copy_dev_info() Bernard Iremonger
                     ` (17 subsequent siblings)
  19 siblings, 1 reply; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-05 10:30 UTC (permalink / raw)
  To: dev

add dev_flags to rte_eth_dev_data, add macros for dev_flags.
add kdrv to rte_eth_dev_data.
add numa_node to rte_eth_dev_data.
add drv_name to rte_eth_dev_data.
use dev_type to distinguish between vdev's and pdev's.
remove pci_dev branches.

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 lib/librte_ether/rte_ethdev.c | 54 +++++++++++++++++++++++++------------------
 lib/librte_ether/rte_ethdev.h | 15 ++++++++++++
 2 files changed, 46 insertions(+), 23 deletions(-)

diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c
index f593f6e..2fce370 100644
--- a/lib/librte_ether/rte_ethdev.c
+++ b/lib/librte_ether/rte_ethdev.c
@@ -424,7 +424,7 @@ rte_eth_dev_socket_id(uint8_t port_id)
 {
 	if (!rte_eth_dev_is_valid_port(port_id))
 		return -1;
-	return rte_eth_devices[port_id].pci_dev->numa_node;
+	return rte_eth_devices[port_id].data->numa_node;
 }
 
 uint8_t
@@ -503,27 +503,25 @@ rte_eth_dev_get_name_by_port(uint8_t port_id, char *name)
 static int
 rte_eth_dev_is_detachable(uint8_t port_id)
 {
-	uint32_t drv_flags;
+	uint32_t dev_flags;
 
 	if (!rte_eth_dev_is_valid_port(port_id)) {
 		PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
 		return -EINVAL;
 	}
 
-	if (rte_eth_devices[port_id].dev_type == RTE_ETH_DEV_PCI) {
-		switch (rte_eth_devices[port_id].pci_dev->kdrv) {
-		case RTE_KDRV_IGB_UIO:
-		case RTE_KDRV_UIO_GENERIC:
-		case RTE_KDRV_NIC_UIO:
-			break;
-		case RTE_KDRV_VFIO:
-		default:
-			return -ENOTSUP;
-		}
+	switch (rte_eth_devices[port_id].data->kdrv) {
+	case RTE_KDRV_IGB_UIO:
+	case RTE_KDRV_UIO_GENERIC:
+	case RTE_KDRV_NIC_UIO:
+	case RTE_KDRV_NONE:
+		break;
+	case RTE_KDRV_VFIO:
+	default:
+		return -ENOTSUP;
 	}
-
-	drv_flags = rte_eth_devices[port_id].driver->pci_drv.drv_flags;
-	return !(drv_flags & RTE_PCI_DRV_DETACHABLE);
+	dev_flags = rte_eth_devices[port_id].data->dev_flags;
+	return !(dev_flags & RTE_ETH_DEV_DETACHABLE);
 }
 
 /* attach the new physical device, then store port_id of the device */
@@ -1143,14 +1141,11 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q,
 	 * If link state interrupt is enabled, check that the
 	 * device supports it.
 	 */
-	if (dev_conf->intr_conf.lsc == 1) {
-		const struct rte_pci_driver *pci_drv = &dev->driver->pci_drv;
-
-		if (!(pci_drv->drv_flags & RTE_PCI_DRV_INTR_LSC)) {
+	if ((dev_conf->intr_conf.lsc == 1) &&
+		(!(dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC))) {
 			PMD_DEBUG_TRACE("driver %s does not support lsc\n",
-					pci_drv->name);
+					dev->data->drv_name);
 			return -EINVAL;
-		}
 	}
 
 	/*
@@ -1795,8 +1790,7 @@ rte_eth_dev_info_get(uint8_t port_id, struct rte_eth_dev_info *dev_info)
 	FUNC_PTR_OR_RET(*dev->dev_ops->dev_infos_get);
 	(*dev->dev_ops->dev_infos_get)(dev, dev_info);
 	dev_info->pci_dev = dev->pci_dev;
-	if (dev->driver)
-		dev_info->driver_name = dev->driver->pci_drv.name;
+	dev_info->driver_name = dev->data->drv_name;
 }
 
 void
@@ -3342,3 +3336,17 @@ rte_eth_dev_set_eeprom(uint8_t port_id, struct rte_dev_eeprom_info *info)
 	FUNC_PTR_OR_ERR_RET(*dev->dev_ops->set_eeprom, -ENOTSUP);
 	return (*dev->dev_ops->set_eeprom)(dev, info);
 }
+
+void
+rte_eth_copy_dev_info(struct rte_eth_dev *eth_dev, struct rte_pci_device *pci_dev)
+{
+	if ((eth_dev == NULL) || (pci_dev == NULL)) {
+		PMD_DEBUG_TRACE("NULL pointer eth_dev=%p pci_dev=%p\n",
+				eth_dev, pci_dev);
+	}
+
+	eth_dev->data->dev_flags = pci_dev->driver->drv_flags;
+	eth_dev->data->kdrv = pci_dev->kdrv;
+	eth_dev->data->numa_node = pci_dev->numa_node;
+	eth_dev->data->drv_name = pci_dev->driver->name;
+}
diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
index 8a8c82b..d440bd6 100644
--- a/lib/librte_ether/rte_ethdev.h
+++ b/lib/librte_ether/rte_ethdev.h
@@ -1471,8 +1471,23 @@ struct rte_eth_dev_data {
 		all_multicast : 1, /**< RX all multicast mode ON(1) / OFF(0). */
 		dev_started : 1,   /**< Device state: STARTED(1) / STOPPED(0). */
 		lro         : 1;   /**< RX LRO is ON(1) / OFF(0) */
+	uint32_t dev_flags; /**< Flags controlling handling of device. */
+	enum rte_kernel_driver kdrv;	/**< Kernel driver passthrough */
+	int numa_node;
+	const char *drv_name;
 };
 
+/** Device needs PCI BAR mapping (done with either IGB_UIO or VFIO) */
+#define RTE_ETH_DEV_DRV_NEED_MAPPING	RTE_PCI_DRV_NEED_MAPPING
+/** Device needs to be unbound even if no module is provided */
+#define RTE_ETH_DEV_DRV_FORCE_UNBIND	RTE_PCI_DRV_FORCE_UNBIND
+/** Device supports link state interrupt */
+#define RTE_ETH_DEV_INTR_LSC	RTE_PCI_DRV_INTR_LSC
+/** Device  supports detaching capability */
+#define RTE_ETH_DEV_DETACHABLE	RTE_PCI_DRV_DETACHABLE
+/** Device  is a bonded device */
+#define RTE_ETH_DEV_BONDED	0x0020
+
 /**
  * @internal
  * The pool of *rte_eth_dev* structures. The size of the pool
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 03/20] librte_ether: add function rte_eth_copy_dev_info()
  2015-10-05 10:30 ` [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs Bernard Iremonger
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 01/20] librte_eal: add RTE_KDRV_NONE for vdevs Bernard Iremonger
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 02/20] librte_ether: add fields from rte_pci_driver to rte_eth_dev_data Bernard Iremonger
@ 2015-10-05 10:30   ` Bernard Iremonger
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 04/20] null: remove pci device driver Bernard Iremonger
                     ` (16 subsequent siblings)
  19 siblings, 0 replies; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-05 10:30 UTC (permalink / raw)
  To: dev

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 lib/librte_ether/rte_ethdev.c          |  1 +
 lib/librte_ether/rte_ethdev.h          | 14 ++++++++++++++
 lib/librte_ether/rte_ether_version.map |  7 +++++++
 3 files changed, 22 insertions(+)

diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c
index 2fce370..dcaf24c 100644
--- a/lib/librte_ether/rte_ethdev.c
+++ b/lib/librte_ether/rte_ethdev.c
@@ -3349,4 +3349,5 @@ rte_eth_copy_dev_info(struct rte_eth_dev *eth_dev, struct rte_pci_device *pci_de
 	eth_dev->data->kdrv = pci_dev->kdrv;
 	eth_dev->data->numa_node = pci_dev->numa_node;
 	eth_dev->data->drv_name = pci_dev->driver->name;
+
 }
diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
index d440bd6..815e2fc 100644
--- a/lib/librte_ether/rte_ethdev.h
+++ b/lib/librte_ether/rte_ethdev.h
@@ -3613,6 +3613,20 @@ extern int rte_eth_timesync_read_rx_timestamp(uint8_t port_id,
 extern int rte_eth_timesync_read_tx_timestamp(uint8_t port_id,
 					      struct timespec *timestamp);
 
+/**
+ * Copy pci device info to the Ethernet device data.
+ *
+ * @param eth_dev
+ * The *eth_dev* pointer is the address of the *rte_eth_dev* structure.
+ * @param pci_dev
+ * The *pci_dev* pointer is the address of the *rte_pci_device* structure.
+ *
+ * @return
+ *   - 0 on success, negative on error
+ */
+extern void rte_eth_copy_dev_info(struct rte_eth_dev *eth_dev, struct rte_pci_device *pci_dev);
+
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/lib/librte_ether/rte_ether_version.map b/lib/librte_ether/rte_ether_version.map
index 8345a6c..e6a43be 100644
--- a/lib/librte_ether/rte_ether_version.map
+++ b/lib/librte_ether/rte_ether_version.map
@@ -127,3 +127,10 @@ DPDK_2.1 {
 	rte_eth_timesync_read_tx_timestamp;
 
 } DPDK_2.0;
+
+DPDK_2.2 {
+	global:
+
+	rte_eth_copy_dev_info;
+
+} DPDK_2.1;
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 04/20] null: remove pci device driver
  2015-10-05 10:30 ` [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs Bernard Iremonger
                     ` (2 preceding siblings ...)
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 03/20] librte_ether: add function rte_eth_copy_dev_info() Bernard Iremonger
@ 2015-10-05 10:30   ` Bernard Iremonger
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 05/20] ring: " Bernard Iremonger
                     ` (15 subsequent siblings)
  19 siblings, 0 replies; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-05 10:30 UTC (permalink / raw)
  To: dev

remove rte_null_pmd and pci_dev.
initialise dev_flags, driver, drv_name, kdrv and numa_node fields in eth_dev data

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 drivers/net/null/rte_eth_null.c | 28 +++++++---------------------
 1 file changed, 7 insertions(+), 21 deletions(-)

diff --git a/drivers/net/null/rte_eth_null.c b/drivers/net/null/rte_eth_null.c
index e244595..fb7473f 100644
--- a/drivers/net/null/rte_eth_null.c
+++ b/drivers/net/null/rte_eth_null.c
@@ -340,13 +340,6 @@ eth_stats_reset(struct rte_eth_dev *dev)
 	}
 }
 
-static struct eth_driver rte_null_pmd = {
-	.pci_drv = {
-		.name = "rte_null_pmd",
-		.drv_flags = RTE_PCI_DRV_DETACHABLE,
-	},
-};
-
 static void
 eth_queue_release(void *q)
 {
@@ -386,7 +379,6 @@ eth_dev_null_create(const char *name,
 	const unsigned nb_rx_queues = 1;
 	const unsigned nb_tx_queues = 1;
 	struct rte_eth_dev_data *data = NULL;
-	struct rte_pci_device *pci_dev = NULL;
 	struct pmd_internals *internals = NULL;
 	struct rte_eth_dev *eth_dev = NULL;
 
@@ -403,10 +395,6 @@ eth_dev_null_create(const char *name,
 	if (data == NULL)
 		goto error;
 
-	pci_dev = rte_zmalloc_socket(name, sizeof(*pci_dev), 0, numa_node);
-	if (pci_dev == NULL)
-		goto error;
-
 	internals = rte_zmalloc_socket(name, sizeof(*internals), 0, numa_node);
 	if (internals == NULL)
 		goto error;
@@ -418,8 +406,7 @@ eth_dev_null_create(const char *name,
 
 	/* now put it all together
 	 * - store queue data in internals,
-	 * - store numa_node info in pci_driver
-	 * - point eth_dev_data to internals and pci_driver
+	 * - 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
@@ -431,8 +418,6 @@ eth_dev_null_create(const char *name,
 	internals->packet_copy = packet_copy;
 	internals->numa_node = numa_node;
 
-	pci_dev->numa_node = numa_node;
-
 	data->dev_private = internals;
 	data->port_id = eth_dev->data->port_id;
 	data->nb_rx_queues = (uint16_t)nb_rx_queues;
@@ -443,8 +428,11 @@ eth_dev_null_create(const char *name,
 
 	eth_dev->data = data;
 	eth_dev->dev_ops = &ops;
-	eth_dev->pci_dev = pci_dev;
-	eth_dev->driver = &rte_null_pmd;
+	eth_dev->driver = NULL;
+	eth_dev->data->dev_flags = RTE_ETH_DEV_DETACHABLE;
+	eth_dev->data->kdrv = RTE_KDRV_NONE;
+	eth_dev->data->drv_name = NULL;
+	eth_dev->data->numa_node = numa_node;
 
 	/* finally assign rx and tx ops */
 	if (packet_copy) {
@@ -459,7 +447,6 @@ eth_dev_null_create(const char *name,
 
 error:
 	rte_free(data);
-	rte_free(pci_dev);
 	rte_free(internals);
 
 	return -1;
@@ -562,14 +549,13 @@ rte_pmd_null_devuninit(const char *name)
 	RTE_LOG(INFO, PMD, "Closing null ethdev on numa socket %u\n",
 			rte_socket_id());
 
-	/* reserve an ethdev entry */
+	/* find the ethdev entry */
 	eth_dev = rte_eth_dev_allocated(name);
 	if (eth_dev == NULL)
 		return -1;
 
 	rte_free(eth_dev->data->dev_private);
 	rte_free(eth_dev->data);
-	rte_free(eth_dev->pci_dev);
 
 	rte_eth_dev_release_port(eth_dev);
 
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 05/20] ring: remove pci device driver
  2015-10-05 10:30 ` [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs Bernard Iremonger
                     ` (3 preceding siblings ...)
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 04/20] null: remove pci device driver Bernard Iremonger
@ 2015-10-05 10:30   ` Bernard Iremonger
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 06/20] bonding: " Bernard Iremonger
                     ` (14 subsequent siblings)
  19 siblings, 0 replies; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-05 10:30 UTC (permalink / raw)
  To: dev

remove rte_ring_pmd and pci_dev.
initialise dev_flags, driver, drv_name, kdrv and numa_node fields in eth_dev data.

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 drivers/net/ring/rte_eth_ring.c | 37 ++++++++-----------------------------
 1 file changed, 8 insertions(+), 29 deletions(-)

diff --git a/drivers/net/ring/rte_eth_ring.c b/drivers/net/ring/rte_eth_ring.c
index 0ba36d5..65608b2 100644
--- a/drivers/net/ring/rte_eth_ring.c
+++ b/drivers/net/ring/rte_eth_ring.c
@@ -44,8 +44,6 @@
 #define ETH_RING_ACTION_CREATE		"CREATE"
 #define ETH_RING_ACTION_ATTACH		"ATTACH"
 
-static const char *ring_ethdev_driver_name = "Ring PMD";
-
 static const char *valid_arguments[] = {
 	ETH_RING_NUMA_NODE_ACTION_ARG,
 	NULL
@@ -252,15 +250,6 @@ static const struct eth_dev_ops ops = {
 	.mac_addr_add = eth_mac_addr_add,
 };
 
-static struct eth_driver rte_ring_pmd = {
-	.pci_drv = {
-		.name = "rte_ring_pmd",
-		.drv_flags = RTE_PCI_DRV_DETACHABLE,
-	},
-};
-
-static struct rte_pci_id id_table;
-
 int
 rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],
 		const unsigned nb_rx_queues,
@@ -269,7 +258,6 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],
 		const unsigned numa_node)
 {
 	struct rte_eth_dev_data *data = NULL;
-	struct rte_pci_device *pci_dev = NULL;
 	struct pmd_internals *internals = NULL;
 	struct rte_eth_dev *eth_dev = NULL;
 
@@ -291,10 +279,6 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],
 	if (data == NULL)
 		goto error;
 
-	pci_dev = rte_zmalloc_socket(name, sizeof(*pci_dev), 0, numa_node);
-	if (pci_dev == NULL)
-		goto error;
-
 	internals = rte_zmalloc_socket(name, sizeof(*internals), 0, numa_node);
 	if (internals == NULL)
 		goto error;
@@ -304,11 +288,10 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],
 	if (eth_dev == NULL)
 		goto error;
 
-
 	/* now put it all together
 	 * - store queue data in internals,
-	 * - store numa_node info in pci_driver
-	 * - point eth_dev_data to internals and pci_driver
+	 * - store numa_node info in eth_dev_data
+	 * - 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
@@ -323,12 +306,6 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],
 		internals->tx_ring_queues[i].rng = tx_queues[i];
 	}
 
-	rte_ring_pmd.pci_drv.name = ring_ethdev_driver_name;
-	rte_ring_pmd.pci_drv.id_table = &id_table;
-
-	pci_dev->numa_node = numa_node;
-	pci_dev->driver = &rte_ring_pmd.pci_drv;
-
 	data->dev_private = internals;
 	data->port_id = eth_dev->data->port_id;
 	memmove(data->name, eth_dev->data->name, sizeof(data->name));
@@ -338,9 +315,13 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],
 	data->mac_addrs = &internals->address;
 
 	eth_dev->data = data;
-	eth_dev->driver = &rte_ring_pmd;
+	eth_dev->driver = NULL;
 	eth_dev->dev_ops = &ops;
-	eth_dev->pci_dev = pci_dev;
+	eth_dev->data->dev_flags = RTE_ETH_DEV_DETACHABLE;
+	eth_dev->data->kdrv = RTE_KDRV_NONE;
+	eth_dev->data->drv_name = NULL;
+	eth_dev->data->numa_node = numa_node;
+
 	TAILQ_INIT(&(eth_dev->link_intr_cbs));
 
 	/* finally assign rx and tx ops */
@@ -351,7 +332,6 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[],
 
 error:
 	rte_free(data);
-	rte_free(pci_dev);
 	rte_free(internals);
 
 	return -1;
@@ -561,7 +541,6 @@ rte_pmd_ring_devuninit(const char *name)
 	eth_dev_stop(eth_dev);
 	rte_free(eth_dev->data->dev_private);
 	rte_free(eth_dev->data);
-	rte_free(eth_dev->pci_dev);
 
 	rte_eth_dev_release_port(eth_dev);
 	return 0;
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 06/20] bonding: remove pci device driver
  2015-10-05 10:30 ` [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs Bernard Iremonger
                     ` (4 preceding siblings ...)
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 05/20] ring: " Bernard Iremonger
@ 2015-10-05 10:30   ` Bernard Iremonger
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 07/20] pcap: " Bernard Iremonger
                     ` (13 subsequent siblings)
  19 siblings, 0 replies; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-05 10:30 UTC (permalink / raw)
  To: dev

remove pci_dev, pci_drv, rte_bond_pmd and pci_id_table.
initialise dev_flags, kdrv, driver, drv_name and numa_node fields in eth_dev data.
handle numa_node for vdevs
handle RTE_ETH_DEV_INTR_LSC for vdevs
rename valid_bonded_device to check_for_bonded_device

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 drivers/net/bonding/rte_eth_bond_alb.c     |  2 +-
 drivers/net/bonding/rte_eth_bond_api.c     | 58 +++++++++---------------------
 drivers/net/bonding/rte_eth_bond_pmd.c     | 16 ++++-----
 drivers/net/bonding/rte_eth_bond_private.h |  2 +-
 4 files changed, 26 insertions(+), 52 deletions(-)

diff --git a/drivers/net/bonding/rte_eth_bond_alb.c b/drivers/net/bonding/rte_eth_bond_alb.c
index 6df318e..3157543 100644
--- a/drivers/net/bonding/rte_eth_bond_alb.c
+++ b/drivers/net/bonding/rte_eth_bond_alb.c
@@ -65,7 +65,7 @@ bond_mode_alb_enable(struct rte_eth_dev *bond_dev)
 
 	uint16_t data_size;
 	char mem_name[RTE_ETH_NAME_MAX_LEN];
-	int socket_id = bond_dev->pci_dev->numa_node;
+	int socket_id = bond_dev->data->numa_node;
 
 	/* Fill hash table with initial values */
 	memset(hash_table, 0, sizeof(struct client_data) * ALB_HASH_TABLE_SIZE);
diff --git a/drivers/net/bonding/rte_eth_bond_api.c b/drivers/net/bonding/rte_eth_bond_api.c
index 0681d1a..55f028f 100644
--- a/drivers/net/bonding/rte_eth_bond_api.c
+++ b/drivers/net/bonding/rte_eth_bond_api.c
@@ -45,14 +45,17 @@
 #define DEFAULT_POLLING_INTERVAL_10_MS (10)
 
 int
-valid_bonded_ethdev(const struct rte_eth_dev *eth_dev)
+check_for_bonded_ethdev(const struct rte_eth_dev *eth_dev)
 {
 	/* Check valid pointer */
-	if (eth_dev->driver->pci_drv.name == NULL)
+	if (!eth_dev)
 		return -1;
 
-	/* return 0 if driver name matches */
-	return eth_dev->driver->pci_drv.name != pmd_bond_driver_name;
+	/* return 0 if bonded device */
+	if (eth_dev->data->dev_flags & RTE_ETH_DEV_BONDED)
+		return 0;
+	else
+		return 1;
 }
 
 int
@@ -61,7 +64,7 @@ valid_bonded_port_id(uint8_t port_id)
 	if (!rte_eth_dev_is_valid_port(port_id))
 		return -1;
 
-	return valid_bonded_ethdev(&rte_eth_devices[port_id]);
+	return check_for_bonded_ethdev(&rte_eth_devices[port_id]);
 }
 
 int
@@ -72,7 +75,7 @@ valid_slave_port_id(uint8_t port_id)
 		return -1;
 
 	/* Verify that port_id refers to a non bonded port */
-	if (!valid_bonded_ethdev(&rte_eth_devices[port_id]))
+	if (check_for_bonded_ethdev(&rte_eth_devices[port_id]) == 0)
 		return -1;
 
 	return 0;
@@ -163,30 +166,11 @@ number_of_sockets(void)
 	return ++sockets;
 }
 
-const char pmd_bond_driver_name[] = "rte_bond_pmd";
-
-static struct rte_pci_id pci_id_table = {
-	.device_id = PCI_ANY_ID,
-	.subsystem_device_id = PCI_ANY_ID,
-	.vendor_id = PCI_ANY_ID,
-	.subsystem_vendor_id = PCI_ANY_ID,
-};
-
-static struct eth_driver rte_bond_pmd = {
-	.pci_drv = {
-		.name = pmd_bond_driver_name,
-		.drv_flags = RTE_PCI_DRV_INTR_LSC | RTE_PCI_DRV_DETACHABLE,
-		.id_table = &pci_id_table,
-	},
-};
-
 int
 rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)
 {
-	struct rte_pci_device *pci_dev = NULL;
 	struct bond_dev_private *internals = NULL;
 	struct rte_eth_dev *eth_dev = NULL;
-	struct rte_pci_driver *pci_drv = NULL;
 
 	/* now do all data allocation - for eth_dev structure, dummy pci driver
 	 * and internal (private) data
@@ -203,14 +187,6 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)
 		goto err;
 	}
 
-	pci_dev = rte_zmalloc_socket(name, sizeof(*pci_dev), 0, socket_id);
-	if (pci_dev == NULL) {
-		RTE_BOND_LOG(ERR, "Unable to malloc pci dev on socket");
-		goto err;
-	}
-
-	pci_drv = &rte_bond_pmd.pci_drv;
-
 	internals = rte_zmalloc_socket(name, sizeof(*internals), 0, socket_id);
 	if (internals == NULL) {
 		RTE_BOND_LOG(ERR, "Unable to malloc internals on socket");
@@ -224,11 +200,6 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)
 		goto err;
 	}
 
-	pci_dev->numa_node = socket_id;
-	pci_drv->name = pmd_bond_driver_name;
-	pci_dev->driver = pci_drv;
-
-	eth_dev->driver = &rte_bond_pmd;
 	eth_dev->data->dev_private = internals;
 	eth_dev->data->nb_rx_queues = (uint16_t)1;
 	eth_dev->data->nb_tx_queues = (uint16_t)1;
@@ -250,7 +221,12 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)
 	eth_dev->data->all_multicast = 0;
 
 	eth_dev->dev_ops = &default_dev_ops;
-	eth_dev->pci_dev = pci_dev;
+	eth_dev->data->dev_flags = RTE_ETH_DEV_INTR_LSC |
+		RTE_ETH_DEV_DETACHABLE | RTE_ETH_DEV_BONDED;
+	eth_dev->driver = NULL;
+	eth_dev->data->kdrv = RTE_KDRV_NONE;
+	eth_dev->data->drv_name = NULL;
+	eth_dev->data->numa_node =  socket_id;
 
 	rte_spinlock_init(&internals->lock);
 
@@ -287,7 +263,6 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)
 	return eth_dev->data->port_id;
 
 err:
-	rte_free(pci_dev);
 	rte_free(internals);
 	if (eth_dev != NULL) {
 		rte_free(eth_dev->data->mac_addrs);
@@ -319,7 +294,6 @@ rte_eth_bond_free(const char *name)
 	eth_dev->rx_pkt_burst = NULL;
 	eth_dev->tx_pkt_burst = NULL;
 
-	rte_free(eth_dev->pci_dev);
 	rte_free(eth_dev->data->dev_private);
 	rte_free(eth_dev->data->mac_addrs);
 
@@ -348,7 +322,7 @@ __eth_bond_slave_add_lock_free(uint8_t bonded_port_id, uint8_t slave_port_id)
 	/* Verify that new slave device is not already a slave of another
 	 * bonded device */
 	for (i = rte_eth_dev_count()-1; i >= 0; i--) {
-		if (valid_bonded_ethdev(&rte_eth_devices[i]) == 0) {
+		if (check_for_bonded_ethdev(&rte_eth_devices[i]) == 0) {
 			temp_internals = rte_eth_devices[i].data->dev_private;
 
 			for (j = 0; j < temp_internals->slave_count; j++) {
diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
index 5cc6372..f4f29c5 100644
--- a/drivers/net/bonding/rte_eth_bond_pmd.c
+++ b/drivers/net/bonding/rte_eth_bond_pmd.c
@@ -1307,7 +1307,7 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev,
 	rte_eth_dev_stop(slave_eth_dev->data->port_id);
 
 	/* Enable interrupts on slave device if supported */
-	if (slave_eth_dev->driver->pci_drv.drv_flags & RTE_PCI_DRV_INTR_LSC)
+	if (slave_eth_dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC)
 		slave_eth_dev->data->dev_conf.intr_conf.lsc = 1;
 
 	/* Configure device */
@@ -1362,9 +1362,9 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev,
 	}
 
 	/* If lsc interrupt is set, check initial slave's link status */
-	if (slave_eth_dev->driver->pci_drv.drv_flags & RTE_PCI_DRV_INTR_LSC)
+	if (slave_eth_dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC)
 		bond_ethdev_lsc_event_callback(slave_eth_dev->data->port_id,
-				RTE_ETH_EVENT_INTR_LSC, &bonded_eth_dev->data->port_id);
+			RTE_ETH_EVENT_INTR_LSC, &bonded_eth_dev->data->port_id);
 
 	return 0;
 }
@@ -1447,7 +1447,7 @@ bond_ethdev_start(struct rte_eth_dev *eth_dev)
 	int i;
 
 	/* slave eth dev will be started by bonded device */
-	if (valid_bonded_ethdev(eth_dev)) {
+	if (check_for_bonded_ethdev(eth_dev)) {
 		RTE_BOND_LOG(ERR, "User tried to explicitly start a slave eth_dev (%d)",
 				eth_dev->data->port_id);
 		return -1;
@@ -1592,7 +1592,7 @@ bond_ethdev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 	dev_info->max_tx_queues = (uint16_t)512;
 
 	dev_info->min_rx_bufsize = 0;
-	dev_info->pci_dev = dev->pci_dev;
+	dev_info->pci_dev = NULL;
 
 	dev_info->rx_offload_capa = internals->rx_offload_capa;
 	dev_info->tx_offload_capa = internals->tx_offload_capa;
@@ -1605,7 +1605,7 @@ bond_ethdev_rx_queue_setup(struct rte_eth_dev *dev, uint16_t rx_queue_id,
 {
 	struct bond_rx_queue *bd_rx_q = (struct bond_rx_queue *)
 			rte_zmalloc_socket(NULL, sizeof(struct bond_rx_queue),
-					0, dev->pci_dev->numa_node);
+					0, dev->data->numa_node);
 	if (bd_rx_q == NULL)
 		return -1;
 
@@ -1629,7 +1629,7 @@ bond_ethdev_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id,
 {
 	struct bond_tx_queue *bd_tx_q  = (struct bond_tx_queue *)
 			rte_zmalloc_socket(NULL, sizeof(struct bond_tx_queue),
-					0, dev->pci_dev->numa_node);
+					0, dev->data->numa_node);
 
 	if (bd_tx_q == NULL)
 		return -1;
@@ -1873,7 +1873,7 @@ bond_ethdev_lsc_event_callback(uint8_t port_id, enum rte_eth_event_type type,
 	bonded_eth_dev = &rte_eth_devices[*(uint8_t *)param];
 	slave_eth_dev = &rte_eth_devices[port_id];
 
-	if (valid_bonded_ethdev(bonded_eth_dev))
+	if (check_for_bonded_ethdev(bonded_eth_dev))
 		return;
 
 	internals = bonded_eth_dev->data->dev_private;
diff --git a/drivers/net/bonding/rte_eth_bond_private.h b/drivers/net/bonding/rte_eth_bond_private.h
index 038bca6..82dadfc 100644
--- a/drivers/net/bonding/rte_eth_bond_private.h
+++ b/drivers/net/bonding/rte_eth_bond_private.h
@@ -162,7 +162,7 @@ struct bond_dev_private {
 extern struct eth_dev_ops default_dev_ops;
 
 int
-valid_bonded_ethdev(const struct rte_eth_dev *eth_dev);
+check_for_bonded_ethdev(const struct rte_eth_dev *eth_dev);
 
 /* Search given slave array to find possition of given id.
  * Return slave pos or slaves_count if not found. */
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 07/20] pcap: remove pci device driver
  2015-10-05 10:30 ` [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs Bernard Iremonger
                     ` (5 preceding siblings ...)
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 06/20] bonding: " Bernard Iremonger
@ 2015-10-05 10:30   ` Bernard Iremonger
  2015-10-12 10:48     ` Mcnamara, John
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 08/20] af_packet: " Bernard Iremonger
                     ` (12 subsequent siblings)
  19 siblings, 1 reply; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-05 10:30 UTC (permalink / raw)
  To: dev

remove rte_pcap_pmd and pci_dev.
initialise dev_flags, driver, drv_name, kdrv and numa_node fields in eth_dev data

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 drivers/net/pcap/rte_eth_pcap.c | 31 +++++++++----------------------
 1 file changed, 9 insertions(+), 22 deletions(-)

diff --git a/drivers/net/pcap/rte_eth_pcap.c b/drivers/net/pcap/rte_eth_pcap.c
index f2e4634..5f416f4 100644
--- a/drivers/net/pcap/rte_eth_pcap.c
+++ b/drivers/net/pcap/rte_eth_pcap.c
@@ -1,7 +1,7 @@
 /*-
  *   BSD LICENSE
  *
- *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+ *   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
  *   Copyright(c) 2014 6WIND S.A.
  *   All rights reserved.
  *
@@ -617,13 +617,6 @@ static const struct eth_dev_ops ops = {
 	.stats_reset = eth_stats_reset,
 };
 
-static struct eth_driver rte_pcap_pmd = {
-	.pci_drv = {
-		.name = "rte_pcap_pmd",
-		.drv_flags = RTE_PCI_DRV_DETACHABLE,
-	},
-};
-
 /*
  * Function handler that opens the pcap file for reading a stores a
  * reference of it for use it later on.
@@ -806,7 +799,6 @@ rte_pmd_init_internals(const char *name, const unsigned nb_rx_queues,
 		struct rte_kvargs *kvlist)
 {
 	struct rte_eth_dev_data *data = NULL;
-	struct rte_pci_device *pci_dev = NULL;
 	unsigned k_idx;
 	struct rte_kvargs_pair *pair = NULL;
 
@@ -819,17 +811,13 @@ rte_pmd_init_internals(const char *name, const unsigned nb_rx_queues,
 	RTE_LOG(INFO, PMD,
 			"Creating pcap-backed ethdev on numa socket %u\n", numa_node);
 
-	/* now do all data allocation - for eth_dev structure, dummy pci driver
+	/* 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;
 
-	pci_dev = rte_zmalloc_socket(name, sizeof(*pci_dev), 0, numa_node);
-	if (pci_dev == NULL)
-		goto error;
-
 	*internals = rte_zmalloc_socket(name, sizeof(**internals), 0, numa_node);
 	if (*internals == NULL)
 		goto error;
@@ -845,8 +833,8 @@ rte_pmd_init_internals(const char *name, const unsigned nb_rx_queues,
 
 	/* now put it all together
 	 * - store queue data in internals,
-	 * - store numa_node info in pci_driver
-	 * - point eth_dev_data to internals and pci_driver
+	 * - store numa_node info in eth_dev
+	 * - 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
@@ -860,8 +848,6 @@ rte_pmd_init_internals(const char *name, const unsigned nb_rx_queues,
 	else
 		(*internals)->if_index = if_nametoindex(pair->value);
 
-	pci_dev->numa_node = numa_node;
-
 	data->dev_private = *internals;
 	data->port_id = (*eth_dev)->data->port_id;
 	snprintf(data->name, sizeof(data->name), "%s", (*eth_dev)->data->name);
@@ -874,14 +860,16 @@ rte_pmd_init_internals(const char *name, const unsigned nb_rx_queues,
 
 	(*eth_dev)->data = data;
 	(*eth_dev)->dev_ops = &ops;
-	(*eth_dev)->pci_dev = pci_dev;
-	(*eth_dev)->driver = &rte_pcap_pmd;
+	(*eth_dev)->data->dev_flags = RTE_ETH_DEV_DETACHABLE;
+	(*eth_dev)->driver = NULL;
+	(*eth_dev)->data->kdrv = RTE_KDRV_NONE;
+	(*eth_dev)->data->drv_name = NULL;
+	(*eth_dev)->data->numa_node = numa_node;
 
 	return 0;
 
 error:
 	rte_free(data);
-	rte_free(pci_dev);
 	rte_free(*internals);
 
 	return -1;
@@ -1096,7 +1084,6 @@ rte_pmd_pcap_devuninit(const char *name)
 
 	rte_free(eth_dev->data->dev_private);
 	rte_free(eth_dev->data);
-	rte_free(eth_dev->pci_dev);
 
 	rte_eth_dev_release_port(eth_dev);
 
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 08/20] af_packet: remove pci device driver
  2015-10-05 10:30 ` [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs Bernard Iremonger
                     ` (6 preceding siblings ...)
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 07/20] pcap: " Bernard Iremonger
@ 2015-10-05 10:30   ` Bernard Iremonger
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 09/20] xenvirt: " Bernard Iremonger
                     ` (11 subsequent siblings)
  19 siblings, 0 replies; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-05 10:30 UTC (permalink / raw)
  To: dev

From: David Hunt <david.hunt@intel.com>

initialise dev_flags, driver, kdrv, drv_name and numa_node fileds in eth_dev data.

Signed-off-by: David Hunt <david.hunt@intel.com>
Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 drivers/net/af_packet/rte_eth_af_packet.c | 20 ++++++++------------
 1 file changed, 8 insertions(+), 12 deletions(-)

diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c
index bdd9628..7c3c455 100644
--- a/drivers/net/af_packet/rte_eth_af_packet.c
+++ b/drivers/net/af_packet/rte_eth_af_packet.c
@@ -5,7 +5,7 @@
  *
  *   Originally based upon librte_pmd_pcap code:
  *
- *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+ *   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
  *   Copyright(c) 2014 6WIND S.A.
  *   All rights reserved.
  *
@@ -431,7 +431,6 @@ rte_pmd_init_internals(const char *name,
                        struct rte_kvargs *kvlist)
 {
 	struct rte_eth_dev_data *data = NULL;
-	struct rte_pci_device *pci_dev = NULL;
 	struct rte_kvargs_pair *pair = NULL;
 	struct ifreq ifr;
 	size_t ifnamelen;
@@ -469,10 +468,6 @@ rte_pmd_init_internals(const char *name,
 	if (data == NULL)
 		goto error;
 
-	pci_dev = rte_zmalloc_socket(name, sizeof(*pci_dev), 0, numa_node);
-	if (pci_dev == NULL)
-		goto error;
-
 	*internals = rte_zmalloc_socket(name, sizeof(**internals),
 	                                0, numa_node);
 	if (*internals == NULL)
@@ -655,8 +650,8 @@ rte_pmd_init_internals(const char *name,
 	/*
 	 * now put it all together
 	 * - store queue data in internals,
-	 * - store numa_node info in pci_driver
-	 * - point eth_dev_data to internals and pci_driver
+	 * - store numa_node info in eth_dev
+	 * - point eth_dev_data to internals
 	 * - and point eth_dev structure to new eth_dev_data structure
 	 */
 
@@ -669,17 +664,18 @@ rte_pmd_init_internals(const char *name,
 	data->dev_link = pmd_link;
 	data->mac_addrs = &(*internals)->eth_addr;
 
-	pci_dev->numa_node = numa_node;
-
 	(*eth_dev)->data = data;
 	(*eth_dev)->dev_ops = &ops;
-	(*eth_dev)->pci_dev = pci_dev;
+	(*eth_dev)->data->dev_flags = 0;
+	(*eth_dev)->driver = NULL;
+	(*eth_dev)->data->drv_name = NULL;
+	(*eth_dev)->data->kdrv = RTE_KDRV_NONE;
+	(*eth_dev)->data->numa_node = numa_node;
 
 	return 0;
 
 error:
 	rte_free(data);
-	rte_free(pci_dev);
 
 	if (*internals) {
 		for (q = 0; q < nb_queues; q++) {
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 09/20] xenvirt: remove pci device driver
  2015-10-05 10:30 ` [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs Bernard Iremonger
                     ` (7 preceding siblings ...)
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 08/20] af_packet: " Bernard Iremonger
@ 2015-10-05 10:30   ` Bernard Iremonger
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 10/20] mpipe: " Bernard Iremonger
                     ` (10 subsequent siblings)
  19 siblings, 0 replies; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-05 10:30 UTC (permalink / raw)
  To: dev

From: David Hunt <david.hunt@intel.com>

Initialise dev_flags, driver, kdrv, drv_name and numa_node in eth_dev data.

Signed-off-by: David Hunt <david.hunt@intel.com>
Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 drivers/net/xenvirt/rte_eth_xenvirt.c | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/drivers/net/xenvirt/rte_eth_xenvirt.c b/drivers/net/xenvirt/rte_eth_xenvirt.c
index 73e8bce..b3383af 100644
--- a/drivers/net/xenvirt/rte_eth_xenvirt.c
+++ b/drivers/net/xenvirt/rte_eth_xenvirt.c
@@ -617,7 +617,6 @@ eth_dev_xenvirt_create(const char *name, const char *params,
                 enum dev_action action)
 {
 	struct rte_eth_dev_data *data = NULL;
-	struct rte_pci_device *pci_dev = NULL;
 	struct pmd_internals *internals = NULL;
 	struct rte_eth_dev *eth_dev = NULL;
 	struct xenvirt_dict dict;
@@ -639,10 +638,6 @@ eth_dev_xenvirt_create(const char *name, const char *params,
 	if (data == NULL)
 		goto err;
 
-	pci_dev = rte_zmalloc_socket(name, sizeof(*pci_dev), 0, numa_node);
-	if (pci_dev == NULL)
-		goto err;
-
 	internals = rte_zmalloc_socket(name, sizeof(*internals), 0, numa_node);
 	if (internals == NULL)
 		goto err;
@@ -652,8 +647,6 @@ eth_dev_xenvirt_create(const char *name, const char *params,
 	if (eth_dev == NULL)
 		goto err;
 
-	pci_dev->numa_node = numa_node;
-
 	data->dev_private = internals;
 	data->port_id = eth_dev->data->port_id;
 	data->nb_rx_queues = (uint16_t)1;
@@ -668,7 +661,11 @@ eth_dev_xenvirt_create(const char *name, const char *params,
 
 	eth_dev->data = data;
 	eth_dev->dev_ops = &ops;
-	eth_dev->pci_dev = pci_dev;
+	eth_dev->data->dev_flags = 0;
+	eth_dev->data->kdrv = RTE_KDRV_NONE;
+	eth_dev->data->drv_name = NULL;
+	eth_dev->driver = NULL;
+	eth_dev->data->numa_node = numa_node;
 
 	eth_dev->rx_pkt_burst = eth_xenvirt_rx;
 	eth_dev->tx_pkt_burst = eth_xenvirt_tx;
@@ -680,7 +677,6 @@ eth_dev_xenvirt_create(const char *name, const char *params,
 
 err:
 	rte_free(data);
-	rte_free(pci_dev);
 	rte_free(internals);
 
 	return -1;
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 10/20] mpipe: remove pci device driver
  2015-10-05 10:30 ` [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs Bernard Iremonger
                     ` (8 preceding siblings ...)
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 09/20] xenvirt: " Bernard Iremonger
@ 2015-10-05 10:30   ` Bernard Iremonger
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 11/20] ixgbe: copy pci device info to eth_dev data Bernard Iremonger
                     ` (9 subsequent siblings)
  19 siblings, 0 replies; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-05 10:30 UTC (permalink / raw)
  To: dev

From: David Hunt <david.hunt@intel.com>

initialise dev_flags, kdrv, driver, drv_name and numa_node in eth_dev data.

Signed-off-by: David Hunt <david.hunt@intel.com>
Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 drivers/net/mpipe/mpipe_tilegx.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/net/mpipe/mpipe_tilegx.c b/drivers/net/mpipe/mpipe_tilegx.c
index 743feef..5afd191 100644
--- a/drivers/net/mpipe/mpipe_tilegx.c
+++ b/drivers/net/mpipe/mpipe_tilegx.c
@@ -122,7 +122,6 @@ struct mpipe_dev_priv {
 	int channel;			/* Device channel. */
 	int port_id;			/* DPDK port index. */
 	struct rte_eth_dev *eth_dev;	/* DPDK device. */
-	struct rte_pci_device pci_dev;	/* PCI device data. */
 	struct rte_mbuf **tx_comps;	/* TX completion array. */
 	struct rte_mempool *rx_mpool;	/* mpool used by the rx queues. */
 	unsigned rx_offset;		/* Receive head room. */
@@ -1567,7 +1566,6 @@ rte_pmd_mpipe_devinit(const char *ifname,
 	priv->context = context;
 	priv->instance = instance;
 	priv->is_xaui = (strncmp(ifname, "xgbe", 4) == 0);
-	priv->pci_dev.numa_node = instance;
 	priv->channel = -1;
 
 	mac = priv->mac_addr.addr_bytes;
@@ -1591,9 +1589,14 @@ rte_pmd_mpipe_devinit(const char *ifname,
 	priv->eth_dev = eth_dev;
 	priv->port_id = eth_dev->data->port_id;
 	eth_dev->data->dev_private = priv;
-	eth_dev->pci_dev = &priv->pci_dev;
 	eth_dev->data->mac_addrs = &priv->mac_addr;
 
+	eth_dev->data->dev_flags = 0;
+	eth_dev->data->kdrv = RTE_KDRV_NONE;
+	eth_dev->driver = NULL;
+	eth_dev->data->drv_name = NULL;
+	eth_dev->data->numa_node = instance;
+
 	eth_dev->dev_ops      = &mpipe_dev_ops;
 	eth_dev->rx_pkt_burst = &mpipe_recv_pkts;
 	eth_dev->tx_pkt_burst = &mpipe_xmit_pkts;
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 11/20] ixgbe: copy pci device info to eth_dev data
  2015-10-05 10:30 ` [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs Bernard Iremonger
                     ` (9 preceding siblings ...)
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 10/20] mpipe: " Bernard Iremonger
@ 2015-10-05 10:30   ` Bernard Iremonger
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 12/20] e1000: " Bernard Iremonger
                     ` (8 subsequent siblings)
  19 siblings, 0 replies; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-05 10:30 UTC (permalink / raw)
  To: dev

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 drivers/net/ixgbe/ixgbe_ethdev.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index ec2918c..08b5cbb 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -887,6 +887,8 @@ eth_ixgbe_dev_init(struct rte_eth_dev *eth_dev)
 	}
 	pci_dev = eth_dev->pci_dev;
 
+	rte_eth_copy_dev_info(eth_dev, pci_dev);
+
 	/* Vendor and Device ID need to be set before init of shared code */
 	hw->device_id = pci_dev->id.device_id;
 	hw->vendor_id = pci_dev->id.vendor_id;
@@ -1155,6 +1157,8 @@ eth_ixgbevf_dev_init(struct rte_eth_dev *eth_dev)
 
 	pci_dev = eth_dev->pci_dev;
 
+	rte_eth_copy_dev_info(eth_dev, pci_dev);
+
 	hw->device_id = pci_dev->id.device_id;
 	hw->vendor_id = pci_dev->id.vendor_id;
 	hw->hw_addr = (void *)pci_dev->mem_resource[0].addr;
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 12/20] e1000: copy pci device info to eth_dev data
  2015-10-05 10:30 ` [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs Bernard Iremonger
                     ` (10 preceding siblings ...)
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 11/20] ixgbe: copy pci device info to eth_dev data Bernard Iremonger
@ 2015-10-05 10:30   ` Bernard Iremonger
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 13/20] i40e: " Bernard Iremonger
                     ` (7 subsequent siblings)
  19 siblings, 0 replies; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-05 10:30 UTC (permalink / raw)
  To: dev

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 drivers/net/e1000/em_ethdev.c  | 3 +++
 drivers/net/e1000/igb_ethdev.c | 5 +++++
 2 files changed, 8 insertions(+)

diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c
index 912f5dd..aa1bf48 100644
--- a/drivers/net/e1000/em_ethdev.c
+++ b/drivers/net/e1000/em_ethdev.c
@@ -232,6 +232,9 @@ eth_em_dev_init(struct rte_eth_dev *eth_dev)
 		E1000_DEV_PRIVATE_TO_VFTA(eth_dev->data->dev_private);
 
 	pci_dev = eth_dev->pci_dev;
+
+	rte_eth_copy_dev_info(eth_dev, pci_dev);
+
 	eth_dev->dev_ops = &eth_em_ops;
 	eth_dev->rx_pkt_burst = (eth_rx_burst_t)&eth_em_recv_pkts;
 	eth_dev->tx_pkt_burst = (eth_tx_burst_t)&eth_em_xmit_pkts;
diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c
index 848ef6e..2a7aa31 100644
--- a/drivers/net/e1000/igb_ethdev.c
+++ b/drivers/net/e1000/igb_ethdev.c
@@ -531,6 +531,9 @@ eth_igb_dev_init(struct rte_eth_dev *eth_dev)
 	uint32_t ctrl_ext;
 
 	pci_dev = eth_dev->pci_dev;
+
+	rte_eth_copy_dev_info(eth_dev, pci_dev);
+
 	eth_dev->dev_ops = &eth_igb_ops;
 	eth_dev->rx_pkt_burst = &eth_igb_recv_pkts;
 	eth_dev->tx_pkt_burst = &eth_igb_xmit_pkts;
@@ -739,6 +742,8 @@ eth_igbvf_dev_init(struct rte_eth_dev *eth_dev)
 
 	pci_dev = eth_dev->pci_dev;
 
+	rte_eth_copy_dev_info(eth_dev, pci_dev);
+
 	hw->device_id = pci_dev->id.device_id;
 	hw->vendor_id = pci_dev->id.vendor_id;
 	hw->hw_addr = (void *)pci_dev->mem_resource[0].addr;
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 13/20] i40e: copy pci device info to eth_dev data
  2015-10-05 10:30 ` [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs Bernard Iremonger
                     ` (11 preceding siblings ...)
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 12/20] e1000: " Bernard Iremonger
@ 2015-10-05 10:30   ` Bernard Iremonger
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 14/20] fm10k: " Bernard Iremonger
                     ` (6 subsequent siblings)
  19 siblings, 0 replies; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-05 10:30 UTC (permalink / raw)
  To: dev

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 drivers/net/i40e/i40e_ethdev.c    | 3 +++
 drivers/net/i40e/i40e_ethdev_vf.c | 2 ++
 2 files changed, 5 insertions(+)

diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 2dd9fdc..bd81d4e 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -408,6 +408,9 @@ eth_i40e_dev_init(struct rte_eth_dev *dev)
 		return 0;
 	}
 	pci_dev = dev->pci_dev;
+
+	rte_eth_copy_dev_info(dev, pci_dev);
+
 	pf->adapter = I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
 	pf->adapter->eth_dev = dev;
 	pf->dev_data = dev->data;
diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c
index b694400..ab718fb 100644
--- a/drivers/net/i40e/i40e_ethdev_vf.c
+++ b/drivers/net/i40e/i40e_ethdev_vf.c
@@ -1187,6 +1187,8 @@ i40evf_dev_init(struct rte_eth_dev *eth_dev)
 		return 0;
 	}
 
+	rte_eth_copy_dev_info(eth_dev, eth_dev->pci_dev);
+
 	hw->vendor_id = eth_dev->pci_dev->id.vendor_id;
 	hw->device_id = eth_dev->pci_dev->id.device_id;
 	hw->subsystem_vendor_id = eth_dev->pci_dev->id.subsystem_vendor_id;
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 14/20] fm10k: copy pci device info to eth_dev data
  2015-10-05 10:30 ` [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs Bernard Iremonger
                     ` (12 preceding siblings ...)
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 13/20] i40e: " Bernard Iremonger
@ 2015-10-05 10:30   ` Bernard Iremonger
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 15/20] bnx2x: " Bernard Iremonger
                     ` (5 subsequent siblings)
  19 siblings, 0 replies; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-05 10:30 UTC (permalink / raw)
  To: dev

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 drivers/net/fm10k/fm10k_ethdev.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c
index a69c990..12be227 100644
--- a/drivers/net/fm10k/fm10k_ethdev.c
+++ b/drivers/net/fm10k/fm10k_ethdev.c
@@ -2075,6 +2075,8 @@ eth_fm10k_dev_init(struct rte_eth_dev *dev)
 	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
 		return 0;
 
+	rte_eth_copy_dev_info(dev, dev->pci_dev);
+
 	macvlan = FM10K_DEV_PRIVATE_TO_MACVLAN(dev->data->dev_private);
 	memset(macvlan, 0, sizeof(*macvlan));
 	/* Vendor and Device ID need to be set before init of shared code */
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 15/20] bnx2x: copy pci device info to eth_dev data
  2015-10-05 10:30 ` [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs Bernard Iremonger
                     ` (13 preceding siblings ...)
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 14/20] fm10k: " Bernard Iremonger
@ 2015-10-05 10:30   ` Bernard Iremonger
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 16/20] cxgbe: " Bernard Iremonger
                     ` (4 subsequent siblings)
  19 siblings, 0 replies; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-05 10:30 UTC (permalink / raw)
  To: dev

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 drivers/net/bnx2x/bnx2x_ethdev.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/bnx2x/bnx2x_ethdev.c b/drivers/net/bnx2x/bnx2x_ethdev.c
index 09b5920..fbcd5f4 100644
--- a/drivers/net/bnx2x/bnx2x_ethdev.c
+++ b/drivers/net/bnx2x/bnx2x_ethdev.c
@@ -419,6 +419,9 @@ bnx2x_common_dev_init(struct rte_eth_dev *eth_dev, int is_vf)
 
 	eth_dev->dev_ops = is_vf ? &bnx2xvf_eth_dev_ops : &bnx2x_eth_dev_ops;
 	pci_dev = eth_dev->pci_dev;
+
+	rte_eth_copy_dev_info(eth_dev, pci_dev);
+
 	sc = eth_dev->data->dev_private;
 	sc->pcie_bus    = pci_dev->addr.bus;
 	sc->pcie_device = pci_dev->addr.devid;
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 16/20] cxgbe: copy pci device info to eth_dev data
  2015-10-05 10:30 ` [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs Bernard Iremonger
                     ` (14 preceding siblings ...)
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 15/20] bnx2x: " Bernard Iremonger
@ 2015-10-05 10:30   ` Bernard Iremonger
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 17/20] enic: " Bernard Iremonger
                     ` (3 subsequent siblings)
  19 siblings, 0 replies; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-05 10:30 UTC (permalink / raw)
  To: dev

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 drivers/net/cxgbe/cxgbe_ethdev.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/cxgbe/cxgbe_ethdev.c b/drivers/net/cxgbe/cxgbe_ethdev.c
index 478051a..f081879 100644
--- a/drivers/net/cxgbe/cxgbe_ethdev.c
+++ b/drivers/net/cxgbe/cxgbe_ethdev.c
@@ -744,6 +744,9 @@ static int eth_cxgbe_dev_init(struct rte_eth_dev *eth_dev)
 		return 0;
 
 	pci_dev = eth_dev->pci_dev;
+
+	rte_eth_copy_dev_info(eth_dev, pci_dev);
+
 	snprintf(name, sizeof(name), "cxgbeadapter%d", eth_dev->data->port_id);
 	adapter = rte_zmalloc(name, sizeof(*adapter), 0);
 	if (!adapter)
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 17/20] enic: copy pci device info to eth_dev data
  2015-10-05 10:30 ` [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs Bernard Iremonger
                     ` (15 preceding siblings ...)
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 16/20] cxgbe: " Bernard Iremonger
@ 2015-10-05 10:30   ` Bernard Iremonger
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 18/20] mlx4: " Bernard Iremonger
                     ` (2 subsequent siblings)
  19 siblings, 0 replies; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-05 10:30 UTC (permalink / raw)
  To: dev

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 drivers/net/enic/enic_ethdev.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/enic/enic_ethdev.c b/drivers/net/enic/enic_ethdev.c
index e385560..95baa8a 100644
--- a/drivers/net/enic/enic_ethdev.c
+++ b/drivers/net/enic/enic_ethdev.c
@@ -597,6 +597,7 @@ static int eth_enicpmd_dev_init(struct rte_eth_dev *eth_dev)
 	eth_dev->tx_pkt_burst = &enicpmd_xmit_pkts;
 
 	pdev = eth_dev->pci_dev;
+	rte_eth_copy_dev_info(eth_dev, pdev);
 	enic->pdev = pdev;
 	addr = &pdev->addr;
 
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 18/20] mlx4: copy pci device info to eth_dev data
  2015-10-05 10:30 ` [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs Bernard Iremonger
                     ` (16 preceding siblings ...)
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 17/20] enic: " Bernard Iremonger
@ 2015-10-05 10:30   ` Bernard Iremonger
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 19/20] virtio: " Bernard Iremonger
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 20/20] vmxnet3: " Bernard Iremonger
  19 siblings, 0 replies; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-05 10:30 UTC (permalink / raw)
  To: dev

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 drivers/net/mlx4/mlx4.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c
index 2f49ed5..e7b38da 100644
--- a/drivers/net/mlx4/mlx4.c
+++ b/drivers/net/mlx4/mlx4.c
@@ -4973,6 +4973,9 @@ mlx4_pci_devinit(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
 
 		eth_dev->data->dev_private = priv;
 		eth_dev->pci_dev = pci_dev;
+
+		rte_eth_copy_dev_info(eth_dev, pci_dev);
+
 		eth_dev->driver = &mlx4_driver;
 		eth_dev->data->rx_mbuf_alloc_failed = 0;
 		eth_dev->data->mtu = ETHER_MTU;
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 19/20] virtio: copy pci device info to eth_dev data
  2015-10-05 10:30 ` [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs Bernard Iremonger
                     ` (17 preceding siblings ...)
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 18/20] mlx4: " Bernard Iremonger
@ 2015-10-05 10:30   ` Bernard Iremonger
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 20/20] vmxnet3: " Bernard Iremonger
  19 siblings, 0 replies; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-05 10:30 UTC (permalink / raw)
  To: dev

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 drivers/net/virtio/virtio_ethdev.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c
index 465d3cd..20059a0 100644
--- a/drivers/net/virtio/virtio_ethdev.c
+++ b/drivers/net/virtio/virtio_ethdev.c
@@ -1185,6 +1185,9 @@ eth_virtio_dev_init(struct rte_eth_dev *eth_dev)
 	}
 
 	pci_dev = eth_dev->pci_dev;
+
+	rte_eth_copy_dev_info(eth_dev, pci_dev);
+
 	if (virtio_resource_init(pci_dev) < 0)
 		return -1;
 
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 20/20] vmxnet3: copy pci device info to eth_dev data
  2015-10-05 10:30 ` [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs Bernard Iremonger
                     ` (18 preceding siblings ...)
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 19/20] virtio: " Bernard Iremonger
@ 2015-10-05 10:30   ` Bernard Iremonger
  19 siblings, 0 replies; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-05 10:30 UTC (permalink / raw)
  To: dev

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 drivers/net/vmxnet3/vmxnet3_ethdev.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c
index a70be5c..2beee3e 100644
--- a/drivers/net/vmxnet3/vmxnet3_ethdev.c
+++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c
@@ -235,6 +235,8 @@ eth_vmxnet3_dev_init(struct rte_eth_dev *eth_dev)
 	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
 		return 0;
 
+	rte_eth_copy_dev_info(eth_dev, pci_dev);
+
 	/* Vendor and Device ID need to be set before init of shared code */
 	hw->device_id = pci_dev->id.device_id;
 	hw->vendor_id = pci_dev->id.vendor_id;
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [dpdk-dev] [PATCH v2 02/20] librte_ether: add fields from rte_pci_driver to rte_eth_dev_data
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 02/20] librte_ether: add fields from rte_pci_driver to rte_eth_dev_data Bernard Iremonger
@ 2015-10-12 10:46     ` Mcnamara, John
  2015-10-12 16:17       ` Iremonger, Bernard
  0 siblings, 1 reply; 37+ messages in thread
From: Mcnamara, John @ 2015-10-12 10:46 UTC (permalink / raw)
  To: Iremonger, Bernard, dev

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Bernard Iremonger
> Sent: Monday, October 5, 2015 11:30 AM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH v2 02/20] librte_ether: add fields from
> rte_pci_driver to rte_eth_dev_data
> 
> add dev_flags to rte_eth_dev_data, add macros for dev_flags.
> add kdrv to rte_eth_dev_data.
> add numa_node to rte_eth_dev_data.
> add drv_name to rte_eth_dev_data.
> use dev_type to distinguish between vdev's and pdev's.
> remove pci_dev branches.


Hi Bernard,

Patch 02/20 doesn't compile without patch 03/20 also being applied:


    $ git log --pretty=oneline --abbrev-commit -2 
    0958ce7 librte_ether: add fields from rte_pci_driver to rte_eth_dev_data
    30e65e6 librte_eal: add RTE_KDRV_NONE for vdevs

    $ make T=x86_64-native-linuxapp-gcc -j install
    ...
    lib/librte_ether/rte_ethdev.c:3341:1: error: no previous prototype for
    'rte_eth_copy_dev_info' [-Werror=missing-prototypes]
    cc1: all warnings being treated as errors


John

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [dpdk-dev] [PATCH v2 07/20] pcap: remove pci device driver
  2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 07/20] pcap: " Bernard Iremonger
@ 2015-10-12 10:48     ` Mcnamara, John
  0 siblings, 0 replies; 37+ messages in thread
From: Mcnamara, John @ 2015-10-12 10:48 UTC (permalink / raw)
  To: Iremonger, Bernard, dev

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Bernard Iremonger
> Sent: Monday, October 5, 2015 11:30 AM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH v2 07/20] pcap: remove pci device driver
> 
> remove rte_pcap_pmd and pci_dev.
> initialise dev_flags, driver, drv_name, kdrv and numa_node fields in
> eth_dev data
> 
> Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>

Tested-by: John McNamara <john.mcnamara@intel.com>
Acked-by:  John McNamara <john.mcnamara@intel.com>

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [dpdk-dev] [PATCH v2 02/20] librte_ether: add fields from rte_pci_driver to rte_eth_dev_data
  2015-10-12 10:46     ` Mcnamara, John
@ 2015-10-12 16:17       ` Iremonger, Bernard
  0 siblings, 0 replies; 37+ messages in thread
From: Iremonger, Bernard @ 2015-10-12 16:17 UTC (permalink / raw)
  To: Mcnamara, John, dev

Hi John,

<snip>

> Hi Bernard,
> 
> Patch 02/20 doesn't compile without patch 03/20 also being applied:
> 
> 
>     $ git log --pretty=oneline --abbrev-commit -2
>     0958ce7 librte_ether: add fields from rte_pci_driver to rte_eth_dev_data
>     30e65e6 librte_eal: add RTE_KDRV_NONE for vdevs
> 
>     $ make T=x86_64-native-linuxapp-gcc -j install
>     ...
>     lib/librte_ether/rte_ethdev.c:3341:1: error: no previous prototype for
>     'rte_eth_copy_dev_info' [-Werror=missing-prototypes]
>     cc1: all warnings being treated as errors
> 
> 
> John
> 
I have reworked patch 02/20 and 03/20  to fix this issue.
I will send a v3 patch set with the revised patches.

Regards,

Bernard.

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 1/1] vhost_xen: fix compile error in main.c
       [not found] <PATCH v2>
  2015-10-05 10:30 ` [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs Bernard Iremonger
@ 2015-10-22 13:21 ` Bernard Iremonger
  2015-10-23 10:33   ` Ananyev, Konstantin
  2015-10-30 17:01   ` Thomas Monjalon
  2015-10-22 14:28 ` [dpdk-dev] [PATCH v2 0/1] vmxnet3 hotplug support Bernard Iremonger
  2015-10-27 16:03 ` [dpdk-dev] [PATCH v2 0/2] xenvirt hotplug support Bernard Iremonger
  3 siblings, 2 replies; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-22 13:21 UTC (permalink / raw)
  To: dev

changes in v2:
update release notes

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 doc/guides/rel_notes/release_2_2.rst | 3 +++
 examples/vhost_xen/main.c            | 8 +++++---
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/doc/guides/rel_notes/release_2_2.rst b/doc/guides/rel_notes/release_2_2.rst
index 4f75cff..9c6163f 100644
--- a/doc/guides/rel_notes/release_2_2.rst
+++ b/doc/guides/rel_notes/release_2_2.rst
@@ -65,6 +65,9 @@ Libraries
 Examples
 ~~~~~~~~
 
+* **vhost_xen: Fixed compile error.**
+
+  Fixed compile error in examples/vhost_xen/main.c
 
 Other
 ~~~~~
diff --git a/examples/vhost_xen/main.c b/examples/vhost_xen/main.c
index 5d20700..d124be1 100644
--- a/examples/vhost_xen/main.c
+++ b/examples/vhost_xen/main.c
@@ -1,7 +1,7 @@
 /*-
  *   BSD LICENSE
  *
- *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+ *   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
  *   All rights reserved.
  *
  *   Redistribution and use in source and binary forms, with or without
@@ -579,6 +579,7 @@ virtio_dev_rx(struct virtio_net *dev, struct rte_mbuf **pkts, uint32_t count)
 	uint16_t res_base_idx, res_end_idx;
 	uint16_t free_entries;
 	uint8_t success = 0;
+	void *userdata;
 
 	LOG_DEBUG(VHOST_DATA, "(%"PRIu64") virtio_dev_rx()\n", dev->device_fh);
 	vq = dev->virtqueue_rx;
@@ -656,13 +657,14 @@ virtio_dev_rx(struct virtio_net *dev, struct rte_mbuf **pkts, uint32_t count)
 		vq->used->ring[res_cur_idx & (vq->size - 1)].len = packet_len;
 
 		/* Copy mbuf data to buffer */
-		rte_memcpy((void *)(uintptr_t)buff_addr, (const void*)buff->data, rte_pktmbuf_data_len(buff));
+		userdata = rte_pktmbuf_mtod(buff, void *);
+		rte_memcpy((void *)(uintptr_t)buff_addr, userdata, rte_pktmbuf_data_len(buff));
 
 		res_cur_idx++;
 		packet_success++;
 
 		/* mergeable is disabled then a header is required per buffer. */
-		rte_memcpy((void *)(uintptr_t)buff_hdr_addr, (const void*)&virtio_hdr, vq->vhost_hlen);
+		rte_memcpy((void *)(uintptr_t)buff_hdr_addr, (const void *)&virtio_hdr, vq->vhost_hlen);
 		if (res_cur_idx < res_end_idx) {
 			/* Prefetch descriptor index. */
 			rte_prefetch0(&vq->desc[head[packet_success]]);
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 0/1]  vmxnet3 hotplug support
       [not found] <PATCH v2>
  2015-10-05 10:30 ` [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs Bernard Iremonger
  2015-10-22 13:21 ` [dpdk-dev] [PATCH v2 1/1] vhost_xen: fix compile error in main.c Bernard Iremonger
@ 2015-10-22 14:28 ` Bernard Iremonger
  2015-10-22 14:28   ` [dpdk-dev] [PATCH v2 1/1] vmxnet3: add PCI Port Hotplug support Bernard Iremonger
  2015-10-27 16:03 ` [dpdk-dev] [PATCH v2 0/2] xenvirt hotplug support Bernard Iremonger
  3 siblings, 1 reply; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-22 14:28 UTC (permalink / raw)
  To: dev

add PCI Port Hotplug support to the vmxnet3 PMD

This patch depends on 4 patches from the following patch set:

0000-remove-pci-driver-from-vdevs.patch

0001-librte_eal-add-RTE_KDRV_NONE-for-vdevs.patch
0002-librte_ether-add-fields-from-rte_pci_driver-to-rte_e.patch
0003-librte_ether-add-function-rte_eth_copy_dev_info.patch
0020-vmxnet3-copy-pci-device-info-to-eth_dev-data.patch

Changes in v2:
Update release notes.

Bernard Iremonger (1):
  vmxnet3: add PCI Port Hotplug support

 doc/guides/rel_notes/release_2_2.rst |  1 +
 drivers/net/vmxnet3/vmxnet3_ethdev.c | 33 +++++++++++++++++++++++++++++----
 2 files changed, 30 insertions(+), 4 deletions(-)

-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 1/1] vmxnet3: add PCI Port Hotplug support
  2015-10-22 14:28 ` [dpdk-dev] [PATCH v2 0/1] vmxnet3 hotplug support Bernard Iremonger
@ 2015-10-22 14:28   ` Bernard Iremonger
  2015-10-31  8:37     ` Yong Wang
  0 siblings, 1 reply; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-22 14:28 UTC (permalink / raw)
  To: dev

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 doc/guides/rel_notes/release_2_2.rst |  1 +
 drivers/net/vmxnet3/vmxnet3_ethdev.c | 33 +++++++++++++++++++++++++++++----
 2 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/doc/guides/rel_notes/release_2_2.rst b/doc/guides/rel_notes/release_2_2.rst
index 4f75cff..9b0c046 100644
--- a/doc/guides/rel_notes/release_2_2.rst
+++ b/doc/guides/rel_notes/release_2_2.rst
@@ -9,6 +9,7 @@ New Features
   *  Added support for Jumbo Frames.
   *  Optimize forwarding performance for Chelsio T5 40GbE cards.
 
+* **Added port hotplug support to the vmxnet3 PMD.**
 
 Resolved Issues
 ---------------
diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c
index a70be5c..d5337ac 100644
--- a/drivers/net/vmxnet3/vmxnet3_ethdev.c
+++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c
@@ -70,6 +70,7 @@
 #define PROCESS_SYS_EVENTS 0
 
 static int eth_vmxnet3_dev_init(struct rte_eth_dev *eth_dev);
+static int eth_vmxnet3_dev_uninit(struct rte_eth_dev *eth_dev);
 static int vmxnet3_dev_configure(struct rte_eth_dev *dev);
 static int vmxnet3_dev_start(struct rte_eth_dev *dev);
 static void vmxnet3_dev_stop(struct rte_eth_dev *dev);
@@ -294,13 +295,37 @@ eth_vmxnet3_dev_init(struct rte_eth_dev *eth_dev)
 	return 0;
 }
 
+static int
+eth_vmxnet3_dev_uninit(struct rte_eth_dev *eth_dev)
+{
+	struct vmxnet3_hw *hw = eth_dev->data->dev_private;
+
+	PMD_INIT_FUNC_TRACE();
+
+	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+		return 0;
+
+	if (hw->adapter_stopped == 0)
+		vmxnet3_dev_close(eth_dev);
+
+	eth_dev->dev_ops = NULL;
+	eth_dev->rx_pkt_burst = NULL;
+	eth_dev->tx_pkt_burst = NULL;
+
+	rte_free(eth_dev->data->mac_addrs);
+	eth_dev->data->mac_addrs = NULL;
+
+	return 0;
+}
+
 static struct eth_driver rte_vmxnet3_pmd = {
 	.pci_drv = {
 		.name = "rte_vmxnet3_pmd",
 		.id_table = pci_id_vmxnet3_map,
-		.drv_flags = RTE_PCI_DRV_NEED_MAPPING,
+		.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_DETACHABLE,
 	},
 	.eth_dev_init = eth_vmxnet3_dev_init,
+	.eth_dev_uninit = eth_vmxnet3_dev_uninit,
 	.dev_private_size = sizeof(struct vmxnet3_hw),
 };
 
@@ -579,7 +604,7 @@ vmxnet3_dev_stop(struct rte_eth_dev *dev)
 
 	PMD_INIT_FUNC_TRACE();
 
-	if (hw->adapter_stopped == TRUE) {
+	if (hw->adapter_stopped == 1) {
 		PMD_INIT_LOG(DEBUG, "Device already closed.");
 		return;
 	}
@@ -595,7 +620,7 @@ vmxnet3_dev_stop(struct rte_eth_dev *dev)
 	/* reset the device */
 	VMXNET3_WRITE_BAR1_REG(hw, VMXNET3_REG_CMD, VMXNET3_CMD_RESET_DEV);
 	PMD_INIT_LOG(DEBUG, "Device reset.");
-	hw->adapter_stopped = FALSE;
+	hw->adapter_stopped = 0;
 
 	vmxnet3_dev_clear_queues(dev);
 
@@ -615,7 +640,7 @@ vmxnet3_dev_close(struct rte_eth_dev *dev)
 	PMD_INIT_FUNC_TRACE();
 
 	vmxnet3_dev_stop(dev);
-	hw->adapter_stopped = TRUE;
+	hw->adapter_stopped = 1;
 }
 
 static void
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [dpdk-dev] [PATCH v2 1/1] vhost_xen: fix compile error in main.c
  2015-10-22 13:21 ` [dpdk-dev] [PATCH v2 1/1] vhost_xen: fix compile error in main.c Bernard Iremonger
@ 2015-10-23 10:33   ` Ananyev, Konstantin
  2015-10-30 17:01   ` Thomas Monjalon
  1 sibling, 0 replies; 37+ messages in thread
From: Ananyev, Konstantin @ 2015-10-23 10:33 UTC (permalink / raw)
  To: Iremonger, Bernard, dev



> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Bernard Iremonger
> Sent: Thursday, October 22, 2015 2:22 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH v2 1/1] vhost_xen: fix compile error in main.c
> 
> changes in v2:
> update release notes
> 
> Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
> ---

Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>

>  doc/guides/rel_notes/release_2_2.rst | 3 +++
>  examples/vhost_xen/main.c            | 8 +++++---
>  2 files changed, 8 insertions(+), 3 deletions(-)
> 

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 0/2] xenvirt hotplug support
       [not found] <PATCH v2>
                   ` (2 preceding siblings ...)
  2015-10-22 14:28 ` [dpdk-dev] [PATCH v2 0/1] vmxnet3 hotplug support Bernard Iremonger
@ 2015-10-27 16:03 ` Bernard Iremonger
  2015-10-27 16:03   ` [dpdk-dev] [PATCH v2 1/2] xenvirt: add support for Port Hotplug Bernard Iremonger
                     ` (2 more replies)
  3 siblings, 3 replies; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-27 16:03 UTC (permalink / raw)
  To: dev

add Port Hotplug support to the xenvirt PMD

This patch depends on v5 of the following patch set:

remove-pci-driver-from-vdevs.patch

Changes in  v2:
Rebase
Update release notes.

Bernard Iremonger (2):
  xenvirt: add support for Port Hotplug
  xenvirt: free queues in dev_close

 doc/guides/rel_notes/release_2_2.rst  |  2 +
 drivers/net/xenvirt/rte_eth_xenvirt.c | 73 +++++++++++++++++++++++++++++++++--
 drivers/net/xenvirt/rte_xen_lib.c     | 26 +++++++++++--
 drivers/net/xenvirt/rte_xen_lib.h     |  5 ++-
 4 files changed, 98 insertions(+), 8 deletions(-)

-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 1/2] xenvirt: add support for Port Hotplug
  2015-10-27 16:03 ` [dpdk-dev] [PATCH v2 0/2] xenvirt hotplug support Bernard Iremonger
@ 2015-10-27 16:03   ` Bernard Iremonger
  2015-10-27 16:03   ` [dpdk-dev] [PATCH v2 2/2] xenvirt: free queues in dev_close Bernard Iremonger
  2015-10-30  5:42   ` [dpdk-dev] [PATCH v2 0/2] xenvirt hotplug support Xie, Huawei
  2 siblings, 0 replies; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-27 16:03 UTC (permalink / raw)
  To: dev

update release notes.

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 doc/guides/rel_notes/release_2_2.rst  |  2 ++
 drivers/net/xenvirt/rte_eth_xenvirt.c | 49 ++++++++++++++++++++++++++++++++++-
 drivers/net/xenvirt/rte_xen_lib.c     | 26 ++++++++++++++++---
 drivers/net/xenvirt/rte_xen_lib.h     |  5 +++-
 4 files changed, 76 insertions(+), 6 deletions(-)

diff --git a/doc/guides/rel_notes/release_2_2.rst b/doc/guides/rel_notes/release_2_2.rst
index 455b5a2..c88392b 100644
--- a/doc/guides/rel_notes/release_2_2.rst
+++ b/doc/guides/rel_notes/release_2_2.rst
@@ -13,6 +13,8 @@ New Features
 
   * This change required modifications to librte_ether and all vdev and pdev PMD's.
 
+* **Added Port Hotplug support to xenvirt PMD.**
+
 Resolved Issues
 ---------------
 
diff --git a/drivers/net/xenvirt/rte_eth_xenvirt.c b/drivers/net/xenvirt/rte_eth_xenvirt.c
index 1b13758..084a753 100644
--- a/drivers/net/xenvirt/rte_eth_xenvirt.c
+++ b/drivers/net/xenvirt/rte_eth_xenvirt.c
@@ -661,7 +661,7 @@ eth_dev_xenvirt_create(const char *name, const char *params,
 
 	eth_dev->data = data;
 	eth_dev->dev_ops = &ops;
-	eth_dev->data->dev_flags = 0;
+	eth_dev->data->dev_flags = RTE_PCI_DRV_DETACHABLE;
 	eth_dev->data->kdrv = RTE_KDRV_NONE;
 	eth_dev->data->drv_name = NULL;
 	eth_dev->driver = NULL;
@@ -683,6 +683,38 @@ err:
 }
 
 
+static int
+eth_dev_xenvirt_free(const char *name, const unsigned numa_node)
+{
+	struct rte_eth_dev *eth_dev = NULL;
+
+	RTE_LOG(DEBUG, PMD,
+		"Free virtio rings backed ethdev on numa socket %u\n",
+		numa_node);
+
+	/* find an ethdev entry */
+	eth_dev = rte_eth_dev_allocated(name);
+	if (eth_dev == NULL)
+		return -1;
+
+	if (eth_dev->data->dev_started == 1) {
+		eth_dev_stop(eth_dev);
+		eth_dev_close(eth_dev);
+	}
+
+	eth_dev->rx_pkt_burst = NULL;
+	eth_dev->tx_pkt_burst = NULL;
+	eth_dev->dev_ops = NULL;
+
+	rte_free(eth_dev->data);
+	rte_free(eth_dev->data->dev_private);
+	rte_free(eth_dev->data->mac_addrs);
+
+	virtio_idx--;
+
+	return 0;
+}
+
 /*TODO: Support multiple process model */
 static int
 rte_pmd_xenvirt_devinit(const char *name, const char *params)
@@ -701,10 +733,25 @@ rte_pmd_xenvirt_devinit(const char *name, const char *params)
 	return 0;
 }
 
+static int
+rte_pmd_xenvirt_devuninit(const char *name)
+{
+	eth_dev_xenvirt_free(name, rte_socket_id());
+
+	if (virtio_idx == 0) {
+		if (xenstore_uninit() != 0)
+			RTE_LOG(ERR, PMD, "%s: xenstore uninit failed\n", __func__);
+
+		gntalloc_close();
+	}
+	return 0;
+}
+
 static struct rte_driver pmd_xenvirt_drv = {
 	.name = "eth_xenvirt",
 	.type = PMD_VDEV,
 	.init = rte_pmd_xenvirt_devinit,
+	.uninit = rte_pmd_xenvirt_devuninit,
 };
 
 PMD_REGISTER_DRIVER(pmd_xenvirt_drv);
diff --git a/drivers/net/xenvirt/rte_xen_lib.c b/drivers/net/xenvirt/rte_xen_lib.c
index b3932f0..5900b53 100644
--- a/drivers/net/xenvirt/rte_xen_lib.c
+++ b/drivers/net/xenvirt/rte_xen_lib.c
@@ -1,7 +1,7 @@
 /*-
  *   BSD LICENSE
  *
- *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+ *   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
  *   All rights reserved.
  *
  *   Redistribution and use in source and binary forms, with or without
@@ -50,6 +50,7 @@
 
 #include <rte_common.h>
 #include <rte_string_fns.h>
+#include <rte_malloc.h>
 
 #include "rte_xen_lib.h"
 
@@ -72,6 +73,8 @@ int gntalloc_fd = -1;
 static char *dompath = NULL;
 /* handle to xenstore read/write operations */
 static struct xs_handle *xs = NULL;
+/* flag to indicate if xenstore cleanup is required */
+static bool is_xenstore_cleaned_up;
 
 /*
  * Reserve a virtual address space.
@@ -275,7 +278,6 @@ xenstore_init(void)
 {
 	unsigned int len, domid;
 	char *buf;
-	static int cleanup = 0;
 	char *end;
 
 	xs = xs_domain_open();
@@ -301,16 +303,32 @@ xenstore_init(void)
 
 	xs_transaction_start(xs); /* When to stop transaction */
 
-	if (cleanup == 0) {
+	if (is_xenstore_cleaned_up == 0) {
 		if (xenstore_cleanup())
 			return -1;
-		cleanup = 1;
+		is_xenstore_cleaned_up = 1;
 	}
 
 	return 0;
 }
 
 int
+xenstore_uninit(void)
+{
+	xs_close(xs);
+
+	if (is_xenstore_cleaned_up == 0) {
+		if (xenstore_cleanup())
+			return -1;
+		is_xenstore_cleaned_up = 1;
+	}
+	free(dompath);
+	dompath = NULL;
+
+	return 0;
+}
+
+int
 xenstore_write(const char *key_str, const char *val_str)
 {
 	char grant_path[PATH_MAX];
diff --git a/drivers/net/xenvirt/rte_xen_lib.h b/drivers/net/xenvirt/rte_xen_lib.h
index 0ba7148..d973eac 100644
--- a/drivers/net/xenvirt/rte_xen_lib.h
+++ b/drivers/net/xenvirt/rte_xen_lib.h
@@ -1,7 +1,7 @@
 /*-
  *   BSD LICENSE
  *
- *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+ *   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
  *   All rights reserved.
  *
  *   Redistribution and use in source and binary forms, with or without
@@ -93,6 +93,9 @@ int
 xenstore_init(void);
 
 int
+xenstore_uninit(void);
+
+int
 xenstore_write(const char *key_str, const char *val_str);
 
 int
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* [dpdk-dev] [PATCH v2 2/2] xenvirt: free queues in dev_close
  2015-10-27 16:03 ` [dpdk-dev] [PATCH v2 0/2] xenvirt hotplug support Bernard Iremonger
  2015-10-27 16:03   ` [dpdk-dev] [PATCH v2 1/2] xenvirt: add support for Port Hotplug Bernard Iremonger
@ 2015-10-27 16:03   ` Bernard Iremonger
  2015-10-30  5:42   ` [dpdk-dev] [PATCH v2 0/2] xenvirt hotplug support Xie, Huawei
  2 siblings, 0 replies; 37+ messages in thread
From: Bernard Iremonger @ 2015-10-27 16:03 UTC (permalink / raw)
  To: dev

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 drivers/net/xenvirt/rte_eth_xenvirt.c | 24 ++++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

diff --git a/drivers/net/xenvirt/rte_eth_xenvirt.c b/drivers/net/xenvirt/rte_eth_xenvirt.c
index 084a753..6c2c067 100644
--- a/drivers/net/xenvirt/rte_eth_xenvirt.c
+++ b/drivers/net/xenvirt/rte_eth_xenvirt.c
@@ -75,6 +75,9 @@ static struct rte_eth_link pmd_link = {
 		.link_status = 0
 };
 
+static void
+eth_xenvirt_free_queues(struct rte_eth_dev *dev);
+
 static inline struct rte_mbuf *
 rte_rxmbuf_alloc(struct rte_mempool *mp)
 {
@@ -326,7 +329,7 @@ eth_dev_stop(struct rte_eth_dev *dev)
 static void
 eth_dev_close(struct rte_eth_dev *dev)
 {
-	RTE_SET_USED(dev);
+	eth_xenvirt_free_queues(dev);
 }
 
 static void
@@ -362,8 +365,9 @@ eth_stats_reset(struct rte_eth_dev *dev)
 }
 
 static void
-eth_queue_release(void *q __rte_unused)
+eth_queue_release(void *q)
 {
+	rte_free(q);
 }
 
 static int
@@ -524,7 +528,23 @@ eth_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id,
 	return 0;
 }
 
+static void
+eth_xenvirt_free_queues(struct rte_eth_dev *dev)
+{
+	int i;
 
+	for (i = 0; i < dev->data->nb_rx_queues; i++) {
+		eth_queue_release(dev->data->rx_queues[i]);
+		dev->data->rx_queues[i] = NULL;
+	}
+	dev->data->nb_rx_queues = 0;
+
+	for (i = 0; i < dev->data->nb_tx_queues; i++) {
+		eth_queue_release(dev->data->tx_queues[i]);
+		dev->data->tx_queues[i] = NULL;
+	}
+	dev->data->nb_tx_queues = 0;
+}
 
 static const struct eth_dev_ops ops = {
 	.dev_start = eth_dev_start,
-- 
1.9.1

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [dpdk-dev] [PATCH v2 0/2] xenvirt hotplug support
  2015-10-27 16:03 ` [dpdk-dev] [PATCH v2 0/2] xenvirt hotplug support Bernard Iremonger
  2015-10-27 16:03   ` [dpdk-dev] [PATCH v2 1/2] xenvirt: add support for Port Hotplug Bernard Iremonger
  2015-10-27 16:03   ` [dpdk-dev] [PATCH v2 2/2] xenvirt: free queues in dev_close Bernard Iremonger
@ 2015-10-30  5:42   ` Xie, Huawei
  2015-10-30 16:57     ` Thomas Monjalon
  2 siblings, 1 reply; 37+ messages in thread
From: Xie, Huawei @ 2015-10-30  5:42 UTC (permalink / raw)
  To: Iremonger, Bernard, dev

On 10/28/2015 12:07 AM, Bernard Iremonger wrote:
> add Port Hotplug support to the xenvirt PMD
>
> This patch depends on v5 of the following patch set:
>
> remove-pci-driver-from-vdevs.patch
>
> Changes in  v2:
> Rebase
> Update release notes.
Acked-by: Huawei Xie <huawei.xie@intel.com>
>
> Bernard Iremonger (2):
>   xenvirt: add support for Port Hotplug
>   xenvirt: free queues in dev_close
>
>  doc/guides/rel_notes/release_2_2.rst  |  2 +
>  drivers/net/xenvirt/rte_eth_xenvirt.c | 73 +++++++++++++++++++++++++++++++++--
>  drivers/net/xenvirt/rte_xen_lib.c     | 26 +++++++++++--
>  drivers/net/xenvirt/rte_xen_lib.h     |  5 ++-
>  4 files changed, 98 insertions(+), 8 deletions(-)
>


^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [dpdk-dev] [PATCH v2 0/2] xenvirt hotplug support
  2015-10-30  5:42   ` [dpdk-dev] [PATCH v2 0/2] xenvirt hotplug support Xie, Huawei
@ 2015-10-30 16:57     ` Thomas Monjalon
  0 siblings, 0 replies; 37+ messages in thread
From: Thomas Monjalon @ 2015-10-30 16:57 UTC (permalink / raw)
  To: Iremonger, Bernard; +Cc: dev

2015-10-30 05:42, Xie, Huawei:
> On 10/28/2015 12:07 AM, Bernard Iremonger wrote:
> > add Port Hotplug support to the xenvirt PMD
> >
> > This patch depends on v5 of the following patch set:
> >
> > remove-pci-driver-from-vdevs.patch
> >
> > Changes in  v2:
> > Rebase
> > Update release notes.
> Acked-by: Huawei Xie <huawei.xie@intel.com>

Applied, thanks

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [dpdk-dev] [PATCH v2 1/1] vhost_xen: fix compile error in main.c
  2015-10-22 13:21 ` [dpdk-dev] [PATCH v2 1/1] vhost_xen: fix compile error in main.c Bernard Iremonger
  2015-10-23 10:33   ` Ananyev, Konstantin
@ 2015-10-30 17:01   ` Thomas Monjalon
  2015-10-30 17:07     ` Iremonger, Bernard
  1 sibling, 1 reply; 37+ messages in thread
From: Thomas Monjalon @ 2015-10-30 17:01 UTC (permalink / raw)
  To: Bernard Iremonger; +Cc: dev

2015-10-22 14:21, Bernard Iremonger:
> changes in v2:
> update release notes
> 
> Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>

Please what is the error?

> -		rte_memcpy((void *)(uintptr_t)buff_hdr_addr, (const void*)&virtio_hdr, vq->vhost_hlen);
> +		rte_memcpy((void *)(uintptr_t)buff_hdr_addr, (const void *)&virtio_hdr, vq->vhost_hlen);

Is it just a spacing change here?

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [dpdk-dev] [PATCH v2 1/1] vhost_xen: fix compile error in main.c
  2015-10-30 17:01   ` Thomas Monjalon
@ 2015-10-30 17:07     ` Iremonger, Bernard
  2015-10-30 17:28       ` Thomas Monjalon
  0 siblings, 1 reply; 37+ messages in thread
From: Iremonger, Bernard @ 2015-10-30 17:07 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev

Hi Thomas,

> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]
> Sent: Friday, October 30, 2015 5:01 PM
> To: Iremonger, Bernard <bernard.iremonger@intel.com>
> Cc: dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v2 1/1] vhost_xen: fix compile error in
> main.c
> 
> 2015-10-22 14:21, Bernard Iremonger:
> > changes in v2:
> > update release notes
> >
> > Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
> 
> Please what is the error?
> 
> > -		rte_memcpy((void *)(uintptr_t)buff_hdr_addr, (const
> void*)&virtio_hdr, vq->vhost_hlen);
> > +		rte_memcpy((void *)(uintptr_t)buff_hdr_addr, (const void
> *)&virtio_hdr, vq->vhost_hlen);
> 
> Is it just a spacing change here?

Yes, if I remember correctly, checkpatch objected.

Regards,

Bernard.

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [dpdk-dev] [PATCH v2 1/1] vhost_xen: fix compile error in main.c
  2015-10-30 17:07     ` Iremonger, Bernard
@ 2015-10-30 17:28       ` Thomas Monjalon
  0 siblings, 0 replies; 37+ messages in thread
From: Thomas Monjalon @ 2015-10-30 17:28 UTC (permalink / raw)
  To: Iremonger, Bernard; +Cc: dev

2015-10-30 17:07, Iremonger, Bernard:
> Hi Thomas,
> 
> > -----Original Message-----
> > From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]
> > Sent: Friday, October 30, 2015 5:01 PM
> > To: Iremonger, Bernard <bernard.iremonger@intel.com>
> > Cc: dev@dpdk.org
> > Subject: Re: [dpdk-dev] [PATCH v2 1/1] vhost_xen: fix compile error in
> > main.c
> > 
> > 2015-10-22 14:21, Bernard Iremonger:
> > > changes in v2:
> > > update release notes
> > >
> > > Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
> > 
> > Please what is the error?

Please send a v3 (keeping the Acked-by) to explain what is the error.

^ permalink raw reply	[flat|nested] 37+ messages in thread

* Re: [dpdk-dev] [PATCH v2 1/1] vmxnet3: add PCI Port Hotplug support
  2015-10-22 14:28   ` [dpdk-dev] [PATCH v2 1/1] vmxnet3: add PCI Port Hotplug support Bernard Iremonger
@ 2015-10-31  8:37     ` Yong Wang
  0 siblings, 0 replies; 37+ messages in thread
From: Yong Wang @ 2015-10-31  8:37 UTC (permalink / raw)
  To: Bernard Iremonger, dev

On 10/22/15, 7:28 AM, "Bernard Iremonger" <bernard.iremonger@intel.com> wrote:


>Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>

Acked-by: Yong Wang <yongwang@vmware.com>

Any specific reason you changed assignment of adapter_stopped from TRUE/FALSE to 1/0?
I saw mixed uses of TRUE/FALSE, true/false and 1/0 all over the DPDK code base.

>---
> doc/guides/rel_notes/release_2_2.rst |  1 +
> drivers/net/vmxnet3/vmxnet3_ethdev.c | 33 +++++++++++++++++++++++++++++----
> 2 files changed, 30 insertions(+), 4 deletions(-)
>
>diff --git a/doc/guides/rel_notes/release_2_2.rst b/doc/guides/rel_notes/release_2_2.rst
>index 4f75cff..9b0c046 100644
>--- a/doc/guides/rel_notes/release_2_2.rst
>+++ b/doc/guides/rel_notes/release_2_2.rst
>@@ -9,6 +9,7 @@ New Features
>   *  Added support for Jumbo Frames.
>   *  Optimize forwarding performance for Chelsio T5 40GbE cards.
> 
>+* **Added port hotplug support to the vmxnet3 PMD.**
> 
> Resolved Issues
> ---------------
>diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c
>index a70be5c..d5337ac 100644
>--- a/drivers/net/vmxnet3/vmxnet3_ethdev.c
>+++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c
>@@ -70,6 +70,7 @@
> #define PROCESS_SYS_EVENTS 0
> 
> static int eth_vmxnet3_dev_init(struct rte_eth_dev *eth_dev);
>+static int eth_vmxnet3_dev_uninit(struct rte_eth_dev *eth_dev);
> static int vmxnet3_dev_configure(struct rte_eth_dev *dev);
> static int vmxnet3_dev_start(struct rte_eth_dev *dev);
> static void vmxnet3_dev_stop(struct rte_eth_dev *dev);
>@@ -294,13 +295,37 @@ eth_vmxnet3_dev_init(struct rte_eth_dev *eth_dev)
> 	return 0;
> }
> 
>+static int
>+eth_vmxnet3_dev_uninit(struct rte_eth_dev *eth_dev)
>+{
>+	struct vmxnet3_hw *hw = eth_dev->data->dev_private;
>+
>+	PMD_INIT_FUNC_TRACE();
>+
>+	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
>+		return 0;
>+
>+	if (hw->adapter_stopped == 0)
>+		vmxnet3_dev_close(eth_dev);
>+
>+	eth_dev->dev_ops = NULL;
>+	eth_dev->rx_pkt_burst = NULL;
>+	eth_dev->tx_pkt_burst = NULL;
>+
>+	rte_free(eth_dev->data->mac_addrs);
>+	eth_dev->data->mac_addrs = NULL;
>+
>+	return 0;
>+}
>+
> static struct eth_driver rte_vmxnet3_pmd = {
> 	.pci_drv = {
> 		.name = "rte_vmxnet3_pmd",
> 		.id_table = pci_id_vmxnet3_map,
>-		.drv_flags = RTE_PCI_DRV_NEED_MAPPING,
>+		.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_DETACHABLE,
> 	},
> 	.eth_dev_init = eth_vmxnet3_dev_init,
>+	.eth_dev_uninit = eth_vmxnet3_dev_uninit,
> 	.dev_private_size = sizeof(struct vmxnet3_hw),
> };
> 
>@@ -579,7 +604,7 @@ vmxnet3_dev_stop(struct rte_eth_dev *dev)
> 
> 	PMD_INIT_FUNC_TRACE();
> 
>-	if (hw->adapter_stopped == TRUE) {
>+	if (hw->adapter_stopped == 1) {
> 		PMD_INIT_LOG(DEBUG, "Device already closed.");
> 		return;
> 	}
>@@ -595,7 +620,7 @@ vmxnet3_dev_stop(struct rte_eth_dev *dev)
> 	/* reset the device */
> 	VMXNET3_WRITE_BAR1_REG(hw, VMXNET3_REG_CMD, VMXNET3_CMD_RESET_DEV);
> 	PMD_INIT_LOG(DEBUG, "Device reset.");
>-	hw->adapter_stopped = FALSE;
>+	hw->adapter_stopped = 0;
> 
> 	vmxnet3_dev_clear_queues(dev);
> 
>@@ -615,7 +640,7 @@ vmxnet3_dev_close(struct rte_eth_dev *dev)
> 	PMD_INIT_FUNC_TRACE();
> 
> 	vmxnet3_dev_stop(dev);
>-	hw->adapter_stopped = TRUE;
>+	hw->adapter_stopped = 1;
> }
> 
> static void
>-- 
>1.9.1
>

^ permalink raw reply	[flat|nested] 37+ messages in thread

end of thread, other threads:[~2015-10-31  8:37 UTC | newest]

Thread overview: 37+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <PATCH v2>
2015-10-05 10:30 ` [dpdk-dev] [PATCH v2 00/20] remove pci driver from vdevs Bernard Iremonger
2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 01/20] librte_eal: add RTE_KDRV_NONE for vdevs Bernard Iremonger
2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 02/20] librte_ether: add fields from rte_pci_driver to rte_eth_dev_data Bernard Iremonger
2015-10-12 10:46     ` Mcnamara, John
2015-10-12 16:17       ` Iremonger, Bernard
2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 03/20] librte_ether: add function rte_eth_copy_dev_info() Bernard Iremonger
2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 04/20] null: remove pci device driver Bernard Iremonger
2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 05/20] ring: " Bernard Iremonger
2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 06/20] bonding: " Bernard Iremonger
2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 07/20] pcap: " Bernard Iremonger
2015-10-12 10:48     ` Mcnamara, John
2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 08/20] af_packet: " Bernard Iremonger
2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 09/20] xenvirt: " Bernard Iremonger
2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 10/20] mpipe: " Bernard Iremonger
2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 11/20] ixgbe: copy pci device info to eth_dev data Bernard Iremonger
2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 12/20] e1000: " Bernard Iremonger
2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 13/20] i40e: " Bernard Iremonger
2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 14/20] fm10k: " Bernard Iremonger
2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 15/20] bnx2x: " Bernard Iremonger
2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 16/20] cxgbe: " Bernard Iremonger
2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 17/20] enic: " Bernard Iremonger
2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 18/20] mlx4: " Bernard Iremonger
2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 19/20] virtio: " Bernard Iremonger
2015-10-05 10:30   ` [dpdk-dev] [PATCH v2 20/20] vmxnet3: " Bernard Iremonger
2015-10-22 13:21 ` [dpdk-dev] [PATCH v2 1/1] vhost_xen: fix compile error in main.c Bernard Iremonger
2015-10-23 10:33   ` Ananyev, Konstantin
2015-10-30 17:01   ` Thomas Monjalon
2015-10-30 17:07     ` Iremonger, Bernard
2015-10-30 17:28       ` Thomas Monjalon
2015-10-22 14:28 ` [dpdk-dev] [PATCH v2 0/1] vmxnet3 hotplug support Bernard Iremonger
2015-10-22 14:28   ` [dpdk-dev] [PATCH v2 1/1] vmxnet3: add PCI Port Hotplug support Bernard Iremonger
2015-10-31  8:37     ` Yong Wang
2015-10-27 16:03 ` [dpdk-dev] [PATCH v2 0/2] xenvirt hotplug support Bernard Iremonger
2015-10-27 16:03   ` [dpdk-dev] [PATCH v2 1/2] xenvirt: add support for Port Hotplug Bernard Iremonger
2015-10-27 16:03   ` [dpdk-dev] [PATCH v2 2/2] xenvirt: free queues in dev_close Bernard Iremonger
2015-10-30  5:42   ` [dpdk-dev] [PATCH v2 0/2] xenvirt hotplug support Xie, Huawei
2015-10-30 16:57     ` Thomas Monjalon

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).