Home
last modified time | relevance | path

Searched refs:page_pool (Results 1 – 25 of 103) sorted by relevance

12345

/linux/include/net/page_pool/
H A Dhelpers.h67 bool page_pool_get_stats(const struct page_pool *pool,
92 static inline struct page *page_pool_dev_alloc_pages(struct page_pool *pool) in page_pool_dev_alloc_pages()
109 static inline struct page *page_pool_dev_alloc_frag(struct page_pool *pool, in page_pool_dev_alloc_frag()
118 static inline netmem_ref page_pool_alloc_netmem(struct page_pool *pool, in page_pool_alloc_netmem()
147 static inline netmem_ref page_pool_dev_alloc_netmem(struct page_pool *pool, in page_pool_dev_alloc_netmem()
156 static inline netmem_ref page_pool_dev_alloc_netmems(struct page_pool *pool) in page_pool_dev_alloc_netmems()
163 static inline struct page *page_pool_alloc(struct page_pool *pool, in page_pool_alloc()
182 static inline struct page *page_pool_dev_alloc(struct page_pool *pool, in page_pool_dev_alloc()
191 static inline void *page_pool_alloc_va(struct page_pool *pool, in page_pool_alloc_va()
216 static inline void *page_pool_dev_alloc_va(struct page_pool *pool, in page_pool_dev_alloc_va()
[all …]
H A Dtypes.h166 struct page_pool { struct
254 struct page *page_pool_alloc_pages(struct page_pool *pool, gfp_t gfp); argument
255 netmem_ref page_pool_alloc_netmems(struct page_pool *pool, gfp_t gfp);
256 struct page *page_pool_alloc_frag(struct page_pool *pool, unsigned int *offset,
258 netmem_ref page_pool_alloc_frag_netmem(struct page_pool *pool,
261 struct page_pool *page_pool_create(const struct page_pool_params *params);
262 struct page_pool *page_pool_create_percpu(const struct page_pool_params *params,
268 void page_pool_disable_direct_recycling(struct page_pool *pool);
269 void page_pool_destroy(struct page_pool *pool);
270 void page_pool_use_xdp_mem(struct page_pool *pool, void (*disconnect)(void *),
[all …]
H A Dmemory_provider.h13 netmem_ref (*alloc_netmems)(struct page_pool *pool, gfp_t gfp);
14 bool (*release_netmem)(struct page_pool *pool, netmem_ref netmem);
15 int (*init)(struct page_pool *pool);
16 void (*destroy)(struct page_pool *pool);
23 void net_mp_niov_set_page_pool(struct page_pool *pool, struct net_iov *niov);
45 static inline void net_mp_netmem_place_in_cache(struct page_pool *pool, in net_mp_netmem_place_in_cache()
/linux/net/core/
H A Dmp_dmabuf_devmem.h14 int mp_dmabuf_devmem_init(struct page_pool *pool);
16 netmem_ref mp_dmabuf_devmem_alloc_netmems(struct page_pool *pool, gfp_t gfp);
18 void mp_dmabuf_devmem_destroy(struct page_pool *pool);
20 bool mp_dmabuf_devmem_release_page(struct page_pool *pool, netmem_ref netmem);
22 static inline int mp_dmabuf_devmem_init(struct page_pool *pool) in mp_dmabuf_devmem_init()
28 mp_dmabuf_devmem_alloc_netmems(struct page_pool *pool, gfp_t gfp) in mp_dmabuf_devmem_alloc_netmems()
33 static inline void mp_dmabuf_devmem_destroy(struct page_pool *pool) in mp_dmabuf_devmem_destroy()
38 mp_dmabuf_devmem_release_page(struct page_pool *pool, netmem_ref netmem) in mp_dmabuf_devmem_release_page()
H A Dpage_pool.c85 bool page_pool_get_stats(const struct page_pool *pool, in page_pool_get_stats()
161 static bool page_pool_producer_lock(struct page_pool *pool) in page_pool_producer_lock()
174 static void page_pool_producer_unlock(struct page_pool *pool, in page_pool_producer_unlock()
186 CACHELINE_ASSERT_GROUP_MEMBER(struct page_pool, frag, frag_users); in page_pool_struct_check()
187 CACHELINE_ASSERT_GROUP_MEMBER(struct page_pool, frag, frag_page); in page_pool_struct_check()
188 CACHELINE_ASSERT_GROUP_MEMBER(struct page_pool, frag, frag_offset); in page_pool_struct_check()
189 CACHELINE_ASSERT_GROUP_SIZE(struct page_pool, frag, in page_pool_struct_check()
193 static int page_pool_init(struct page_pool *pool, in page_pool_init()
319 static void page_pool_uninit(struct page_pool *pool) in page_pool_uninit()
335 struct page_pool *
[all …]
H A Dpage_pool_priv.h12 s32 page_pool_inflight(const struct page_pool *pool, bool strict);
14 int page_pool_list(struct page_pool *pool);
15 void page_pool_detached(struct page_pool *pool);
16 void page_pool_unlist(struct page_pool *pool);
41 void page_pool_set_pp_info(struct page_pool *pool, netmem_ref netmem);
46 static inline void page_pool_set_pp_info(struct page_pool *pool, in page_pool_set_pp_info()
H A Dpage_pool_user.c36 typedef int (*pp_nl_fill_cb)(struct sk_buff *rsp, const struct page_pool *pool,
42 struct page_pool *pool; in netdev_nl_page_pool_get_do()
88 struct page_pool *pool; in netdev_nl_page_pool_get_dump()
114 page_pool_nl_stats_fill(struct sk_buff *rsp, const struct page_pool *pool, in page_pool_nl_stats_fill()
216 page_pool_nl_fill(struct sk_buff *rsp, const struct page_pool *pool, in page_pool_nl_fill()
262 static void netdev_nl_page_pool_event(const struct page_pool *pool, u32 cmd) in netdev_nl_page_pool_event()
311 int page_pool_list(struct page_pool *pool) in page_pool_list()
337 void page_pool_detached(struct page_pool *pool) in page_pool_detached()
345 void page_pool_unlist(struct page_pool *pool) in page_pool_unlist()
359 struct page_pool *pool; in page_pool_check_memory_provider()
[all …]
H A Ddevmem.c395 int mp_dmabuf_devmem_init(struct page_pool *pool) in mp_dmabuf_devmem_init()
415 netmem_ref mp_dmabuf_devmem_alloc_netmems(struct page_pool *pool, gfp_t gfp) in mp_dmabuf_devmem_alloc_netmems()
434 void mp_dmabuf_devmem_destroy(struct page_pool *pool) in mp_dmabuf_devmem_destroy()
441 bool mp_dmabuf_devmem_release_page(struct page_pool *pool, netmem_ref netmem) in mp_dmabuf_devmem_release_page()
/linux/Documentation/translations/zh_CN/networking/
H A Dnetmem.rst29 1. 驱动必须支持page_pool
33 3. 驱动必须使用page_pool netmem API处理有效载荷内存。当前netmem API
48 程序必须将 DMA 映射操作委托给 page_pool,由其判断何时适合(或不适合)
51 完成 DMA 同步。此时驱动程序必须将 DMA 同步操作委托给 page_pool,由
63 netmem 或 page_pool 辅助函数(并可根据需要添加更多)。
66 对于某些内存提供者,CPU 的 DMA 同步将由 page_pool 完成;而对于其他提供者
68 间负责。驱动程序必须将整个 DMA 同步操作委托给 page_pool,以确保操作正确执行。
70 7. 避免在 page_pool 之上实现特定于驱动程序内存回收机制。由于 netmem 可能
73 page_pool 引用,但需注意某些 netmem 类型的循环时间可能更长(例如零拷贝场景
/linux/include/trace/events/
H A Dpage_pool.h3 #define TRACE_SYSTEM page_pool
16 TP_PROTO(const struct page_pool *pool,
22 __field(const struct page_pool *, pool)
44 TP_PROTO(const struct page_pool *pool,
50 __field(const struct page_pool *, pool)
70 TP_PROTO(const struct page_pool *pool,
76 __field(const struct page_pool *, pool)
96 TP_PROTO(const struct page_pool *pool, int new_nid),
101 __field(const struct page_pool *, pool)
/linux/Documentation/networking/
H A Dpage_pool.rst7 .. kernel-doc:: include/net/page_pool/helpers.h
8 :doc: page_pool allocator
58 .. kernel-doc:: net/core/page_pool.c
61 .. kernel-doc:: include/net/page_pool/types.h
64 .. kernel-doc:: include/net/page_pool/helpers.h
71 .. kernel-doc:: net/core/page_pool.c
112 It takes a pointer to a ``struct page_pool`` and a pointer to a struct
119 .. kernel-doc:: include/net/page_pool/types.h
138 /* internal DMA mapping in page_pool */
145 page_pool = page_pool_create(&pp_params);
[all …]
H A Dnetmem.rst25 1. The driver must support page_pool.
29 3. The driver must use the page_pool netmem APIs for payload memory. The netmem
46 must delegate the dma mapping to the page_pool, which knows when
49 by the driver. The driver must delegate the dma syncing to the page_pool,
55 The netmem returned by the page_pool may be unreadable, in which case
63 netmem or page_pool helpers that abstract this complexity are provided
68 CPU will be done by the page_pool, for others (particularly dmabuf memory
71 the page_pool which will do it correctly.
73 7. Avoid implementing driver-specific recycling on top of the page_pool. Drivers
75 not be backed by a struct page. However, you may hold onto a page_pool
/linux/drivers/net/ethernet/apm/xgene/
H A Dxgene_enet_main.c672 struct xgene_enet_desc_ring *buf_pool, *page_pool; in xgene_enet_rx_frame() local
690 page_pool = rx_ring->page_pool; in xgene_enet_rx_frame()
719 xgene_enet_free_pagepool(page_pool, raw_desc, exp_desc); in xgene_enet_rx_frame()
729 slots = page_pool->slots - 1; in xgene_enet_rx_frame()
730 head = page_pool->head; in xgene_enet_rx_frame()
741 page = page_pool->frag_page[head]; in xgene_enet_rx_frame()
747 page_pool->frag_page[head] = NULL; in xgene_enet_rx_frame()
751 page_pool->head = head; in xgene_enet_rx_frame()
764 ret = xgene_enet_refill_pagepool(page_pool, NUM_NXTBUFPOOL); in xgene_enet_rx_frame()
1062 struct xgene_enet_desc_ring *buf_pool, *page_pool; in xgene_enet_delete_desc_rings() local
[all …]
/linux/drivers/net/ethernet/microchip/lan966x/
H A Dlan966x_fdma.c16 page = page_pool_dev_alloc_pages(rx->page_pool); in lan966x_fdma_rx_dataptr_cb()
58 page_pool_put_full_page(rx->page_pool, in lan966x_fdma_rx_free_pages()
72 page_pool_recycle_direct(rx->page_pool, page); in lan966x_fdma_rx_free_page()
93 rx->page_pool = page_pool_create(&pp_params); in lan966x_fdma_rx_alloc_page_pool()
104 rx->page_pool); in lan966x_fdma_rx_alloc_page_pool()
107 return PTR_ERR_OR_ZERO(rx->page_pool); in lan966x_fdma_rx_alloc_page_pool()
117 return PTR_ERR(rx->page_pool); in lan966x_fdma_rx_alloc()
376 page_pool_recycle_direct(rx->page_pool, in lan966x_fdma_tx_clear_buf()
469 page_pool_recycle_direct(rx->page_pool, page); in lan966x_fdma_rx_get_frame()
812 struct page_pool *page_pool; in lan966x_fdma_reload() local
[all …]
/linux/include/net/
H A Dxdp_priv.h13 struct page_pool *page_pool; member
H A Dnetmem.h35 struct page_pool *pp;
111 struct page_pool *pp;
316 static inline struct page_pool *__netmem_get_pp(netmem_ref netmem) in __netmem_get_pp()
321 static inline struct page_pool *netmem_get_pp(netmem_ref netmem) in netmem_get_pp()
/linux/drivers/net/ethernet/google/gve/
H A Dgve_buffer_mgmt_dqo.c229 netmem = page_pool_alloc_netmem(rx->dqo.page_pool, in gve_alloc_from_page_pool()
240 buf_state->page_info.pad = rx->dqo.page_pool->p.offset; in gve_alloc_from_page_pool()
245 struct page_pool *gve_rx_create_page_pool(struct gve_priv *priv, in gve_rx_create_page_pool()
269 if (rx->dqo.page_pool) { in gve_free_buffer()
281 if (rx->dqo.page_pool) { in gve_reuse_buffer()
311 } else if (rx->dqo.page_pool) { in gve_alloc_buffer()
H A Dgve_rx_dqo.c100 if (rx->dqo.page_pool) in gve_rx_reset_ring_dqo()
119 if (rx->dqo.page_pool) in gve_rx_stop_ring_dqo()
120 page_pool_disable_direct_recycling(rx->dqo.page_pool); in gve_rx_stop_ring_dqo()
149 if (rx->dqo.page_pool) in gve_rx_free_ring_dqo()
183 if (rx->dqo.page_pool) { in gve_rx_free_ring_dqo()
184 page_pool_destroy(rx->dqo.page_pool); in gve_rx_free_ring_dqo()
185 rx->dqo.page_pool = NULL; in gve_rx_free_ring_dqo()
220 struct page_pool *pool; in gve_rx_alloc_ring_dqo()
276 rx->dqo.page_pool = pool; in gve_rx_alloc_ring_dqo()
522 if (rx->dqo.page_pool) { in gve_skb_add_rx_frag()
[all …]
/linux/drivers/net/ethernet/microchip/sparx5/lan969x/
H A Dlan969x_fdma.c31 page = page_pool_dev_alloc_pages(rx->page_pool); in lan969x_fdma_rx_dataptr_cb()
95 page_pool_put_full_page(rx->page_pool, in lan969x_fdma_free_pages()
145 page_pool_recycle_direct(rx->page_pool, page); in lan969x_fdma_rx_get_frame()
168 rx->page_pool = page_pool_create(&pp_params); in lan969x_fdma_rx_alloc()
169 if (IS_ERR(rx->page_pool)) in lan969x_fdma_rx_alloc()
170 return PTR_ERR(rx->page_pool); in lan969x_fdma_rx_alloc()
403 page_pool_destroy(rx->page_pool); in lan969x_fdma_deinit()
/linux/drivers/net/ethernet/huawei/hinic3/
H A Dhinic3_rx.c47 static int rx_alloc_mapped_page(struct page_pool *page_pool, in rx_alloc_mapped_page() argument
53 page = page_pool_dev_alloc_frag(page_pool, &page_offset, buf_len); in rx_alloc_mapped_page()
83 err = rx_alloc_mapped_page(rxq->page_pool, rx_info, in hinic3_rx_fill_buffers()
116 page_pool_dma_sync_for_cpu(rxq->page_pool, page, rx_info->page_offset, in hinic3_add_rx_frag()
122 page_pool_put_full_page(rxq->page_pool, page, false); in hinic3_add_rx_frag()
H A Dhinic3_rx.h73 struct page_pool *page_pool; member
/linux/drivers/net/netdevsim/
H A Dnetdev.c444 static int nsim_create_page_pool(struct page_pool **p, struct napi_struct *napi) in nsim_create_page_pool()
455 struct page_pool *pool; in nsim_create_page_pool()
480 err = nsim_create_page_pool(&rq->page_pool, &rq->napi); in nsim_init_napi()
489 page_pool_destroy(ns->rq[i]->page_pool); in nsim_init_napi()
490 ns->rq[i]->page_pool = NULL; in nsim_init_napi()
558 page_pool_destroy(ns->rq[i]->page_pool); in nsim_del_napi()
559 ns->rq[i]->page_pool = NULL; in nsim_del_napi()
728 struct page_pool *pp;
751 err = nsim_create_page_pool(&qmem->rq->page_pool, &qmem->rq->napi); in nsim_queue_mem_alloc()
775 page_pool_destroy(qmem->rq->page_pool); in nsim_queue_mem_free()
[all …]
/linux/drivers/net/ethernet/meta/fbnic/
H A Dfbnic_txrx.h132 struct page_pool *page_pool; member
/linux/drivers/net/ethernet/marvell/octeontx2/nic/
H A Dotx2_txrx.h133 struct page_pool *page_pool; member
/linux/tools/testing/selftests/net/bench/
H A DMakefile3 TEST_GEN_MODS_DIR := page_pool

12345