]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
IB/ipoib v2: Add readout of statistics using ethtool
authorHans Westgaard Ry <hans.westgaard.ry@oracle.com>
Thu, 30 Jun 2016 11:41:36 +0000 (13:41 +0200)
committerChuck Anderson <chuck.anderson@oracle.com>
Thu, 7 Jul 2016 01:05:33 +0000 (18:05 -0700)
IPoIB collects statistics of traffic including number of packets
sent/received, number of bytes transferred, and certain errors. This
patch makes these statistics available to be queried by ethtool.

Orabug: 23105464
Signed-off-by: Hans Westgaard Ry <hans.westgaard.ry@oracle.com>
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com>
Reviewed-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
Tested-by: Yuval Shaia <yuval.shaia@oracle.com>
Change-Id: I654587da2fd1628e0977346c87b4a3a2f08a4bdc

drivers/infiniband/ulp/ipoib/ipoib_ethtool.c

index fb46b15a67748c0d1e9ecbf5db568f565c4fa8fc..503439c7dc0e23d63a399b65d30b39a6c0b25fad 100644 (file)
@@ -42,22 +42,21 @@ struct ipoib_stats {
 };
 
 
-#define IPOIB_NETDEV_STAT(str, m) { \
-               .stat_string = str, \
+#define IPOIB_NETDEV_STAT(m) { \
+               .stat_string = #m, \
                .stat_offset = offsetof(struct rtnl_link_stats64, m) }
 
-
-
 static const struct ipoib_stats ipoib_gstrings_stats[] = {
-       IPOIB_NETDEV_STAT("rx_packets", rx_packets),
-       IPOIB_NETDEV_STAT("tx_packets", tx_packets),
-       IPOIB_NETDEV_STAT("rx_bytes",   rx_bytes),
-       IPOIB_NETDEV_STAT("tx_bytes",   tx_bytes),
-       IPOIB_NETDEV_STAT("tx_errors",  tx_errors),
-       IPOIB_NETDEV_STAT("rx_dropped", rx_dropped),
-       IPOIB_NETDEV_STAT("tx_dropped", tx_dropped)
+       IPOIB_NETDEV_STAT(rx_packets),
+       IPOIB_NETDEV_STAT(tx_packets),
+       IPOIB_NETDEV_STAT(rx_bytes),
+       IPOIB_NETDEV_STAT(tx_bytes),
+       IPOIB_NETDEV_STAT(tx_errors),
+       IPOIB_NETDEV_STAT(rx_dropped),
+       IPOIB_NETDEV_STAT(tx_dropped)
 };
 
+
 #define IPOIB_GLOBAL_STATS_LEN ARRAY_SIZE(ipoib_gstrings_stats)
 
 
@@ -140,8 +139,6 @@ static void ipoib_get_strings(struct net_device __always_unused *dev,
        int i;
 
        switch (stringset) {
-       case ETH_SS_TEST:
-               break;
        case ETH_SS_STATS:
                for (i = 0; i < IPOIB_GLOBAL_STATS_LEN; i++) {
                        memcpy(p, ipoib_gstrings_stats[i].stat_string,
@@ -149,19 +146,22 @@ static void ipoib_get_strings(struct net_device __always_unused *dev,
                        p += ETH_GSTRING_LEN;
                }
                break;
+       case ETH_SS_TEST:
+       default:
+               break;
        }
 }
 static int ipoib_get_sset_count(struct net_device __always_unused *dev,
                                 int sset)
 {
        switch (sset) {
-       case ETH_SS_TEST:
-               return -EOPNOTSUPP;
        case ETH_SS_STATS:
                return IPOIB_GLOBAL_STATS_LEN;
+       case ETH_SS_TEST:
        default:
-               return -EOPNOTSUPP;
+               break;
        }
+       return -EOPNOTSUPP;
 }
 
 static const struct ethtool_ops ipoib_ethtool_ops = {