From 393775d5c0d35fb74e139c0b4ec9cc2304b70581 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Wed, 10 Jun 2015 15:06:24 -0700 Subject: [PATCH] ethdev: export function to check port validity The function rte_eth_dev_is_valid_port is good way to have all drivers using same function and solves several hotplug related bugs from drivers not checking attached flag. Signed-off-by: Stephen Hemminger Acked-by: Bruce Richardson --- lib/librte_ether/rte_ethdev.c | 2 +- lib/librte_ether/rte_ethdev.h | 11 +++++++++++ lib/librte_ether/rte_ether_version.map | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c index 748e2be97c..94104ceba9 100644 --- a/lib/librte_ether/rte_ethdev.c +++ b/lib/librte_ether/rte_ethdev.c @@ -409,7 +409,7 @@ rte_eth_driver_register(struct eth_driver *eth_drv) rte_eal_pci_register(ð_drv->pci_drv); } -static int +int rte_eth_dev_is_valid_port(uint8_t port_id) { if (port_id >= RTE_MAX_ETHPORTS || diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h index 8b04edc31f..c901a2cbd9 100644 --- a/lib/librte_ether/rte_ethdev.h +++ b/lib/librte_ether/rte_ethdev.h @@ -1929,6 +1929,17 @@ extern int rte_eth_tx_queue_setup(uint8_t port_id, uint16_t tx_queue_id, */ extern int rte_eth_dev_socket_id(uint8_t port_id); +/* + * Check if port_id of device is attached + * + * @param port_id + * The port identifier of the Ethernet device + * @return + * - 0 if port is out of range or not attached + * - 1 if device is attached + */ +extern int rte_eth_dev_is_valid_port(uint8_t port_id); + /* * Allocate mbuf from mempool, setup the DMA physical address * and then start RX for specified queue of a port. It is used diff --git a/lib/librte_ether/rte_ether_version.map b/lib/librte_ether/rte_ether_version.map index b7e4d56592..23cfee9b91 100644 --- a/lib/librte_ether/rte_ether_version.map +++ b/lib/librte_ether/rte_ether_version.map @@ -114,6 +114,7 @@ DPDK_2.1 { rte_eth_dev_get_eeprom_length; rte_eth_dev_get_reg_info; rte_eth_dev_get_reg_length; + rte_eth_dev_is_valid_port; rte_eth_dev_set_eeprom; rte_eth_dev_set_mc_addr_list; rte_eth_timesync_disable; -- 2.20.1