Lines Matching +full:dma +full:- +full:pool
1 .. SPDX-License-Identifier: GPL-2.0
4 Page Pool API
8 per-page, but it can fallback on the regular page allocator APIs.
22 release the DMA mapping and inflight state accounting.
27 .. code-block:: none
29 +------------------+
31 +------------------+
37 +--------------------------------------------+
39 +--------------------------------------------+
42 | Pool empty | Pool has entries
45 +-----------------------+ +------------------------+
47 +-----------------------+ +------------------------+
51 | | from ptr-ring
54 +-----------------+ +------------------+
55 | Fast cache | | ptr-ring cache |
56 +-----------------+ +------------------+
62 purpose of page pool, which is allocate pages fast from cache without locking.
67 * page_pool_create(): Create a pool.
72 * dev: struct device. Used on DMA operations
73 * dma_dir: DMA direction
74 * max_len: max DMA sync memory size
75 * offset: DMA address offset
79 the allocator owns the page and will try to recycle it in one of the pool
83 * page_pool_put_full_page(): Similar to page_pool_put_page(), but will DMA sync
84 for the entire memory area configured in area pool->max_len.
88 directly into the pool fast cache.
96 * page_pool_get_dma_addr(): Retrieve the stored DMA address.
98 * page_pool_get_dma_dir(): Retrieve the stored DMA direction.
116 ------------------------
135 * ``slow``: slow path order-0 allocations
143 * ``cached``: recycling placed page in the page pool cache
144 * ``cache_full``: page pool cache was full
146 * ``ring_full``: page released from page pool because the ptr ring was full
153 ------------
155 .. code-block:: c
157 /* Page pool registration */
163 /* internal DMA mapping in page_pool */
167 pp_params.dev = priv->dev;
180 -----------
183 .. code-block:: c
188 dma_dir = page_pool_get_dma_dir(dring->page_pool);
202 -----
204 .. code-block:: c
217 -------------
219 .. code-block:: c