pci: introduce library and driver
[dpdk.git] / examples / ethtool / lib / rte_ethtool.c
index b33ae12..cbaac73 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  *   BSD LICENSE
  *
- *   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
+ *   Copyright(c) 2010-2016 Intel Corporation. All rights reserved.
  *   All rights reserved.
  *
  *   Redistribution and use in source and binary forms, with or without
 #include <rte_version.h>
 #include <rte_ethdev.h>
 #include <rte_ether.h>
+#include <rte_pci.h>
+#include <rte_bus_pci.h>
+#ifdef RTE_LIBRTE_IXGBE_PMD
+#include <rte_pmd_ixgbe.h>
+#endif
 #include "rte_ethtool.h"
 
 #define PKTPOOL_SIZE 512
@@ -43,7 +48,7 @@
 
 
 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;
@@ -61,7 +66,7 @@ rte_ethtool_get_drvinfo(uint8_t port_id, struct ethtool_drvinfo *drvinfo)
                printf("firmware version get error: (%s)\n", strerror(-ret));
        else if (ret > 0)
                printf("Insufficient fw version buffer size, "
-                      "the minimun size should be %d\n", ret);
+                      "the minimum size should be %d\n", ret);
 
        memset(&dev_info, 0, sizeof(dev_info));
        rte_eth_dev_info_get(port_id, &dev_info);
@@ -70,6 +75,7 @@ rte_ethtool_get_drvinfo(uint8_t port_id, struct ethtool_drvinfo *drvinfo)
                dev_info.driver_name);
        snprintf(drvinfo->version, sizeof(drvinfo->version), "%s",
                rte_version());
+       /* TODO: replace bus_info by rte_devargs.name */
        if (dev_info.pci_dev)
                snprintf(drvinfo->bus_info, sizeof(drvinfo->bus_info),
                        "%04x:%02x:%02x.%x",
@@ -101,7 +107,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;
@@ -116,7 +122,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;
@@ -136,7 +142,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;
 
@@ -146,13 +152,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;
@@ -175,7 +181,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;
@@ -198,7 +204,7 @@ rte_ethtool_set_eeprom(uint8_t port_id, struct ethtool_eeprom *eeprom,
 }
 
 int
-rte_ethtool_get_pauseparam(uint8_t port_id,
+rte_ethtool_get_pauseparam(uint16_t port_id,
        struct ethtool_pauseparam *pause_param)
 {
        struct rte_eth_fc_conf fc_conf;
@@ -233,7 +239,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;
@@ -276,7 +282,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);
 
@@ -284,7 +290,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);
@@ -293,7 +299,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 ether_addr *addr)
 {
        RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);
        if (addr == NULL)
@@ -304,7 +310,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 ether_addr *addr)
 {
        if (addr == NULL)
                return -EINVAL;
@@ -312,7 +318,7 @@ 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,
+rte_ethtool_net_validate_addr(uint16_t port_id __rte_unused,
        struct ether_addr *addr)
 {
        if (addr == NULL)
@@ -321,7 +327,7 @@ rte_ethtool_net_validate_addr(uint8_t port_id __rte_unused,
 }
 
 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;
@@ -329,7 +335,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;
@@ -337,13 +343,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);
 }
@@ -356,7 +362,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;
@@ -367,9 +373,12 @@ rte_ethtool_net_set_rx_mode(uint8_t port_id)
        num_vfs = dev_info.max_vfs;
 
        /* Set VF vf_rx_mode, VF unsupport status is discard */
-       for (vf = 0; vf < num_vfs; vf++)
-               rte_eth_dev_set_vf_rxmode(port_id, vf,
+       for (vf = 0; vf < num_vfs; vf++) {
+#ifdef RTE_LIBRTE_IXGBE_PMD
+               rte_pmd_ixgbe_set_vf_rxmode(port_id, vf,
                        ETH_VMDQ_ACCEPT_UNTAG, 0);
+#endif
+       }
 
        /* Enable Rx vlan filter, VF unspport status is discard */
        rte_eth_dev_set_vlan_offload(port_id, ETH_VLAN_FILTER_MASK);
@@ -379,7 +388,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;
@@ -411,7 +420,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;