| /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 | 456 netmem_ref netmem; in mp_dmabuf_devmem_alloc_netmems() local 462 netmem = net_iov_to_netmem(niov); in mp_dmabuf_devmem_alloc_netmems() 464 page_pool_set_pp_info(pool, netmem); in mp_dmabuf_devmem_alloc_netmems() 467 trace_page_pool_state_hold(pool, netmem, pool->pages_state_hold_cnt); in mp_dmabuf_devmem_alloc_netmems() 468 return netmem; in mp_dmabuf_devmem_alloc_netmems() 478 bool mp_dmabuf_devmem_release_page(struct page_pool *pool, netmem_ref netmem) in mp_dmabuf_devmem_release_page() argument 480 long refcount = atomic_long_read(netmem_get_pp_ref_count_ref(netmem)); in mp_dmabuf_devmem_release_page() 482 if (WARN_ON_ONCE(!netmem_is_net_iov(netmem))) in mp_dmabuf_devmem_release_page() 488 page_pool_clear_pp_info(netmem); in mp_dmabuf_devmem_release_page() 490 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 | xdp.c | 433 void __xdp_return(netmem_ref netmem, enum xdp_mem_type mem_type, in __xdp_return() argument 438 netmem = netmem_compound_head(netmem); in __xdp_return() 444 page_pool_put_full_netmem(netmem_get_pp(netmem), netmem, in __xdp_return() 448 page_frag_free(__netmem_address(netmem)); in __xdp_return() 451 put_page(__netmem_to_page(netmem)); in __xdp_return() 543 void xdp_return_frag(netmem_ref netmem, const struct xdp_buff *xdp) in xdp_return_frag() argument 545 __xdp_return(netmem, xdp->rxq->mem.type, true, NULL); in xdp_return_frag()
|
| H A D | skbuff.c | 126 offsetof(skb_frag_t, netmem)); 128 sizeof_field(skb_frag_t, netmem)); 894 void skb_add_rx_frag_netmem(struct sk_buff *skb, int i, netmem_ref netmem, in skb_add_rx_frag_netmem() argument 899 skb_fill_netmem_desc(skb, i, netmem, off, size); in skb_add_rx_frag_netmem() 1032 bool napi_pp_put_page(netmem_ref netmem) in napi_pp_put_page() argument 1034 netmem = netmem_compound_head(netmem); in napi_pp_put_page() 1036 if (unlikely(!netmem_is_pp(netmem))) in napi_pp_put_page() 1039 page_pool_put_full_netmem(netmem_get_pp(netmem), netmem, false); in napi_pp_put_page() 1075 head_netmem = netmem_compound_head(shinfo->frags[i].netmem); in skb_pp_frag_ref() 7448 void __get_netmem(netmem_ref netmem) in __get_netmem() argument [all …]
|
| /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 __always_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); 292 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 | 596 netmem_ref netmem = net_iov_to_netmem(niov); in io_zcrx_return_niov() local 603 page_pool_put_unrefed_netmem(niov->desc.pp, netmem, -1, false); in io_zcrx_return_niov() 965 netmem_ref netmem; in io_zcrx_ring_refill() local 972 netmem = net_iov_to_netmem(niov); in io_zcrx_ring_refill() 973 if (!page_pool_unref_and_test(netmem)) in io_zcrx_ring_refill() 982 net_mp_netmem_place_in_cache(pp, netmem); in io_zcrx_ring_refill() 995 netmem_ref netmem = net_iov_to_netmem(niov); in io_zcrx_refill_slow() local 999 net_mp_netmem_place_in_cache(pp, netmem); in io_zcrx_refill_slow() 1023 static bool io_pp_zc_release_netmem(struct page_pool *pp, netmem_ref netmem) in io_pp_zc_release_netmem() argument 1027 if (WARN_ON_ONCE(!netmem_is_net_iov(netmem))) in io_pp_zc_release_netmem() [all …]
|
| /linux/drivers/net/ethernet/meta/fbnic/ |
| H A D | fbnic_txrx.c | 732 netmem_ref netmem) in fbnic_page_pool_init() argument 736 page_pool_fragment_netmem(netmem, FBNIC_PAGECNT_BIAS_MAX); in fbnic_page_pool_init() 738 rx_buf->netmem = netmem; in fbnic_page_pool_init() 749 return netmem_to_page(rx_buf->netmem); in fbnic_page_pool_get_head() 759 return rx_buf->netmem; in fbnic_page_pool_get_data() 766 netmem_ref netmem = rx_buf->netmem; in fbnic_page_pool_drain() local 768 if (!page_pool_unref_netmem(netmem, rx_buf->pagecnt_bias)) in fbnic_page_pool_drain() 769 page_pool_put_unrefed_netmem(ring->page_pool, netmem, -1, in fbnic_page_pool_drain() 772 rx_buf->netmem = 0; in fbnic_page_pool_drain() 873 static void fbnic_bd_prep(struct fbnic_ring *bdq, u16 id, netmem_ref netmem) in fbnic_bd_prep() argument [all …]
|
| H A D | fbnic_txrx.h | 106 netmem_ref netmem; member
|
| /linux/drivers/net/ethernet/broadcom/bnge/ |
| H A D | bnge_netdev.c | 366 netmem_ref netmem = rx_agg_buf->netmem; in bnge_free_one_agg_ring_bufs() local 368 if (!netmem) in bnge_free_one_agg_ring_bufs() 371 rx_agg_buf->netmem = 0; in bnge_free_one_agg_ring_bufs() 374 page_pool_recycle_direct_netmem(rxr->page_pool, netmem); in bnge_free_one_agg_ring_bufs() 1049 netmem_ref netmem; in __bnge_alloc_rx_netmem() local 1052 netmem = page_pool_alloc_frag_netmem(rxr->page_pool, offset, in __bnge_alloc_rx_netmem() 1055 netmem = page_pool_alloc_netmems(rxr->page_pool, gfp); in __bnge_alloc_rx_netmem() 1058 if (!netmem) in __bnge_alloc_rx_netmem() 1061 *mapping = page_pool_get_dma_addr_netmem(netmem) + *offset; in __bnge_alloc_rx_netmem() 1062 return netmem; in __bnge_alloc_rx_netmem() [all …]
|
| /linux/drivers/net/ethernet/google/gve/ |
| H A D | gve_rx_dqo.c | 552 buf_state->page_info.netmem, in gve_skb_add_rx_frag() 763 page_info->netmem, in gve_dma_sync() 820 if (!netmem_is_net_iov(buf_state->page_info.netmem)) in gve_rx_dqo() 821 prefetch(netmem_to_page(buf_state->page_info.netmem)); in gve_rx_dqo() 850 netmem_is_net_iov(buf_state->page_info.netmem)) { in gve_rx_dqo() 903 netmem_is_net_iov(buf_state->page_info.netmem))) { in gve_rx_dqo()
|
| /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()
|