X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=examples%2Fethtool%2Flib%2Frte_ethtool.c;h=571c4e5aa52cdbb5f67303ee52d865d1e2c19144;hb=538da7a1cad25fbdffe298c8ca76fc4dbd262d1b;hp=252382cb59f810fdcca2d5a346f732cf73d47fa6;hpb=17fd714e803e7bdb40b2b5012cf1987a22d183e5;p=dpdk.git diff --git a/examples/ethtool/lib/rte_ethtool.c b/examples/ethtool/lib/rte_ethtool.c index 252382cb59..571c4e5aa5 100644 --- a/examples/ethtool/lib/rte_ethtool.c +++ b/examples/ethtool/lib/rte_ethtool.c @@ -1,42 +1,14 @@ -/*- - * BSD LICENSE - * - * Copyright(c) 2010-2016 Intel Corporation. All rights reserved. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2010-2016 Intel Corporation */ #include #include #include +#include #include #include #include -#include +#include #ifdef RTE_LIBRTE_IXGBE_PMD #include #endif @@ -47,10 +19,12 @@ int -rte_ethtool_get_drvinfo(uint8_t port_id, struct ethtool_drvinfo *drvinfo) +rte_ethtool_get_drvinfo(uint16_t port_id, struct ethtool_drvinfo *drvinfo) { struct rte_eth_dev_info dev_info; struct rte_dev_reg_info reg_info; + const struct rte_pci_device *pci_dev; + const struct rte_bus *bus = NULL; int n; int ret; @@ -70,20 +44,21 @@ rte_ethtool_get_drvinfo(uint8_t port_id, struct ethtool_drvinfo *drvinfo) memset(&dev_info, 0, sizeof(dev_info)); rte_eth_dev_info_get(port_id, &dev_info); - snprintf(drvinfo->driver, sizeof(drvinfo->driver), "%s", - dev_info.driver_name); - snprintf(drvinfo->version, sizeof(drvinfo->version), "%s", - rte_version()); + strlcpy(drvinfo->driver, dev_info.driver_name, + sizeof(drvinfo->driver)); + strlcpy(drvinfo->version, rte_version(), sizeof(drvinfo->version)); /* TODO: replace bus_info by rte_devargs.name */ - if (dev_info.pci_dev) + if (dev_info.device) + bus = rte_bus_find_by_device(dev_info.device); + if (bus && !strcmp(bus->name, "pci")) { + pci_dev = RTE_DEV_TO_PCI(dev_info.device); snprintf(drvinfo->bus_info, sizeof(drvinfo->bus_info), "%04x:%02x:%02x.%x", - dev_info.pci_dev->addr.domain, - dev_info.pci_dev->addr.bus, - dev_info.pci_dev->addr.devid, - dev_info.pci_dev->addr.function); - else + pci_dev->addr.domain, pci_dev->addr.bus, + pci_dev->addr.devid, pci_dev->addr.function); + } else { snprintf(drvinfo->bus_info, sizeof(drvinfo->bus_info), "N/A"); + } memset(®_info, 0, sizeof(reg_info)); rte_eth_dev_get_reg_info(port_id, ®_info); @@ -106,7 +81,7 @@ rte_ethtool_get_drvinfo(uint8_t port_id, struct ethtool_drvinfo *drvinfo) } int -rte_ethtool_get_regs_len(uint8_t port_id) +rte_ethtool_get_regs_len(uint16_t port_id) { struct rte_dev_reg_info reg_info; int ret; @@ -121,7 +96,7 @@ rte_ethtool_get_regs_len(uint8_t port_id) } int -rte_ethtool_get_regs(uint8_t port_id, struct ethtool_regs *regs, void *data) +rte_ethtool_get_regs(uint16_t port_id, struct ethtool_regs *regs, void *data) { struct rte_dev_reg_info reg_info; int status; @@ -141,7 +116,7 @@ rte_ethtool_get_regs(uint8_t port_id, struct ethtool_regs *regs, void *data) } int -rte_ethtool_get_link(uint8_t port_id) +rte_ethtool_get_link(uint16_t port_id) { struct rte_eth_link link; @@ -151,13 +126,13 @@ rte_ethtool_get_link(uint8_t port_id) } int -rte_ethtool_get_eeprom_len(uint8_t port_id) +rte_ethtool_get_eeprom_len(uint16_t port_id) { return rte_eth_dev_get_eeprom_length(port_id); } int -rte_ethtool_get_eeprom(uint8_t port_id, struct ethtool_eeprom *eeprom, +rte_ethtool_get_eeprom(uint16_t port_id, struct ethtool_eeprom *eeprom, void *words) { struct rte_dev_eeprom_info eeprom_info; @@ -180,7 +155,7 @@ rte_ethtool_get_eeprom(uint8_t port_id, struct ethtool_eeprom *eeprom, } int -rte_ethtool_set_eeprom(uint8_t port_id, struct ethtool_eeprom *eeprom, +rte_ethtool_set_eeprom(uint16_t port_id, struct ethtool_eeprom *eeprom, void *words) { struct rte_dev_eeprom_info eeprom_info; @@ -203,7 +178,37 @@ rte_ethtool_set_eeprom(uint8_t port_id, struct ethtool_eeprom *eeprom, } int -rte_ethtool_get_pauseparam(uint8_t port_id, +rte_ethtool_get_module_info(uint16_t port_id, uint32_t *modinfo) +{ + struct rte_eth_dev_module_info *info; + + info = (struct rte_eth_dev_module_info *)modinfo; + return rte_eth_dev_get_module_info(port_id, info); +} + +int +rte_ethtool_get_module_eeprom(uint16_t port_id, struct ethtool_eeprom *eeprom, + void *words) +{ + struct rte_dev_eeprom_info eeprom_info; + int status; + + if (eeprom == NULL || words == NULL) + return -EINVAL; + + eeprom_info.offset = eeprom->offset; + eeprom_info.length = eeprom->len; + eeprom_info.data = words; + + status = rte_eth_dev_get_module_eeprom(port_id, &eeprom_info); + if (status) + return status; + + return 0; +} + +int +rte_ethtool_get_pauseparam(uint16_t port_id, struct ethtool_pauseparam *pause_param) { struct rte_eth_fc_conf fc_conf; @@ -238,7 +243,7 @@ rte_ethtool_get_pauseparam(uint8_t port_id, } int -rte_ethtool_set_pauseparam(uint8_t port_id, +rte_ethtool_set_pauseparam(uint16_t port_id, struct ethtool_pauseparam *pause_param) { struct rte_eth_fc_conf fc_conf; @@ -281,7 +286,7 @@ rte_ethtool_set_pauseparam(uint8_t port_id, } int -rte_ethtool_net_open(uint8_t port_id) +rte_ethtool_net_open(uint16_t port_id) { rte_eth_dev_stop(port_id); @@ -289,7 +294,7 @@ rte_ethtool_net_open(uint8_t port_id) } int -rte_ethtool_net_stop(uint8_t port_id) +rte_ethtool_net_stop(uint16_t port_id) { RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); rte_eth_dev_stop(port_id); @@ -298,7 +303,7 @@ rte_ethtool_net_stop(uint8_t port_id) } int -rte_ethtool_net_get_mac_addr(uint8_t port_id, struct ether_addr *addr) +rte_ethtool_net_get_mac_addr(uint16_t port_id, struct rte_ether_addr *addr) { RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); if (addr == NULL) @@ -309,7 +314,7 @@ rte_ethtool_net_get_mac_addr(uint8_t port_id, struct ether_addr *addr) } int -rte_ethtool_net_set_mac_addr(uint8_t port_id, struct ether_addr *addr) +rte_ethtool_net_set_mac_addr(uint16_t port_id, struct rte_ether_addr *addr) { if (addr == NULL) return -EINVAL; @@ -317,16 +322,16 @@ rte_ethtool_net_set_mac_addr(uint8_t port_id, struct ether_addr *addr) } int -rte_ethtool_net_validate_addr(uint8_t port_id __rte_unused, - struct ether_addr *addr) +rte_ethtool_net_validate_addr(uint16_t port_id __rte_unused, + struct rte_ether_addr *addr) { if (addr == NULL) return -EINVAL; - return is_valid_assigned_ether_addr(addr); + return rte_is_valid_assigned_ether_addr(addr); } int -rte_ethtool_net_change_mtu(uint8_t port_id, int mtu) +rte_ethtool_net_change_mtu(uint16_t port_id, int mtu) { if (mtu < 0 || mtu > UINT16_MAX) return -EINVAL; @@ -334,7 +339,7 @@ rte_ethtool_net_change_mtu(uint8_t port_id, int mtu) } int -rte_ethtool_net_get_stats64(uint8_t port_id, struct rte_eth_stats *stats) +rte_ethtool_net_get_stats64(uint16_t port_id, struct rte_eth_stats *stats) { if (stats == NULL) return -EINVAL; @@ -342,13 +347,13 @@ rte_ethtool_net_get_stats64(uint8_t port_id, struct rte_eth_stats *stats) } int -rte_ethtool_net_vlan_rx_add_vid(uint8_t port_id, uint16_t vid) +rte_ethtool_net_vlan_rx_add_vid(uint16_t port_id, uint16_t vid) { return rte_eth_dev_vlan_filter(port_id, vid, 1); } int -rte_ethtool_net_vlan_rx_kill_vid(uint8_t port_id, uint16_t vid) +rte_ethtool_net_vlan_rx_kill_vid(uint16_t port_id, uint16_t vid) { return rte_eth_dev_vlan_filter(port_id, vid, 0); } @@ -361,7 +366,7 @@ rte_ethtool_net_vlan_rx_kill_vid(uint8_t port_id, uint16_t vid) * driver can register device-specific implementation */ int -rte_ethtool_net_set_rx_mode(uint8_t port_id) +rte_ethtool_net_set_rx_mode(uint16_t port_id) { uint16_t num_vfs; struct rte_eth_dev_info dev_info; @@ -387,7 +392,7 @@ rte_ethtool_net_set_rx_mode(uint8_t port_id) int -rte_ethtool_get_ringparam(uint8_t port_id, +rte_ethtool_get_ringparam(uint16_t port_id, struct ethtool_ringparam *ring_param) { struct rte_eth_dev_info dev_info; @@ -419,7 +424,7 @@ rte_ethtool_get_ringparam(uint8_t port_id, int -rte_ethtool_set_ringparam(uint8_t port_id, +rte_ethtool_set_ringparam(uint16_t port_id, struct ethtool_ringparam *ring_param) { struct rte_eth_rxq_info rx_qinfo;