From: David Marchand <david.marchand@6wind.com>
To: dev@dpdk.org
Cc: thomas.monjalon@6wind.com, viktorin@rehivetech.com
Subject: [dpdk-dev] [PATCH v2 08/17] drivers: convert all pdev drivers as pci drivers
Date: Wed, 20 Apr 2016 13:44:08 +0200 [thread overview]
Message-ID: <1461152657-19969-9-git-send-email-david.marchand@6wind.com> (raw)
In-Reply-To: <1461152657-19969-1-git-send-email-david.marchand@6wind.com>
Simplify crypto and ethdev pci drivers init by using newly introduced
init macros and helpers.
Those drivers then don't need to register as "rte_driver"s anymore.
virtio and mlx* drivers use the general purpose RTE_INIT macro, as they both
need some special stuff to be done before registering a pci driver.
Signed-off-by: David Marchand <david.marchand@6wind.com>
---
drivers/crypto/qat/rte_qat_cryptodev.c | 16 +++--------
drivers/net/bnx2x/bnx2x_ethdev.c | 35 +++++-------------------
drivers/net/cxgbe/cxgbe_ethdev.c | 24 +++--------------
drivers/net/e1000/em_ethdev.c | 16 +++--------
drivers/net/e1000/igb_ethdev.c | 40 +++++-----------------------
drivers/net/ena/ena_ethdev.c | 18 +++----------
drivers/net/enic/enic_ethdev.c | 23 +++-------------
drivers/net/fm10k/fm10k_ethdev.c | 23 +++-------------
drivers/net/i40e/i40e_ethdev.c | 26 +++---------------
drivers/net/i40e/i40e_ethdev_vf.c | 25 +++---------------
drivers/net/ixgbe/ixgbe_ethdev.c | 47 +++++----------------------------
drivers/net/mlx4/mlx4.c | 20 +++-----------
drivers/net/mlx5/mlx5.c | 19 +++----------
drivers/net/nfp/nfp_net.c | 21 +++------------
drivers/net/szedata2/rte_eth_szedata2.c | 25 +++---------------
drivers/net/virtio/virtio_ethdev.c | 26 +++++-------------
drivers/net/vmxnet3/vmxnet3_ethdev.c | 23 +++-------------
17 files changed, 68 insertions(+), 359 deletions(-)
diff --git a/drivers/crypto/qat/rte_qat_cryptodev.c b/drivers/crypto/qat/rte_qat_cryptodev.c
index 08496ab..54f0c95 100644
--- a/drivers/crypto/qat/rte_qat_cryptodev.c
+++ b/drivers/crypto/qat/rte_qat_cryptodev.c
@@ -120,21 +120,11 @@ static struct rte_cryptodev_driver rte_qat_pmd = {
.name = "rte_qat_pmd",
.id_table = pci_id_qat_map,
.drv_flags = RTE_PCI_DRV_NEED_MAPPING,
+ .devinit = rte_cryptodev_pci_probe,
+ .devuninit = rte_cryptodev_pci_remove,
},
.cryptodev_init = crypto_qat_dev_init,
.dev_private_size = sizeof(struct qat_pmd_private),
};
-static int
-rte_qat_pmd_init(const char *name __rte_unused, const char *params __rte_unused)
-{
- PMD_INIT_FUNC_TRACE();
- return rte_cryptodev_pmd_driver_register(&rte_qat_pmd, PMD_PDEV);
-}
-
-static struct rte_driver pmd_qat_drv = {
- .type = PMD_PDEV,
- .init = rte_qat_pmd_init,
-};
-
-PMD_REGISTER_DRIVER(pmd_qat_drv);
+RTE_EAL_PCI_REGISTER(qat, rte_qat_pmd.pci_drv);
diff --git a/drivers/net/bnx2x/bnx2x_ethdev.c b/drivers/net/bnx2x/bnx2x_ethdev.c
index 071b44f..ba194b5 100644
--- a/drivers/net/bnx2x/bnx2x_ethdev.c
+++ b/drivers/net/bnx2x/bnx2x_ethdev.c
@@ -506,11 +506,15 @@ static struct eth_driver rte_bnx2x_pmd = {
.name = "rte_bnx2x_pmd",
.id_table = pci_id_bnx2x_map,
.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC,
+ .devinit = rte_eth_dev_pci_probe,
+ .devuninit = rte_eth_dev_pci_remove,
},
.eth_dev_init = eth_bnx2x_dev_init,
.dev_private_size = sizeof(struct bnx2x_softc),
};
+RTE_EAL_PCI_REGISTER(bnx2x, rte_bnx2x_pmd.pci_drv);
+
/*
* virtual function driver struct
*/
@@ -519,36 +523,11 @@ static struct eth_driver rte_bnx2xvf_pmd = {
.name = "rte_bnx2xvf_pmd",
.id_table = pci_id_bnx2xvf_map,
.drv_flags = RTE_PCI_DRV_NEED_MAPPING,
+ .devinit = rte_eth_dev_pci_probe,
+ .devuninit = rte_eth_dev_pci_remove,
},
.eth_dev_init = eth_bnx2xvf_dev_init,
.dev_private_size = sizeof(struct bnx2x_softc),
};
-static int rte_bnx2x_pmd_init(const char *name __rte_unused, const char *params __rte_unused)
-{
- PMD_INIT_FUNC_TRACE();
- rte_eth_driver_register(&rte_bnx2x_pmd);
-
- return 0;
-}
-
-static int rte_bnx2xvf_pmd_init(const char *name __rte_unused, const char *params __rte_unused)
-{
- PMD_INIT_FUNC_TRACE();
- rte_eth_driver_register(&rte_bnx2xvf_pmd);
-
- return 0;
-}
-
-static struct rte_driver rte_bnx2x_driver = {
- .type = PMD_PDEV,
- .init = rte_bnx2x_pmd_init,
-};
-
-static struct rte_driver rte_bnx2xvf_driver = {
- .type = PMD_PDEV,
- .init = rte_bnx2xvf_pmd_init,
-};
-
-PMD_REGISTER_DRIVER(rte_bnx2x_driver);
-PMD_REGISTER_DRIVER(rte_bnx2xvf_driver);
+RTE_EAL_PCI_REGISTER(bnx2xvf, rte_bnx2xvf_pmd.pci_drv);
diff --git a/drivers/net/cxgbe/cxgbe_ethdev.c b/drivers/net/cxgbe/cxgbe_ethdev.c
index bb134e5..72b1a7b 100644
--- a/drivers/net/cxgbe/cxgbe_ethdev.c
+++ b/drivers/net/cxgbe/cxgbe_ethdev.c
@@ -870,29 +870,11 @@ static struct eth_driver rte_cxgbe_pmd = {
.name = "rte_cxgbe_pmd",
.id_table = cxgb4_pci_tbl,
.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC,
+ .devinit = rte_eth_dev_pci_probe,
+ .devuninit = rte_eth_dev_pci_remove,
},
.eth_dev_init = eth_cxgbe_dev_init,
.dev_private_size = sizeof(struct port_info),
};
-/*
- * Driver initialization routine.
- * Invoked once at EAL init time.
- * Register itself as the [Poll Mode] Driver of PCI CXGBE devices.
- */
-static int rte_cxgbe_pmd_init(const char *name __rte_unused,
- const char *params __rte_unused)
-{
- CXGBE_FUNC_TRACE();
-
- rte_eth_driver_register(&rte_cxgbe_pmd);
- return 0;
-}
-
-static struct rte_driver rte_cxgbe_driver = {
- .name = "cxgbe_driver",
- .type = PMD_PDEV,
- .init = rte_cxgbe_pmd_init,
-};
-
-PMD_REGISTER_DRIVER(rte_cxgbe_driver);
+RTE_EAL_PCI_REGISTER(cxgbe, rte_cxgbe_pmd.pci_drv);
diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c
index 653be09..1f80c05 100644
--- a/drivers/net/e1000/em_ethdev.c
+++ b/drivers/net/e1000/em_ethdev.c
@@ -368,18 +368,15 @@ static struct eth_driver rte_em_pmd = {
.id_table = pci_id_em_map,
.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC |
RTE_PCI_DRV_DETACHABLE,
+ .devinit = rte_eth_dev_pci_probe,
+ .devuninit = rte_eth_dev_pci_remove,
},
.eth_dev_init = eth_em_dev_init,
.eth_dev_uninit = eth_em_dev_uninit,
.dev_private_size = sizeof(struct e1000_adapter),
};
-static int
-rte_em_pmd_init(const char *name __rte_unused, const char *params __rte_unused)
-{
- rte_eth_driver_register(&rte_em_pmd);
- return 0;
-}
+RTE_EAL_PCI_REGISTER(em, rte_em_pmd.pci_drv);
static int
em_hw_init(struct e1000_hw *hw)
@@ -1771,10 +1768,3 @@ eth_em_set_mc_addr_list(struct rte_eth_dev *dev,
e1000_update_mc_addr_list(hw, (u8 *)mc_addr_set, nb_mc_addr);
return 0;
}
-
-struct rte_driver em_pmd_drv = {
- .type = PMD_PDEV,
- .init = rte_em_pmd_init,
-};
-
-PMD_REGISTER_DRIVER(em_pmd_drv);
diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c
index e0053fe..9b5f985 100644
--- a/drivers/net/e1000/igb_ethdev.c
+++ b/drivers/net/e1000/igb_ethdev.c
@@ -975,12 +975,16 @@ static struct eth_driver rte_igb_pmd = {
.id_table = pci_id_igb_map,
.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC |
RTE_PCI_DRV_DETACHABLE,
+ .devinit = rte_eth_dev_pci_probe,
+ .devuninit = rte_eth_dev_pci_remove,
},
.eth_dev_init = eth_igb_dev_init,
.eth_dev_uninit = eth_igb_dev_uninit,
.dev_private_size = sizeof(struct e1000_adapter),
};
+RTE_EAL_PCI_REGISTER(igb, rte_igb_pmd.pci_drv);
+
/*
* virtual function driver struct
*/
@@ -989,18 +993,15 @@ static struct eth_driver rte_igbvf_pmd = {
.name = "rte_igbvf_pmd",
.id_table = pci_id_igbvf_map,
.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_DETACHABLE,
+ .devinit = rte_eth_dev_pci_probe,
+ .devuninit = rte_eth_dev_pci_remove,
},
.eth_dev_init = eth_igbvf_dev_init,
.eth_dev_uninit = eth_igbvf_dev_uninit,
.dev_private_size = sizeof(struct e1000_adapter),
};
-static int
-rte_igb_pmd_init(const char *name __rte_unused, const char *params __rte_unused)
-{
- rte_eth_driver_register(&rte_igb_pmd);
- return 0;
-}
+RTE_EAL_PCI_REGISTER(igbvf, rte_igbvf_pmd.pci_drv);
static void
igb_vmdq_vlan_hw_filter_enable(struct rte_eth_dev *dev)
@@ -1013,20 +1014,6 @@ igb_vmdq_vlan_hw_filter_enable(struct rte_eth_dev *dev)
E1000_WRITE_REG(hw, E1000_RCTL, rctl);
}
-/*
- * VF Driver initialization routine.
- * Invoked one at EAL init time.
- * Register itself as the [Virtual Poll Mode] Driver of PCI IGB devices.
- */
-static int
-rte_igbvf_pmd_init(const char *name __rte_unused, const char *params __rte_unused)
-{
- PMD_INIT_FUNC_TRACE();
-
- rte_eth_driver_register(&rte_igbvf_pmd);
- return 0;
-}
-
static int
igb_check_mq_mode(struct rte_eth_dev *dev)
{
@@ -4807,16 +4794,6 @@ eth_igb_set_eeprom(struct rte_eth_dev *dev,
return nvm->ops.write(hw, first, length, data);
}
-static struct rte_driver pmd_igb_drv = {
- .type = PMD_PDEV,
- .init = rte_igb_pmd_init,
-};
-
-static struct rte_driver pmd_igbvf_drv = {
- .type = PMD_PDEV,
- .init = rte_igbvf_pmd_init,
-};
-
static int
eth_igb_rx_queue_intr_disable(struct rte_eth_dev *dev, uint16_t queue_id)
{
@@ -4977,6 +4954,3 @@ eth_igb_configure_msix_intr(struct rte_eth_dev *dev)
E1000_WRITE_FLUSH(hw);
}
-
-PMD_REGISTER_DRIVER(pmd_igb_drv);
-PMD_REGISTER_DRIVER(pmd_igbvf_drv);
diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
index fbc96ae..2b60a67 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -1433,23 +1433,11 @@ static struct eth_driver rte_ena_pmd = {
.name = "rte_ena_pmd",
.id_table = pci_id_ena_map,
.drv_flags = RTE_PCI_DRV_NEED_MAPPING,
+ .devinit = rte_eth_dev_pci_probe,
+ .devuninit = rte_eth_dev_pci_remove,
},
.eth_dev_init = eth_ena_dev_init,
.dev_private_size = sizeof(struct ena_adapter),
};
-static int
-rte_ena_pmd_init(const char *name __rte_unused,
- const char *params __rte_unused)
-{
- rte_eth_driver_register(&rte_ena_pmd);
- return 0;
-};
-
-struct rte_driver ena_pmd_drv = {
- .name = "ena_driver",
- .type = PMD_PDEV,
- .init = rte_ena_pmd_init,
-};
-
-PMD_REGISTER_DRIVER(ena_pmd_drv);
+RTE_EAL_PCI_REGISTER(ena, rte_ena_pmd.pci_drv);
diff --git a/drivers/net/enic/enic_ethdev.c b/drivers/net/enic/enic_ethdev.c
index 6bea940..7539811 100644
--- a/drivers/net/enic/enic_ethdev.c
+++ b/drivers/net/enic/enic_ethdev.c
@@ -660,28 +660,11 @@ static struct eth_driver rte_enic_pmd = {
.name = "rte_enic_pmd",
.id_table = pci_id_enic_map,
.drv_flags = RTE_PCI_DRV_NEED_MAPPING,
+ .devinit = rte_eth_dev_pci_probe,
+ .devuninit = rte_eth_dev_pci_remove,
},
.eth_dev_init = eth_enicpmd_dev_init,
.dev_private_size = sizeof(struct enic),
};
-/* Driver initialization routine.
- * Invoked once at EAL init time.
- * Register as the [Poll Mode] Driver of Cisco ENIC device.
- */
-static int
-rte_enic_pmd_init(__rte_unused const char *name,
- __rte_unused const char *params)
-{
- ENICPMD_FUNC_TRACE();
-
- rte_eth_driver_register(&rte_enic_pmd);
- return 0;
-}
-
-static struct rte_driver rte_enic_driver = {
- .type = PMD_PDEV,
- .init = rte_enic_pmd_init,
-};
-
-PMD_REGISTER_DRIVER(rte_enic_driver);
+RTE_EAL_PCI_REGISTER(enic, rte_enic_pmd.pci_drv);
diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c
index c2d377f..146bc2a 100644
--- a/drivers/net/fm10k/fm10k_ethdev.c
+++ b/drivers/net/fm10k/fm10k_ethdev.c
@@ -3030,29 +3030,12 @@ static struct eth_driver rte_pmd_fm10k = {
.id_table = pci_id_fm10k_map,
.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC |
RTE_PCI_DRV_DETACHABLE,
+ .devinit = rte_eth_dev_pci_probe,
+ .devuninit = rte_eth_dev_pci_remove,
},
.eth_dev_init = eth_fm10k_dev_init,
.eth_dev_uninit = eth_fm10k_dev_uninit,
.dev_private_size = sizeof(struct fm10k_adapter),
};
-/*
- * Driver initialization routine.
- * Invoked once at EAL init time.
- * Register itself as the [Poll Mode] Driver of PCI FM10K devices.
- */
-static int
-rte_pmd_fm10k_init(__rte_unused const char *name,
- __rte_unused const char *params)
-{
- PMD_INIT_FUNC_TRACE();
- rte_eth_driver_register(&rte_pmd_fm10k);
- return 0;
-}
-
-static struct rte_driver rte_fm10k_driver = {
- .type = PMD_PDEV,
- .init = rte_pmd_fm10k_init,
-};
-
-PMD_REGISTER_DRIVER(rte_fm10k_driver);
+RTE_EAL_PCI_REGISTER(fm10k, rte_pmd_fm10k.pci_drv);
diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index bc28d3c..4e87399 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -641,12 +641,16 @@ static struct eth_driver rte_i40e_pmd = {
.id_table = pci_id_i40e_map,
.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC |
RTE_PCI_DRV_DETACHABLE,
+ .devinit = rte_eth_dev_pci_probe,
+ .devuninit = rte_eth_dev_pci_remove,
},
.eth_dev_init = eth_i40e_dev_init,
.eth_dev_uninit = eth_i40e_dev_uninit,
.dev_private_size = sizeof(struct i40e_adapter),
};
+RTE_EAL_PCI_REGISTER(i40e, rte_i40e_pmd.pci_drv);
+
static inline int
rte_i40e_dev_atomic_read_link_status(struct rte_eth_dev *dev,
struct rte_eth_link *link)
@@ -676,28 +680,6 @@ rte_i40e_dev_atomic_write_link_status(struct rte_eth_dev *dev,
}
/*
- * Driver initialization routine.
- * Invoked once at EAL init time.
- * Register itself as the [Poll Mode] Driver of PCI IXGBE devices.
- */
-static int
-rte_i40e_pmd_init(const char *name __rte_unused,
- const char *params __rte_unused)
-{
- PMD_INIT_FUNC_TRACE();
- rte_eth_driver_register(&rte_i40e_pmd);
-
- return 0;
-}
-
-static struct rte_driver rte_i40e_driver = {
- .type = PMD_PDEV,
- .init = rte_i40e_pmd_init,
-};
-
-PMD_REGISTER_DRIVER(rte_i40e_driver);
-
-/*
* Initialize registers for flexible payload, which should be set by NVM.
* This should be removed from code once it is fixed in NVM.
*/
diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c
index 2bce69b..1e41b3a 100644
--- a/drivers/net/i40e/i40e_ethdev_vf.c
+++ b/drivers/net/i40e/i40e_ethdev_vf.c
@@ -1533,34 +1533,15 @@ static struct eth_driver rte_i40evf_pmd = {
.name = "rte_i40evf_pmd",
.id_table = pci_id_i40evf_map,
.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_DETACHABLE,
+ .devinit = rte_eth_dev_pci_probe,
+ .devuninit = rte_eth_dev_pci_remove,
},
.eth_dev_init = i40evf_dev_init,
.eth_dev_uninit = i40evf_dev_uninit,
.dev_private_size = sizeof(struct i40e_adapter),
};
-/*
- * VF Driver initialization routine.
- * Invoked one at EAL init time.
- * Register itself as the [Virtual Poll Mode] Driver of PCI Fortville devices.
- */
-static int
-rte_i40evf_pmd_init(const char *name __rte_unused,
- const char *params __rte_unused)
-{
- PMD_INIT_FUNC_TRACE();
-
- rte_eth_driver_register(&rte_i40evf_pmd);
-
- return 0;
-}
-
-static struct rte_driver rte_i40evf_driver = {
- .type = PMD_PDEV,
- .init = rte_i40evf_pmd_init,
-};
-
-PMD_REGISTER_DRIVER(rte_i40evf_driver);
+RTE_EAL_PCI_REGISTER(i40evf, rte_i40evf_pmd.pci_drv);
static int
i40evf_dev_configure(struct rte_eth_dev *dev)
diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index 3f1ebc1..5103c7c 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -1484,12 +1484,16 @@ static struct eth_driver rte_ixgbe_pmd = {
.id_table = pci_id_ixgbe_map,
.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC |
RTE_PCI_DRV_DETACHABLE,
+ .devinit = rte_eth_dev_pci_probe,
+ .devuninit = rte_eth_dev_pci_remove,
},
.eth_dev_init = eth_ixgbe_dev_init,
.eth_dev_uninit = eth_ixgbe_dev_uninit,
.dev_private_size = sizeof(struct ixgbe_adapter),
};
+RTE_EAL_PCI_REGISTER(ixgbe, rte_ixgbe_pmd.pci_drv);
+
/*
* virtual function driver struct
*/
@@ -1498,39 +1502,15 @@ static struct eth_driver rte_ixgbevf_pmd = {
.name = "rte_ixgbevf_pmd",
.id_table = pci_id_ixgbevf_map,
.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_DETACHABLE,
+ .devinit = rte_eth_dev_pci_probe,
+ .devuninit = rte_eth_dev_pci_remove,
},
.eth_dev_init = eth_ixgbevf_dev_init,
.eth_dev_uninit = eth_ixgbevf_dev_uninit,
.dev_private_size = sizeof(struct ixgbe_adapter),
};
-/*
- * Driver initialization routine.
- * Invoked once at EAL init time.
- * Register itself as the [Poll Mode] Driver of PCI IXGBE devices.
- */
-static int
-rte_ixgbe_pmd_init(const char *name __rte_unused, const char *params __rte_unused)
-{
- PMD_INIT_FUNC_TRACE();
-
- rte_eth_driver_register(&rte_ixgbe_pmd);
- return 0;
-}
-
-/*
- * VF Driver initialization routine.
- * Invoked one at EAL init time.
- * Register itself as the [Virtual Poll Mode] Driver of PCI niantic devices.
- */
-static int
-rte_ixgbevf_pmd_init(const char *name __rte_unused, const char *param __rte_unused)
-{
- PMD_INIT_FUNC_TRACE();
-
- rte_eth_driver_register(&rte_ixgbevf_pmd);
- return 0;
-}
+RTE_EAL_PCI_REGISTER(ixgbevf, rte_ixgbevf_pmd.pci_drv);
static int
ixgbe_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on)
@@ -7134,16 +7114,3 @@ ixgbevf_dev_allmulticast_disable(struct rte_eth_dev *dev)
ixgbevf_update_xcast_mode(hw, IXGBEVF_XCAST_MODE_NONE);
}
-
-static struct rte_driver rte_ixgbe_driver = {
- .type = PMD_PDEV,
- .init = rte_ixgbe_pmd_init,
-};
-
-static struct rte_driver rte_ixgbevf_driver = {
- .type = PMD_PDEV,
- .init = rte_ixgbevf_pmd_init,
-};
-
-PMD_REGISTER_DRIVER(rte_ixgbe_driver);
-PMD_REGISTER_DRIVER(rte_ixgbevf_driver);
diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c
index 4f21dbe..8e4b0cc 100644
--- a/drivers/net/mlx4/mlx4.c
+++ b/drivers/net/mlx4/mlx4.c
@@ -5789,15 +5789,10 @@ static struct eth_driver mlx4_driver = {
.dev_private_size = sizeof(struct priv)
};
-/**
- * Driver initialization routine.
- */
-static int
-rte_mlx4_pmd_init(const char *name, const char *args)
+RTE_INIT(rte_mlx4_pmd_init);
+static void
+rte_mlx4_pmd_init(void)
{
- (void)name;
- (void)args;
-
RTE_BUILD_BUG_ON(sizeof(wr_id_t) != sizeof(uint64_t));
/*
* RDMAV_HUGEPAGES_SAFE tells ibv_fork_init() we intend to use
@@ -5808,13 +5803,4 @@ rte_mlx4_pmd_init(const char *name, const char *args)
setenv("RDMAV_HUGEPAGES_SAFE", "1", 1);
ibv_fork_init();
rte_eal_pci_register(&mlx4_driver.pci_drv);
- return 0;
}
-
-static struct rte_driver rte_mlx4_driver = {
- .type = PMD_PDEV,
- .name = MLX4_DRIVER_NAME,
- .init = rte_mlx4_pmd_init,
-};
-
-PMD_REGISTER_DRIVER(rte_mlx4_driver)
diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index 041cfc3..1989a37 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -646,14 +646,10 @@ static struct eth_driver mlx5_driver = {
.dev_private_size = sizeof(struct priv)
};
-/**
- * Driver initialization routine.
- */
-static int
-rte_mlx5_pmd_init(const char *name, const char *args)
+RTE_INIT(rte_mlx5_pmd_init);
+static void
+rte_mlx5_pmd_init(void)
{
- (void)name;
- (void)args;
/*
* RDMAV_HUGEPAGES_SAFE tells ibv_fork_init() we intend to use
* huge pages. Calling ibv_fork_init() during init allows
@@ -663,13 +659,4 @@ rte_mlx5_pmd_init(const char *name, const char *args)
setenv("RDMAV_HUGEPAGES_SAFE", "1", 1);
ibv_fork_init();
rte_eal_pci_register(&mlx5_driver.pci_drv);
- return 0;
}
-
-static struct rte_driver rte_mlx5_driver = {
- .type = PMD_PDEV,
- .name = MLX5_DRIVER_NAME,
- .init = rte_mlx5_pmd_init,
-};
-
-PMD_REGISTER_DRIVER(rte_mlx5_driver)
diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c
index fb23b74..baa840e 100644
--- a/drivers/net/nfp/nfp_net.c
+++ b/drivers/net/nfp/nfp_net.c
@@ -2478,29 +2478,14 @@ static struct eth_driver rte_nfp_net_pmd = {
.name = "rte_nfp_net_pmd",
.id_table = pci_id_nfp_net_map,
.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC,
+ .devinit = rte_eth_dev_pci_probe,
+ .devuninit = rte_eth_dev_pci_remove,
},
.eth_dev_init = nfp_net_init,
.dev_private_size = sizeof(struct nfp_net_adapter),
};
-static int
-nfp_net_pmd_init(const char *name __rte_unused,
- const char *params __rte_unused)
-{
- PMD_INIT_FUNC_TRACE();
- PMD_INIT_LOG(INFO, "librte_pmd_nfp_net version %s\n",
- NFP_NET_PMD_VERSION);
-
- rte_eth_driver_register(&rte_nfp_net_pmd);
- return 0;
-}
-
-static struct rte_driver rte_nfp_net_driver = {
- .type = PMD_PDEV,
- .init = nfp_net_pmd_init,
-};
-
-PMD_REGISTER_DRIVER(rte_nfp_net_driver);
+RTE_EAL_PCI_REGISTER(nfp_net, rte_nfp_net_pmd.pci_drv);
/*
* Local variables:
diff --git a/drivers/net/szedata2/rte_eth_szedata2.c b/drivers/net/szedata2/rte_eth_szedata2.c
index 78c43b0..acada05 100644
--- a/drivers/net/szedata2/rte_eth_szedata2.c
+++ b/drivers/net/szedata2/rte_eth_szedata2.c
@@ -1574,31 +1574,12 @@ static struct eth_driver szedata2_eth_driver = {
.pci_drv = {
.name = RTE_SZEDATA2_PCI_DRIVER_NAME,
.id_table = rte_szedata2_pci_id_table,
+ .devinit = rte_eth_dev_pci_probe,
+ .devuninit = rte_eth_dev_pci_remove,
},
.eth_dev_init = rte_szedata2_eth_dev_init,
.eth_dev_uninit = rte_szedata2_eth_dev_uninit,
.dev_private_size = sizeof(struct pmd_internals),
};
-static int
-rte_szedata2_init(const char *name __rte_unused,
- const char *args __rte_unused)
-{
- rte_eth_driver_register(&szedata2_eth_driver);
- return 0;
-}
-
-static int
-rte_szedata2_uninit(const char *name __rte_unused)
-{
- return 0;
-}
-
-static struct rte_driver rte_szedata2_driver = {
- .type = PMD_PDEV,
- .name = RTE_SZEDATA2_DRIVER_NAME,
- .init = rte_szedata2_init,
- .uninit = rte_szedata2_uninit,
-};
-
-PMD_REGISTER_DRIVER(rte_szedata2_driver);
+RTE_EAL_PCI_REGISTER(szedata2, szedata2_eth_driver.pci_drv);
diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c
index 63a368a..f8cc158 100644
--- a/drivers/net/virtio/virtio_ethdev.c
+++ b/drivers/net/virtio/virtio_ethdev.c
@@ -1206,29 +1206,24 @@ static struct eth_driver rte_virtio_pmd = {
.name = "rte_virtio_pmd",
.id_table = pci_id_virtio_map,
.drv_flags = RTE_PCI_DRV_DETACHABLE,
+ .devinit = rte_eth_dev_pci_probe,
+ .devuninit = rte_eth_dev_pci_remove,
},
.eth_dev_init = eth_virtio_dev_init,
.eth_dev_uninit = eth_virtio_dev_uninit,
.dev_private_size = sizeof(struct virtio_hw),
};
-/*
- * Driver initialization routine.
- * Invoked once at EAL init time.
- * Register itself as the [Poll Mode] Driver of PCI virtio devices.
- * Returns 0 on success.
- */
-static int
-rte_virtio_pmd_init(const char *name __rte_unused,
- const char *param __rte_unused)
+RTE_INIT(rte_virtio_pmd_init);
+static void
+rte_virtio_pmd_init(void)
{
if (rte_eal_iopl_init() != 0) {
PMD_INIT_LOG(ERR, "IOPL call failed - cannot use virtio PMD");
- return -1;
+ return;
}
- rte_eth_driver_register(&rte_virtio_pmd);
- return 0;
+ rte_eal_pci_register(&rte_virtio_pmd.pci_drv);
}
/*
@@ -1452,10 +1447,3 @@ __rte_unused uint8_t is_rx)
{
return 0;
}
-
-static struct rte_driver rte_virtio_driver = {
- .type = PMD_PDEV,
- .init = rte_virtio_pmd_init,
-};
-
-PMD_REGISTER_DRIVER(rte_virtio_driver);
diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c
index bd7a2bb..375e681 100644
--- a/drivers/net/vmxnet3/vmxnet3_ethdev.c
+++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c
@@ -332,25 +332,15 @@ static struct eth_driver rte_vmxnet3_pmd = {
.name = "rte_vmxnet3_pmd",
.id_table = pci_id_vmxnet3_map,
.drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_DETACHABLE,
+ .devinit = rte_eth_dev_pci_probe,
+ .devuninit = rte_eth_dev_pci_remove,
},
.eth_dev_init = eth_vmxnet3_dev_init,
.eth_dev_uninit = eth_vmxnet3_dev_uninit,
.dev_private_size = sizeof(struct vmxnet3_hw),
};
-/*
- * Driver initialization routine.
- * Invoked once at EAL init time.
- * Register itself as the [Poll Mode] Driver of Virtual PCI VMXNET3 devices.
- */
-static int
-rte_vmxnet3_pmd_init(const char *name __rte_unused, const char *param __rte_unused)
-{
- PMD_INIT_FUNC_TRACE();
-
- rte_eth_driver_register(&rte_vmxnet3_pmd);
- return 0;
-}
+RTE_EAL_PCI_REGISTER(vmxnet3, rte_vmxnet3_pmd.pci_drv);
static int
vmxnet3_dev_configure(struct rte_eth_dev *dev)
@@ -949,10 +939,3 @@ vmxnet3_process_events(struct vmxnet3_hw *hw)
}
#endif
-
-static struct rte_driver rte_vmxnet3_driver = {
- .type = PMD_PDEV,
- .init = rte_vmxnet3_pmd_init,
-};
-
-PMD_REGISTER_DRIVER(rte_vmxnet3_driver);
--
1.9.1
next prev parent reply other threads:[~2016-04-20 11:44 UTC|newest]
Thread overview: 375+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-29 14:08 [dpdk-dev] [PATCH 0/9] prepare for rte_device / rte_driver David Marchand
2016-01-29 14:08 ` [dpdk-dev] [PATCH 1/9] pci: no need for dynamic tailq init David Marchand
2016-02-08 10:32 ` viktorin
2016-01-29 14:08 ` [dpdk-dev] [PATCH 2/9] pci: register all pdev as pci drivers David Marchand
2016-02-08 11:03 ` Jan Viktorin
2016-02-09 8:55 ` David Marchand
2016-01-29 14:08 ` [dpdk-dev] [PATCH 3/9] drivers: no more pdev drivers David Marchand
2016-02-09 17:05 ` Jan Viktorin
2016-02-10 8:51 ` David Marchand
2016-02-10 9:27 ` David Marchand
2016-02-10 10:20 ` Jan Viktorin
2016-02-10 11:38 ` David Marchand
2016-02-10 12:29 ` Jan Viktorin
2016-01-29 14:08 ` [dpdk-dev] [PATCH 4/9] eal/linux: move back interrupt thread init before setting affinity David Marchand
2016-02-02 7:02 ` Rahul Lakkireddy
2016-02-02 7:13 ` David Marchand
2016-02-02 7:43 ` Rahul Lakkireddy
2016-01-29 14:08 ` [dpdk-dev] [PATCH 5/9] eal: get rid of pmd type David Marchand
2016-02-09 17:15 ` Jan Viktorin
2016-01-29 14:08 ` [dpdk-dev] [PATCH 6/9] eal: initialize vdevs right next to pci devices David Marchand
2016-02-10 11:05 ` Jan Viktorin
2016-02-10 11:43 ` David Marchand
2016-01-29 14:08 ` [dpdk-dev] [PATCH 7/9] pci: add a helper for device name David Marchand
2016-02-10 11:10 ` Jan Viktorin
2016-02-10 12:04 ` David Marchand
2016-01-29 14:08 ` [dpdk-dev] [PATCH 8/9] pci: add a helper to refresh a device David Marchand
2016-02-10 11:23 ` Jan Viktorin
2016-02-10 12:00 ` David Marchand
2016-02-10 12:20 ` Jan Viktorin
2016-01-29 14:08 ` [dpdk-dev] [PATCH 9/9] eal: relocate hotplug code from ethdev David Marchand
2016-04-20 11:44 ` [dpdk-dev] [PATCH v2 00/17] prepare for rte_device / rte_driver David Marchand
2016-04-20 11:44 ` [dpdk-dev] [PATCH v2 01/17] pci: no need for dynamic tailq init David Marchand
2016-04-20 11:44 ` [dpdk-dev] [PATCH v2 02/17] crypto: no need for a crypto pmd type David Marchand
2016-04-20 11:44 ` [dpdk-dev] [PATCH v2 03/17] drivers: align pci driver definitions David Marchand
2016-04-20 11:44 ` [dpdk-dev] [PATCH v2 04/17] eal: remove duplicate function declaration David Marchand
2016-04-20 11:44 ` [dpdk-dev] [PATCH v2 05/17] eal: introduce init macros David Marchand
2016-04-20 12:33 ` Jan Viktorin
2016-04-20 11:44 ` [dpdk-dev] [PATCH v2 06/17] crypto: export init/uninit common wrappers for pci drivers David Marchand
2016-04-20 11:44 ` [dpdk-dev] [PATCH v2 07/17] ethdev: " David Marchand
2016-04-20 11:44 ` David Marchand [this message]
2016-04-20 11:44 ` [dpdk-dev] [PATCH v2 09/17] crypto: get rid of crypto driver register callback David Marchand
2016-04-20 11:44 ` [dpdk-dev] [PATCH v2 10/17] ethdev: get rid of eth " David Marchand
2016-04-20 11:44 ` [dpdk-dev] [PATCH v2 11/17] eal/linux: move back interrupt thread init before setting affinity David Marchand
2016-04-20 11:44 ` [dpdk-dev] [PATCH v2 12/17] pci: add a helper for device name David Marchand
2016-05-04 15:25 ` Bruce Richardson
2016-05-04 16:26 ` Thomas Monjalon
2016-05-04 16:36 ` Bruce Richardson
2016-04-20 11:44 ` [dpdk-dev] [PATCH v2 13/17] pci: add a helper to update a device David Marchand
2016-04-20 11:44 ` [dpdk-dev] [PATCH v2 14/17] ethdev: do not scan all pci devices on attach David Marchand
2016-04-20 11:44 ` [dpdk-dev] [PATCH v2 15/17] eal: add hotplug operations for pci and vdev David Marchand
2016-05-27 10:39 ` Iremonger, Bernard
2016-04-20 11:44 ` [dpdk-dev] [PATCH v2 16/17] ethdev: convert to eal hotplug David Marchand
2016-04-20 11:44 ` [dpdk-dev] [PATCH v2 17/17] ethdev: get rid of device type David Marchand
2016-04-20 12:05 ` [dpdk-dev] [PATCH v2 00/17] prepare for rte_device / rte_driver Bruce Richardson
2016-04-20 12:41 ` Jan Viktorin
2016-04-22 10:18 ` Jan Viktorin
2016-05-06 9:26 ` Declan Doherty
2016-05-06 11:46 ` Jan Viktorin
2016-05-27 10:23 ` Iremonger, Bernard
2016-06-16 6:32 ` Shreyansh Jain
2016-06-16 7:34 ` Thomas Monjalon
2016-06-16 8:23 ` Jan Viktorin
2016-06-16 9:19 ` Thomas Monjalon
2016-06-16 10:45 ` Jan Viktorin
2016-06-16 8:42 ` Shreyansh Jain
2016-06-16 10:48 ` Jan Viktorin
2016-06-16 14:06 ` [dpdk-dev] [PATCH v3 " Shreyansh Jain
2016-06-16 14:06 ` [dpdk-dev] [PATCH v3 01/17] pci: no need for dynamic tailq init Shreyansh Jain
2016-06-16 14:06 ` [dpdk-dev] [PATCH v3 02/17] crypto: no need for a crypto pmd type Shreyansh Jain
2016-06-16 14:06 ` [dpdk-dev] [PATCH v3 03/17] drivers: align pci driver definitions Shreyansh Jain
2016-06-16 14:06 ` [dpdk-dev] [PATCH v3 04/17] eal: remove duplicate function declaration Shreyansh Jain
2016-06-16 14:06 ` [dpdk-dev] [PATCH v3 05/17] eal: introduce init macros Shreyansh Jain
2016-06-16 14:06 ` [dpdk-dev] [PATCH v3 06/17] crypto: export init/uninit common wrappers for pci drivers Shreyansh Jain
2016-06-16 14:06 ` [dpdk-dev] [PATCH v3 07/17] ethdev: " Shreyansh Jain
2016-06-16 14:06 ` [dpdk-dev] [PATCH v3 08/17] drivers: convert all pdev drivers as " Shreyansh Jain
2016-06-16 14:06 ` [dpdk-dev] [PATCH v3 09/17] crypto: get rid of crypto driver register callback Shreyansh Jain
2016-06-16 14:06 ` [dpdk-dev] [PATCH v3 10/17] ethdev: get rid of eth " Shreyansh Jain
2016-06-20 6:16 ` Shreyansh jain
2016-06-16 14:06 ` [dpdk-dev] [PATCH v3 11/17] eal/linux: move back interrupt thread init before setting affinity Shreyansh Jain
2016-06-16 14:06 ` [dpdk-dev] [PATCH v3 12/17] pci: add a helper for device name Shreyansh Jain
2016-06-16 14:06 ` [dpdk-dev] [PATCH v3 13/17] pci: add a helper to update a device Shreyansh Jain
2016-06-16 14:06 ` [dpdk-dev] [PATCH v3 14/17] ethdev: do not scan all pci devices on attach Shreyansh Jain
2016-06-16 14:06 ` [dpdk-dev] [PATCH v3 15/17] eal: add hotplug operations for pci and vdev Shreyansh Jain
2016-06-16 14:06 ` [dpdk-dev] [PATCH v3 16/17] ethdev: convert to eal hotplug Shreyansh Jain
2016-06-16 14:06 ` [dpdk-dev] [PATCH v3 17/17] ethdev: get rid of device type Shreyansh Jain
2016-06-21 12:02 ` [dpdk-dev] [PATCH v4 00/17] prepare for rte_device / rte_driver Shreyansh Jain
2016-06-21 12:02 ` [dpdk-dev] [PATCH v4 01/17] pci: no need for dynamic tailq init Shreyansh Jain
2016-06-21 12:02 ` [dpdk-dev] [PATCH v4 02/17] crypto: no need for a crypto pmd type Shreyansh Jain
2016-06-21 12:02 ` [dpdk-dev] [PATCH v4 03/17] drivers: align pci driver definitions Shreyansh Jain
2016-06-21 12:02 ` [dpdk-dev] [PATCH v4 04/17] eal: remove duplicate function declaration Shreyansh Jain
2016-06-21 12:02 ` [dpdk-dev] [PATCH v4 05/17] eal: introduce init macros Shreyansh Jain
2016-06-21 12:02 ` [dpdk-dev] [PATCH v4 06/17] crypto: export init/uninit common wrappers for pci drivers Shreyansh Jain
2016-06-21 12:02 ` [dpdk-dev] [PATCH v4 07/17] ethdev: " Shreyansh Jain
2016-06-21 12:02 ` [dpdk-dev] [PATCH v4 08/17] drivers: convert all pdev drivers as " Shreyansh Jain
2016-06-21 12:02 ` [dpdk-dev] [PATCH v4 09/17] crypto: get rid of crypto driver register callback Shreyansh Jain
2016-06-21 12:02 ` [dpdk-dev] [PATCH v4 10/17] ethdev: get rid of eth " Shreyansh Jain
2016-06-21 12:02 ` [dpdk-dev] [PATCH v4 11/17] eal/linux: move back interrupt thread init before setting affinity Shreyansh Jain
2016-06-21 12:02 ` [dpdk-dev] [PATCH v4 12/17] pci: add a helper for device name Shreyansh Jain
2016-06-21 12:02 ` [dpdk-dev] [PATCH v4 13/17] pci: add a helper to update a device Shreyansh Jain
2016-06-21 12:02 ` [dpdk-dev] [PATCH v4 14/17] ethdev: do not scan all pci devices on attach Shreyansh Jain
2016-06-21 12:02 ` [dpdk-dev] [PATCH v4 15/17] eal: add hotplug operations for pci and vdev Shreyansh Jain
2016-06-21 12:02 ` [dpdk-dev] [PATCH v4 16/17] ethdev: convert to eal hotplug Shreyansh Jain
2016-06-21 12:02 ` [dpdk-dev] [PATCH v4 17/17] ethdev: get rid of device type Shreyansh Jain
2016-06-21 12:31 ` [dpdk-dev] [PATCH v4 00/17] prepare for rte_device / rte_driver Shreyansh jain
2016-06-22 9:06 ` [dpdk-dev] [PATCH v5 00/17] Prepare " Shreyansh Jain
2016-06-22 9:06 ` [dpdk-dev] [PATCH v5 01/17] pci: no need for dynamic tailq init Shreyansh Jain
2016-06-22 9:06 ` [dpdk-dev] [PATCH v5 02/17] crypto: no need for a crypto pmd type Shreyansh Jain
2016-06-22 9:06 ` [dpdk-dev] [PATCH v5 03/17] drivers: align pci driver definitions Shreyansh Jain
2016-06-22 9:06 ` [dpdk-dev] [PATCH v5 04/17] eal: remove duplicate function declaration Shreyansh Jain
2016-06-22 9:06 ` [dpdk-dev] [PATCH v5 05/17] eal: introduce init macros Shreyansh Jain
2016-06-22 9:06 ` [dpdk-dev] [PATCH v5 06/17] crypto: export init/uninit common wrappers for pci drivers Shreyansh Jain
2016-06-22 9:06 ` [dpdk-dev] [PATCH v5 07/17] ethdev: " Shreyansh Jain
2016-06-22 9:06 ` [dpdk-dev] [PATCH v5 08/17] drivers: convert all pdev drivers as " Shreyansh Jain
2016-06-22 9:06 ` [dpdk-dev] [PATCH v5 09/17] crypto: get rid of crypto driver register callback Shreyansh Jain
2016-06-22 13:27 ` Neil Horman
2016-06-22 13:43 ` Shreyansh jain
2016-06-22 13:44 ` Thomas Monjalon
2016-06-22 9:06 ` [dpdk-dev] [PATCH v5 10/17] ethdev: get rid of eth " Shreyansh Jain
2016-06-22 13:28 ` Neil Horman
2016-06-22 13:44 ` Shreyansh jain
2016-06-22 9:06 ` [dpdk-dev] [PATCH v5 11/17] eal/linux: move back interrupt thread init before setting affinity Shreyansh Jain
2016-06-22 9:06 ` [dpdk-dev] [PATCH v5 12/17] pci: add a helper for device name Shreyansh Jain
2016-06-22 9:06 ` [dpdk-dev] [PATCH v5 13/17] pci: add a helper to update a device Shreyansh Jain
2016-06-22 9:06 ` [dpdk-dev] [PATCH v5 14/17] ethdev: do not scan all pci devices on attach Shreyansh Jain
2016-06-22 9:06 ` [dpdk-dev] [PATCH v5 15/17] eal: add hotplug operations for pci and vdev Shreyansh Jain
2016-06-22 9:06 ` [dpdk-dev] [PATCH v5 16/17] ethdev: convert to eal hotplug Shreyansh Jain
2016-06-22 9:06 ` [dpdk-dev] [PATCH v5 17/17] ethdev: get rid of device type Shreyansh Jain
2016-07-12 6:01 ` [dpdk-dev] [PATCH v6 00/17] Prepare for rte_device / rte_driver Shreyansh Jain
2016-07-12 6:01 ` [dpdk-dev] [PATCH v6 01/17] pci: no need for dynamic tailq init Shreyansh Jain
2016-07-14 17:11 ` viktorin
2016-07-12 6:01 ` [dpdk-dev] [PATCH v6 02/17] crypto: no need for a crypto pmd type Shreyansh Jain
2016-07-14 17:14 ` viktorin
2016-07-12 6:01 ` [dpdk-dev] [PATCH v6 03/17] drivers: align pci driver definitions Shreyansh Jain
2016-07-14 17:12 ` viktorin
2016-07-12 6:01 ` [dpdk-dev] [PATCH v6 04/17] eal: remove duplicate function declaration Shreyansh Jain
2016-07-14 17:13 ` viktorin
2016-07-12 6:01 ` [dpdk-dev] [PATCH v6 05/17] eal: introduce init macros Shreyansh Jain
2016-07-13 9:20 ` Jan Viktorin
2016-07-13 17:34 ` Jan Viktorin
2016-07-14 5:27 ` Shreyansh jain
2016-07-14 15:57 ` Jan Viktorin
2016-07-15 10:48 ` Shreyansh jain
2016-07-15 12:38 ` Thomas Monjalon
2016-07-28 9:36 ` Shreyansh Jain
2016-07-30 8:14 ` Jan Viktorin
2016-08-01 11:00 ` Shreyansh Jain
2016-07-12 6:01 ` [dpdk-dev] [PATCH v6 06/17] crypto: export init/uninit common wrappers for pci drivers Shreyansh Jain
2016-07-14 17:06 ` viktorin
2016-07-12 6:01 ` [dpdk-dev] [PATCH v6 07/17] ethdev: " Shreyansh Jain
2016-07-14 17:06 ` viktorin
2016-07-12 6:01 ` [dpdk-dev] [PATCH v6 08/17] drivers: convert all pdev drivers as " Shreyansh Jain
2016-07-12 6:01 ` [dpdk-dev] [PATCH v6 09/17] crypto: get rid of crypto driver register callback Shreyansh Jain
2016-07-14 17:10 ` viktorin
2016-07-12 6:01 ` [dpdk-dev] [PATCH v6 10/17] ethdev: get rid of eth " Shreyansh Jain
2016-07-14 17:09 ` viktorin
2016-07-12 6:01 ` [dpdk-dev] [PATCH v6 11/17] eal/linux: move back interrupt thread init before setting affinity Shreyansh Jain
2016-07-14 17:09 ` viktorin
2016-07-12 6:01 ` [dpdk-dev] [PATCH v6 12/17] pci: add a helper for device name Shreyansh Jain
2016-07-14 16:55 ` Jan Viktorin
2016-07-15 9:39 ` Shreyansh jain
2016-07-15 9:56 ` Thomas Monjalon
2016-07-15 11:32 ` Jan Viktorin
2016-07-15 9:56 ` Jan Viktorin
2016-07-15 13:14 ` Shreyansh Jain
2016-07-12 6:01 ` [dpdk-dev] [PATCH v6 13/17] pci: add a helper to update a device Shreyansh Jain
2016-07-14 17:01 ` Jan Viktorin
2016-07-15 9:44 ` Shreyansh jain
2016-07-12 6:01 ` [dpdk-dev] [PATCH v6 14/17] ethdev: do not scan all pci devices on attach Shreyansh Jain
2016-07-12 6:01 ` [dpdk-dev] [PATCH v6 15/17] eal: add hotplug operations for pci and vdev Shreyansh Jain
2016-07-14 16:50 ` Jan Viktorin
2016-07-15 9:52 ` Shreyansh jain
2016-07-12 6:01 ` [dpdk-dev] [PATCH v6 16/17] ethdev: convert to eal hotplug Shreyansh Jain
2016-07-14 16:51 ` Jan Viktorin
2016-07-15 10:36 ` Shreyansh jain
2016-07-15 11:27 ` Jan Viktorin
2016-07-12 6:01 ` [dpdk-dev] [PATCH v6 17/17] ethdev: get rid of device type Shreyansh Jain
2016-07-14 16:33 ` Jan Viktorin
2016-08-01 10:45 ` [dpdk-dev] [PATCH v7 00/17] Prepare for rte_device / rte_driver Shreyansh Jain
2016-08-01 10:45 ` [dpdk-dev] [PATCH v7 01/17] pci: no need for dynamic tailq init Shreyansh Jain
2016-08-01 10:45 ` [dpdk-dev] [PATCH v7 02/17] crypto: no need for a crypto pmd type Shreyansh Jain
2016-08-01 10:45 ` [dpdk-dev] [PATCH v7 03/17] drivers: align pci driver definitions Shreyansh Jain
2016-08-01 10:45 ` [dpdk-dev] [PATCH v7 04/17] eal: remove duplicate function declaration Shreyansh Jain
2016-08-01 10:45 ` [dpdk-dev] [PATCH v7 05/17] eal: introduce init macros Shreyansh Jain
2016-08-01 10:45 ` [dpdk-dev] [PATCH v7 06/17] crypto: export init/uninit common wrappers for pci drivers Shreyansh Jain
2016-08-01 10:45 ` [dpdk-dev] [PATCH v7 07/17] ethdev: " Shreyansh Jain
2016-08-01 10:45 ` [dpdk-dev] [PATCH v7 08/17] drivers: convert all pdev drivers as " Shreyansh Jain
2016-08-01 10:45 ` [dpdk-dev] [PATCH v7 09/17] crypto: get rid of crypto driver register callback Shreyansh Jain
2016-08-01 10:45 ` [dpdk-dev] [PATCH v7 10/17] ethdev: get rid of eth " Shreyansh Jain
2016-08-01 10:45 ` [dpdk-dev] [PATCH v7 11/17] eal/linux: move back interrupt thread init before setting affinity Shreyansh Jain
2016-08-01 10:45 ` [dpdk-dev] [PATCH v7 12/17] pci: add a helper for device name Shreyansh Jain
2016-08-01 10:45 ` [dpdk-dev] [PATCH v7 13/17] pci: add a helper to update a device Shreyansh Jain
2016-08-01 10:45 ` [dpdk-dev] [PATCH v7 14/17] ethdev: do not scan all pci devices on attach Shreyansh Jain
2016-08-01 10:45 ` [dpdk-dev] [PATCH v7 15/17] eal: add hotplug operations for pci and vdev Shreyansh Jain
2016-08-01 10:45 ` [dpdk-dev] [PATCH v7 16/17] ethdev: convert to eal hotplug Shreyansh Jain
2016-08-01 10:45 ` [dpdk-dev] [PATCH v7 17/17] ethdev: get rid of device type Shreyansh Jain
2016-08-01 15:43 ` [dpdk-dev] [PATCH v7 00/17] Prepare for rte_device / rte_driver Jan Viktorin
2016-08-26 13:56 ` [dpdk-dev] [PATCH v8 00/25] Introducing rte_driver/rte_device generalization Shreyansh Jain
2016-08-26 13:56 ` [dpdk-dev] [PATCH v8 01/25] eal: define macro container_of Shreyansh Jain
2016-08-29 16:43 ` Ferruh Yigit
2016-08-30 4:27 ` Shreyansh Jain
2016-08-30 10:30 ` Thomas Monjalon
2016-08-30 11:59 ` Shreyansh Jain
2016-08-30 13:42 ` Thomas Monjalon
2016-08-31 4:26 ` Shreyansh Jain
2016-08-30 4:31 ` Shreyansh Jain
2016-09-08 5:45 ` Shreyansh Jain
2016-08-26 13:56 ` [dpdk-dev] [PATCH v8 02/25] eal: remove duplicate function declaration Shreyansh Jain
2016-08-26 13:56 ` [dpdk-dev] [PATCH v8 03/25] pci: no need for dynamic tailq init Shreyansh Jain
2016-08-26 13:56 ` [dpdk-dev] [PATCH v8 04/25] crypto: no need for a crypto pmd type Shreyansh Jain
2016-08-26 13:56 ` [dpdk-dev] [PATCH v8 05/25] drivers: align pci driver definitions Shreyansh Jain
2016-08-26 13:56 ` [dpdk-dev] [PATCH v8 06/25] eal: introduce init macros Shreyansh Jain
2016-08-26 13:56 ` [dpdk-dev] [PATCH v8 07/25] driver: init/uninit common wrappers for PCI drivers Shreyansh Jain
2016-08-26 13:56 ` [dpdk-dev] [PATCH v8 08/25] drivers: convert all pdev drivers as pci drivers Shreyansh Jain
2016-08-26 13:56 ` [dpdk-dev] [PATCH v8 09/25] driver: Remove driver register callbacks for crypto/net Shreyansh Jain
2016-08-29 17:20 ` Ferruh Yigit
2016-08-30 4:36 ` Shreyansh Jain
2016-09-08 5:46 ` Shreyansh Jain
2016-08-26 13:56 ` [dpdk-dev] [PATCH v8 10/25] eal/pci: Helpers for device name parsing/update Shreyansh Jain
2016-08-30 16:34 ` Pattan, Reshma
2016-08-31 4:24 ` Shreyansh Jain
2016-09-08 5:48 ` Shreyansh Jain
2016-08-26 13:56 ` [dpdk-dev] [PATCH v8 11/25] ethdev: do not scan all pci devices on attach Shreyansh Jain
2016-08-26 13:56 ` [dpdk-dev] [PATCH v8 12/25] eal: add hotplug operations for pci and vdev Shreyansh Jain
2016-08-26 13:56 ` [dpdk-dev] [PATCH v8 13/25] ethdev: convert to eal hotplug Shreyansh Jain
2016-08-26 13:56 ` [dpdk-dev] [PATCH v8 14/25] ethdev: get rid of device type Shreyansh Jain
2016-08-26 13:56 ` [dpdk-dev] [PATCH v8 15/25] eal: extract vdev infra Shreyansh Jain
2016-08-26 13:56 ` [dpdk-dev] [PATCH v8 16/25] eal: Remove PDEV/VDEV unused code Shreyansh Jain
2016-08-26 13:56 ` [dpdk-dev] [PATCH v8 17/25] drivers: convert PMD_VDEV drivers to use rte_vdev_driver Shreyansh Jain
2016-08-29 16:57 ` Ferruh Yigit
2016-08-30 4:38 ` Shreyansh Jain
2016-09-08 5:49 ` Shreyansh Jain
2016-08-26 13:56 ` [dpdk-dev] [PATCH v8 18/25] eal: move init/uninit to rte_vdev_driver Shreyansh Jain
2016-08-26 13:56 ` [dpdk-dev] [PATCH v8 19/25] eal: remove PMD_DRIVER_REGISTER and unused pmd_types Shreyansh Jain
2016-08-26 13:56 ` [dpdk-dev] [PATCH v8 20/25] eal: rte_pci.h includes rte_dev.h Shreyansh Jain
2016-08-26 13:56 ` [dpdk-dev] [PATCH v8 21/25] eal: rename and move rte_pci_resource Shreyansh Jain
2016-08-26 13:57 ` [dpdk-dev] [PATCH v8 22/25] eal/pci: inherit rte_driver by rte_pci_driver Shreyansh Jain
2016-08-29 16:49 ` Ferruh Yigit
2016-08-30 4:59 ` Shreyansh Jain
2016-09-08 5:51 ` Shreyansh Jain
2016-08-30 15:47 ` Ferruh Yigit
2016-09-01 13:54 ` Shreyansh Jain
2016-08-26 13:57 ` [dpdk-dev] [PATCH v8 23/25] eal: call rte_eal_driver_register Shreyansh Jain
2016-08-26 13:57 ` [dpdk-dev] [PATCH v8 24/25] eal: introduce rte_device Shreyansh Jain
2016-08-26 13:57 ` [dpdk-dev] [PATCH v8 25/25] eal/pci: Create rte_device list and fallback on its members Shreyansh Jain
2016-08-29 16:53 ` Ferruh Yigit
2016-08-30 4:38 ` Shreyansh Jain
2016-09-08 5:55 ` Shreyansh Jain
2016-09-08 8:33 ` Ferruh Yigit
2016-08-30 13:27 ` [dpdk-dev] [PATCH v8 00/25] Introducing rte_driver/rte_device generalization Ferruh Yigit
2016-09-01 12:36 ` Shreyansh Jain
2016-09-08 7:03 ` Shreyansh Jain
2016-09-01 18:29 ` Jan Viktorin
2016-09-02 5:32 ` Shreyansh Jain
2016-09-07 14:07 ` [dpdk-dev] [PATCH v9 " Shreyansh Jain
2016-09-07 14:07 ` [dpdk-dev] [PATCH v9 01/25] eal: define macro container_of Shreyansh Jain
2016-09-08 14:16 ` Ferruh Yigit
2016-09-09 4:19 ` Shreyansh Jain
2016-09-09 8:55 ` Adrien Mazarguil
2016-09-09 10:44 ` Shreyansh Jain
2016-09-07 14:07 ` [dpdk-dev] [PATCH v9 02/25] eal: remove duplicate function declaration Shreyansh Jain
2016-09-07 14:07 ` [dpdk-dev] [PATCH v9 03/25] pci: no need for dynamic tailq init Shreyansh Jain
2016-09-07 14:07 ` [dpdk-dev] [PATCH v9 04/25] crypto: no need for a crypto pmd type Shreyansh Jain
2016-09-07 14:07 ` [dpdk-dev] [PATCH v9 05/25] drivers: align pci driver definitions Shreyansh Jain
2016-09-07 14:07 ` [dpdk-dev] [PATCH v9 06/25] eal: introduce init macros Shreyansh Jain
2016-09-12 7:15 ` David Marchand
2016-09-15 7:28 ` Shreyansh Jain
2016-09-07 14:07 ` [dpdk-dev] [PATCH v9 07/25] driver: init/uninit common wrappers for PCI drivers Shreyansh Jain
2016-09-12 7:16 ` David Marchand
2016-09-12 9:55 ` Thomas Monjalon
2016-09-07 14:08 ` [dpdk-dev] [PATCH v9 08/25] drivers: convert all pdev drivers as pci drivers Shreyansh Jain
2016-09-12 7:16 ` David Marchand
2016-09-16 4:49 ` Shreyansh Jain
2016-09-07 14:08 ` [dpdk-dev] [PATCH v9 09/25] driver: Remove driver register callbacks for crypto/net Shreyansh Jain
2016-09-07 14:08 ` [dpdk-dev] [PATCH v9 10/25] eal/pci: Helpers for device name parsing/update Shreyansh Jain
2016-09-07 14:08 ` [dpdk-dev] [PATCH v9 11/25] ethdev: do not scan all pci devices on attach Shreyansh Jain
2016-09-07 14:08 ` [dpdk-dev] [PATCH v9 12/25] eal: add hotplug operations for pci and vdev Shreyansh Jain
2016-09-07 14:08 ` [dpdk-dev] [PATCH v9 13/25] ethdev: convert to eal hotplug Shreyansh Jain
2016-09-12 7:16 ` David Marchand
2016-09-15 7:29 ` Shreyansh Jain
2016-09-07 14:08 ` [dpdk-dev] [PATCH v9 14/25] ethdev: get rid of device type Shreyansh Jain
2016-09-07 14:08 ` [dpdk-dev] [PATCH v9 15/25] eal: extract vdev infra Shreyansh Jain
2016-09-07 14:08 ` [dpdk-dev] [PATCH v9 16/25] eal: Remove PDEV/VDEV unused code Shreyansh Jain
2016-09-07 14:08 ` [dpdk-dev] [PATCH v9 17/25] drivers: convert PMD_VDEV drivers to use rte_vdev_driver Shreyansh Jain
2016-09-11 11:55 ` Yuanhan Liu
2016-09-12 4:39 ` Shreyansh Jain
2016-09-07 14:08 ` [dpdk-dev] [PATCH v9 18/25] eal: move init/uninit to rte_vdev_driver Shreyansh Jain
2016-09-07 14:08 ` [dpdk-dev] [PATCH v9 19/25] eal: remove PMD_DRIVER_REGISTER and unused pmd_types Shreyansh Jain
2016-09-07 14:08 ` [dpdk-dev] [PATCH v9 20/25] eal: rte_pci.h includes rte_dev.h Shreyansh Jain
2016-09-07 14:08 ` [dpdk-dev] [PATCH v9 21/25] eal: rename and move rte_pci_resource Shreyansh Jain
2016-09-07 14:08 ` [dpdk-dev] [PATCH v9 22/25] eal/pci: inherit rte_driver by rte_pci_driver Shreyansh Jain
2016-09-08 14:25 ` Ferruh Yigit
2016-09-16 4:47 ` Shreyansh Jain
2016-09-07 14:08 ` [dpdk-dev] [PATCH v9 23/25] eal: call rte_eal_driver_register Shreyansh Jain
2016-09-07 14:08 ` [dpdk-dev] [PATCH v9 24/25] eal: introduce rte_device Shreyansh Jain
2016-09-07 14:08 ` [dpdk-dev] [PATCH v9 25/25] eal/pci: Create rte_device list and fallback on its members Shreyansh Jain
2016-09-07 18:40 ` [dpdk-dev] [PATCH v9 00/25] Introducing rte_driver/rte_device generalization Stephen Hemminger
2016-09-08 7:10 ` Shreyansh Jain
2016-09-08 16:49 ` Stephen Hemminger
2016-09-09 11:42 ` Shreyansh Jain
2016-09-09 16:11 ` Declan Doherty
2016-09-13 11:15 ` Shreyansh Jain
2016-09-12 7:32 ` David Marchand
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 " Shreyansh Jain
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 01/25] eal: define container macro Shreyansh Jain
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 02/25] eal: remove duplicate function declaration Shreyansh Jain
2016-09-16 11:42 ` Jan Viktorin
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 03/25] pci: no need for dynamic tailq init Shreyansh Jain
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 04/25] eal/pci: replace PCI devinit/devuninit with probe/remove Shreyansh Jain
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 05/25] crypto: no need for a crypto pmd type Shreyansh Jain
2016-09-16 11:49 ` Jan Viktorin
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 06/25] drivers: align PCI driver definitions Shreyansh Jain
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 07/25] eal: introduce PCI device init macros Shreyansh Jain
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 08/25] driver: init/uninit common wrappers for PCI drivers Shreyansh Jain
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 09/25] drivers: convert all phy drivers as " Shreyansh Jain
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 10/25] drivers: remove driver register callbacks for crypto/net Shreyansh Jain
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 11/25] eal/pci: helpers for device name parsing/update Shreyansh Jain
2016-10-25 15:49 ` Pattan, Reshma
2016-10-26 6:23 ` Shreyansh Jain
2016-10-26 9:12 ` Pattan, Reshma
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 12/25] ethdev: do not scan all PCI devices on attach Shreyansh Jain
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 13/25] eal: add hotplug operations for PCI and VDEV Shreyansh Jain
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 14/25] ethdev: convert to EAL hotplug Shreyansh Jain
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 15/25] ethdev: get rid of device type Shreyansh Jain
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 16/25] eal: extract vdev infra Shreyansh Jain
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 17/25] eal: remove PDEV/VDEV unused code Shreyansh Jain
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 18/25] drivers: convert VDRV to use RTE VDEV Driver Shreyansh Jain
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 19/25] eal: remove unused PMD types Shreyansh Jain
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 20/25] eal: include dev headers in place of PCI headers Shreyansh Jain
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 21/25] eal: rename and move RTE PCI Resources Shreyansh Jain
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 22/25] eal/pci: inherit RTE driver in PCI driver Shreyansh Jain
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 23/25] eal: register EAL drivers explicitly Shreyansh Jain
2016-09-16 4:29 ` [dpdk-dev] [PATCH v10 24/25] eal: introduce generalized RTE device Shreyansh Jain
2016-09-16 4:30 ` [dpdk-dev] [PATCH v10 25/25] eal/pci: create RTE device list and fallback on its members Shreyansh Jain
[not found] ` <CALwxeUusnzO9daPnHkkf5QhY6_g67f-9oDzKcrhzXj7X3Lm_kQ@mail.gmail.com>
2016-09-16 14:29 ` [dpdk-dev] [PATCH v10 00/25] Introducing rte_driver/rte_device generalization David Marchand
2016-09-17 18:50 ` Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 00/24] " Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 01/24] eal: remove duplicate function declaration Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 02/24] pci: no need for dynamic tailq init Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 03/24] eal/pci: replace PCI devinit/devuninit with probe/remove Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 04/24] crypto: no need for a crypto pmd type Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 05/24] drivers: align PCI driver definitions Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 06/24] eal: introduce PCI device init macros Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 07/24] driver: probe/remove common wrappers for PCI drivers Shreyansh Jain
2016-10-03 14:21 ` Thomas Monjalon
2016-10-04 6:16 ` Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 08/24] drivers: convert all phy drivers as " Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 09/24] drivers: remove driver register callbacks for crypto/net Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 10/24] eal/pci: helpers for device name parsing/update Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 11/24] ethdev: do not scan all PCI devices on attach Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 12/24] eal: add hotplug operations for PCI and VDEV Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 13/24] ethdev: convert to EAL hotplug Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 14/24] ethdev: get rid of device type Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 15/24] eal: extract vdev infra Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 16/24] eal: remove PDEV/VDEV unused code Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 17/24] drivers: convert VDRV to use RTE VDEV Driver Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 18/24] eal: remove unused PMD types Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 19/24] eal: include dev headers in place of PCI headers Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 20/24] eal: rename and move RTE PCI Resources Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 21/24] eal/pci: inherit RTE driver in PCI driver Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 22/24] eal: register EAL drivers explicitly Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 23/24] eal: introduce generalized RTE device Shreyansh Jain
2016-09-20 12:41 ` [dpdk-dev] [PATCH v11 24/24] eal/pci: create RTE device list and fallback on its members Shreyansh Jain
2016-09-21 19:03 ` [dpdk-dev] [PATCH v11 00/24] Introducing rte_driver/rte_device generalization Matej Vido
2016-09-22 4:25 ` Shreyansh Jain
2016-09-30 10:22 ` David Marchand
2016-10-03 14:28 ` Thomas Monjalon
2016-10-04 6:51 ` Shreyansh Jain
2016-10-04 7:42 ` Thomas Monjalon
2016-10-05 11:57 ` Shreyansh Jain
2016-10-17 13:43 ` Ferruh Yigit
2016-10-17 17:29 ` Shreyansh Jain
2016-10-18 9:23 ` Ferruh Yigit
2016-10-19 11:13 ` Shreyansh Jain
2016-10-18 13:04 ` Neil Horman
2016-10-18 13:47 ` 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=1461152657-19969-9-git-send-email-david.marchand@6wind.com \
--to=david.marchand@6wind.com \
--cc=dev@dpdk.org \
--cc=thomas.monjalon@6wind.com \
--cc=viktorin@rehivetech.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).