All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bernard Iremonger <bernard.iremonger@intel.com>
To: dev@dpdk.org
Subject: [PATCH v7 1/2] e1000: igb and em1000 PCI Port Hotplug changes
Date: Fri,  3 Jul 2015 15:38:26 +0100	[thread overview]
Message-ID: <1435934307-4495-2-git-send-email-bernard.iremonger@intel.com> (raw)
In-Reply-To: <1435934307-4495-1-git-send-email-bernard.iremonger@intel.com>

This patch depends on the Port Hotplug Framework.
It implements the eth_dev_uninit functions for rte_em_pmd,
rte_igb_pmd and rte_igbvf_pmd.

Signed-off-by: Bernard Iremonger <bernard.iremonger@intel.com>
---
 drivers/net/e1000/e1000_ethdev.h |    8 +++-
 drivers/net/e1000/em_ethdev.c    |   46 ++++++++++++++++++-
 drivers/net/e1000/em_rxtx.c      |   12 +++++
 drivers/net/e1000/igb_ethdev.c   |   93 ++++++++++++++++++++++++++++++++++++-
 drivers/net/e1000/igb_pf.c       |   22 +++++++++
 drivers/net/e1000/igb_rxtx.c     |   12 +++++
 6 files changed, 188 insertions(+), 5 deletions(-)

diff --git a/drivers/net/e1000/e1000_ethdev.h b/drivers/net/e1000/e1000_ethdev.h
index c451faa..ee8b872 100644
--- a/drivers/net/e1000/e1000_ethdev.h
+++ b/drivers/net/e1000/e1000_ethdev.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
@@ -229,8 +229,12 @@ struct e1000_adapter {
 	struct e1000_vfta       shadow_vfta;
 	struct e1000_vf_info    *vfdata;
 	struct e1000_filter_info filter;
+	bool stopped;
 };
 
+#define E1000_DEV_PRIVATE(adapter) \
+	((struct e1000_adapter *)adapter)
+
 #define E1000_DEV_PRIVATE_TO_HW(adapter) \
 	(&((struct e1000_adapter *)adapter)->hw)
 
@@ -337,4 +341,6 @@ uint16_t eth_em_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
 uint16_t eth_em_recv_scattered_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
 		uint16_t nb_pkts);
 
+void igb_pf_host_uninit(struct rte_eth_dev *dev);
+
 #endif /* _E1000_ETHDEV_H_ */
diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c
index a306c55..dfabb15 100644
--- a/drivers/net/e1000/em_ethdev.c
+++ b/drivers/net/e1000/em_ethdev.c
@@ -224,6 +224,8 @@ static int
 eth_em_dev_init(struct rte_eth_dev *eth_dev)
 {
 	struct rte_pci_device *pci_dev;
+	struct e1000_adapter *adapter =
+		E1000_DEV_PRIVATE(eth_dev->data->dev_private);
 	struct e1000_hw *hw =
 		E1000_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
 	struct e1000_vfta * shadow_vfta =
@@ -246,6 +248,7 @@ eth_em_dev_init(struct rte_eth_dev *eth_dev)
 
 	hw->hw_addr = (void *)pci_dev->mem_resource[0].addr;
 	hw->device_id = pci_dev->id.device_id;
+	adapter->stopped = 0;
 
 	/* For ICH8 support we'll need to map the flash memory BAR */
 
@@ -285,13 +288,47 @@ eth_em_dev_init(struct rte_eth_dev *eth_dev)
 	return (0);
 }
 
+static int
+eth_em_dev_uninit(struct rte_eth_dev *eth_dev)
+{
+	struct rte_pci_device *pci_dev;
+	struct e1000_adapter *adapter =
+		E1000_DEV_PRIVATE(eth_dev->data->dev_private);
+
+	PMD_INIT_FUNC_TRACE();
+
+	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+		return -EPERM;
+
+	pci_dev = eth_dev->pci_dev;
+
+	if (adapter->stopped == 0)
+		eth_em_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;
+
+	/* disable uio intr before callback unregister */
+	rte_intr_disable(&(pci_dev->intr_handle));
+	rte_intr_callback_unregister(&(pci_dev->intr_handle),
+		eth_em_interrupt_handler, (void *)eth_dev);
+
+	return 0;
+}
+
 static struct eth_driver rte_em_pmd = {
 	.pci_drv = {
 		.name = "rte_em_pmd",
 		.id_table = pci_id_em_map,
-		.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC,
+		.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC |
+			RTE_PCI_DRV_DETACHABLE,
 	},
 	.eth_dev_init = eth_em_dev_init,
+	.eth_dev_uninit = eth_em_dev_uninit,
 	.dev_private_size = sizeof(struct e1000_adapter),
 };
 
@@ -451,6 +488,8 @@ em_set_pba(struct e1000_hw *hw)
 static int
 eth_em_start(struct rte_eth_dev *dev)
 {
+	struct e1000_adapter *adapter =
+		E1000_DEV_PRIVATE(dev->data->dev_private);
 	struct e1000_hw *hw =
 		E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);
 	int ret, mask;
@@ -570,6 +609,8 @@ eth_em_start(struct rte_eth_dev *dev)
 		}
 	}
 
+	adapter->stopped = 0;
+
 	PMD_INIT_LOG(DEBUG, "<<");
 
 	return (0);
@@ -613,8 +654,11 @@ static void
 eth_em_close(struct rte_eth_dev *dev)
 {
 	struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	struct e1000_adapter *adapter =
+		E1000_DEV_PRIVATE(dev->data->dev_private);
 
 	eth_em_stop(dev);
+	adapter->stopped = 1;
 	e1000_phy_hw_reset(hw);
 	em_release_manageability(hw);
 	em_hw_control_release(hw);
diff --git a/drivers/net/e1000/em_rxtx.c b/drivers/net/e1000/em_rxtx.c
index fdc825f..976df60 100644
--- a/drivers/net/e1000/em_rxtx.c
+++ b/drivers/net/e1000/em_rxtx.c
@@ -1512,6 +1512,18 @@ em_dev_clear_queues(struct rte_eth_dev *dev)
 			em_reset_rx_queue(rxq);
 		}
 	}
+
+	for (i = 0; i < dev->data->nb_rx_queues; i++) {
+		eth_em_rx_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_em_tx_queue_release(dev->data->tx_queues[i]);
+		dev->data->tx_queues[i] = NULL;
+	}
+	dev->data->nb_tx_queues = 0;
 }
 
 /*
diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c
index 24c7510..80e4a6c 100644
--- a/drivers/net/e1000/igb_ethdev.c
+++ b/drivers/net/e1000/igb_ethdev.c
@@ -465,9 +465,12 @@ eth_igb_dev_init(struct rte_eth_dev *eth_dev)
 	struct e1000_hw *hw =
 		E1000_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
 	struct e1000_vfta * shadow_vfta =
-			E1000_DEV_PRIVATE_TO_VFTA(eth_dev->data->dev_private);
+		E1000_DEV_PRIVATE_TO_VFTA(eth_dev->data->dev_private);
 	struct e1000_filter_info *filter_info =
 		E1000_DEV_PRIVATE_TO_FILTER_INFO(eth_dev->data->dev_private);
+	struct e1000_adapter *adapter =
+		E1000_DEV_PRIVATE(eth_dev->data->dev_private);
+
 	uint32_t ctrl_ext;
 
 	pci_dev = eth_dev->pci_dev;
@@ -570,6 +573,7 @@ eth_igb_dev_init(struct rte_eth_dev *eth_dev)
 		goto err_late;
 	}
 	hw->mac.get_link_status = 1;
+	adapter->stopped = 0;
 
 	/* Indicate SOL/IDER usage */
 	if (e1000_check_reset_block(hw) < 0) {
@@ -614,6 +618,46 @@ err_late:
 	return (error);
 }
 
+static int
+eth_igb_dev_uninit(struct rte_eth_dev *eth_dev)
+{
+	struct rte_pci_device *pci_dev;
+	struct e1000_hw *hw;
+	struct e1000_adapter *adapter =
+		E1000_DEV_PRIVATE(eth_dev->data->dev_private);
+
+	PMD_INIT_FUNC_TRACE();
+
+	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+		return -EPERM;
+
+	hw = E1000_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
+	pci_dev = eth_dev->pci_dev;
+
+	if (adapter->stopped == 0)
+		eth_igb_close(eth_dev);
+
+	eth_dev->dev_ops = NULL;
+	eth_dev->rx_pkt_burst = NULL;
+	eth_dev->tx_pkt_burst = NULL;
+
+	/* Reset any pending lock */
+	igb_reset_swfw_lock(hw);
+
+	rte_free(eth_dev->data->mac_addrs);
+	eth_dev->data->mac_addrs = NULL;
+
+	/* uninitialize PF if max_vfs not zero */
+	igb_pf_host_uninit(eth_dev);
+
+	/* disable uio intr before callback unregister */
+	rte_intr_disable(&(pci_dev->intr_handle));
+	rte_intr_callback_unregister(&(pci_dev->intr_handle),
+		eth_igb_interrupt_handler, (void *)eth_dev);
+
+	return 0;
+}
+
 /*
  * Virtual Function device init
  */
@@ -621,6 +665,8 @@ static int
 eth_igbvf_dev_init(struct rte_eth_dev *eth_dev)
 {
 	struct rte_pci_device *pci_dev;
+	struct e1000_adapter *adapter =
+		E1000_DEV_PRIVATE(eth_dev->data->dev_private);
 	struct e1000_hw *hw =
 		E1000_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private);
 	int diag;
@@ -645,6 +691,7 @@ eth_igbvf_dev_init(struct rte_eth_dev *eth_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;
+	adapter->stopped = 0;
 
 	/* Initialize the shared code (base driver) */
 	diag = e1000_setup_init_funcs(hw, TRUE);
@@ -685,13 +732,39 @@ eth_igbvf_dev_init(struct rte_eth_dev *eth_dev)
 	return 0;
 }
 
+static int
+eth_igbvf_dev_uninit(struct rte_eth_dev *eth_dev)
+{
+	struct e1000_adapter *adapter =
+		E1000_DEV_PRIVATE(eth_dev->data->dev_private);
+
+	PMD_INIT_FUNC_TRACE();
+
+	if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+		return -EPERM;
+
+	if (adapter->stopped == 0)
+		igbvf_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_igb_pmd = {
 	.pci_drv = {
 		.name = "rte_igb_pmd",
 		.id_table = pci_id_igb_map,
-		.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC,
+		.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC |
+			RTE_PCI_DRV_DETACHABLE,
 	},
 	.eth_dev_init = eth_igb_dev_init,
+	.eth_dev_uninit = eth_igb_dev_uninit,
 	.dev_private_size = sizeof(struct e1000_adapter),
 };
 
@@ -702,9 +775,10 @@ static struct eth_driver rte_igbvf_pmd = {
 	.pci_drv = {
 		.name = "rte_igbvf_pmd",
 		.id_table = pci_id_igbvf_map,
-		.drv_flags = RTE_PCI_DRV_NEED_MAPPING,
+		.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_DETACHABLE,
 	},
 	.eth_dev_init = eth_igbvf_dev_init,
+	.eth_dev_uninit = eth_igbvf_dev_uninit,
 	.dev_private_size = sizeof(struct e1000_adapter),
 };
 
@@ -758,6 +832,8 @@ eth_igb_start(struct rte_eth_dev *dev)
 {
 	struct e1000_hw *hw =
 		E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	struct e1000_adapter *adapter =
+		E1000_DEV_PRIVATE(dev->data->dev_private);
 	int ret, i, mask;
 	uint32_t ctrl_ext;
 
@@ -786,6 +862,7 @@ eth_igb_start(struct rte_eth_dev *dev)
 		PMD_INIT_LOG(ERR, "Unable to initialize the hardware");
 		return (-EIO);
 	}
+	adapter->stopped = 0;
 
 	E1000_WRITE_REG(hw, E1000_VET, ETHER_TYPE_VLAN << 16 | ETHER_TYPE_VLAN);
 
@@ -992,9 +1069,13 @@ static void
 eth_igb_close(struct rte_eth_dev *dev)
 {
 	struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	struct e1000_adapter *adapter =
+		E1000_DEV_PRIVATE(dev->data->dev_private);
 	struct rte_eth_link link;
 
 	eth_igb_stop(dev);
+	adapter->stopped = 1;
+
 	e1000_phy_hw_reset(hw);
 	igb_release_manageability(hw);
 	igb_hw_control_release(hw);
@@ -2228,11 +2309,14 @@ igbvf_dev_start(struct rte_eth_dev *dev)
 {
 	struct e1000_hw *hw =
 		E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	struct e1000_adapter *adapter =
+		E1000_DEV_PRIVATE(dev->data->dev_private);
 	int ret;
 
 	PMD_INIT_FUNC_TRACE();
 
 	hw->mac.ops.reset_hw(hw);
+	adapter->stopped = 0;
 
 	/* Set all vfta */
 	igbvf_set_vfta_all(dev,1);
@@ -2270,12 +2354,15 @@ static void
 igbvf_dev_close(struct rte_eth_dev *dev)
 {
 	struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	struct e1000_adapter *adapter =
+		E1000_DEV_PRIVATE(dev->data->dev_private);
 
 	PMD_INIT_FUNC_TRACE();
 
 	e1000_reset_hw(hw);
 
 	igbvf_dev_stop(dev);
+	adapter->stopped = 1;
 }
 
 static int igbvf_set_vfta(struct e1000_hw *hw, uint16_t vid, bool on)
diff --git a/drivers/net/e1000/igb_pf.c b/drivers/net/e1000/igb_pf.c
index 6a4d210..26c2960 100644
--- a/drivers/net/e1000/igb_pf.c
+++ b/drivers/net/e1000/igb_pf.c
@@ -127,6 +127,28 @@ void igb_pf_host_init(struct rte_eth_dev *eth_dev)
 	return;
 }
 
+void igb_pf_host_uninit(struct rte_eth_dev *dev)
+{
+	struct e1000_vf_info **vfinfo;
+	uint16_t vf_num;
+
+	PMD_INIT_FUNC_TRACE();
+
+	vfinfo = E1000_DEV_PRIVATE_TO_P_VFDATA(dev->data->dev_private);
+
+	RTE_ETH_DEV_SRIOV(dev).active = 0;
+	RTE_ETH_DEV_SRIOV(dev).nb_q_per_pool = 0;
+	RTE_ETH_DEV_SRIOV(dev).def_vmdq_idx = 0;
+	RTE_ETH_DEV_SRIOV(dev).def_pool_q_idx = 0;
+
+	vf_num = dev_num_vf(dev);
+	if (vf_num == 0)
+		return;
+
+	rte_free(*vfinfo);
+	*vfinfo = NULL;
+}
+
 #define E1000_RAH_POOLSEL_SHIFT    (18)
 int igb_pf_host_configure(struct rte_eth_dev *eth_dev)
 {
diff --git a/drivers/net/e1000/igb_rxtx.c b/drivers/net/e1000/igb_rxtx.c
index 43d6703..1bf8c93 100644
--- a/drivers/net/e1000/igb_rxtx.c
+++ b/drivers/net/e1000/igb_rxtx.c
@@ -1498,6 +1498,18 @@ igb_dev_clear_queues(struct rte_eth_dev *dev)
 			igb_reset_rx_queue(rxq);
 		}
 	}
+
+	for (i = 0; i < dev->data->nb_rx_queues; i++) {
+		eth_igb_rx_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_igb_tx_queue_release(dev->data->tx_queues[i]);
+		dev->data->tx_queues[i] = NULL;
+	}
+	dev->data->nb_tx_queues = 0;
 }
 
 /**
-- 
1.7.4.1

  reply	other threads:[~2015-07-03 14:38 UTC|newest]

Thread overview: 275+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <PATCH>
     [not found] ` <1224786829-32405-1-git-send-email-spulijala@amcc.com>
     [not found]   ` <DB599F406D04E34389140B7D99C71B1B064CADB6@SDCEXCHANGE01.ad.amcc.com>
     [not found]     ` <0CA0A16855646F4FA96D25A158E299D6053E62E9@SDCEXCHANGE01.ad.amcc.com>
2008-10-24 20:54       ` [PATCH 1/1 v7] Add Crypto API User Interface Support Shasi Pulijala
2008-10-24 21:07         ` Evgeniy Polyakov
2008-10-24 22:16           ` Loc Ho
2008-10-25 13:50             ` Evgeniy Polyakov
2008-10-27 17:04               ` Loc Ho
2014-12-08 17:18 ` [PATCH] doc: add bsd license to svg file Bernard Iremonger
     [not found]   ` <1418059123-32145-1-git-send-email-bernard.iremonger-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-12-11 13:42     ` De Lara Guarch, Pablo
2015-06-10 15:12 ` [PATCH 0/2] doc: kni command line fixes Bernard Iremonger
2015-06-10 15:12   ` [PATCH 1/2] doc: correct kni command line in virtio chapter Bernard Iremonger
2015-06-15  2:29     ` Zhang, Helin
2015-06-10 15:12   ` [PATCH 2/2] doc: fix kni command line in Kernel NIC Interface chapter Bernard Iremonger
2015-06-15  2:30     ` Zhang, Helin
2015-06-10 17:13   ` [PATCH 0/2] doc: kni command line fixes Mcnamara, John
2015-07-27 21:45     ` Thomas Monjalon
2015-06-11 14:33 ` [PATCH] doc: update port attach and detach in Testpmd Runtime Functions chapter Bernard Iremonger
2015-06-16  2:45   ` Tetsuya Mukawa
2015-07-28 10:22     ` Thomas Monjalon
2015-06-12 16:21 ` [PATCH v3 0/2] bonding PCI Port Hotplug Bernard Iremonger
2015-06-12 16:21   ` [PATCH v3 1/2] bonding: add support for " Bernard Iremonger
2015-06-12 16:21   ` [PATCH v3 2/2] test-pmd: modified testpmd for link_bonding Bernard Iremonger
2015-06-19 16:33   ` [PATCH v3 0/2] bonding PCI Port Hotplug Declan Doherty
2015-06-16 11:30 ` [PATCH v2 0/2] virtio: " Bernard Iremonger
2015-06-16 11:30   ` [PATCH v3 1/2] virtio: add support for " Bernard Iremonger
2015-06-17  1:27     ` Ouyang, Changchun
2015-06-16 11:30   ` [PATCH v3 2/2] virtio: check vq parameter Bernard Iremonger
2015-06-17  1:27     ` Ouyang, Changchun
2015-06-17 11:38 ` [PATCH v4 0/6] i40e: PCI Port Hotplug Changes Bernard Iremonger
2015-06-17 11:38   ` [PATCH v4 1/6] i40e: changes to support PCI Port Hotplug Bernard Iremonger
2015-06-17 11:38   ` [PATCH v4 2/6] i40e: release vmdq vsi's in dev_close Bernard Iremonger
2015-06-17 11:38   ` [PATCH v4 3/6] i40e: increase ASQ_DELAY_MS to 100 in i40evf_wait_cmd_done() Bernard Iremonger
2015-06-17 11:39 ` [PATCH v4 4/6] i40e: call _clear_cmd() when error occurs Bernard Iremonger
2015-06-17 11:39   ` [PATCH v4 5/6] i40e: clear queues in i40evf_dev_stop Bernard Iremonger
2015-06-17 11:39   ` [PATCH v4 6/6] i40e: check rxq parameter in i40e_reset_rx_queue Bernard Iremonger
2015-06-18 12:44 ` [PATCH v5] e1000: igb and em1000 PCI Port Hotplug changes Bernard Iremonger
2015-06-19 17:03 ` [PATCH v5 0/6] i40e: PCI Port Hotplug Changes Bernard Iremonger
2015-06-19 17:03   ` [PATCH v5 1/6] i40e: changes to support PCI Port Hotplug Bernard Iremonger
2015-06-19 17:03   ` [PATCH v5 2/6] i40e: release vmdq vsi's in dev_close Bernard Iremonger
2015-06-19 17:03   ` [PATCH v5 3/6] i40e: increase ASQ_DELAY_MS to 100 and MAX_TRY_TIMES to 20 in i40evf_wait_cmd_done() Bernard Iremonger
2015-06-19 17:04   ` [PATCH v5 4/6] i40e: call _clear_cmd() when error occurs Bernard Iremonger
2015-06-19 17:04   ` [PATCH v5 5/6] i40e: clear queues in i40evf_dev_stop Bernard Iremonger
2015-06-19 17:04   ` [PATCH v5 6/6] i40e: check rxq parameter in i40e_reset_rx_queue Bernard Iremonger
2015-06-25  2:28   ` [PATCH v5 0/6] i40e: PCI Port Hotplug Changes Zhang, Helin
2015-06-22 10:44 ` [PATCH v6] e1000: igb and em1000 PCI Port Hotplug changes Bernard Iremonger
2015-06-25  2:33   ` Zhang, Helin
2015-06-25  9:04     ` Iremonger, Bernard
2015-06-26  8:56   ` Zhang, Helin
2015-06-24 15:08 ` [PATCH v5] ixgbe: changes to support PCI Port Hotplug Bernard Iremonger
2015-06-25 11:41   ` Ananyev, Konstantin
2015-06-25 14:30 ` [PATCH] librte_ether: release memory in uninit function Bernard Iremonger
2015-06-25 14:41   ` Stephen Hemminger
2015-06-25 18:32   ` Ananyev, Konstantin
2015-06-26  8:17     ` Iremonger, Bernard
2015-06-26  9:32 ` [PATCH v2] " Bernard Iremonger
2015-06-26  9:55   ` Ananyev, Konstantin
2015-06-29  8:54   ` Qiu, Michael
2015-06-29 10:20     ` Iremonger, Bernard
2015-06-29 15:22       ` Qiu, Michael
2015-06-29 16:42         ` Iremonger, Bernard
2015-06-30  1:31           ` Qiu, Michael
2015-07-06 11:35             ` Qiu, Michael
2015-07-07  3:38               ` Tetsuya Mukawa
2015-07-07 10:53                 ` Iremonger, Bernard
2015-07-08  3:47                   ` Tetsuya Mukawa
2015-07-08  9:49                     ` Iremonger, Bernard
2015-07-08  9:59                       ` Thomas Monjalon
2015-07-09  3:32                         ` Tetsuya Mukawa
2015-07-14  5:15                           ` Qiu, Michael
2015-07-09  5:46                       ` [PATCH] doc: Fix doxygen comments of rte_eth_dev_close() and rte_eth_dev_detach() Tetsuya Mukawa
2015-07-09  7:28                         ` Thomas Monjalon
2015-07-09  8:10                           ` Tetsuya Mukawa
2015-07-09  8:19                       ` [PATCH v2] " Tetsuya Mukawa
2015-07-10 22:31                         ` Thomas Monjalon
2015-07-02 14:36 ` [PATCH v6 0/2] PCI Port Hotplug Bernard Iremonger
2015-07-02 14:36   ` [PATCH v6 1/2] ixgbe: changes to support " Bernard Iremonger
2015-07-02 14:36   ` [PATCH v2] librte_ether: release memory in uninit function Bernard Iremonger
2015-07-02 14:36   ` [PATCH v6 2/2] ixgbe: release queue memory in close functions Bernard Iremonger
2015-07-02 14:59   ` [PATCH v6 0/2] PCI Port Hotplug Ananyev, Konstantin
2015-07-19 15:42     ` Thomas Monjalon
2015-07-03 14:03 ` [PATCH v6 0/7] i40e: PCI Port Hotplug Changes Bernard Iremonger
2015-07-03 14:03   ` [PATCH v6 1/7] i40e: changes to support PCI Port Hotplug Bernard Iremonger
2015-07-03 14:03   ` [PATCH v6 2/7] i40e: release vmdq vsi's in dev_close Bernard Iremonger
2015-07-03 14:03   ` [PATCH v6 3/7] i40e: increase ASQ_DELAY_MS to 100 and MAX_TRY_TIMES to 20 in i40evf_wait_cmd_done() Bernard Iremonger
2015-07-03 14:03   ` [PATCH v6 4/7] i40e: call _clear_cmd() when error occurs Bernard Iremonger
2015-07-03 14:03   ` [PATCH v6 5/7] i40e: clear queues in i40evf_dev_stop Bernard Iremonger
2015-07-03 14:03   ` [PATCH v6 6/7] i40e: check rxq parameter in i40e_reset_rx_queue Bernard Iremonger
2015-07-03 14:04   ` [PATCH v6 7/7] i40e: release queue memory in close functions Bernard Iremonger
2015-07-10 20:44   ` [PATCH v6 0/7] i40e: PCI Port Hotplug Changes Zhang, Helin
2015-07-19 19:39     ` Thomas Monjalon
2015-07-03 14:38 ` [PATCH v7 0/2] e1000: PCI Port Hotplug changes Bernard Iremonger
2015-07-03 14:38   ` Bernard Iremonger [this message]
2015-07-13 15:53     ` [PATCH v7 1/2] e1000: igb and em1000 " Zhang, Helin
2015-07-03 14:38   ` [PATCH v7 2/2] e1000: free queue memory in close functions Bernard Iremonger
2015-07-13 15:54     ` Zhang, Helin
2015-07-19 15:26   ` [PATCH v7 0/2] e1000: PCI Port Hotplug changes Thomas Monjalon
2015-07-07  9:18 ` [PATCH v4 0/4] virtio: PCI Port Hotplug Bernard Iremonger
2015-07-07  9:18   ` [PATCH v4 1/4] virtio: add support for " Bernard Iremonger
2015-07-07  9:18   ` [PATCH v4 2/4] virtio: check vq parameter in virtqueue_detatch_unused() function Bernard Iremonger
2015-07-07  9:18   ` [PATCH v4 3/4] virtio: free queue memory in virtio_dev_close() Bernard Iremonger
2015-07-07 18:04     ` Stephen Hemminger
2015-07-07  9:18   ` [PATCH v4 4/4] test-pmd: remove call to rte_eth_promiscuous_disable() from detach_port() Bernard Iremonger
2015-07-08  0:42     ` Ouyang, Changchun
2015-07-09  2:04       ` Tetsuya Mukawa
2015-07-07 10:21 ` [PATCH v4 0/3] bonding PCI Port Hotplug Bernard Iremonger
2015-07-07 10:21   ` [PATCH v4 1/3] bonding: add support for " Bernard Iremonger
2015-07-15 10:22     ` Declan Doherty
2015-07-07 10:21   ` [PATCH v4 2/3] test-pmd: modified testpmd for link_bonding Bernard Iremonger
2015-07-07 10:21   ` [PATCH v4 3/3] bonding: free queue memory in stop function Bernard Iremonger
2015-07-07 13:09 ` [PATCH v4 0/1] ring PCI Port Hotplug Bernard Iremonger
2015-07-07 13:09   ` [PATCH v4 1/1] ring: changes to support " Bernard Iremonger
2015-07-18 20:27     ` Thomas Monjalon
2015-07-21 15:36       ` Iremonger, Bernard
2015-07-27  2:52     ` Thomas Monjalon
2015-07-13 13:04 ` [PATCH v3 0/2] librte_ether release memory Bernard Iremonger
2015-07-13 13:04   ` [PATCH v3 1/2] librte_ether: release memory in uninit function Bernard Iremonger
2015-07-17 13:55     ` Thomas Monjalon
2015-07-13 13:04   ` [PATCH v3 2/2] librte_ether: release queue array memory in close function Bernard Iremonger
2015-07-19 21:37     ` Thomas Monjalon
2015-07-14  4:51   ` [PATCH v3 0/2] librte_ether release memory Qiu, Michael
2015-07-14 13:10 ` [PATCH v5 0/4] virtio PCI Port Hotplug Bernard Iremonger
2015-07-14 13:10   ` [PATCH 1/5] virtio: add support for " Bernard Iremonger
2015-07-14 13:10   ` [PATCH 2/5] virtio: check vq parameter in virtqueue_detatch_unused() function Bernard Iremonger
2015-07-14 13:10   ` [PATCH 3/5] virtio: add proper queue release Bernard Iremonger
2015-07-14 13:10   ` [PATCH 4/5] virtio: free queue memory in virtio_dev_close() Bernard Iremonger
2015-07-14 18:28     ` Stephen Hemminger
2015-07-15  8:27       ` Iremonger, Bernard
2015-07-15  8:38         ` Ouyang, Changchun
2015-07-15  8:50           ` Iremonger, Bernard
2015-07-15  1:36     ` Ouyang, Changchun
2015-07-15  8:01       ` Iremonger, Bernard
2015-07-15  8:36         ` Ouyang, Changchun
2015-07-14 13:10   ` [PATCH v5 5/5] test-pmd: remove call to rte_eth_promiscuous_disable() from detach_port() Bernard Iremonger
2015-07-15 13:50 ` [PATCH v6 0/6] virtio PCI Port Hotplug Bernard Iremonger
2015-07-15 13:51   ` [PATCH v6 1/6] virtio: add support for " Bernard Iremonger
2015-07-15 13:51   ` [PATCH v6 2/6] virtio: check vq parameter in virtqueue_detatch_unused() function Bernard Iremonger
2015-07-15 13:51   ` [PATCH v6 3/6] virtio: add proper queue release Bernard Iremonger
2015-07-15 13:51   ` [PATCH v6 4/6] virtio: free queue memory in virtio_dev_close() Bernard Iremonger
2015-07-15 13:51   ` [PATCH v6 5/6] virtio: use queue_release in dev_uninit Bernard Iremonger
2015-07-15 13:51   ` [PATCH v6 6/6] test-pmd: remove call to rte_eth_promiscuous_disable() from detach_port() Bernard Iremonger
2015-07-17  9:23     ` Xu, Qian Q
2015-07-17  0:53   ` [PATCH v6 0/6] virtio PCI Port Hotplug Stephen Hemminger
2015-07-19 20:12     ` Thomas Monjalon
2015-07-15 15:32 ` [PATCH v5 0/3] bonding " Bernard Iremonger
2015-07-15 15:32   ` [PATCH v5 1/3] bonding: add support for " Bernard Iremonger
2015-07-18 20:39     ` Thomas Monjalon
2015-07-21 10:18       ` Iremonger, Bernard
2015-07-15 15:32   ` [PATCH v5 2/3] test-pmd: modified testpmd for link_bonding Bernard Iremonger
2015-07-15 15:32   ` [PATCH v5 3/3] bonding: free queue memory in stop function Bernard Iremonger
2015-07-21 15:16 ` [PATCH v6 0/3] bonding PCI Port Hotplug Bernard Iremonger
2015-07-21 15:16   ` [PATCH v6 1/3] bonding: add support for " Bernard Iremonger
2015-07-21 15:16   ` [PATCH v6 2/3] test-pmd: modified testpmd for link_bonding Bernard Iremonger
2015-07-21 15:16   ` [PATCH v6 3/3] bonding: free queue memory in stop function Bernard Iremonger
2015-07-27  2:48     ` Thomas Monjalon
2015-07-27  8:31       ` Iremonger, Bernard
2015-07-27  9:55         ` Thomas Monjalon
2015-07-27 15:54 ` [PATCH v7 0/4] bonding PCI Port Hotplug Bernard Iremonger
2015-07-27 15:54   ` [PATCH v7 1/4] bonding: add support for " Bernard Iremonger
2015-07-27 17:14     ` Thomas Monjalon
2015-07-27 15:54   ` [PATCH v7 2/4] test-pmd: modified testpmd for link_bonding Bernard Iremonger
2015-07-27 17:15     ` Thomas Monjalon
2015-07-27 15:54   ` [PATCH v7 3/4] bonding: free queue memory in close function Bernard Iremonger
2015-07-27 15:54   ` [PATCH v7 4/4] testpmd_app_ug: add example of re-attaching bonded port Bernard Iremonger
2015-07-27 17:38   ` [PATCH v7 0/4] bonding PCI Port Hotplug Thomas Monjalon
2015-08-04 15:26 ` [PATCH 1/1] bonding: fix error handling in rte_eth_bond_create() Bernard Iremonger
2015-08-04 15:52   ` Thomas Monjalon
2015-08-05 12:28     ` Iremonger, Bernard
2015-08-05 12:36 ` [PATCH v2 " Bernard Iremonger
2015-08-05 12:48   ` Liu, Yong
2015-08-05 13:15   ` Thomas Monjalon
2015-08-05 13:19     ` Iremonger, Bernard
2015-08-05 13:35       ` Thomas Monjalon
2015-08-05 13:39         ` Iremonger, Bernard
2015-08-05 14:04 ` [PATCH v3 1/1] bonding: fix device initialisation error handling Bernard Iremonger
2015-08-06  8:19   ` Jastrzebski, MichalX K
2015-08-10  0:06     ` Thomas Monjalon
2015-09-28 13:03 ` [PATCH 00/20] remove pci driver from vdevs Bernard Iremonger
2015-09-28 13:03   ` [PATCH 01/20] librte_eal: add RTE_KDRV_NONE for vdevs Bernard Iremonger
2015-09-28 13:03   ` [PATCH 02/20] librte_ether: add fields from rte_pci_driver to rte_eth_dev_data Bernard Iremonger
2015-09-29 19:08     ` Neil Horman
2015-09-30  9:56       ` Bruce Richardson
2015-09-30 13:14         ` Neil Horman
2015-09-30 13:21           ` Bruce Richardson
2015-09-30 16:33             ` Iremonger, Bernard
2015-09-30 13:18     ` Neil Horman
2015-09-30 13:23       ` Bruce Richardson
2015-09-28 13:03   ` [PATCH 03/20] librte_ether: add function rte_eth_copy_dev_info() Bernard Iremonger
2015-09-28 13:03   ` [PATCH 04/20] null: remove pci device driver Bernard Iremonger
2015-09-28 13:03   ` [PATCH 05/20] ring: " Bernard Iremonger
2015-09-28 13:03   ` [PATCH 06/20] bonding: " Bernard Iremonger
2015-09-28 13:03   ` [PATCH 07/20] pcap: " Bernard Iremonger
2015-09-28 13:03   ` [PATCH 08/20] af_packet: " Bernard Iremonger
2015-09-28 13:03   ` [PATCH 09/20] xenvirt: " Bernard Iremonger
2015-09-28 13:03   ` [PATCH 10/20] mpipe: " Bernard Iremonger
2015-09-28 13:03   ` [PATCH 11/20] ixgbe: copy pci device info to eth_dev data Bernard Iremonger
2015-09-28 13:03   ` [PATCH 12/20] e1000: " Bernard Iremonger
2015-09-28 13:03   ` [PATCH 13/20] i40e: " Bernard Iremonger
2015-09-28 13:03   ` [PATCH 14/20] fm10k: " Bernard Iremonger
2015-09-28 13:03   ` [PATCH 15/20] bnx2x: " Bernard Iremonger
2015-09-28 19:55     ` Stephen Hemminger
2015-09-29  8:43       ` Iremonger, Bernard
2015-09-28 13:03   ` [PATCH 16/20] cxgbe: " Bernard Iremonger
2015-09-28 18:53     ` Rahul Lakkireddy
2015-09-29  8:41       ` Iremonger, Bernard
2015-09-28 13:03   ` [PATCH 17/20] enic: " Bernard Iremonger
2015-09-28 13:03   ` [PATCH 18/20] mlx4: " Bernard Iremonger
2015-09-28 13:03   ` [PATCH 19/20] virtio: " Bernard Iremonger
2015-09-28 13:03   ` [PATCH 20/20] vmxnet3: " Bernard Iremonger
2015-10-01 15:16 ` [PATCH 0/1] vmxnet3 hotplug support Bernard Iremonger
2015-10-01 15:16   ` [PATCH 1/1] vmxnet3: add PCI Port Hotplug support Bernard Iremonger
2015-10-02  9:08 ` [PATCH 1/2] xenvirt: add support for PCI Port Hotplug Bernard Iremonger
2015-10-02  9:08   ` [PATCH 2/2] xenvirt: free queues in dev_close Bernard Iremonger
2015-10-02  9:09 ` [PATCH] vhost_xen: fix compile error in main.c Bernard Iremonger
2015-10-02  9:20 ` [PATCH 0/2] xenvirt hotplug support Bernard Iremonger
2015-10-12 16:25 ` [PATCH v3 00/20] remove pci driver from vdevs Bernard Iremonger
2015-10-12 16:25   ` [PATCH v3 01/20] librte_eal: add RTE_KDRV_NONE for vdevs Bernard Iremonger
2015-10-12 16:25   ` [PATCH v3 02/20] librte_ether: add fields from rte_pci_driver to rte_eth_dev_data Bernard Iremonger
2015-10-14 16:28     ` Mcnamara, John
2015-10-16 10:34       ` Iremonger, Bernard
2015-10-20  8:57     ` Qiu, Michael
2015-10-20 11:18       ` Iremonger, Bernard
2015-10-20  9:18     ` Qiu, Michael
2015-10-20 10:35       ` Iremonger, Bernard
2015-10-12 16:25   ` [PATCH v3 03/20] librte_ether: add function rte_eth_copy_dev_info() Bernard Iremonger
2015-10-12 16:25   ` [PATCH v3 04/20] null: remove pci device driver Bernard Iremonger
2015-10-12 16:25   ` [PATCH v3 05/20] ring: " Bernard Iremonger
2015-10-12 16:25   ` [PATCH v3 06/20] bonding: " Bernard Iremonger
2015-10-12 16:25   ` [PATCH v3 07/20] pcap: " Bernard Iremonger
2015-10-14 16:31     ` Mcnamara, John
2015-10-12 16:25   ` [PATCH v3 08/20] af_packet: " Bernard Iremonger
2015-10-12 16:25   ` [PATCH v3 09/20] xenvirt: " Bernard Iremonger
2015-10-12 16:25   ` [PATCH v3 10/20] mpipe: " Bernard Iremonger
2015-10-12 16:25   ` [PATCH v3 11/20] ixgbe: copy pci device info to eth_dev data Bernard Iremonger
2015-10-12 16:25   ` [PATCH v3 12/20] e1000: " Bernard Iremonger
2015-10-12 16:25   ` [PATCH v3 13/20] i40e: " Bernard Iremonger
2015-10-12 16:25   ` [PATCH v3 14/20] fm10k: " Bernard Iremonger
2015-10-12 16:25   ` [PATCH v3 15/20] bnx2x: " Bernard Iremonger
2015-10-12 16:25   ` [PATCH v3 16/20] cxgbe: " Bernard Iremonger
2015-10-12 16:25   ` [PATCH v3 17/20] enic: " Bernard Iremonger
2015-10-12 16:25   ` [PATCH v3 18/20] mlx4: " Bernard Iremonger
2015-10-12 16:25   ` [PATCH v3 19/20] virtio: " Bernard Iremonger
2015-10-12 16:25   ` [PATCH v3 20/20] vmxnet3: " Bernard Iremonger
2015-10-20 15:37 ` [PATCH 1/2] virtio: fixed segmentation fault in queue_release Bernard Iremonger
2015-10-20 15:37   ` [PATCH 2/2] rel_notes: update for fix for virtio segmentation fault Bernard Iremonger
2015-10-20 18:44   ` [PATCH 1/2] virtio: fixed segmentation fault in queue_release Stephen Hemminger
2015-10-20 21:32     ` Thomas Monjalon
2015-11-06 16:30 ` [PATCH 1/1] librte_ether: fix coverity errors in rte_eth_copy_pci_info Bernard Iremonger
2015-11-06 16:39   ` Thomas Monjalon
2015-11-06 16:54     ` Iremonger, Bernard
2015-11-06 17:20 ` [v2 0/1] librte_ether: fix coverity errors Bernard Iremonger
2015-11-06 17:20   ` [v2 1/1] librte_ether: fix coverity errors in rte_eth_copy_pci_info Bernard Iremonger
2015-11-10 15:40     ` Thomas Monjalon
2015-11-23 15:20 ` [PATCH 1/1] app/test: create ring and ethdevs in pmd_ring_autotest Bernard Iremonger
2015-11-24 16:14   ` Bruce Richardson
2015-11-24 16:29     ` Iremonger, Bernard
2015-11-24 16:30       ` Richardson, Bruce
2015-11-24 17:33 ` [PATCH v2 0/2] ring pmd autotest Bernard Iremonger
2015-11-24 17:33   ` [PATCH v2 1/2] app/test: create ring and ethdevs in pmd_ring_autotest Bernard Iremonger
2015-11-24 17:33   ` [PATCH v2 2/2] doc: revise ring-based PMD to match latest ring PMD code Bernard Iremonger
2015-11-27 16:07 ` [PATCH v3 0/2] ring pmd autotest Bernard Iremonger
2015-11-27 16:07   ` [PATCH v3 1/2] app/test: fix failures in the ring_pmd_autotest program Bernard Iremonger
2015-11-27 16:14     ` Bruce Richardson
2015-11-27 16:40       ` Iremonger, Bernard
2015-11-27 18:20         ` Thomas Monjalon
2015-11-27 16:07   ` [PATCH v3 2/2] doc: correct Rings-based PMD section in the NIC Drivers guides Bernard Iremonger
2015-11-27 16:17     ` Bruce Richardson
2015-11-28 11:01       ` Iremonger, Bernard
2015-11-28 11:01   ` [PATCH v4 0/2] ring pmd autotest Bernard Iremonger
2015-11-28 11:01     ` [PATCH v4 1/2] app/test: fix failures in the ring_pmd_autotest program Bernard Iremonger
2015-11-28 11:01     ` [PATCH v4 2/2] doc: correct Rings-based PMD section in the NIC Drivers guides Bernard Iremonger
2015-12-01 11:24       ` Mcnamara, John
2015-12-07  2:55     ` [PATCH v4 0/2] ring pmd autotest Thomas Monjalon
2015-12-04 14:05 ` [PATCH] bonding: use eth_dev link state interrupt flag Bernard Iremonger
2015-12-04 16:45   ` Declan Doherty
2015-12-06 23:12     ` Thomas Monjalon
2015-12-04 15:14 ` [PATCH 1/1] virtio: call rte_eth_copy_pci_info() later Bernard Iremonger
2015-12-06 22:37   ` Thomas Monjalon

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=1435934307-4495-2-git-send-email-bernard.iremonger@intel.com \
    --to=bernard.iremonger@intel.com \
    --cc=dev@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.