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; |
