Lines Matching +full:cpu +full:- +full:facing

1 /* SPDX-License-Identifier: GPL-2.0
32 * 'struct page' and atomic operation for page->pp_ref_count.
34 * The API keeps track of in-flight pages, in order to let API users know when
37 * attach the page_pool object to a page_pool-aware object like skbs marked with
42 * recycle the page, or in case of page->_refcount > 1, it will release the DMA
43 * mapping and in-flight state accounting.
48 * the same page when a page is split. The API user must setup pool->p.max_len
49 * and pool->p.offset correctly and ensure that page_pool_put_page() is called
50 * with dma_sync_size being -1 for fragment API.
55 #include <linux/dma-mapping.h>
62 /* Deprecated driver-facing API, use netlink instead */
87 * page_pool_dev_alloc_pages() - allocate a page.
100 * page_pool_dev_alloc_frag() - allocate a page fragment.
122 unsigned int max_size = PAGE_SIZE << pool->p.order; in page_pool_alloc_netmem()
139 if (pool->frag_offset + *size > max_size) { in page_pool_alloc_netmem()
140 *size = max_size - *offset; in page_pool_alloc_netmem()
141 pool->frag_offset = max_size; in page_pool_alloc_netmem()
171 * page_pool_dev_alloc() - allocate a page or a page fragment.
206 * page_pool_dev_alloc_va() - allocate a page or a page fragment and return its
225 * page_pool_get_dma_dir() - Retrieve the stored DMA direction.
234 return pool->p.dma_dir; in page_pool_get_dma_dir()
243 * page_pool_fragment_page() - split a fresh page into fragments
249 * like put_page()). Such references are usually held by page_pool-aware
255 * "fragment allocators" to save atomic operations - either when they know
286 * the BUILD_BUG_ON(), only need to handle the non-constant case in page_pool_unref_netmem()
336 /* When page_pool isn't compiled-in, net/core/xdp.c doesn't in page_pool_put_netmem()
348 * page_pool_put_page() - release a reference to a page pool page
373 page_pool_put_netmem(pool, netmem, -1, allow_direct); in page_pool_put_full_netmem()
377 * page_pool_put_full_page() - release a reference on a page pool page
388 page_pool_put_netmem(pool, page_to_netmem(page), -1, allow_direct); in page_pool_put_full_page()
392 * page_pool_recycle_direct() - release a reference on a page pool page
415 * page_pool_free_va() - free a va into the page_pool
425 page_pool_put_page(pool, virt_to_head_page(va), -1, allow_direct); in page_pool_free_va()
439 * page_pool_get_dma_addr() - Retrieve the stored DMA address.
454 dma_sync_single_range_for_cpu(pool->p.dev, dma_addr, in __page_pool_dma_sync_for_cpu()
455 offset + pool->p.offset, dma_sync_size, in __page_pool_dma_sync_for_cpu()
460 * page_pool_dma_sync_for_cpu - sync Rx page for CPU after it's written by HW
469 * associated PP doesn't perform sync-for-device.
484 if (!pool->dma_sync_for_cpu) in page_pool_dma_sync_netmem_for_cpu()
494 return refcount_dec_and_test(&pool->user_cnt); in page_pool_put()
499 if (unlikely(pool->p.nid != new_nid)) in page_pool_nid_changed()
505 return !!pool->mp_ops; in page_pool_is_unreadable()