Use netmem alloc/put APIs instead of page alloc/put APIs in __page_pool_alloc_pages_slow(). While at it, improved some comments. Signed-off-by: Byungchul Park <byungchul@xxxxxx> --- net/core/page_pool.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/net/core/page_pool.c b/net/core/page_pool.c index 147cefe7a031..0313609abc53 100644 --- a/net/core/page_pool.c +++ b/net/core/page_pool.c @@ -551,7 +551,7 @@ static noinline netmem_ref __page_pool_alloc_pages_slow(struct page_pool *pool, unsigned int pp_order = pool->p.order; bool dma_map = pool->dma_map; netmem_ref netmem; - int i, nr_pages; + int i, nr_netmems; /* Don't support bulk alloc for high-order pages */ if (unlikely(pp_order)) @@ -561,21 +561,21 @@ static noinline netmem_ref __page_pool_alloc_pages_slow(struct page_pool *pool, if (unlikely(pool->alloc.count > 0)) return pool->alloc.cache[--pool->alloc.count]; - /* Mark empty alloc.cache slots "empty" for alloc_pages_bulk */ + /* Mark empty alloc.cache slots "empty" for alloc_netmems_bulk_node() */ memset(&pool->alloc.cache, 0, sizeof(void *) * bulk); - nr_pages = alloc_pages_bulk_node(gfp, pool->p.nid, bulk, - (struct page **)pool->alloc.cache); - if (unlikely(!nr_pages)) + nr_netmems = alloc_netmems_bulk_node(gfp, pool->p.nid, bulk, + pool->alloc.cache); + if (unlikely(!nr_netmems)) return 0; - /* Pages have been filled into alloc.cache array, but count is zero and - * page element have not been (possibly) DMA mapped. + /* Netmems have been filled into alloc.cache array, but count is + * zero and elements have not been (possibly) DMA mapped. */ - for (i = 0; i < nr_pages; i++) { + for (i = 0; i < nr_netmems; i++) { netmem = pool->alloc.cache[i]; if (dma_map && unlikely(!page_pool_dma_map(pool, netmem, gfp))) { - put_page(netmem_to_page(netmem)); + put_netmem(netmem); continue; } @@ -587,7 +587,7 @@ static noinline netmem_ref __page_pool_alloc_pages_slow(struct page_pool *pool, pool->pages_state_hold_cnt); } - /* Return last page */ + /* Return the last netmem */ if (likely(pool->alloc.count > 0)) { netmem = pool->alloc.cache[--pool->alloc.count]; alloc_stat_inc(pool, slow); @@ -595,7 +595,9 @@ static noinline netmem_ref __page_pool_alloc_pages_slow(struct page_pool *pool, netmem = 0; } - /* When page just alloc'ed is should/must have refcnt 1. */ + /* When a netmem has been just allocated, it should/must have + * refcnt 1. + */ return netmem; } -- 2.17.1