diff options
author | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2015-04-03 16:26:59 -0400 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2015-04-14 18:35:16 -0400 |
commit | c0e61781a8cb1c5d1b092a4d9776dbefe799444e (patch) | |
tree | 52802a5e1929e6fd4a4d7681c03136edef831e77 | |
parent | 29a928ee633a9166e5637609ce4c735856b23fbe (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.c | 18 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/fm10k/fm10k_pci.c | 2 |
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 | ||
108 | static const char fm10k_gstrings_test[][ETH_GSTRING_LEN] = { | 107 | static 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 | ||
156 | static int fm10k_get_sset_count(struct net_device *dev, int sset) | 155 | static 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; |