| /linux/include/net/page_pool/ |
| H A D | types.h | 12 #define PP_FLAG_DMA_MAP BIT(0) /* Should page_pool do the DMA 16 * from page_pool will be 23 #define PP_FLAG_SYSTEM_POOL BIT(2) /* Global system page_pool */ 25 /* Allow unreadable (net_iov backed) netmem in this page_pool. Drivers setting 74 * @queue_idx: queue idx this page_pool is being created for. 167 struct page_pool { argument 205 * For NIC drivers this means, allocate a page_pool per 237 /* A page_pool is strictly tied to a single RX-queue being 255 struct page *page_pool_alloc_pages(struct page_pool *pool, gfp_t gfp); 256 netmem_ref page_pool_alloc_netmems(struct page_pool *poo 166 struct page_pool { global() struct 169 cpuidpage_pool global() argument 193 alloc_statspage_pool global() argument 204 xdp_mem_idpage_pool global() argument 232 recycle_statspage_pool global() argument 236 pages_state_release_cntpage_pool global() argument 245 slowpage_pool global() argument 254 userpage_pool global() argument [all...] |
| H A D | memory_provider.h | 13 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 D | mp_dmabuf_devmem.h | 14 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 D | page_pool.c | 3 * page_pool.c 16 #include <net/page_pool/helpers.h> 17 #include <net/page_pool/memory_provider.h> 28 #include <trace/events/page_pool.h> 79 * Retrieve statistics about the page_pool. This API is only available 85 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, fra in page_pool_struct_check() [all...] |
| H A D | page_pool_priv.h | 12 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 D | page_pool_user.c | 36 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 D | devmem.c | 431 int mp_dmabuf_devmem_init(struct page_pool *pool) in mp_dmabuf_devmem_init() 451 netmem_ref mp_dmabuf_devmem_alloc_netmems(struct page_pool *pool, gfp_t gfp) in mp_dmabuf_devmem_alloc_netmems() 470 void mp_dmabuf_devmem_destroy(struct page_pool *pool) in mp_dmabuf_devmem_destroy() 477 bool mp_dmabuf_devmem_release_page(struct page_pool *pool, netmem_ref netmem) in mp_dmabuf_devmem_release_page()
|
| H A D | xdp.c | 132 page_pool_destroy(xa->page_pool); in xdp_unreg_mem_model() 381 int xdp_reg_page_pool(struct page_pool *pool) in xdp_reg_page_pool() 396 void xdp_unreg_page_pool(const struct page_pool *pool) in xdp_unreg_page_pool() 416 const struct page_pool *pool) in xdp_rxq_info_attach_page_pool() 689 struct page_pool *pp) in xdp_copy_frags_from_zc() 745 struct page_pool *pp; in xdp_build_skb_from_zc()
|
| /linux/include/trace/events/ |
| H A D | page_pool.h | 3 #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 D | page_pool.rst | 7 .. 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 …]
|
| /linux/drivers/net/ethernet/huawei/hinic3/ |
| H A D | hinic3_rx.c | 96 static int rx_alloc_mapped_page(struct page_pool *page_pool, in rx_alloc_mapped_page() argument 105 page = page_pool_dev_alloc_frag(page_pool, &page_offset, buf_len); in rx_alloc_mapped_page() 156 err = rx_alloc_mapped_page(rxq->page_pool, rx_info, in hinic3_rx_fill_buffers() 186 err = rx_alloc_mapped_page(rqres->page_pool, in hinic3_alloc_rx_buffers() 206 page_pool_put_full_page(rqres->page_pool, in hinic3_free_rx_buffers() 224 page_pool_dma_sync_for_cpu(rxq->page_pool, page, rx_info->page_offset, in hinic3_add_rx_frag() 230 page_pool_put_full_page(rxq->page_pool, page, false); in hinic3_add_rx_frag() 442 rqres->page_pool = page_pool_create(&pp_params); in hinic3_alloc_rxqs_res() 443 if (IS_ERR(rqres->page_pool)) { in hinic3_alloc_rxqs_res() 462 page_pool_destroy(rqres->page_pool); in hinic3_alloc_rxqs_res() [all …]
|
| /linux/drivers/net/vmxnet3/ |
| H A D | vmxnet3_xdp.c | 282 page_pool_recycle_direct(rq->page_pool, page); in vmxnet3_run_xdp() 290 page_pool_recycle_direct(rq->page_pool, page); in vmxnet3_run_xdp() 307 page_pool_recycle_direct(rq->page_pool, page); in vmxnet3_run_xdp() 320 page_pool_recycle_direct(rq->page_pool, page); in vmxnet3_build_skb() 345 page = page_pool_alloc_pages(rq->page_pool, GFP_ATOMIC); in vmxnet3_process_xdp_small() 352 xdp_prepare_buff(&xdp, page_address(page), rq->page_pool->p.offset, in vmxnet3_process_xdp_small() 395 rq->page_pool->p.offset, rbi->len, in vmxnet3_process_xdp() 396 page_pool_get_dma_dir(rq->page_pool)); in vmxnet3_process_xdp() 399 xdp_prepare_buff(&xdp, page_address(page), rq->page_pool->p.offset, in vmxnet3_process_xdp() 417 new_data = vmxnet3_pp_get_buff(rq->page_pool, &new_dma_addr, in vmxnet3_process_xdp()
|
| /linux/drivers/net/ethernet/microchip/lan966x/ |
| H A D | lan966x_fdma.c | 16 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() 375 page_pool_recycle_direct(rx->page_pool, in lan966x_fdma_tx_clear_buf() 468 page_pool_recycle_direct(rx->page_pool, page); in lan966x_fdma_rx_get_frame() 811 struct page_pool *page_pool; in lan966x_fdma_reload() local [all …]
|
| /linux/drivers/net/ethernet/google/gve/ |
| H A D | gve_rx_dqo.c | 100 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() 281 rx->dqo.page_pool = pool; in gve_rx_alloc_ring_dqo() 550 if (rx->dqo.page_pool) { in gve_skb_add_rx_frag() [all …]
|
| /linux/include/net/ |
| H A D | xdp_priv.h | 13 struct page_pool *page_pool; member
|
| H A D | netmem.h | 15 /* These fields in struct page are used by the page_pool and net stack: 19 * struct page_pool *pp; 25 * We mirror the page_pool fields here so the page_pool can access these 35 struct page_pool *pp; 107 struct page_pool *pp; 127 * the page_pool can access these fields without worrying whether the 302 * __netmem_get_pp - unsafely get pointer to the &page_pool backing @netmem 310 * Return: pointer to the &page_pool (garbage if @netmem is not page-backed). 312 static inline struct page_pool *__netmem_get_p [all...] |
| /linux/drivers/net/ethernet/microchip/sparx5/lan969x/ |
| H A D | lan969x_fdma.c | 31 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() 401 page_pool_destroy(rx->page_pool); in lan969x_fdma_deinit()
|
| /linux/drivers/net/netdevsim/ |
| H A D | netdev.c | 462 static int nsim_create_page_pool(struct page_pool **p, struct napi_struct *napi) in nsim_create_page_pool() 473 struct page_pool *pool; in nsim_create_page_pool() 498 err = nsim_create_page_pool(&rq->page_pool, &rq->napi); in nsim_init_napi() 507 page_pool_destroy(ns->rq[i]->page_pool); in nsim_init_napi() 508 ns->rq[i]->page_pool = NULL; in nsim_init_napi() 583 page_pool_destroy(ns->rq[i]->page_pool); in nsim_del_napi() 584 ns->rq[i]->page_pool = NULL; in nsim_del_napi() 757 struct page_pool *pp; 782 err = nsim_create_page_pool(&qmem->rq->page_pool, &qmem->rq->napi); in nsim_queue_mem_alloc() 806 page_pool_destroy(qmem->rq->page_pool); in nsim_queue_mem_free() [all …]
|
| /linux/drivers/net/ethernet/mellanox/mlxsw/ |
| H A D | pci.c | 89 struct page_pool *page_pool; member 399 struct page_pool *page_pool; in mlxsw_pci_rdq_build_skb() local 410 page_pool = cq->u.cq.page_pool; in mlxsw_pci_rdq_build_skb() 411 page_pool_dma_sync_for_cpu(page_pool, pages[page_index], in mlxsw_pci_rdq_build_skb() 436 page_pool_dma_sync_for_cpu(page_pool, page, 0, frag_size); in mlxsw_pci_rdq_build_skb() 454 page = page_pool_dev_alloc_pages(cq->u.cq.page_pool); in mlxsw_pci_rdq_page_alloc() 469 page_pool_put_page(cq->u.cq.page_pool, elem_info->pages[index], -1, in mlxsw_pci_rdq_page_free() 521 page_pool_recycle_direct(cq->u.cq.page_pool, old_pages[i]); in mlxsw_pci_rdq_pages_alloc() 534 page_pool_recycle_direct(cq->u.cq.page_pool, pages[i]); in mlxsw_pci_rdq_pages_recycle() 997 struct page_pool *page_pool; in mlxsw_pci_cq_page_pool_init() local [all …]
|
| /linux/drivers/net/ethernet/socionext/ |
| H A D | netsec.c | 286 struct page_pool *page_pool; member 742 page = page_pool_dev_alloc_pages(dring->page_pool); in netsec_alloc_rx_data() 863 page_pool_get_dma_dir(rx_ring->page_pool); in netsec_xdp_queue_one() 922 page_pool_put_page(dring->page_pool, page, sync, true); in netsec_run_xdp() 932 page_pool_put_page(dring->page_pool, page, sync, true); in netsec_run_xdp() 944 page_pool_put_page(dring->page_pool, page, sync, true); in netsec_run_xdp() 966 dma_dir = page_pool_get_dma_dir(dring->page_pool); in netsec_process_rx() 1041 page_pool_put_page(dring->page_pool, page, pkt_len, in netsec_process_rx() 1218 page_pool_put_full_page(dring->page_pool, page, false); in netsec_uninit_pkt_dring() 1230 page_pool_destroy(dring->page_pool); in netsec_uninit_pkt_dring() [all …]
|
| /linux/drivers/net/ethernet/marvell/octeontx2/nic/ |
| H A D | otx2_txrx.h | 133 struct page_pool *page_pool; member
|
| /linux/drivers/net/ethernet/meta/fbnic/ |
| H A D | fbnic_txrx.h | 129 struct page_pool *page_pool; member
|
| /linux/drivers/net/ethernet/ti/ |
| H A D | am65-cpsw-nuss.h | 103 struct page_pool *page_pool; member
|
| /linux/tools/testing/selftests/net/bench/ |
| H A D | Makefile | 3 TEST_GEN_MODS_DIR := page_pool
|
| /linux/drivers/net/ |
| H A D | veth.c | 71 struct page_pool *page_pool; member 189 if (!priv->rq[i].page_pool) in veth_get_page_pool_stats() 191 page_pool_get_stats(priv->rq[i].page_pool, &pp_stats); in veth_get_page_pool_stats() 761 if (skb_pp_cow_data(rq->page_pool, pskb, XDP_PACKET_HEADROOM)) in veth_convert_skb_to_xdp_buff() 1016 rq->page_pool = page_pool_create(&pp_params); in veth_create_page_pool() 1017 if (IS_ERR(rq->page_pool)) { in veth_create_page_pool() 1018 int err = PTR_ERR(rq->page_pool); in veth_create_page_pool() 1020 rq->page_pool = NULL; in veth_create_page_pool() 1061 page_pool_destroy(priv->rq[i].page_pool); in __veth_napi_enable_range() 1062 priv->rq[i].page_pool = NULL; in __veth_napi_enable_range() [all …]
|