| /linux-6.15/include/net/ |
| H A D | netmem.h | 107 return (__force struct page *)netmem; in __netmem_to_page() 118 return __netmem_to_page(netmem); in netmem_to_page() 123 if (netmem_is_net_iov(netmem)) in netmem_to_net_iov() 157 if (netmem_is_net_iov(netmem)) in netmem_ref_count() 165 if (netmem_is_net_iov(netmem)) in netmem_pfn_trace() 208 if (netmem_is_net_iov(netmem)) in netmem_is_pref_nid() 217 if (netmem_is_net_iov(netmem)) in netmem_compound_head() 218 return netmem; in netmem_compound_head() 241 if (netmem_is_net_iov(netmem)) in netmem_address() 244 return __netmem_address(netmem); in netmem_address() [all …]
|
| H A D | xdp.h | 169 void xdp_return_frag(netmem_ref netmem, const struct xdp_buff *xdp); 190 static inline bool __xdp_buff_add_frag(struct xdp_buff *xdp, netmem_ref netmem, in __xdp_buff_add_frag() argument 211 if (try_coalesce && netmem == skb_frag_netmem(prev) && in __xdp_buff_add_frag() 215 xdp_return_frag(netmem, xdp); in __xdp_buff_add_frag() 220 __skb_fill_netmem_desc_noacc(sinfo, nr_frags++, netmem, in __xdp_buff_add_frag() 244 static inline bool xdp_buff_add_frag(struct xdp_buff *xdp, netmem_ref netmem, in xdp_buff_add_frag() argument 247 if (!__xdp_buff_add_frag(xdp, netmem, offset, size, truesize, true)) in xdp_buff_add_frag() 250 if (unlikely(netmem_is_pfmemalloc(netmem))) in xdp_buff_add_frag() 409 void __xdp_return(netmem_ref netmem, enum xdp_mem_type mem_type,
|
| /linux-6.15/net/core/ |
| H A D | page_pool.c | 417 netmem = 0; in page_pool_refill_alloc_cache() 428 return netmem; in page_pool_refill_alloc_cache() 445 return netmem; in __page_pool_get_cached() 575 netmem = 0; in __page_pool_alloc_pages_slow() 579 return netmem; in __page_pool_alloc_pages_slow() 591 if (netmem) in page_pool_alloc_netmems() 832 netmem = in page_pool_put_unrefed_netmem() 834 if (netmem && !page_pool_recycle_in_ring(pool, netmem)) { in page_pool_put_unrefed_netmem() 934 netmem = __page_pool_put_page(pool, netmem, -1, in page_pool_put_netmem_bulk() 937 if (netmem) in page_pool_put_netmem_bulk() [all …]
|
| H A D | netmem_priv.h | 6 static inline unsigned long netmem_get_pp_magic(netmem_ref netmem) in netmem_get_pp_magic() argument 8 return __netmem_clear_lsb(netmem)->pp_magic; in netmem_get_pp_magic() 11 static inline void netmem_or_pp_magic(netmem_ref netmem, unsigned long pp_magic) in netmem_or_pp_magic() argument 13 __netmem_clear_lsb(netmem)->pp_magic |= pp_magic; in netmem_or_pp_magic() 16 static inline void netmem_clear_pp_magic(netmem_ref netmem) in netmem_clear_pp_magic() argument 18 __netmem_clear_lsb(netmem)->pp_magic = 0; in netmem_clear_pp_magic() 21 static inline void netmem_set_pp(netmem_ref netmem, struct page_pool *pool) in netmem_set_pp() argument 23 __netmem_clear_lsb(netmem)->pp = pool; in netmem_set_pp() 26 static inline void netmem_set_dma_addr(netmem_ref netmem, in netmem_set_dma_addr() argument 29 __netmem_clear_lsb(netmem)->dma_addr = dma_addr; in netmem_set_dma_addr()
|
| H A D | page_pool_priv.h | 19 page_pool_set_dma_addr_netmem(netmem_ref netmem, dma_addr_t addr) in page_pool_set_dma_addr_netmem() argument 22 netmem_set_dma_addr(netmem, addr >> PAGE_SHIFT); in page_pool_set_dma_addr_netmem() 27 return addr != (dma_addr_t)netmem_get_dma_addr(netmem) in page_pool_set_dma_addr_netmem() 31 netmem_set_dma_addr(netmem, addr); in page_pool_set_dma_addr_netmem() 41 void page_pool_set_pp_info(struct page_pool *pool, netmem_ref netmem); 42 void page_pool_clear_pp_info(netmem_ref netmem); 47 netmem_ref netmem) in page_pool_set_pp_info() argument 50 static inline void page_pool_clear_pp_info(netmem_ref netmem) in page_pool_clear_pp_info() argument
|
| H A D | devmem.c | 325 netmem_ref netmem; in mp_dmabuf_devmem_alloc_netmems() local 331 netmem = net_iov_to_netmem(niov); in mp_dmabuf_devmem_alloc_netmems() 333 page_pool_set_pp_info(pool, netmem); in mp_dmabuf_devmem_alloc_netmems() 336 trace_page_pool_state_hold(pool, netmem, pool->pages_state_hold_cnt); in mp_dmabuf_devmem_alloc_netmems() 337 return netmem; in mp_dmabuf_devmem_alloc_netmems() 347 bool mp_dmabuf_devmem_release_page(struct page_pool *pool, netmem_ref netmem) in mp_dmabuf_devmem_release_page() argument 349 long refcount = atomic_long_read(netmem_get_pp_ref_count_ref(netmem)); in mp_dmabuf_devmem_release_page() 351 if (WARN_ON_ONCE(!netmem_is_net_iov(netmem))) in mp_dmabuf_devmem_release_page() 357 page_pool_clear_pp_info(netmem); in mp_dmabuf_devmem_release_page() 359 net_devmem_free_dmabuf(netmem_to_net_iov(netmem)); in mp_dmabuf_devmem_release_page()
|
| H A D | xdp.c | 437 netmem = netmem_compound_head(netmem); in __xdp_return() 443 page_pool_put_full_netmem(netmem_get_pp(netmem), netmem, in __xdp_return() 447 page_frag_free(__netmem_address(netmem)); in __xdp_return() 450 put_page(__netmem_to_page(netmem)); in __xdp_return() 544 __xdp_return(netmem, xdp->rxq->mem.type, true, NULL); in xdp_return_frag() 702 netmem_ref netmem; in xdp_copy_frags_from_zc() local 704 netmem = page_pool_dev_alloc_netmem(pp, &offset, &truesize); in xdp_copy_frags_from_zc() 705 if (unlikely(!netmem)) { in xdp_copy_frags_from_zc() 710 memcpy(__netmem_address(netmem), in xdp_copy_frags_from_zc() 711 __netmem_address(xinfo->frags[i].netmem), in xdp_copy_frags_from_zc() [all …]
|
| H A D | mp_dmabuf_devmem.h | 20 bool mp_dmabuf_devmem_release_page(struct page_pool *pool, netmem_ref netmem); 38 mp_dmabuf_devmem_release_page(struct page_pool *pool, netmem_ref netmem) in mp_dmabuf_devmem_release_page() argument
|
| H A D | skbuff.c | 121 offsetof(skb_frag_t, netmem)); 123 sizeof_field(skb_frag_t, netmem)); 851 void skb_add_rx_frag_netmem(struct sk_buff *skb, int i, netmem_ref netmem, in skb_add_rx_frag_netmem() argument 856 skb_fill_netmem_desc(skb, i, netmem, off, size); in skb_add_rx_frag_netmem() 896 static bool is_pp_netmem(netmem_ref netmem) in is_pp_netmem() argument 898 return (netmem_get_pp_magic(netmem) & ~0x3UL) == PP_SIGNATURE; in is_pp_netmem() 994 bool napi_pp_put_page(netmem_ref netmem) in napi_pp_put_page() argument 996 netmem = netmem_compound_head(netmem); in napi_pp_put_page() 1005 if (unlikely(!is_pp_netmem(netmem))) in napi_pp_put_page() 1008 page_pool_put_full_netmem(netmem_get_pp(netmem), netmem, false); in napi_pp_put_page() [all …]
|
| H A D | sock.c | 1111 netmem_ref netmem = (__force netmem_ref)__xa_erase( in sock_devmem_dontneed() local 1114 if (!netmem || WARN_ON_ONCE(!netmem_is_net_iov(netmem))) in sock_devmem_dontneed() 1117 netmems[netmem_num++] = netmem; in sock_devmem_dontneed()
|
| /linux-6.15/include/trace/events/ |
| H A D | page_pool.h | 45 netmem_ref netmem, u32 release), 47 TP_ARGS(pool, netmem, release), 51 __field(unsigned long, netmem) 58 __entry->netmem = (__force unsigned long)netmem; 60 __entry->pfn = netmem_pfn_trace(netmem); 64 __entry->pool, (void *)__entry->netmem, 71 netmem_ref netmem, u32 hold), 73 TP_ARGS(pool, netmem, hold), 77 __field(unsigned long, netmem) 84 __entry->netmem = (__force unsigned long)netmem; [all …]
|
| /linux-6.15/include/net/page_pool/ |
| H A D | helpers.h | 123 netmem_ref netmem; in page_pool_alloc_netmem() local 132 if (unlikely(!netmem)) in page_pool_alloc_netmem() 144 return netmem; in page_pool_alloc_netmem() 310 atomic_long_inc(netmem_get_pp_ref_count_ref(netmem)); in page_pool_ref_netmem() 321 return page_pool_unref_netmem(netmem, 1) == 0; in page_pool_unref_and_test() 325 netmem_ref netmem, in page_pool_put_netmem() argument 333 if (!page_pool_unref_and_test(netmem)) in page_pool_put_netmem() 363 netmem_ref netmem, in page_pool_put_full_netmem() argument 417 dma_addr_t ret = netmem_get_dma_addr(netmem); in page_pool_get_dma_addr_netmem() 473 const netmem_ref netmem, u32 offset, in page_pool_dma_sync_netmem_for_cpu() argument [all …]
|
| H A D | memory_provider.h | 14 bool (*release_netmem)(struct page_pool *pool, netmem_ref netmem); 46 netmem_ref netmem) in net_mp_netmem_place_in_cache() argument 48 pool->alloc.cache[pool->alloc.count++] = netmem; in net_mp_netmem_place_in_cache()
|
| H A D | types.h | 90 void (*init_callback)(netmem_ref netmem, void *arg); 283 void page_pool_put_unrefed_netmem(struct page_pool *pool, netmem_ref netmem,
|
| /linux-6.15/Documentation/networking/ |
| H A D | netmem.rst | 7 This document outlines the requirements for network drivers to support netmem, 9 supporting netmem, drivers can work with various underlying memory types 17 * Future-proof: Drivers with netmem support are ready for upcoming 29 3. The driver must use the page_pool netmem APIs for payload memory. The netmem 38 Not all page APIs have netmem equivalents at the moment. If your driver 41 the netmem API. 45 - PP_FLAG_DMA_MAP: netmem is not dma-mappable by the driver. The driver 55 The netmem returned by the page_pool may be unreadable, in which case 57 unreadable netmem, i.e. don't attempt to handle its contents when 61 helpers like netmem_is_net_iov() or convert the netmem to any of its [all …]
|
| H A D | index.rst | 90 netmem
|
| /linux-6.15/drivers/net/ethernet/google/gve/ |
| H A D | gve_buffer_mgmt_dqo.c | 209 netmem_ref netmem = buf_state->page_info.netmem; in gve_free_to_page_pool() local 211 if (!netmem) in gve_free_to_page_pool() 214 page_pool_put_full_netmem(netmem_get_pp(netmem), netmem, allow_direct); in gve_free_to_page_pool() 215 buf_state->page_info.netmem = 0; in gve_free_to_page_pool() 221 netmem_ref netmem; in gve_alloc_from_page_pool() local 224 netmem = page_pool_alloc_netmem(rx->dqo.page_pool, in gve_alloc_from_page_pool() 229 if (!netmem) in gve_alloc_from_page_pool() 232 buf_state->page_info.netmem = netmem; in gve_alloc_from_page_pool() 233 buf_state->page_info.page_address = netmem_address(netmem); in gve_alloc_from_page_pool() 234 buf_state->addr = page_pool_get_dma_addr_netmem(netmem); in gve_alloc_from_page_pool() [all …]
|
| H A D | gve_rx_dqo.c | 495 buf_state->page_info.netmem, in gve_skb_add_rx_frag() 615 if (!netmem_is_net_iov(buf_state->page_info.netmem)) in gve_rx_dqo() 616 prefetch(netmem_to_page(buf_state->page_info.netmem)); in gve_rx_dqo()
|
| H A D | gve.h | 115 netmem_ref netmem; member
|
| /linux-6.15/include/linux/ |
| H A D | skbuff_ref.h | 35 bool napi_pp_put_page(netmem_ref netmem); 37 static inline void skb_page_unref(netmem_ref netmem, bool recycle) in skb_page_unref() argument 40 if (recycle && napi_pp_put_page(netmem)) in skb_page_unref() 43 put_page(netmem_to_page(netmem)); in skb_page_unref()
|
| H A D | skbuff.h | 363 netmem_ref netmem; member 2503 netmem_ref netmem, int off, in skb_frag_fill_netmem_desc() argument 2506 frag->netmem = netmem; in skb_frag_fill_netmem_desc() 2519 int i, netmem_ref netmem, in __skb_fill_netmem_desc_noacc() argument 2567 if (netmem_is_net_iov(netmem)) { in __skb_fill_netmem_desc() 2572 page = netmem_to_page(netmem); in __skb_fill_netmem_desc() 3594 return netmem_is_net_iov(frag->netmem); in skb_frag_is_net_iov() 3609 return netmem_to_net_iov(frag->netmem); in skb_frag_net_iov() 3624 return netmem_to_page(frag->netmem); in skb_frag_page() 3635 return frag->netmem; in skb_frag_netmem() [all …]
|
| /linux-6.15/io_uring/ |
| H A D | zcrx.c | 470 netmem_ref netmem = net_iov_to_netmem(niov); in io_zcrx_return_niov() local 477 page_pool_put_unrefed_netmem(niov->pp, netmem, -1, false); in io_zcrx_return_niov() 532 netmem_ref netmem; in io_zcrx_ring_refill() local 564 netmem = net_iov_to_netmem(niov); in io_zcrx_ring_refill() 565 if (page_pool_unref_netmem(netmem, 1) != 0) in io_zcrx_ring_refill() 574 net_mp_netmem_place_in_cache(pp, netmem); in io_zcrx_ring_refill() 588 netmem_ref netmem = net_iov_to_netmem(niov); in io_zcrx_refill_slow() local 592 net_mp_netmem_place_in_cache(pp, netmem); in io_zcrx_refill_slow() 620 if (WARN_ON_ONCE(!netmem_is_net_iov(netmem))) in io_pp_zc_release_netmem() 623 niov = netmem_to_net_iov(netmem); in io_pp_zc_release_netmem() [all …]
|
| /linux-6.15/net/xfrm/ |
| H A D | trace_iptfs.h | 54 ? page_address(netmem_to_page(skb_shinfo(skb)->frags[0].netmem))
|
| /linux-6.15/net/bpf/ |
| H A D | test_run.c | 130 static void xdp_test_run_init_page(netmem_ref netmem, void *arg) in xdp_test_run_init_page() argument 133 phys_to_virt(page_to_phys(netmem_to_page(netmem))); in xdp_test_run_init_page()
|
| /linux-6.15/net/ipv4/ |
| H A D | tcp_ipv4.c | 2534 void *netmem; local 2536 xa_for_each(&sk->sk_user_frags, index, netmem) 2537 WARN_ON_ONCE(!napi_pp_put_page((__force netmem_ref)netmem));
|