aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Kirsher <jeffrey.t.kirsher@intel.com>2015-04-03 16:26:59 -0400
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2015-04-14 18:35:16 -0400
commitc0e61781a8cb1c5d1b092a4d9776dbefe799444e (patch)
tree52802a5e1929e6fd4a4d7681c03136edef831e77
parent29a928ee633a9166e5637609ce4c735856b23fbe (diff)
fm10k: use hw->mac.max_queues for stats
Even though it shouldn't strictly matter, don't count queue stats higher than the max_queues value stored for this mac. This ensures that we don't attempt to check queues which don't belong to use in VFs. This shouldn't be a visible change, as the VFs should see zero for queues which don't belong to them. Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> Acked-by: Matthew Vick <matthew.vick@intel.com> Tested-by: Krishneil Singh <krishneil.k.singh@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
-rw-r--r--drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c18
-rw-r--r--drivers/net/ethernet/intel/fm10k/fm10k_pci.c2
2 files changed, 12 insertions, 8 deletions
diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c b/drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c
index 478e67b4601e..cbfaf94d144d 100644
--- a/drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c
+++ b/drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c
@@ -98,12 +98,11 @@ static const struct fm10k_stats fm10k_gstrings_stats[] = {
98 98
99#define FM10K_GLOBAL_STATS_LEN ARRAY_SIZE(fm10k_gstrings_stats) 99#define FM10K_GLOBAL_STATS_LEN ARRAY_SIZE(fm10k_gstrings_stats)
100 100
101#define FM10K_QUEUE_STATS_LEN \ 101#define FM10K_QUEUE_STATS_LEN(_n) \
102 (MAX_QUEUES * 2 * (sizeof(struct fm10k_queue_stats) / sizeof(u64))) 102 ( (_n) * 2 * (sizeof(struct fm10k_queue_stats) / sizeof(u64)))
103 103
104#define FM10K_STATS_LEN (FM10K_GLOBAL_STATS_LEN + \ 104#define FM10K_STATIC_STATS_LEN (FM10K_GLOBAL_STATS_LEN + \
105 FM10K_NETDEV_STATS_LEN + \ 105 FM10K_NETDEV_STATS_LEN)
106 FM10K_QUEUE_STATS_LEN)
107 106
108static const char fm10k_gstrings_test[][ETH_GSTRING_LEN] = { 107static const char fm10k_gstrings_test[][ETH_GSTRING_LEN] = {
109 "Mailbox test (on/offline)" 108 "Mailbox test (on/offline)"
@@ -155,11 +154,16 @@ static void fm10k_get_strings(struct net_device *dev, u32 stringset, u8 *data)
155 154
156static int fm10k_get_sset_count(struct net_device *dev, int sset) 155static int fm10k_get_sset_count(struct net_device *dev, int sset)
157{ 156{
157 struct fm10k_intfc *interface = netdev_priv(dev);
158 struct fm10k_hw *hw = &interface->hw;
159 int stats_len = FM10K_STATIC_STATS_LEN;
160
158 switch (sset) { 161 switch (sset) {
159 case ETH_SS_TEST: 162 case ETH_SS_TEST:
160 return FM10K_TEST_LEN; 163 return FM10K_TEST_LEN;
161 case ETH_SS_STATS: 164 case ETH_SS_STATS:
162 return FM10K_STATS_LEN; 165 stats_len += FM10K_QUEUE_STATS_LEN(hw->mac.max_queues);
166 return stats_len;
163 default: 167 default:
164 return -EOPNOTSUPP; 168 return -EOPNOTSUPP;
165 } 169 }
@@ -369,7 +373,7 @@ static void fm10k_get_drvinfo(struct net_device *dev,
369 strncpy(info->bus_info, pci_name(interface->pdev), 373 strncpy(info->bus_info, pci_name(interface->pdev),
370 sizeof(info->bus_info) - 1); 374 sizeof(info->bus_info) - 1);
371 375
372 info->n_stats = FM10K_STATS_LEN; 376 info->n_stats = fm10k_get_sset_count(dev, ETH_SS_STATS);
373 377
374 info->regdump_len = fm10k_get_regs_len(dev); 378 info->regdump_len = fm10k_get_regs_len(dev);
375} 379}
diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_pci.c b/drivers/net/ethernet/intel/fm10k/fm10k_pci.c
index 9d9dce6b7d5f..879124b300b1 100644
--- a/drivers/net/ethernet/intel/fm10k/fm10k_pci.c
+++ b/drivers/net/ethernet/intel/fm10k/fm10k_pci.c
@@ -360,7 +360,7 @@ void fm10k_update_stats(struct fm10k_intfc *interface)
360 360
361 hw->mac.ops.update_hw_stats(hw, &interface->stats); 361 hw->mac.ops.update_hw_stats(hw, &interface->stats);
362 362
363 for (i = 0; i < FM10K_MAX_QUEUES_PF; i++) { 363 for (i = 0; i < hw->mac.max_queues; i++) {
364 struct fm10k_hw_stats_q *q = &interface->stats.q[i]; 364 struct fm10k_hw_stats_q *q = &interface->stats.q[i];
365 365
366 tx_bytes_nic += q->tx_bytes.count; 366 tx_bytes_nic += q->tx_bytes.count;