From 69d22b8e668d4cbc6d3a5e2873551de5d44c3a45 Mon Sep 17 00:00:00 2001 From: Intel Date: Thu, 20 Dec 2012 00:00:00 +0100 Subject: [PATCH] ethdev: init all builtin drivers Signed-off-by: Intel --- app/test-pmd/testpmd.c | 14 +- examples/exception_path/main.c | 11 +- examples/ipv4_frag/main.c | 10 +- examples/ipv4_multicast/main.c | 10 +- examples/l2fwd/main.c | 10 +- examples/l3fwd-vf/main.c | 13 +- examples/l3fwd/main.c | 12 +- examples/link_status_interrupt/main.c | 10 +- examples/load_balancer/init.c | 12 +- .../client_server_mp/shared/init_drivers.h | 9 +- examples/multi_process/symmetric_mp/main.c | 10 +- lib/librte_ether/rte_ethdev.h | 145 +++++++++--------- 12 files changed, 96 insertions(+), 170 deletions(-) diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index 52caf496d2..6963598f19 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -1043,17 +1043,8 @@ main(int argc, char** argv) if (diag < 0) rte_panic("Cannot init EAL\n"); -#ifdef RTE_LIBRTE_IGB_PMD - if (rte_igb_pmd_init()) - rte_panic("Cannot init igb PMD\n"); -#endif -#ifdef RTE_LIBRTE_IXGBE_PMD - if (rte_ixgbe_pmd_init()) - rte_panic("Cannot init ixgbe PMD\n"); - - if (rte_ixgbevf_pmd_init()) - rte_panic("Cannot init ixgbevf PMD\n"); -#endif + if (rte_pmd_init_all()) + rte_panic("Cannot init PMD\n"); if (rte_eal_pci_probe()) rte_panic("Cannot probe PCI\n"); @@ -1062,6 +1053,7 @@ main(int argc, char** argv) if (nb_ports == 0) rte_exit(EXIT_FAILURE, "No probed ethernet devices - check that " "CONFIG_RTE_LIBRTE_IGB_PMD=y and that " + "CONFIG_RTE_LIBRTE_EM_PMD=y and that " "CONFIG_RTE_LIBRTE_IXGBE_PMD=y in your " "configuration file\n"); diff --git a/examples/exception_path/main.c b/examples/exception_path/main.c index e8433607f1..f1f52d99b0 100644 --- a/examples/exception_path/main.c +++ b/examples/exception_path/main.c @@ -518,16 +518,9 @@ main(int argc, char** argv) } /* Initialise PMD driver(s) */ -#ifdef RTE_LIBRTE_IGB_PMD - ret = rte_igb_pmd_init(); + ret = rte_pmd_init_all(); if (ret < 0) - FATAL_ERROR("Could not initialise igb PMD (%d)", ret); -#endif -#ifdef RTE_LIBRTE_IXGBE_PMD - ret = rte_ixgbe_pmd_init(); - if (ret < 0) - FATAL_ERROR("Could not initialise ixgbe PMD (%d)", ret); -#endif + FATAL_ERROR("Could not probe PMD (%d)", ret); /* Scan PCI bus for recognised devices */ ret = rte_eal_pci_probe(); diff --git a/examples/ipv4_frag/main.c b/examples/ipv4_frag/main.c index 93daabff40..5983986342 100644 --- a/examples/ipv4_frag/main.c +++ b/examples/ipv4_frag/main.c @@ -557,14 +557,8 @@ MAIN(int argc, char **argv) rte_panic("Cannot init indirect mbuf pool\n"); /* init driver */ -#ifdef RTE_LIBRTE_IGB_PMD - if (rte_igb_pmd_init() < 0) - rte_panic("Cannot init igb pmd\n"); -#endif -#ifdef RTE_LIBRTE_IXGBE_PMD - if (rte_ixgbe_pmd_init() < 0) - rte_panic("Cannot init ixgbe pmd\n"); -#endif + if (rte_pmd_init_all() < 0) + rte_panic("Cannot init PMD\n"); if (rte_eal_pci_probe() < 0) rte_panic("Cannot probe PCI\n"); diff --git a/examples/ipv4_multicast/main.c b/examples/ipv4_multicast/main.c index d1b1a66b3a..0ae8c3c8cc 100644 --- a/examples/ipv4_multicast/main.c +++ b/examples/ipv4_multicast/main.c @@ -701,14 +701,8 @@ MAIN(int argc, char **argv) rte_exit(EXIT_FAILURE, "Cannot init clone mbuf pool\n"); /* init driver */ -#ifdef RTE_LIBRTE_IGB_PMD - if (rte_igb_pmd_init() < 0) - rte_exit(EXIT_FAILURE, "Cannot init igb pmd\n"); -#endif -#ifdef RTE_LIBRTE_IXGBE_PMD - if (rte_ixgbe_pmd_init() < 0) - rte_exit(EXIT_FAILURE, "Cannot init ixgbe pmd\n"); -#endif + if (rte_pmd_init_all() < 0) + rte_exit(EXIT_FAILURE, "Cannot init pmd\n"); if (rte_eal_pci_probe() < 0) rte_exit(EXIT_FAILURE, "Cannot probe PCI\n"); diff --git a/examples/l2fwd/main.c b/examples/l2fwd/main.c index b887f6b347..6731a14a97 100644 --- a/examples/l2fwd/main.c +++ b/examples/l2fwd/main.c @@ -566,14 +566,8 @@ MAIN(int argc, char **argv) rte_exit(EXIT_FAILURE, "Cannot init mbuf pool\n"); /* init driver(s) */ -#ifdef RTE_LIBRTE_IGB_PMD - if (rte_igb_pmd_init() < 0) - rte_exit(EXIT_FAILURE, "Cannot init igb pmd\n"); -#endif -#ifdef RTE_LIBRTE_IXGBE_PMD - if (rte_ixgbe_pmd_init() < 0) - rte_exit(EXIT_FAILURE, "Cannot init ixgbe pmd\n"); -#endif + if (rte_pmd_init_all() < 0) + rte_exit(EXIT_FAILURE, "Cannot init pmd\n"); if (rte_eal_pci_probe() < 0) rte_exit(EXIT_FAILURE, "Cannot probe PCI\n"); diff --git a/examples/l3fwd-vf/main.c b/examples/l3fwd-vf/main.c index 9e2d9abc8d..ead3cb85f0 100644 --- a/examples/l3fwd-vf/main.c +++ b/examples/l3fwd-vf/main.c @@ -967,17 +967,8 @@ MAIN(int argc, char **argv) rte_exit(EXIT_FAILURE, "init_mem failed\n"); /* init driver */ -#ifdef RTE_LIBRTE_IGB_PMD - if (rte_igb_pmd_init() < 0) - rte_exit(EXIT_FAILURE, "Cannot init igb pmd\n"); -#endif -#ifdef RTE_LIBRTE_IXGBE_PMD - if (rte_ixgbe_pmd_init() < 0) - rte_exit(EXIT_FAILURE, "Cannot init ixgbe pmd\n"); - - if (rte_ixgbevf_pmd_init() < 0) - rte_exit(EXIT_FAILURE, "Cannot init ixgbevf pmd\n"); -#endif + if (rte_pmd_init_all() < 0) + rte_exit(EXIT_FAILURE, "Cannot init pmd\n"); if (rte_eal_pci_probe() < 0) rte_exit(EXIT_FAILURE, "Cannot probe PCI\n"); diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c index 0fcc0c3631..4d579c16de 100644 --- a/examples/l3fwd/main.c +++ b/examples/l3fwd/main.c @@ -974,15 +974,9 @@ MAIN(int argc, char **argv) if (ret < 0) rte_exit(EXIT_FAILURE, "init_mem failed\n"); - /* init driver */ -#ifdef RTE_LIBRTE_IGB_PMD - if (rte_igb_pmd_init() < 0) - rte_exit(EXIT_FAILURE, "Cannot init igb pmd\n"); -#endif -#ifdef RTE_LIBRTE_IXGBE_PMD - if (rte_ixgbe_pmd_init() < 0) - rte_exit(EXIT_FAILURE, "Cannot init ixgbe pmd\n"); -#endif + /* init driver(s) */ + if (rte_pmd_init_all() < 0) + rte_exit(EXIT_FAILURE, "Cannot init pmd\n"); if (rte_eal_pci_probe() < 0) rte_exit(EXIT_FAILURE, "Cannot probe PCI\n"); diff --git a/examples/link_status_interrupt/main.c b/examples/link_status_interrupt/main.c index 8b209e1b5f..5f0fad6c93 100644 --- a/examples/link_status_interrupt/main.c +++ b/examples/link_status_interrupt/main.c @@ -614,14 +614,8 @@ MAIN(int argc, char **argv) rte_panic("Cannot init mbuf pool\n"); /* init driver(s) */ -#ifdef RTE_LIBRTE_IGB_PMD - if (rte_igb_pmd_init() < 0) - rte_panic("Cannot init igb pmd\n"); -#endif -#ifdef RTE_LIBRTE_IXGBE_PMD - if (rte_ixgbe_pmd_init() < 0) - rte_panic("Cannot init ixgbe pmd\n"); -#endif + if (rte_pmd_init_all() < 0) + rte_panic("Cannot init pmd\n"); if (rte_eal_pci_probe() < 0) rte_panic("Cannot probe PCI\n"); diff --git a/examples/load_balancer/init.c b/examples/load_balancer/init.c index 6e011528b2..f95e5ef848 100644 --- a/examples/load_balancer/init.c +++ b/examples/load_balancer/init.c @@ -387,16 +387,10 @@ app_init_nics(void) /* Init driver */ printf("Initializing the PMD driver ...\n"); -#ifdef RTE_LIBRTE_IGB_PMD - if (rte_igb_pmd_init() < 0) { - rte_panic("Cannot init IGB PMD\n"); + if (rte_pmd_init_all() < 0) { + rte_panic("Cannot init PMD\n"); } -#endif -#ifdef RTE_LIBRTE_IXGBE_PMD - if (rte_ixgbe_pmd_init() < 0) { - rte_panic("Cannot init IXGBE PMD\n"); - } -#endif + if (rte_eal_pci_probe() < 0) { rte_panic("Cannot probe PCI\n"); } diff --git a/examples/multi_process/client_server_mp/shared/init_drivers.h b/examples/multi_process/client_server_mp/shared/init_drivers.h index 1e73cc70cd..fc629ccff9 100644 --- a/examples/multi_process/client_server_mp/shared/init_drivers.h +++ b/examples/multi_process/client_server_mp/shared/init_drivers.h @@ -41,14 +41,7 @@ static inline int init_drivers(void) { - if ( -#ifdef RTE_LIBRTE_IGB_PMD - (rte_igb_pmd_init() < 0) || -#endif -#ifdef RTE_LIBRTE_IXGBE_PMD - (rte_ixgbe_pmd_init() < 0) || -#endif - (rte_eal_pci_probe() < 0 )) + if (rte_pmd_init_all() < 0 || rte_eal_pci_probe() < 0) return -1; return 0; diff --git a/examples/multi_process/symmetric_mp/main.c b/examples/multi_process/symmetric_mp/main.c index 96bb62bd2a..afbb3a4a2a 100644 --- a/examples/multi_process/symmetric_mp/main.c +++ b/examples/multi_process/symmetric_mp/main.c @@ -425,14 +425,8 @@ main(int argc, char **argv) /* probe to determine the NIC devices available */ proc_type = rte_eal_process_type(); -#ifdef RTE_LIBRTE_IGB_PMD - if (rte_igb_pmd_init() < 0) - rte_exit(EXIT_FAILURE, "Cannot init igb pmd\n"); -#endif -#ifdef RTE_LIBRTE_IXGBE_PMD - if (rte_ixgbe_pmd_init() < 0) - rte_exit(EXIT_FAILURE, "Cannot init ixgbe pmd\n"); -#endif + if (rte_pmd_init_all() < 0) + rte_exit(EXIT_FAILURE, "Cannot init pmd\n"); if (rte_eal_pci_probe() < 0) rte_exit(EXIT_FAILURE, "Cannot probe PCI\n"); if (rte_eth_dev_count() == 0) diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h index cb99d0c59d..048035750b 100644 --- a/lib/librte_ether/rte_ethdev.h +++ b/lib/librte_ether/rte_ethdev.h @@ -866,6 +866,24 @@ extern void rte_eth_driver_register(struct eth_driver *eth_drv); */ extern int rte_igb_pmd_init(void); +/** + * The initialization function of the driver for + * Intel(r) EM Gigabit Ethernet Controller devices. + * This function is invoked once at EAL start time. + * @return + * 0 on success + */ +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. @@ -884,6 +902,60 @@ extern int rte_ixgbe_pmd_init(void); */ extern int rte_ixgbevf_pmd_init(void); +/** + * The initialization function of *all* supported and enabled drivers. + * Right now, the following PMDs are supported: + * - igb + * - igbvf + * - em + * - ixgbe + * - ixgbevf + * This function is invoked once at EAL start time. + * @return + * 0 on success. + * Error code of the device initialization failure, + * -ENODEV if there are no drivers available + * (e.g. if all driver config options are = n). + */ +static inline +int rte_pmd_init_all(void) +{ + int ret = -ENODEV; + +#ifdef RTE_LIBRTE_IGB_PMD + if ((ret = rte_igb_pmd_init()) != 0) { + RTE_LOG(ERR, PMD, "Cannot init igb PMD\n"); + return (ret); + } + 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"); + return (ret); + } +#endif /* RTE_LIBRTE_EM_PMD */ + +#ifdef RTE_LIBRTE_IXGBE_PMD + if ((ret = rte_ixgbe_pmd_init()) != 0) { + RTE_LOG(ERR, PMD, "Cannot init ixgbe PMD\n"); + return (ret); + } + if ((ret = rte_ixgbevf_pmd_init()) != 0) { + RTE_LOG(ERR, PMD, "Cannot init ixgbevf PMD\n"); + return (ret); + } +#endif /* RTE_LIBRTE_IXGBE_PMD */ + + if (ret == -ENODEV) + RTE_LOG(ERR, PMD, "No PMD(s) are configured\n"); + return (ret); +} + /** * Configure an Ethernet device. * This function must be invoked first before any other function in the @@ -1728,79 +1800,6 @@ int rte_eth_dev_mac_addr_add(uint8_t port, struct ether_addr *mac_addr, int rte_eth_dev_mac_addr_remove(uint8_t port, struct ether_addr *mac_addr); -/*-------------------------- Deprecated definitions --------------------------*/ - -/* Needed to stop deprecation warnings becoming errors with GCC. */ -#ifndef __INTEL_COMPILER -#pragma GCC diagnostic warning "-Wdeprecated-declarations" -#endif - -#ifdef RTE_LIBRTE_82576_PMD -#pragma message "\nWARNING: CONFIG_RTE_LIBRTE_82576_PMD is deprecated. " \ -"CONFIG_RTE_LIBRTE_IGB_PMD must be set in the config file to use Intel(R) " \ -"DPDK supported Gigabit Ethernet Controllers." -#endif - -#ifdef RTE_LIBRTE_IGB_PMD -/** - * @deprecated The config file option CONFIG_RTE_LIBRTE_82576_PMD and resulting - * preprocessor define RTE_LIBRTE_82576_PMD are deprecated. - * CONFIG_RTE_LIBRTE_IGB_PMD must be set in the config file to use Intel(R) DPDK - * supported Gigabit Ethernet Controllers, and RTE_LIBRTE_IGB_PMD should be used - * in code. - */ -#define RTE_LIBRTE_82576_PMD 1 -#endif - -/** - * @deprecated rte_82576_pmd_init() is deprecated and will be removed from - * future versions of Intel(R) DPDK. It has been replaced by rte_igb_pmd_init(). - * - * @return - * 0 on success - */ -static inline int __attribute__((deprecated)) -rte_82576_pmd_init(void) { - RTE_LOG(WARNING, PMD, "rte_82576_pmd_init() is deprecated and will be " - "removed from future version of Intel(R) DPDK. It has " - "been replaced by rte_igb_pmd_init()"); - return rte_igb_pmd_init(); -} - - -#ifdef RTE_LIBRTE_82599_PMD -#pragma message "\nWARNING: CONFIG_RTE_LIBRTE_82599_PMD is deprecated. " \ -"CONFIG_RTE_LIBRTE_IXGBE_PMD must be set in the config file to use Intel(R) " \ -"DPDK supported 10 Gigabit Ethernet Controllers." -#endif - -#ifdef RTE_LIBRTE_IXGBE_PMD -/** - * @deprecated The config file option CONFIG_RTE_LIBRTE_82599_PMD and resulting - * preprocessor define RTE_LIBRTE_82599_PMD are deprecated. - * CONFIG_RTE_LIBRTE_IXGBE_PMD must be set in the config file to use Intel(R) - * DPDK supported Gigabit Ethernet Controllers, and RTE_LIBRTE_IXGBE_PMD should - * be used in code. - */ -#define RTE_LIBRTE_82599_PMD 1 -#endif - -/** - * @deprecated rte_82599_pmd_init() is deprecated and will be removed from - * future versions of Intel(R) DPDK. It has been replaced by - * rte_ixgbe_pmd_init(). - * - * @return - * 0 on success - */ -static inline int __attribute__((deprecated)) -rte_82599_pmd_init(void) { - RTE_LOG(WARNING, PMD, "rte_82599_pmd_init() is deprecated and will be " - "removed from future version of Intel(R) DPDK. It has " - "been replaced by rte_ixgbe_pmd_init()"); - return rte_ixgbe_pmd_init(); -} - #ifdef __cplusplus } #endif