net: hns3: add counter for times RX pages gets allocated
authorYunsheng Lin <linyunsheng@huawei.com>
Mon, 6 May 2019 02:48:43 +0000 (10:48 +0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 7 May 2019 17:37:13 +0000 (10:37 -0700)
Currently, using "ethtool --statistics" can show how many time RX
page have been reused, but there is no counter for RX page not
being reused.

This patch adds non_reuse_pg counter to better debug the performance
issue, because it is hard to determine when the RX page is reused
or not if there is no such counter.

Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com>
Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c
drivers/net/ethernet/hisilicon/hns3/hns3_enet.h
drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c

index ff3c9f11ca6536ac32eda5d31ca5a6297ce88ab2..453fdf43136a0f2d61f6212555e7ef5b7b2ec290 100644 (file)
@@ -2315,6 +2315,10 @@ hns3_nic_alloc_rx_buffers(struct hns3_enet_ring *ring, int cleand_count)
                                break;
                        }
                        hns3_replace_buffer(ring, ring->next_to_use, &res_cbs);
+
+                       u64_stats_update_begin(&ring->syncp);
+                       ring->stats.non_reuse_pg++;
+                       u64_stats_update_end(&ring->syncp);
                }
 
                ring_ptr_move_fw(ring, next_to_use);
index f669412764f2a128e57b9bf2e5c30927f13dfd56..9680a688bce2b6bea4e94c87d9c24afc56f2b2e8 100644 (file)
@@ -389,6 +389,7 @@ struct ring_stats {
                        u64 l2_err;
                        u64 l3l4_csum_err;
                        u64 rx_multicast;
+                       u64 non_reuse_pg;
                };
        };
 };
index 7256ed401d28a85d8d7ca6536ec37805adaf985c..d1588ea6132c1cd021ff2a3240c28448e015cf39 100644 (file)
@@ -49,6 +49,7 @@ static const struct hns3_stats hns3_rxq_stats[] = {
        HNS3_TQP_STAT("l2_err", l2_err),
        HNS3_TQP_STAT("l3l4_csum_err", l3l4_csum_err),
        HNS3_TQP_STAT("multicast", rx_multicast),
+       HNS3_TQP_STAT("non_reuse_pg", non_reuse_pg),
 };
 
 #define HNS3_RXQ_STATS_COUNT ARRAY_SIZE(hns3_rxq_stats)