]> git.itanic.dy.fi Git - linux-stable/commit
page_pool: add interface to manipulate frag count in page pool
authorYunsheng Lin <linyunsheng@huawei.com>
Fri, 6 Aug 2021 02:46:20 +0000 (10:46 +0800)
committerJakub Kicinski <kuba@kernel.org>
Mon, 9 Aug 2021 22:49:00 +0000 (15:49 -0700)
commit0e9d2a0a3a836c37528899010e73b5be8111753e
treeab05a288c8a7574e5590a1e49c51fdaf375a3718
parent57f05bc2ab2443b89c2e2562c05053bcc7d30e8b
page_pool: add interface to manipulate frag count in page pool

For 32 bit systems with 64 bit dma, dma_addr[1] is used to
store the upper 32 bit dma addr, those system should be rare
those days.

For normal system, the dma_addr[1] in 'struct page' is not
used, so we can reuse dma_addr[1] for storing frag count,
which means how many frags this page might be splited to.

In order to simplify the page frag support in the page pool,
the PAGE_POOL_DMA_USE_PP_FRAG_COUNT macro is added to indicate
the 32 bit systems with 64 bit dma, and the page frag support
in page pool is disabled for such system.

The newly added page_pool_set_frag_count() is called to reserve
the maximum frag count before any page frag is passed to the
user. The page_pool_atomic_sub_frag_count_return() is called
when user is done with the page frag.

Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/linux/mm_types.h
include/net/page_pool.h
net/core/page_pool.c