i40evf: Use macro param for ethtool stats
authorMitch Williams <mitch.a.williams@intel.com>
Fri, 4 Apr 2014 04:43:08 +0000 (04:43 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Wed, 21 May 2014 09:13:05 +0000 (02:13 -0700)
Use a macro parameter for ethtool stats instead of just assuming
that a valid netdev variable exists. Suggested by Ben Hutchings.

CC: Ben Hutchings <ben@decadent.org.uk>
Change-ID: I66681698573c1549f95fdea310149d8a7e96a60f
Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40evf/i40evf_ethtool.c

index 2638dfa8910213a7ac5fe7dc220f12e9e56dabf1..3566e733b8d9f0d5af80d748f3d2bb14c95540fe 100644 (file)
@@ -59,10 +59,12 @@ static const struct i40evf_stats i40evf_gstrings_stats[] = {
 };
 
 #define I40EVF_GLOBAL_STATS_LEN ARRAY_SIZE(i40evf_gstrings_stats)
-#define I40EVF_QUEUE_STATS_LEN \
+#define I40EVF_QUEUE_STATS_LEN(_dev) \
        (((struct i40evf_adapter *) \
-               netdev_priv(netdev))->vsi_res->num_queue_pairs * 4)
-#define I40EVF_STATS_LEN (I40EVF_GLOBAL_STATS_LEN + I40EVF_QUEUE_STATS_LEN)
+               netdev_priv(_dev))->vsi_res->num_queue_pairs \
+                 * 2 * (sizeof(struct i40e_queue_stats) / sizeof(u64)))
+#define I40EVF_STATS_LEN(_dev) \
+       (I40EVF_GLOBAL_STATS_LEN + I40EVF_QUEUE_STATS_LEN(_dev))
 
 /**
  * i40evf_get_settings - Get Link Speed and Duplex settings
@@ -97,9 +99,9 @@ static int i40evf_get_settings(struct net_device *netdev,
 static int i40evf_get_sset_count(struct net_device *netdev, int sset)
 {
        if (sset == ETH_SS_STATS)
-               return I40EVF_STATS_LEN;
+               return I40EVF_STATS_LEN(netdev);
        else
-               return -ENOTSUPP;
+               return -EINVAL;
 }
 
 /**