| /linux/include/net/ |
| H A D | netmem.h | 156 /* netmem */ in net_iov_idx() 168 static inline bool netmem_is_net_iov(const netmem_ref netmem) 170 return (__force unsigned long)netmem & NET_IOV; 174 * __netmem_to_page - unsafely get pointer to the &page backing @netmem in netmem_is_net_iov() 175 * @netmem: netmem reference to convert in netmem_is_net_iov() 177 * Unsafe version of netmem_to_page(). When @netmem is always page-backed, 179 * object code (no check for the LSB, no WARN). When @netmem points to IOV, 182 * Return: pointer to the &page (garbage if @netmem is not page-backed). 184 static inline struct page *__netmem_to_page(netmem_ref netmem) 172 netmem_is_net_iov(const netmem_ref netmem) netmem_is_net_iov() argument 188 __netmem_to_page(netmem_ref netmem) __netmem_to_page() argument 193 netmem_to_page(netmem_ref netmem) netmem_to_page() argument 201 netmem_to_net_iov(netmem_ref netmem) netmem_to_net_iov() argument 231 netmem_ref_count(netmem_ref netmem) netmem_ref_count() argument 242 netmem_pfn_trace(netmem_ref netmem) netmem_pfn_trace() argument 263 __netmem_to_nmdesc(netmem_ref netmem) __netmem_to_nmdesc() argument 283 __netmem_clear_lsb(netmem_ref netmem) __netmem_clear_lsb() argument 316 __netmem_get_pp(netmem_ref netmem) __netmem_get_pp() argument 321 netmem_get_pp(netmem_ref netmem) netmem_get_pp() argument 326 netmem_get_pp_ref_count_ref(netmem_ref netmem) netmem_get_pp_ref_count_ref() argument 331 netmem_is_pref_nid(netmem_ref netmem,int pref_nid) netmem_is_pref_nid() argument 343 netmem_compound_head(netmem_ref netmem) netmem_compound_head() argument 363 __netmem_address(netmem_ref netmem) __netmem_address() argument 368 netmem_address(netmem_ref netmem) netmem_address() argument 383 netmem_is_pfmemalloc(netmem_ref netmem) netmem_is_pfmemalloc() argument 391 netmem_get_dma_addr(netmem_ref netmem) netmem_get_dma_addr() argument [all...] |
| /linux/net/core/ |
| H A D | page_pool.c | 376 static void page_pool_return_netmem(struct page_pool *pool, netmem_ref netmem); in page_pool_refill_alloc_cache() 381 netmem_ref netmem; in page_pool_refill_alloc_cache() 402 netmem = (__force netmem_ref)__ptr_ring_consume(r); in page_pool_refill_alloc_cache() 403 if (unlikely(!netmem)) in page_pool_refill_alloc_cache() 406 if (likely(netmem_is_pref_nid(netmem, pref_nid))) { in page_pool_refill_alloc_cache() 407 pool->alloc.cache[pool->alloc.count++] = netmem; in page_pool_refill_alloc_cache() 414 page_pool_return_netmem(pool, netmem); in page_pool_refill_alloc_cache() 416 netmem = 0; in page_pool_refill_alloc_cache() 423 netmem = pool->alloc.cache[--pool->alloc.count]; in page_pool_refill_alloc_cache() 427 return netmem; in __page_pool_get_cached() 377 netmem_ref netmem; page_pool_refill_alloc_cache() local 429 netmem_ref netmem; __page_pool_get_cached() local 444 __page_pool_dma_sync_for_device(const struct page_pool * pool,netmem_ref netmem,u32 dma_sync_size) __page_pool_dma_sync_for_device() argument 458 page_pool_dma_sync_for_device(const struct page_pool * pool,netmem_ref netmem,u32 dma_sync_size) page_pool_dma_sync_for_device() argument 472 page_pool_register_dma_index(struct page_pool * pool,netmem_ref netmem,gfp_t gfp) page_pool_register_dma_index() argument 497 page_pool_release_dma_index(struct page_pool * pool,netmem_ref netmem) page_pool_release_dma_index() argument 521 page_pool_dma_map(struct page_pool * pool,netmem_ref netmem,gfp_t gfp) page_pool_dma_map() argument 592 netmem_ref netmem; __page_pool_alloc_netmems_slow() local 652 netmem_ref netmem; page_pool_alloc_netmems() local 699 page_pool_set_pp_info(struct page_pool * pool,netmem_ref netmem) page_pool_set_pp_info() argument 715 page_pool_clear_pp_info(netmem_ref netmem) page_pool_clear_pp_info() argument 722 __page_pool_release_netmem_dma(struct page_pool * pool,netmem_ref netmem) __page_pool_release_netmem_dma() argument 749 page_pool_return_netmem(struct page_pool * pool,netmem_ref netmem) page_pool_return_netmem() argument 776 page_pool_recycle_in_ring(struct page_pool * pool,netmem_ref netmem) page_pool_recycle_in_ring() argument 795 page_pool_recycle_in_cache(netmem_ref netmem,struct page_pool * pool) page_pool_recycle_in_cache() argument 809 __page_pool_page_can_be_recycled(netmem_ref netmem) __page_pool_page_can_be_recycled() argument 823 __page_pool_put_page(struct page_pool * pool,netmem_ref netmem,unsigned int dma_sync_size,bool allow_direct) __page_pool_put_page() argument 895 page_pool_put_unrefed_netmem(struct page_pool * pool,netmem_ref netmem,unsigned int dma_sync_size,bool allow_direct) page_pool_put_unrefed_netmem() argument 971 netmem_ref netmem = netmem_compound_head(data[i]); page_pool_put_netmem_bulk() local 988 netmem_ref netmem = data[i]; page_pool_put_netmem_bulk() local 1019 page_pool_drain_frag(struct page_pool * pool,netmem_ref netmem) page_pool_drain_frag() argument 1039 netmem_ref netmem = pool->frag_page; page_pool_free_frag() local 1054 netmem_ref netmem = pool->frag_page; page_pool_alloc_frag_netmem() local 1104 netmem_ref netmem; page_pool_empty_ring() local 1135 netmem_ref netmem; page_pool_empty_alloc_cache_once() local 1311 netmem_ref netmem; page_pool_update_nid() local 1334 netmem_ref netmem = net_iov_to_netmem(niov); net_mp_niov_set_page_pool() local 1347 netmem_ref netmem = net_iov_to_netmem(niov); net_mp_niov_clear_page_pool() local [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_to_nmdesc(netmem)->pp_magic & ~PP_DMA_INDEX_MASK; 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_to_nmdesc(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 WARN_ON_ONCE(netmem_to_nmdesc(netmem)->pp_magic & PP_DMA_INDEX_MASK); in netmem_clear_pp_magic() 20 netmem_to_nmdesc(netmem)->pp_magic = 0; 23 static inline bool netmem_is_pp(netmem_ref netmem) in netmem_set_pp() 25 return (netmem_get_pp_magic(netmem) & PP_MAGIC_MASK) == PP_SIGNATURE; 28 static inline void netmem_set_pp(netmem_ref netmem, struc in netmem_set_dma_addr() 21 netmem_set_pp(netmem_ref netmem,struct page_pool * pool) netmem_set_pp() argument 26 netmem_set_dma_addr(netmem_ref netmem,unsigned long dma_addr) netmem_set_dma_addr() argument [all...] |
| 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 | 446 netmem_ref netmem; in mp_dmabuf_devmem_alloc_netmems() local 452 netmem = net_iov_to_netmem(niov); in mp_dmabuf_devmem_alloc_netmems() 454 page_pool_set_pp_info(pool, netmem); in mp_dmabuf_devmem_alloc_netmems() 457 trace_page_pool_state_hold(pool, netmem, pool->pages_state_hold_cnt); in mp_dmabuf_devmem_alloc_netmems() 458 return netmem; in mp_dmabuf_devmem_alloc_netmems() 468 bool mp_dmabuf_devmem_release_page(struct page_pool *pool, netmem_ref netmem) in mp_dmabuf_devmem_release_page() argument 470 long refcount = atomic_long_read(netmem_get_pp_ref_count_ref(netmem)); in mp_dmabuf_devmem_release_page() 472 if (WARN_ON_ONCE(!netmem_is_net_iov(netmem))) in mp_dmabuf_devmem_release_page() 478 page_pool_clear_pp_info(netmem); in mp_dmabuf_devmem_release_page() 480 net_devmem_free_dmabuf(netmem_to_net_iov(netmem)); in mp_dmabuf_devmem_release_page()
|
| 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 | 125 offsetof(skb_frag_t, netmem)); 127 sizeof_field(skb_frag_t, netmem)); 873 void skb_add_rx_frag_netmem(struct sk_buff *skb, int i, netmem_ref netmem, in skb_add_rx_frag_netmem() argument 878 skb_fill_netmem_desc(skb, i, netmem, off, size); in skb_add_rx_frag_netmem() 1011 bool napi_pp_put_page(netmem_ref netmem) in napi_pp_put_page() argument 1013 netmem = netmem_compound_head(netmem); in napi_pp_put_page() 1015 if (unlikely(!netmem_is_pp(netmem))) in napi_pp_put_page() 1018 page_pool_put_full_netmem(netmem_get_pp(netmem), netmem, false); in napi_pp_put_page() 1054 head_netmem = netmem_compound_head(shinfo->frags[i].netmem); in skb_pp_frag_ref() 7392 void get_netmem(netmem_ref netmem) in get_netmem() argument [all …]
|
| H A D | sock.c | 1115 netmem_ref netmem = (__force netmem_ref)__xa_erase( in sock_devmem_dontneed() 1118 if (!netmem || WARN_ON_ONCE(!netmem_is_net_iov(netmem))) in sock_devmem_dontneed() 1121 netmems[netmem_num++] = netmem; in sock_devmem_dontneed() 1109 netmem_ref netmem = (__force netmem_ref)__xa_erase( sock_devmem_dontneed() local
|
| /linux/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, 65 __entry->netmem & NET_IOV, __entry->pfn, __entry->release) 71 netmem_ref netmem, u32 hold), 73 TP_ARGS(pool, netmem, hold), 77 __field(unsigned long, netmem) [all …]
|
| /linux/include/net/libeth/ |
| H A D | rx.h | 45 netmem_ref netmem; member 109 buf->netmem = page_pool_dev_alloc_netmem(fq->pp, &buf->offset, in libeth_rx_alloc() 111 if (unlikely(!buf->netmem)) in libeth_rx_alloc() 114 return page_pool_get_dma_addr_netmem(buf->netmem) + buf->offset + in libeth_rx_alloc() 118 void libeth_rx_recycle_slow(netmem_ref netmem); 134 netmem_ref netmem = fqe->netmem; in libeth_rx_sync_for_cpu() local 141 libeth_rx_recycle_slow(netmem); in libeth_rx_sync_for_cpu() 145 page_pool_dma_sync_netmem_for_cpu(netmem_get_pp(netmem), netmem, in libeth_rx_sync_for_cpu()
|
| H A D | xdp.h | 721 netmem_ref netmem; in libeth_xdp_tx_fill_buf() local 732 netmem = skb_frag_netmem(frag); in libeth_xdp_tx_fill_buf() 734 .addr = page_pool_get_dma_addr_netmem(netmem) + in libeth_xdp_tx_fill_buf() 740 dma_sync_single_for_device(__netmem_get_pp(netmem)->p.dev, desc.addr, in libeth_xdp_tx_fill_buf() 1225 netmem_ref netmem = virt_to_netmem(data); in libeth_xdp_return_va() local 1227 page_pool_put_full_netmem(__netmem_get_pp(netmem), netmem, napi); in libeth_xdp_return_va() 1234 netmem_ref netmem = skb_frag_netmem(&sinfo->frags[i]); in libeth_xdp_return_frags() local 1236 page_pool_put_full_netmem(netmem_get_pp(netmem), netmem, napi); in libeth_xdp_return_frags() 1282 const struct page *page = __netmem_to_page(fqe->netmem); in libeth_xdp_prepare_buff()
|
| /linux/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_netmem(netmem); in skb_page_unref()
|
| H A D | skbuff.h | 362 netmem_ref netmem; member 2551 netmem_ref netmem, int off, in skb_frag_fill_netmem_desc() argument 2554 frag->netmem = netmem; in skb_frag_fill_netmem_desc() 2567 int i, netmem_ref netmem, in __skb_fill_netmem_desc_noacc() argument 2572 skb_frag_fill_netmem_desc(frag, netmem, off, size); in __skb_fill_netmem_desc_noacc() 2609 netmem_ref netmem, int off, int size) in __skb_fill_netmem_desc() argument 2613 __skb_fill_netmem_desc_noacc(skb_shinfo(skb), i, netmem, off, size); in __skb_fill_netmem_desc() 2615 if (netmem_is_net_iov(netmem)) { in __skb_fill_netmem_desc() 2620 page = netmem_to_page(netmem); in __skb_fill_netmem_desc() 2638 netmem_ref netmem, int off, int size) in skb_fill_netmem_desc() argument [all …]
|
| /linux/drivers/net/ethernet/intel/libeth/ |
| H A D | xdp.c | 265 netmem_ref netmem = fqe->netmem; in libeth_xdp_buff_add_frag() local 267 if (!xdp_buff_add_frag(&xdp->base, netmem, in libeth_xdp_buff_add_frag() 268 fqe->offset + netmem_get_pp(netmem)->p.offset, in libeth_xdp_buff_add_frag() 275 libeth_rx_recycle_slow(netmem); in libeth_xdp_buff_add_frag() 315 static void libeth_xdp_put_netmem_bulk(netmem_ref netmem, in libeth_xdp_put_netmem_bulk() argument 321 bq->q[bq->count++] = netmem; in libeth_xdp_put_netmem_bulk()
|
| H A D | rx.c | 222 void __cold libeth_rx_recycle_slow(netmem_ref netmem) in libeth_rx_recycle_slow() argument 224 page_pool_put_full_netmem(netmem_get_pp(netmem), netmem, false); in libeth_rx_recycle_slow()
|
| /linux/include/net/page_pool/ |
| 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 | 94 void (*init_callback)(netmem_ref netmem, void *arg); 291 void page_pool_put_unrefed_netmem(struct page_pool *pool, netmem_ref netmem,
|
| /linux/drivers/net/ethernet/mellanox/mlx5/core/ |
| H A D | en_rx.c | 280 netmem_ref netmem = page_pool_dev_alloc_netmems(pp); in mlx5e_page_alloc_fragmented() local 282 if (unlikely(!netmem)) in mlx5e_page_alloc_fragmented() 285 page_pool_fragment_netmem(netmem, MLX5E_PAGECNT_BIAS_MAX); in mlx5e_page_alloc_fragmented() 288 .netmem = netmem, in mlx5e_page_alloc_fragmented() 299 netmem_ref netmem = frag_page->netmem; in mlx5e_page_release_fragmented() local 301 if (page_pool_unref_netmem(netmem, drain_count) == 0) in mlx5e_page_release_fragmented() 302 page_pool_put_unrefed_netmem(pp, netmem, -1, true); in mlx5e_page_release_fragmented() 362 addr = page_pool_get_dma_addr_netmem(frag->frag_page->netmem); in mlx5e_alloc_rx_wqe() 503 netmem_ref netmem = frag_page->netmem; in mlx5e_add_skb_shared_info_frag() local 506 dma_addr_t addr = page_pool_get_dma_addr_netmem(netmem); in mlx5e_add_skb_shared_info_frag() [all …]
|
| /linux/io_uring/ |
| H A D | zcrx.c | 564 netmem_ref netmem = net_iov_to_netmem(niov); in io_zcrx_return_niov() local 571 page_pool_put_unrefed_netmem(niov->desc.pp, netmem, -1, false); in io_zcrx_return_niov() 928 netmem_ref netmem; in io_zcrx_ring_refill() local 935 netmem = net_iov_to_netmem(niov); in io_zcrx_ring_refill() 936 if (!page_pool_unref_and_test(netmem)) in io_zcrx_ring_refill() 945 net_mp_netmem_place_in_cache(pp, netmem); in io_zcrx_ring_refill() 958 netmem_ref netmem = net_iov_to_netmem(niov); in io_zcrx_refill_slow() local 962 net_mp_netmem_place_in_cache(pp, netmem); in io_zcrx_refill_slow() 986 static bool io_pp_zc_release_netmem(struct page_pool *pp, netmem_ref netmem) in io_pp_zc_release_netmem() argument 990 if (WARN_ON_ONCE(!netmem_is_net_iov(netmem))) in io_pp_zc_release_netmem() [all …]
|
| /linux/drivers/net/ethernet/google/gve/ |
| H A D | gve_rx_dqo.c | 553 buf_state->page_info.netmem, in gve_skb_add_rx_frag() 764 page_info->netmem, in gve_dma_sync() 821 if (!netmem_is_net_iov(buf_state->page_info.netmem)) in gve_rx_dqo() 822 prefetch(netmem_to_page(buf_state->page_info.netmem)); in gve_rx_dqo() 851 netmem_is_net_iov(buf_state->page_info.netmem)) { in gve_rx_dqo() 904 netmem_is_net_iov(buf_state->page_info.netmem))) { in gve_rx_dqo()
|
| H A D | gve.h | 117 netmem_ref netmem; member
|
| /linux/Documentation/translations/zh_CN/networking/ |
| H A D | index.rst | 28 netmem
|
| /linux/drivers/net/ethernet/intel/iavf/ |
| H A D | iavf_txrx.c | 726 libeth_rx_recycle_slow(rx_fqes->netmem); in iavf_clean_rx_ring() 1200 u32 hr = netmem_get_pp(rx_buffer->netmem)->p.offset; in iavf_add_rx_frag() 1203 rx_buffer->netmem, rx_buffer->offset + hr, in iavf_add_rx_frag() 1218 struct page *buf_page = __netmem_to_page(rx_buffer->netmem); in iavf_build_skb()
|
| /linux/drivers/net/ethernet/broadcom/bnxt/ |
| H A D | bnxt.c | 937 netmem_ref netmem; in __bnxt_alloc_rx_netmem() local 940 netmem = page_pool_alloc_frag_netmem(rxr->page_pool, offset, BNXT_RX_PAGE_SIZE, gfp); in __bnxt_alloc_rx_netmem() 942 netmem = page_pool_alloc_netmems(rxr->page_pool, gfp); in __bnxt_alloc_rx_netmem() 945 if (!netmem) in __bnxt_alloc_rx_netmem() 948 *mapping = page_pool_get_dma_addr_netmem(netmem) + *offset; in __bnxt_alloc_rx_netmem() 949 return netmem; in __bnxt_alloc_rx_netmem() 1041 netmem_ref netmem; in bnxt_alloc_rx_netmem() local 1043 netmem = __bnxt_alloc_rx_netmem(bp, &mapping, rxr, &offset, gfp); in bnxt_alloc_rx_netmem() 1044 if (!netmem) in bnxt_alloc_rx_netmem() 1054 rx_agg_buf->netmem = netmem; in bnxt_alloc_rx_netmem() [all …]
|
| /linux/net/bpf/ |
| H A D | test_run.c | 119 static void xdp_test_run_init_page(netmem_ref netmem, void *arg) in xdp_test_run_init_page() argument 122 phys_to_virt(page_to_phys(netmem_to_page(netmem))); in xdp_test_run_init_page()
|