net: page_pool: add page allocation stats for two fast page allocate path
authorJie Wang <wangjie125@huawei.com>
Thu, 12 May 2022 06:56:31 +0000 (14:56 +0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 13 May 2022 10:28:55 +0000 (11:28 +0100)
Currently If use page pool allocation stats to analysis a RX performance
degradation problem. These stats only count for pages allocate from
page_pool_alloc_pages. But nic drivers such as hns3 use
page_pool_dev_alloc_frag to allocate pages, so page stats in this API
should also be counted.

Signed-off-by: Jie Wang <wangjie125@huawei.com>
Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/page_pool.c

index bdbadfa..f18e6e7 100644 (file)
@@ -704,8 +704,10 @@ struct page *page_pool_alloc_frag(struct page_pool *pool,
 
        if (page && *offset + size > max_size) {
                page = page_pool_drain_frag(pool, page);
-               if (page)
+               if (page) {
+                       alloc_stat_inc(pool, fast);
                        goto frag_reset;
+               }
        }
 
        if (!page) {
@@ -727,6 +729,7 @@ frag_reset:
 
        pool->frag_users++;
        pool->frag_offset = *offset + size;
+       alloc_stat_inc(pool, fast);
        return page;
 }
 EXPORT_SYMBOL(page_pool_alloc_frag);