[dpdk-dev] [PATCH 09/15] igbvf: Convert to use of PMD_REGISTER_DRIVER and fix linking

Neil Horman nhorman at tuxdriver.com
Tue Apr 15 20:06:03 CEST 2014


convert the igbvf pmd driver to use the PMD_REGISTER_DRIVER macro.
This means that the test applications now have no reference to the igbvf library
when building DSO's and must specify its use on the command line with the -d
option.  Static linking will still initalize the driver automatically.

Signed-off-by: Neil Horman <nhorman at tuxdriver.com>
---
 lib/librte_ether/rte_ethdev.h     | 16 ----------------
 lib/librte_pmd_e1000/igb_ethdev.c | 10 ++++++++--
 2 files changed, 8 insertions(+), 18 deletions(-)

diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
index e50ed48..d13cc4f 100644
--- a/lib/librte_ether/rte_ethdev.h
+++ b/lib/librte_ether/rte_ethdev.h
@@ -1325,15 +1325,6 @@ extern void rte_eth_driver_register(struct eth_driver *eth_drv);
 extern int rte_em_pmd_init(void);
 
 /**
- * The initialization function of the driver for 1Gbps Intel IGB_VF
- * Ethernet devices.
- * Invoked once at EAL start time.
- * @return
- *   0 on success
- */
-extern int rte_igbvf_pmd_init(void);
-
-/**
  * The initialization function of the driver for 10Gbps Intel IXGBE
  * Ethernet devices.
  * Invoked once at EAL start time.
@@ -1392,13 +1383,6 @@ int rte_pmd_init_all(void)
 {
 	int ret = -ENODEV;
 
-#ifdef RTE_LIBRTE_IGB_PMD
-	if ((ret = rte_igbvf_pmd_init()) != 0) {
-		RTE_LOG(ERR, PMD, "Cannot init igbvf PMD\n");
-		return (ret);
-	}
-#endif /* RTE_LIBRTE_IGB_PMD */
-
 #ifdef RTE_LIBRTE_EM_PMD
 	if ((ret = rte_em_pmd_init()) != 0) {
 		RTE_LOG(ERR, PMD, "Cannot init em PMD\n");
diff --git a/lib/librte_pmd_e1000/igb_ethdev.c b/lib/librte_pmd_e1000/igb_ethdev.c
index 246474d..5cf14c2 100644
--- a/lib/librte_pmd_e1000/igb_ethdev.c
+++ b/lib/librte_pmd_e1000/igb_ethdev.c
@@ -644,8 +644,8 @@ igb_vmdq_vlan_hw_filter_enable(struct rte_eth_dev *dev)
  * Invoked one at EAL init time.
  * Register itself as the [Virtual Poll Mode] Driver of PCI IGB devices.
  */
-int
-rte_igbvf_pmd_init(void)
+static int
+rte_igbvf_pmd_init(const char *name __rte_unused, const char *params __rte_unused)
 {
 	DEBUGFUNC("rte_igbvf_pmd_init");
 
@@ -2190,4 +2190,10 @@ static struct rte_driver pmd_igb_drv = {
 	.init = rte_igb_pmd_init,
 };
 
+static struct rte_driver pmd_igbvf_drv = {
+	.type = PMD_PDEV,
+	.init = rte_igbvf_pmd_init,
+};
+
 PMD_REGISTER_DRIVER(pmd_igb_drv);
+PMD_REGISTER_DRIVER(pmd_igbvf_drv);
-- 
1.8.3.1



More information about the dev mailing list