From: Ilias Apalodimas <ilias.apalodi...@linaro.org> Add helper functions for retreiving dma_addr_t stored in page_private and unmapping dma addresses, mapped via the page_pool API.
Signed-off-by: Ilias Apalodimas <ilias.apalodi...@linaro.org> Signed-off-by: Jesper Dangaard Brouer <bro...@redhat.com> --- include/net/page_pool.h | 6 ++++++ net/core/page_pool.c | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/include/net/page_pool.h b/include/net/page_pool.h index 694d055e01ef..439f9183d4cd 100644 --- a/include/net/page_pool.h +++ b/include/net/page_pool.h @@ -111,6 +111,8 @@ struct page_pool *page_pool_create(const struct page_pool_params *params); void page_pool_destroy(struct page_pool *pool); +void page_pool_unmap_page(struct page_pool *pool, struct page *page); + /* Never call this directly, use helpers below */ void __page_pool_put_page(struct page_pool *pool, struct page *page, bool allow_direct); @@ -141,4 +143,8 @@ static inline bool is_page_pool_compiled_in(void) #endif } +static inline dma_addr_t page_pool_get_dma_addr(struct page *page) +{ + return page_private(page); +} #endif /* _NET_PAGE_POOL_H */ diff --git a/net/core/page_pool.c b/net/core/page_pool.c index 43a932cb609b..26e14a17a67c 100644 --- a/net/core/page_pool.c +++ b/net/core/page_pool.c @@ -184,6 +184,13 @@ static void __page_pool_clean_page(struct page_pool *pool, set_page_private(page, 0); } +/* unmap the page and clean our state */ +void page_pool_unmap_page(struct page_pool *pool, struct page *page) +{ + __page_pool_clean_page(pool, page); +} +EXPORT_SYMBOL(page_pool_unmap_page); + /* Return a page to the page allocator, cleaning up our state */ static void __page_pool_return_page(struct page_pool *pool, struct page *page) {