DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH 0/2] PCI cleanups
@ 2015-04-16 23:23 Stephen Hemminger
  2015-04-16 23:23 ` [dpdk-dev] [PATCH 1/2] pci: make device_id tables const Stephen Hemminger
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Stephen Hemminger @ 2015-04-16 23:23 UTC (permalink / raw)
  To: dev

More places where PCI code should be using const but wasn't

Stephen Hemminger (2):
  pci: make device_id tables const
  pci: allow const for rte_pci_addr

 app/test/virtual_pmd.c                  |  3 +--
 lib/librte_eal/common/eal_common_pci.c  |  4 ++--
 lib/librte_eal/common/include/rte_pci.h |  9 +++++----
 lib/librte_eal/linuxapp/eal/eal_pci.c   |  8 ++++----
 lib/librte_pmd_bond/rte_eth_bond_api.c  | 12 +++++-------
 lib/librte_pmd_e1000/em_ethdev.c        |  2 +-
 lib/librte_pmd_e1000/igb_ethdev.c       |  4 ++--
 lib/librte_pmd_enic/enic_ethdev.c       |  2 +-
 lib/librte_pmd_fm10k/fm10k_ethdev.c     |  2 +-
 lib/librte_pmd_i40e/i40e_ethdev.c       |  2 +-
 lib/librte_pmd_i40e/i40e_ethdev_vf.c    |  2 +-
 lib/librte_pmd_ixgbe/ixgbe_ethdev.c     |  4 ++--
 lib/librte_pmd_mlx4/mlx4.c              |  2 +-
 lib/librte_pmd_virtio/virtio_ethdev.c   |  2 +-
 lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c |  2 +-
 15 files changed, 29 insertions(+), 31 deletions(-)

-- 
2.1.4

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

* [dpdk-dev] [PATCH 1/2] pci: make device_id tables const
  2015-04-16 23:23 [dpdk-dev] [PATCH 0/2] PCI cleanups Stephen Hemminger
@ 2015-04-16 23:23 ` Stephen Hemminger
  2015-04-16 23:23 ` [dpdk-dev] [PATCH 2/2] pci: allow const for rte_pci_addr Stephen Hemminger
  2015-04-17 11:12 ` [dpdk-dev] [PATCH 0/2] PCI cleanups Neil Horman
  2 siblings, 0 replies; 5+ messages in thread
From: Stephen Hemminger @ 2015-04-16 23:23 UTC (permalink / raw)
  To: dev

The PCI device id table is immutable and should be made const
in all drivers. The pseudo drivers can initialize their local
copy as necessary.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 app/test/virtual_pmd.c                  |  3 +--
 lib/librte_eal/common/include/rte_pci.h |  2 +-
 lib/librte_eal/linuxapp/eal/eal_pci.c   |  8 ++++----
 lib/librte_pmd_bond/rte_eth_bond_api.c  | 12 +++++-------
 lib/librte_pmd_e1000/em_ethdev.c        |  2 +-
 lib/librte_pmd_e1000/igb_ethdev.c       |  4 ++--
 lib/librte_pmd_enic/enic_ethdev.c       |  2 +-
 lib/librte_pmd_fm10k/fm10k_ethdev.c     |  2 +-
 lib/librte_pmd_i40e/i40e_ethdev.c       |  2 +-
 lib/librte_pmd_i40e/i40e_ethdev_vf.c    |  2 +-
 lib/librte_pmd_ixgbe/ixgbe_ethdev.c     |  4 ++--
 lib/librte_pmd_mlx4/mlx4.c              |  2 +-
 lib/librte_pmd_virtio/virtio_ethdev.c   |  2 +-
 lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c |  2 +-
 14 files changed, 23 insertions(+), 26 deletions(-)

diff --git a/app/test/virtual_pmd.c b/app/test/virtual_pmd.c
index 9581892..a538c8a 100644
--- a/app/test/virtual_pmd.c
+++ b/app/test/virtual_pmd.c
@@ -562,6 +562,7 @@ virtual_ethdev_create(const char *name, struct ether_addr *mac_addr,
 	id_table = rte_zmalloc_socket(name, sizeof(*id_table), 0, socket_id);
 	if (id_table == NULL)
 		goto err;
+	id_table->device_id = 0xBEEF;
 
 	dev_private = rte_zmalloc_socket(name, sizeof(*dev_private), 0, socket_id);
 	if (dev_private == NULL)
@@ -627,8 +628,6 @@ virtual_ethdev_create(const char *name, struct ether_addr *mac_addr,
 	eth_dev->pci_dev = pci_dev;
 	eth_dev->pci_dev->driver = &eth_drv->pci_drv;
 
-	eth_dev->pci_dev->driver->id_table->device_id = 0xBEEF;
-
 	eth_dev->rx_pkt_burst = virtual_ethdev_rx_burst_success;
 	eth_dev->tx_pkt_burst = virtual_ethdev_tx_burst_success;
 
diff --git a/lib/librte_eal/common/include/rte_pci.h b/lib/librte_eal/common/include/rte_pci.h
index 785852d..62449d7 100644
--- a/lib/librte_eal/common/include/rte_pci.h
+++ b/lib/librte_eal/common/include/rte_pci.h
@@ -204,7 +204,7 @@ struct rte_pci_driver {
 	const char *name;                       /**< Driver name. */
 	pci_devinit_t *devinit;                 /**< Device init. function. */
 	pci_devuninit_t *devuninit;             /**< Device uninit function. */
-	struct rte_pci_id *id_table;            /**< ID table, NULL terminated. */
+	const struct rte_pci_id *id_table;	/**< ID table, NULL terminated. */
 	uint32_t drv_flags;                     /**< Flags contolling handling of device. */
 };
 
diff --git a/lib/librte_eal/linuxapp/eal/eal_pci.c b/lib/librte_eal/linuxapp/eal/eal_pci.c
index 9cb0ffd..d2adc66 100644
--- a/lib/librte_eal/linuxapp/eal/eal_pci.c
+++ b/lib/librte_eal/linuxapp/eal/eal_pci.c
@@ -624,9 +624,9 @@ int
 rte_eal_pci_probe_one_driver(struct rte_pci_driver *dr, struct rte_pci_device *dev)
 {
 	int ret;
-	struct rte_pci_id *id_table;
+	const struct rte_pci_id *id_table;
 
-	for (id_table = dr->id_table ; id_table->vendor_id != 0; id_table++) {
+	for (id_table = dr->id_table; id_table->vendor_id != 0; id_table++) {
 
 		/* check if device's identifiers match the driver's ones */
 		if (id_table->vendor_id != dev->id.vendor_id &&
@@ -696,12 +696,12 @@ int
 rte_eal_pci_close_one_driver(struct rte_pci_driver *dr,
 		struct rte_pci_device *dev)
 {
-	struct rte_pci_id *id_table;
+	const struct rte_pci_id *id_table;
 
 	if ((dr == NULL) || (dev == NULL))
 		return -EINVAL;
 
-	for (id_table = dr->id_table ; id_table->vendor_id != 0; id_table++) {
+	for (id_table = dr->id_table; id_table->vendor_id != 0; id_table++) {
 
 		/* check if device's identifiers match the driver's ones */
 		if (id_table->vendor_id != dev->id.vendor_id &&
diff --git a/lib/librte_pmd_bond/rte_eth_bond_api.c b/lib/librte_pmd_bond/rte_eth_bond_api.c
index f594fe1..dc11f47 100644
--- a/lib/librte_pmd_bond/rte_eth_bond_api.c
+++ b/lib/librte_pmd_bond/rte_eth_bond_api.c
@@ -237,14 +237,12 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)
 		RTE_BOND_LOG(ERR, "Unable to malloc pci_id_table on socket");
 		goto err;
 	}
-
+	pci_id_table->device_id = PCI_ANY_ID;
+	pci_id_table->subsystem_device_id = PCI_ANY_ID;
+	pci_id_table->vendor_id = PCI_ANY_ID;
+	pci_id_table->subsystem_vendor_id = PCI_ANY_ID;
+	
 	pci_drv->id_table = pci_id_table;
-
-	pci_drv->id_table->device_id = PCI_ANY_ID;
-	pci_drv->id_table->subsystem_device_id = PCI_ANY_ID;
-	pci_drv->id_table->vendor_id = PCI_ANY_ID;
-	pci_drv->id_table->subsystem_vendor_id = PCI_ANY_ID;
-
 	pci_drv->drv_flags = RTE_PCI_DRV_INTR_LSC;
 
 	internals = rte_zmalloc_socket(name, sizeof(*internals), 0, socket_id);
diff --git a/lib/librte_pmd_e1000/em_ethdev.c b/lib/librte_pmd_e1000/em_ethdev.c
index 12ecf5f..9fe101a 100644
--- a/lib/librte_pmd_e1000/em_ethdev.c
+++ b/lib/librte_pmd_e1000/em_ethdev.c
@@ -125,7 +125,7 @@ static enum e1000_fc_mode em_fc_setting = e1000_fc_full;
 /*
  * The set of PCI devices this driver supports
  */
-static struct rte_pci_id pci_id_em_map[] = {
+static const struct rte_pci_id pci_id_em_map[] = {
 
 #define RTE_PCI_DEV_ID_DECL_EM(vend, dev) {RTE_PCI_DEVICE(vend, dev)},
 #include "rte_pci_dev_ids.h"
diff --git a/lib/librte_pmd_e1000/igb_ethdev.c b/lib/librte_pmd_e1000/igb_ethdev.c
index 1ea2d38..df47ca2 100644
--- a/lib/librte_pmd_e1000/igb_ethdev.c
+++ b/lib/librte_pmd_e1000/igb_ethdev.c
@@ -216,7 +216,7 @@ static enum e1000_fc_mode igb_fc_setting = e1000_fc_full;
 /*
  * The set of PCI devices this driver supports
  */
-static struct rte_pci_id pci_id_igb_map[] = {
+static const struct rte_pci_id pci_id_igb_map[] = {
 
 #define RTE_PCI_DEV_ID_DECL_IGB(vend, dev) {RTE_PCI_DEVICE(vend, dev)},
 #include "rte_pci_dev_ids.h"
@@ -227,7 +227,7 @@ static struct rte_pci_id pci_id_igb_map[] = {
 /*
  * The set of PCI devices this driver supports (for 82576&I350 VF)
  */
-static struct rte_pci_id pci_id_igbvf_map[] = {
+static const struct rte_pci_id pci_id_igbvf_map[] = {
 
 #define RTE_PCI_DEV_ID_DECL_IGBVF(vend, dev) {RTE_PCI_DEVICE(vend, dev)},
 #include "rte_pci_dev_ids.h"
diff --git a/lib/librte_pmd_enic/enic_ethdev.c b/lib/librte_pmd_enic/enic_ethdev.c
index 3e53f86..d6423f6 100644
--- a/lib/librte_pmd_enic/enic_ethdev.c
+++ b/lib/librte_pmd_enic/enic_ethdev.c
@@ -58,7 +58,7 @@
 /*
  * The set of PCI devices this driver supports
  */
-static struct rte_pci_id pci_id_enic_map[] = {
+static const struct rte_pci_id pci_id_enic_map[] = {
 #define RTE_PCI_DEV_ID_DECL_ENIC(vend, dev) {RTE_PCI_DEVICE(vend, dev)},
 #ifndef PCI_VENDOR_ID_CISCO
 #define PCI_VENDOR_ID_CISCO	0x1137
diff --git a/lib/librte_pmd_fm10k/fm10k_ethdev.c b/lib/librte_pmd_fm10k/fm10k_ethdev.c
index 1a96cf2..d716881 100644
--- a/lib/librte_pmd_fm10k/fm10k_ethdev.c
+++ b/lib/librte_pmd_fm10k/fm10k_ethdev.c
@@ -1835,7 +1835,7 @@ eth_fm10k_dev_init(struct rte_eth_dev *dev)
  * The set of PCI devices this driver supports. This driver will enable both PF
  * and SRIOV-VF devices.
  */
-static struct rte_pci_id pci_id_fm10k_map[] = {
+static const struct rte_pci_id pci_id_fm10k_map[] = {
 #define RTE_PCI_DEV_ID_DECL_FM10K(vend, dev) { RTE_PCI_DEVICE(vend, dev) },
 #define RTE_PCI_DEV_ID_DECL_FM10KVF(vend, dev) { RTE_PCI_DEVICE(vend, dev) },
 #include "rte_pci_dev_ids.h"
diff --git a/lib/librte_pmd_i40e/i40e_ethdev.c b/lib/librte_pmd_i40e/i40e_ethdev.c
index dc44764..43762f2 100644
--- a/lib/librte_pmd_i40e/i40e_ethdev.c
+++ b/lib/librte_pmd_i40e/i40e_ethdev.c
@@ -212,7 +212,7 @@ static int i40e_dev_filter_ctrl(struct rte_eth_dev *dev,
 static void i40e_configure_registers(struct i40e_hw *hw);
 static void i40e_hw_init(struct i40e_hw *hw);
 
-static struct rte_pci_id pci_id_i40e_map[] = {
+static const struct rte_pci_id pci_id_i40e_map[] = {
 #define RTE_PCI_DEV_ID_DECL_I40E(vend, dev) {RTE_PCI_DEVICE(vend, dev)},
 #include "rte_pci_dev_ids.h"
 { .vendor_id = 0, /* sentinel */ },
diff --git a/lib/librte_pmd_i40e/i40e_ethdev_vf.c b/lib/librte_pmd_i40e/i40e_ethdev_vf.c
index 4581c5b..8910bdf 100644
--- a/lib/librte_pmd_i40e/i40e_ethdev_vf.c
+++ b/lib/librte_pmd_i40e/i40e_ethdev_vf.c
@@ -999,7 +999,7 @@ i40evf_get_link_status(struct rte_eth_dev *dev, struct rte_eth_link *link)
 	return 0;
 }
 
-static struct rte_pci_id pci_id_i40evf_map[] = {
+static const struct rte_pci_id pci_id_i40evf_map[] = {
 #define RTE_PCI_DEV_ID_DECL_I40EVF(vend, dev) {RTE_PCI_DEVICE(vend, dev)},
 #include "rte_pci_dev_ids.h"
 { .vendor_id = 0, /* sentinel */ },
diff --git a/lib/librte_pmd_ixgbe/ixgbe_ethdev.c b/lib/librte_pmd_ixgbe/ixgbe_ethdev.c
index 1b3b4b5..366aa45 100644
--- a/lib/librte_pmd_ixgbe/ixgbe_ethdev.c
+++ b/lib/librte_pmd_ixgbe/ixgbe_ethdev.c
@@ -297,7 +297,7 @@ static int ixgbevf_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu);
 /*
  * The set of PCI devices this driver supports
  */
-static struct rte_pci_id pci_id_ixgbe_map[] = {
+static const struct rte_pci_id pci_id_ixgbe_map[] = {
 
 #define RTE_PCI_DEV_ID_DECL_IXGBE(vend, dev) {RTE_PCI_DEVICE(vend, dev)},
 #include "rte_pci_dev_ids.h"
@@ -309,7 +309,7 @@ static struct rte_pci_id pci_id_ixgbe_map[] = {
 /*
  * The set of PCI devices this driver supports (for 82599 VF)
  */
-static struct rte_pci_id pci_id_ixgbevf_map[] = {
+static const struct rte_pci_id pci_id_ixgbevf_map[] = {
 
 #define RTE_PCI_DEV_ID_DECL_IXGBEVF(vend, dev) {RTE_PCI_DEVICE(vend, dev)},
 #include "rte_pci_dev_ids.h"
diff --git a/lib/librte_pmd_mlx4/mlx4.c b/lib/librte_pmd_mlx4/mlx4.c
index e096071..5df192c 100644
--- a/lib/librte_pmd_mlx4/mlx4.c
+++ b/lib/librte_pmd_mlx4/mlx4.c
@@ -4632,7 +4632,7 @@ error:
 	return -err;
 }
 
-static struct rte_pci_id mlx4_pci_id_map[] = {
+static const struct rte_pci_id mlx4_pci_id_map[] = {
 	{
 		.vendor_id = PCI_VENDOR_ID_MELLANOX,
 		.device_id = PCI_DEVICE_ID_MELLANOX_CONNECTX3,
diff --git a/lib/librte_pmd_virtio/virtio_ethdev.c b/lib/librte_pmd_virtio/virtio_ethdev.c
index ffa26a0..e63dbfb 100644
--- a/lib/librte_pmd_virtio/virtio_ethdev.c
+++ b/lib/librte_pmd_virtio/virtio_ethdev.c
@@ -102,7 +102,7 @@ static int virtio_dev_queue_stats_mapping_set(
 /*
  * The set of PCI devices this driver supports
  */
-static struct rte_pci_id pci_id_virtio_map[] = {
+static const struct rte_pci_id pci_id_virtio_map[] = {
 
 #define RTE_PCI_DEV_ID_DECL_VIRTIO(vend, dev) {RTE_PCI_DEVICE(vend, dev)},
 #include "rte_pci_dev_ids.h"
diff --git a/lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c b/lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c
index 577e0f9..20f484c 100644
--- a/lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c
+++ b/lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c
@@ -91,7 +91,7 @@ static void vmxnet3_process_events(struct vmxnet3_hw *);
 /*
  * The set of PCI devices this driver supports
  */
-static struct rte_pci_id pci_id_vmxnet3_map[] = {
+static const struct rte_pci_id pci_id_vmxnet3_map[] = {
 
 #define RTE_PCI_DEV_ID_DECL_VMXNET3(vend, dev) {RTE_PCI_DEVICE(vend, dev)},
 #include "rte_pci_dev_ids.h"
-- 
2.1.4

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

* [dpdk-dev] [PATCH 2/2] pci: allow const for rte_pci_addr
  2015-04-16 23:23 [dpdk-dev] [PATCH 0/2] PCI cleanups Stephen Hemminger
  2015-04-16 23:23 ` [dpdk-dev] [PATCH 1/2] pci: make device_id tables const Stephen Hemminger
@ 2015-04-16 23:23 ` Stephen Hemminger
  2015-04-17 11:12 ` [dpdk-dev] [PATCH 0/2] PCI cleanups Neil Horman
  2 siblings, 0 replies; 5+ messages in thread
From: Stephen Hemminger @ 2015-04-16 23:23 UTC (permalink / raw)
  To: dev

probe and close both don't modify the rte_pci_addr structure
that is passed.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/librte_eal/common/eal_common_pci.c  | 4 ++--
 lib/librte_eal/common/include/rte_pci.h | 7 ++++---
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/lib/librte_eal/common/eal_common_pci.c b/lib/librte_eal/common/eal_common_pci.c
index 808b87b..4229aaf 100644
--- a/lib/librte_eal/common/eal_common_pci.c
+++ b/lib/librte_eal/common/eal_common_pci.c
@@ -158,7 +158,7 @@ pci_close_all_drivers(struct rte_pci_device *dev)
  * the driver of the devive.
  */
 int
-rte_eal_pci_probe_one(struct rte_pci_addr *addr)
+rte_eal_pci_probe_one(const struct rte_pci_addr *addr)
 {
 	struct rte_pci_device *dev = NULL;
 	int ret = 0;
@@ -189,7 +189,7 @@ err_return:
  * the driver of the devive.
  */
 int
-rte_eal_pci_close_one(struct rte_pci_addr *addr)
+rte_eal_pci_close_one(const struct rte_pci_addr *addr)
 {
 	struct rte_pci_device *dev = NULL;
 	int ret = 0;
diff --git a/lib/librte_eal/common/include/rte_pci.h b/lib/librte_eal/common/include/rte_pci.h
index 62449d7..223d3cd 100644
--- a/lib/librte_eal/common/include/rte_pci.h
+++ b/lib/librte_eal/common/include/rte_pci.h
@@ -292,7 +292,8 @@ eal_parse_pci_DomBDF(const char *input, struct rte_pci_addr *dev_addr)
  *	Negative on addr is less than addr2, or error.
  */
 static inline int
-rte_eal_compare_pci_addr(struct rte_pci_addr *addr, struct rte_pci_addr *addr2)
+rte_eal_compare_pci_addr(const struct rte_pci_addr *addr,
+			 const struct rte_pci_addr *addr2)
 {
 	uint64_t dev_addr, dev_addr2;
 
@@ -348,7 +349,7 @@ int rte_eal_pci_probe(void);
  *   - 0 on success.
  *   - Negative on error.
  */
-int rte_eal_pci_probe_one(struct rte_pci_addr *addr);
+int rte_eal_pci_probe_one(const struct rte_pci_addr *addr);
 
 /**
  * Close the single PCI device.
@@ -363,7 +364,7 @@ int rte_eal_pci_probe_one(struct rte_pci_addr *addr);
  *   - 0 on success.
  *   - Negative on error.
  */
-int rte_eal_pci_close_one(struct rte_pci_addr *addr);
+int rte_eal_pci_close_one(const struct rte_pci_addr *addr);
 #endif /* RTE_LIBRTE_EAL_HOTPLUG */
 
 /**
-- 
2.1.4

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

* Re: [dpdk-dev] [PATCH 0/2] PCI cleanups
  2015-04-16 23:23 [dpdk-dev] [PATCH 0/2] PCI cleanups Stephen Hemminger
  2015-04-16 23:23 ` [dpdk-dev] [PATCH 1/2] pci: make device_id tables const Stephen Hemminger
  2015-04-16 23:23 ` [dpdk-dev] [PATCH 2/2] pci: allow const for rte_pci_addr Stephen Hemminger
@ 2015-04-17 11:12 ` Neil Horman
  2015-04-23 12:51   ` Thomas Monjalon
  2 siblings, 1 reply; 5+ messages in thread
From: Neil Horman @ 2015-04-17 11:12 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev

On Thu, Apr 16, 2015 at 04:23:38PM -0700, Stephen Hemminger wrote:
> More places where PCI code should be using const but wasn't
> 
> Stephen Hemminger (2):
>   pci: make device_id tables const
>   pci: allow const for rte_pci_addr
> 
>  app/test/virtual_pmd.c                  |  3 +--
>  lib/librte_eal/common/eal_common_pci.c  |  4 ++--
>  lib/librte_eal/common/include/rte_pci.h |  9 +++++----
>  lib/librte_eal/linuxapp/eal/eal_pci.c   |  8 ++++----
>  lib/librte_pmd_bond/rte_eth_bond_api.c  | 12 +++++-------
>  lib/librte_pmd_e1000/em_ethdev.c        |  2 +-
>  lib/librte_pmd_e1000/igb_ethdev.c       |  4 ++--
>  lib/librte_pmd_enic/enic_ethdev.c       |  2 +-
>  lib/librte_pmd_fm10k/fm10k_ethdev.c     |  2 +-
>  lib/librte_pmd_i40e/i40e_ethdev.c       |  2 +-
>  lib/librte_pmd_i40e/i40e_ethdev_vf.c    |  2 +-
>  lib/librte_pmd_ixgbe/ixgbe_ethdev.c     |  4 ++--
>  lib/librte_pmd_mlx4/mlx4.c              |  2 +-
>  lib/librte_pmd_virtio/virtio_ethdev.c   |  2 +-
>  lib/librte_pmd_vmxnet3/vmxnet3_ethdev.c |  2 +-
>  15 files changed, 29 insertions(+), 31 deletions(-)
> 
> -- 
> 2.1.4
> 
> 

For the series
Acked-by: Neil Horman <nhorman@tuxdriver.com>

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

* Re: [dpdk-dev] [PATCH 0/2] PCI cleanups
  2015-04-17 11:12 ` [dpdk-dev] [PATCH 0/2] PCI cleanups Neil Horman
@ 2015-04-23 12:51   ` Thomas Monjalon
  0 siblings, 0 replies; 5+ messages in thread
From: Thomas Monjalon @ 2015-04-23 12:51 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: dev

2015-04-17 07:12, Neil Horman:
> On Thu, Apr 16, 2015 at 04:23:38PM -0700, Stephen Hemminger wrote:
> > More places where PCI code should be using const but wasn't
> > 
> > Stephen Hemminger (2):
> >   pci: make device_id tables const
> >   pci: allow const for rte_pci_addr
> 
> For the series
> Acked-by: Neil Horman <nhorman@tuxdriver.com>

Applied, thanks

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

end of thread, other threads:[~2015-04-23 12:51 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-16 23:23 [dpdk-dev] [PATCH 0/2] PCI cleanups Stephen Hemminger
2015-04-16 23:23 ` [dpdk-dev] [PATCH 1/2] pci: make device_id tables const Stephen Hemminger
2015-04-16 23:23 ` [dpdk-dev] [PATCH 2/2] pci: allow const for rte_pci_addr Stephen Hemminger
2015-04-17 11:12 ` [dpdk-dev] [PATCH 0/2] PCI cleanups Neil Horman
2015-04-23 12:51   ` 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).