diff options
author | Emil Tantilov <emil.s.tantilov@intel.com> | 2017-12-11 13:37:15 -0500 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2018-01-26 10:46:51 -0500 |
commit | 2a35efe582116abc3135151bdb53221087ca43e3 (patch) | |
tree | 3fb811b7d54402ee808de90db0af17effb0511bf | |
parent | 35074d698d4213874e93a4b8561360241698b104 (diff) |
ixgbevf: add counters for Rx page allocations
We already had placehloders for failed page and buffer allocations.
Added alloc_rx_page and made sure the stats are properly updated and
exposed in ethtool.
Signed-off-by: Emil Tantilov <emil.s.tantilov@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/ixgbevf/ethtool.c | 3 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/ixgbevf/ixgbevf.h | 6 | ||||
-rw-r--r-- | drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | 23 |
3 files changed, 25 insertions, 7 deletions
diff --git a/drivers/net/ethernet/intel/ixgbevf/ethtool.c b/drivers/net/ethernet/intel/ixgbevf/ethtool.c index ff9d05f308ee..4400e49090b4 100644 --- a/drivers/net/ethernet/intel/ixgbevf/ethtool.c +++ b/drivers/net/ethernet/intel/ixgbevf/ethtool.c | |||
@@ -75,6 +75,9 @@ static struct ixgbe_stats ixgbevf_gstrings_stats[] = { | |||
75 | IXGBEVF_STAT("tx_timeout_count", tx_timeout_count), | 75 | IXGBEVF_STAT("tx_timeout_count", tx_timeout_count), |
76 | IXGBEVF_NETDEV_STAT(multicast), | 76 | IXGBEVF_NETDEV_STAT(multicast), |
77 | IXGBEVF_STAT("rx_csum_offload_errors", hw_csum_rx_error), | 77 | IXGBEVF_STAT("rx_csum_offload_errors", hw_csum_rx_error), |
78 | IXGBEVF_STAT("alloc_rx_page", alloc_rx_page), | ||
79 | IXGBEVF_STAT("alloc_rx_page_failed", alloc_rx_page_failed), | ||
80 | IXGBEVF_STAT("alloc_rx_buff_failed", alloc_rx_buff_failed), | ||
78 | }; | 81 | }; |
79 | 82 | ||
80 | #define IXGBEVF_QUEUE_STATS_LEN ( \ | 83 | #define IXGBEVF_QUEUE_STATS_LEN ( \ |
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h b/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h index c70a789035ae..f6952425c87d 100644 --- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h +++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h | |||
@@ -84,6 +84,7 @@ struct ixgbevf_tx_queue_stats { | |||
84 | struct ixgbevf_rx_queue_stats { | 84 | struct ixgbevf_rx_queue_stats { |
85 | u64 alloc_rx_page_failed; | 85 | u64 alloc_rx_page_failed; |
86 | u64 alloc_rx_buff_failed; | 86 | u64 alloc_rx_buff_failed; |
87 | u64 alloc_rx_page; | ||
87 | u64 csum_err; | 88 | u64 csum_err; |
88 | }; | 89 | }; |
89 | 90 | ||
@@ -295,8 +296,9 @@ struct ixgbevf_adapter { | |||
295 | u64 hw_csum_rx_error; | 296 | u64 hw_csum_rx_error; |
296 | u64 hw_rx_no_dma_resources; | 297 | u64 hw_rx_no_dma_resources; |
297 | int num_msix_vectors; | 298 | int num_msix_vectors; |
298 | u32 alloc_rx_page_failed; | 299 | u64 alloc_rx_page_failed; |
299 | u32 alloc_rx_buff_failed; | 300 | u64 alloc_rx_buff_failed; |
301 | u64 alloc_rx_page; | ||
300 | 302 | ||
301 | struct msix_entry *msix_entries; | 303 | struct msix_entry *msix_entries; |
302 | 304 | ||
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c index ae2402ddd9fb..350afec3dde8 100644 --- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c +++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c | |||
@@ -604,7 +604,7 @@ static bool ixgbevf_alloc_mapped_page(struct ixgbevf_ring *rx_ring, | |||
604 | if (dma_mapping_error(rx_ring->dev, dma)) { | 604 | if (dma_mapping_error(rx_ring->dev, dma)) { |
605 | __free_page(page); | 605 | __free_page(page); |
606 | 606 | ||
607 | rx_ring->rx_stats.alloc_rx_buff_failed++; | 607 | rx_ring->rx_stats.alloc_rx_page_failed++; |
608 | return false; | 608 | return false; |
609 | } | 609 | } |
610 | 610 | ||
@@ -612,6 +612,7 @@ static bool ixgbevf_alloc_mapped_page(struct ixgbevf_ring *rx_ring, | |||
612 | bi->page = page; | 612 | bi->page = page; |
613 | bi->page_offset = 0; | 613 | bi->page_offset = 0; |
614 | bi->pagecnt_bias = 1; | 614 | bi->pagecnt_bias = 1; |
615 | rx_ring->rx_stats.alloc_rx_page++; | ||
615 | 616 | ||
616 | return true; | 617 | return true; |
617 | } | 618 | } |
@@ -963,8 +964,10 @@ static int ixgbevf_clean_rx_irq(struct ixgbevf_q_vector *q_vector, | |||
963 | skb = ixgbevf_fetch_rx_buffer(rx_ring, rx_desc, skb); | 964 | skb = ixgbevf_fetch_rx_buffer(rx_ring, rx_desc, skb); |
964 | 965 | ||
965 | /* exit if we failed to retrieve a buffer */ | 966 | /* exit if we failed to retrieve a buffer */ |
966 | if (!skb) | 967 | if (!skb) { |
968 | rx_ring->rx_stats.alloc_rx_buff_failed++; | ||
967 | break; | 969 | break; |
970 | } | ||
968 | 971 | ||
969 | cleaned_count++; | 972 | cleaned_count++; |
970 | 973 | ||
@@ -2749,6 +2752,8 @@ out: | |||
2749 | void ixgbevf_update_stats(struct ixgbevf_adapter *adapter) | 2752 | void ixgbevf_update_stats(struct ixgbevf_adapter *adapter) |
2750 | { | 2753 | { |
2751 | struct ixgbe_hw *hw = &adapter->hw; | 2754 | struct ixgbe_hw *hw = &adapter->hw; |
2755 | u64 alloc_rx_page_failed = 0, alloc_rx_buff_failed = 0; | ||
2756 | u64 alloc_rx_page = 0, hw_csum_rx_error = 0; | ||
2752 | int i; | 2757 | int i; |
2753 | 2758 | ||
2754 | if (test_bit(__IXGBEVF_DOWN, &adapter->state) || | 2759 | if (test_bit(__IXGBEVF_DOWN, &adapter->state) || |
@@ -2769,10 +2774,18 @@ void ixgbevf_update_stats(struct ixgbevf_adapter *adapter) | |||
2769 | adapter->stats.vfmprc); | 2774 | adapter->stats.vfmprc); |
2770 | 2775 | ||
2771 | for (i = 0; i < adapter->num_rx_queues; i++) { | 2776 | for (i = 0; i < adapter->num_rx_queues; i++) { |
2772 | adapter->hw_csum_rx_error += | 2777 | struct ixgbevf_ring *rx_ring = adapter->rx_ring[i]; |
2773 | adapter->rx_ring[i]->hw_csum_rx_error; | 2778 | |
2774 | adapter->rx_ring[i]->hw_csum_rx_error = 0; | 2779 | hw_csum_rx_error += rx_ring->rx_stats.csum_err; |
2780 | alloc_rx_page_failed += rx_ring->rx_stats.alloc_rx_page_failed; | ||
2781 | alloc_rx_buff_failed += rx_ring->rx_stats.alloc_rx_buff_failed; | ||
2782 | alloc_rx_page += rx_ring->rx_stats.alloc_rx_page; | ||
2775 | } | 2783 | } |
2784 | |||
2785 | adapter->hw_csum_rx_error = hw_csum_rx_error; | ||
2786 | adapter->alloc_rx_page_failed = alloc_rx_page_failed; | ||
2787 | adapter->alloc_rx_buff_failed = alloc_rx_buff_failed; | ||
2788 | adapter->alloc_rx_page = alloc_rx_page; | ||
2776 | } | 2789 | } |
2777 | 2790 | ||
2778 | /** | 2791 | /** |