| /linux/include/net/ |
| H A D | netmem.h | 142 static inline bool netmem_is_net_iov(const netmem_ref netmem) in netmem_is_net_iov() argument 144 return (__force unsigned long)netmem & NET_IOV; in netmem_is_net_iov() 158 static inline struct page *__netmem_to_page(netmem_ref netmem) in __netmem_to_page() argument 160 return (__force struct page *)netmem; in __netmem_to_page() 163 static inline struct page *netmem_to_page(netmem_ref netmem) in netmem_to_page() argument 165 if (WARN_ON_ONCE(netmem_is_net_iov(netmem))) in netmem_to_page() 168 return __netmem_to_page(netmem); in netmem_to_page() 171 static inline struct net_iov *netmem_to_net_iov(netmem_ref netmem) in netmem_to_net_iov() argument 173 if (netmem_is_net_iov(netmem)) in netmem_to_net_iov() 174 return (struct net_iov *)((__force unsigned long)netmem & in netmem_to_net_iov() [all …]
|
| /linux/net/core/ |
| H A D | page_pool.c | 379 static void page_pool_return_netmem(struct page_pool *pool, netmem_ref netmem); 384 netmem_ref netmem; in page_pool_refill_alloc_cache() 405 netmem = (__force netmem_ref)__ptr_ring_consume(r); in page_pool_refill_alloc_cache() 406 if (unlikely(!netmem)) in page_pool_refill_alloc_cache() 409 if (likely(netmem_is_pref_nid(netmem, pref_nid))) { in page_pool_refill_alloc_cache() 410 pool->alloc.cache[pool->alloc.count++] = netmem; in page_pool_refill_alloc_cache() 417 page_pool_return_netmem(pool, netmem); in page_pool_refill_alloc_cache() 419 netmem = 0; in page_pool_refill_alloc_cache() 426 netmem = pool->alloc.cache[--pool->alloc.count]; in page_pool_refill_alloc_cache() 430 return netmem; in page_pool_refill_alloc_cache() 386 netmem_ref netmem; page_pool_refill_alloc_cache() local 438 netmem_ref netmem; __page_pool_get_cached() local 453 __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 467 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 481 page_pool_register_dma_index(struct page_pool * pool,netmem_ref netmem,gfp_t gfp) page_pool_register_dma_index() argument 506 page_pool_release_dma_index(struct page_pool * pool,netmem_ref netmem) page_pool_release_dma_index() argument 530 page_pool_dma_map(struct page_pool * pool,netmem_ref netmem,gfp_t gfp) page_pool_dma_map() argument 601 netmem_ref netmem; __page_pool_alloc_netmems_slow() local 661 netmem_ref netmem; page_pool_alloc_netmems() local 708 page_pool_set_pp_info(struct page_pool * pool,netmem_ref netmem) page_pool_set_pp_info() argument 724 page_pool_clear_pp_info(netmem_ref netmem) page_pool_clear_pp_info() argument 731 __page_pool_release_netmem_dma(struct page_pool * pool,netmem_ref netmem) __page_pool_release_netmem_dma() argument 758 page_pool_return_netmem(struct page_pool * pool,netmem_ref netmem) page_pool_return_netmem() argument 785 page_pool_recycle_in_ring(struct page_pool * pool,netmem_ref netmem) page_pool_recycle_in_ring() argument 804 page_pool_recycle_in_cache(netmem_ref netmem,struct page_pool * pool) page_pool_recycle_in_cache() argument 818 __page_pool_page_can_be_recycled(netmem_ref netmem) __page_pool_page_can_be_recycled() argument 832 __page_pool_put_page(struct page_pool * pool,netmem_ref netmem,unsigned int dma_sync_size,bool allow_direct) __page_pool_put_page() argument 904 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 980 netmem_ref netmem = netmem_compound_head(data[i]); page_pool_put_netmem_bulk() local 997 netmem_ref netmem = data[i]; page_pool_put_netmem_bulk() local 1028 page_pool_drain_frag(struct page_pool * pool,netmem_ref netmem) page_pool_drain_frag() argument 1048 netmem_ref netmem = pool->frag_page; page_pool_free_frag() local 1063 netmem_ref netmem = pool->frag_page; page_pool_alloc_frag_netmem() local 1113 netmem_ref netmem; page_pool_empty_ring() local 1139 netmem_ref netmem; page_pool_empty_alloc_cache_once() local 1315 netmem_ref netmem; page_pool_update_nid() local 1338 netmem_ref netmem = net_iov_to_netmem(niov); net_mp_niov_set_page_pool() local 1351 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; in netmem_clear_pp_magic() 23 static inline bool netmem_is_pp(netmem_ref netmem) in netmem_is_pp() argument 25 return (netmem_get_pp_magic(netmem) & PP_MAGIC_MASK) == PP_SIGNATURE; in netmem_is_pp() 28 static inline void netmem_set_pp(netmem_ref netmem, struct page_pool *pool) in netmem_set_pp() 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 | 468 netmem_ref netmem; in mp_dmabuf_devmem_alloc_netmems() 474 netmem = net_iov_to_netmem(niov); in mp_dmabuf_devmem_alloc_netmems() 476 page_pool_set_pp_info(pool, netmem); in mp_dmabuf_devmem_alloc_netmems() 479 trace_page_pool_state_hold(pool, netmem, pool->pages_state_hold_cnt); in mp_dmabuf_devmem_alloc_netmems() 480 return netmem; 490 bool mp_dmabuf_devmem_release_page(struct page_pool *pool, netmem_ref netmem) in mp_dmabuf_devmem_release_page() 492 long refcount = atomic_long_read(netmem_get_pp_ref_count_ref(netmem)); in mp_dmabuf_devmem_release_page() 494 if (WARN_ON_ONCE(!netmem_is_net_iov(netmem))) in mp_dmabuf_devmem_release_page() 500 page_pool_clear_pp_info(netmem); in mp_dmabuf_devmem_release_page() 502 net_devmem_free_dmabuf(netmem_to_net_iov(netmem)); in mp_dmabuf_devmem_release_page() 466 netmem_ref netmem; mp_dmabuf_devmem_alloc_netmems() local 488 mp_dmabuf_devmem_release_page(struct page_pool * pool,netmem_ref netmem) mp_dmabuf_devmem_release_page() argument [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 | 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 | 123 * netmem is a page. 126 offsetof(skb_frag_t, netmem)); 128 sizeof_field(skb_frag_t, netmem)); 1023 bool napi_pp_put_page(netmem_ref netmem) in napi_pp_put_page() 1025 netmem = netmem_compound_head(netmem); in napi_pp_put_page() 1027 if (unlikely(!netmem_is_pp(netmem))) in napi_pp_put_page() 1030 page_pool_put_full_netmem(netmem_get_pp(netmem), netmem, false); in napi_pp_put_page() 1066 head_netmem = netmem_compound_head(shinfo->frags[i].netmem); in skb_pp_frag_ref() 1021 napi_pp_put_page(netmem_ref netmem) napi_pp_put_page() argument 7470 __get_netmem(netmem_ref netmem) __get_netmem() argument 7479 __put_netmem(netmem_ref netmem) __put_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/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/drivers/net/ethernet/mellanox/mlx5/core/ |
| H A D | en_rx.c | 278 netmem_ref netmem = page_pool_dev_alloc_netmems(pp); in mlx5e_page_alloc_fragmented() local 280 if (unlikely(!netmem)) in mlx5e_page_alloc_fragmented() 283 page_pool_fragment_netmem(netmem, MLX5E_PAGECNT_BIAS_MAX); in mlx5e_page_alloc_fragmented() 286 .netmem = netmem, in mlx5e_page_alloc_fragmented() 297 netmem_ref netmem = frag_page->netmem; in mlx5e_page_release_fragmented() local 299 if (page_pool_unref_netmem(netmem, drain_count) == 0) in mlx5e_page_release_fragmented() 300 page_pool_put_unrefed_netmem(pp, netmem, -1, true); in mlx5e_page_release_fragmented() 310 if (likely(li->frag_page.netmem)) { in mlx5e_mpwqe_linear_page_refill() 530 netmem_ref netmem = frag_page->netmem; mlx5e_add_skb_shared_info_frag() local 561 netmem_ref netmem = frag_page->netmem; mlx5e_add_skb_frag() local 578 mlx5e_copy_skb_header(struct mlx5e_rq * rq,struct sk_buff * skb,netmem_ref netmem,dma_addr_t addr,int offset_from,int dma_offset,u32 headlen) mlx5e_copy_skb_header() argument [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/io_uring/ |
| H A D | zcrx.c | 640 netmem_ref netmem = net_iov_to_netmem(niov); in io_zcrx_scrub() 647 page_pool_put_unrefed_netmem(niov->desc.pp, netmem, -1, false); in io_zcrx_scrub() 1140 netmem_ref netmem; in io_pp_zc_init() 1147 netmem = net_iov_to_netmem(niov); in io_pp_zc_init() 1148 if (!page_pool_unref_and_test(netmem)) in io_pp_zc_init() 1156 netmems[allocated] = netmem; in io_pp_nl_fill() 1257 static bool io_pp_zc_release_netmem(struct page_pool *pp, netmem_ref netmem) in zcrx_flush_rq() 1261 if (WARN_ON_ONCE(!netmem_is_net_iov(netmem))) in io_zcrx_ctrl() 1264 niov = netmem_to_net_iov(netmem); in io_zcrx_ctrl() 1366 netmem_ref netmem in io_copy_page() 624 netmem_ref netmem = net_iov_to_netmem(niov); io_zcrx_return_niov() local 1051 netmem_ref netmem; io_zcrx_ring_refill() local 1119 io_pp_zc_release_netmem(struct page_pool * pp,netmem_ref netmem) io_pp_zc_release_netmem() argument 1220 netmem_ref netmem = netmems[i]; zcrx_return_buffers() local [all...] |
| /linux/include/net/page_pool/ |
| H A D | types.h | 103 void (*init_callback)(netmem_ref netmem, void *arg); 301 void page_pool_put_unrefed_netmem(struct page_pool *pool, netmem_ref netmem,
|
| /linux/include/linux/ |
| H A D | skbuff.h | 41 #include <net/netmem.h> 362 netmem_ref netmem; member 423 * @f_off: offset from start of f->netmem 2552 netmem_ref netmem, int off, in skb_frag_fill_netmem_desc() 2555 frag->netmem = netmem; in skb_frag_fill_netmem_desc() 2568 int i, netmem_ref netmem, in __skb_fill_netmem_desc_noacc() 2573 skb_frag_fill_netmem_desc(frag, netmem, off, size); in __skb_fill_netmem_desc_noacc() 2600 * @netmem: the netmem t 2553 skb_frag_fill_netmem_desc(skb_frag_t * frag,netmem_ref netmem,int off,int size) skb_frag_fill_netmem_desc() argument 2569 __skb_fill_netmem_desc_noacc(struct skb_shared_info * shinfo,int i,netmem_ref netmem,int off,int size) __skb_fill_netmem_desc_noacc() argument 2611 __skb_fill_netmem_desc(struct sk_buff * skb,int i,netmem_ref netmem,int off,int size) __skb_fill_netmem_desc() argument 2642 skb_fill_netmem_desc(struct sk_buff * skb,int i,netmem_ref netmem,int off,int size) skb_fill_netmem_desc() argument 2692 skb_add_rx_frag_netmem(struct sk_buff * skb,int i,netmem_ref netmem,int off,int size,unsigned int truesize) skb_add_rx_frag_netmem() argument 3981 skb_can_coalesce_netmem(struct sk_buff * skb,int i,netmem_ref netmem,int off) skb_can_coalesce_netmem() argument [all...] |
| /linux/Documentation/networking/ |
| H A D | index.rst | 86 netmem
|
| /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/intel/ice/ |
| H A D | ice_txrx.c | 555 libeth_rx_recycle_slow(rx_ring->rx_fqes[i].netmem); in ice_clean_rx_ring() 558 libeth_rx_recycle_slow(rx_ring->hdr_fqes[i].netmem); in ice_clean_rx_ring() 870 libeth_rx_recycle_slow(fq.fqes[ntu].netmem); in ice_alloc_rx_bufs() 1012 rx_buf->netmem = 0; in ice_clean_rx_irq()
|
| /linux/drivers/net/ethernet/intel/idpf/ |
| H A D | idpf_txrx.c | 349 if (unlikely(!rx_buf->netmem)) in idpf_rx_page_rel() 352 libeth_rx_recycle_slow(rx_buf->netmem); in idpf_rx_page_rel() 354 rx_buf->netmem = 0; in idpf_rx_page_rel() 3469 if (unlikely(netmem_is_net_iov(buf->netmem)) || in idpf_rx_hsplit_wa() 3473 hdr_page = __netmem_to_page(hdr->netmem); in idpf_rx_hsplit_wa() 3474 buf_page = __netmem_to_page(buf->netmem); in idpf_rx_hsplit_wa() 3618 hdr->netmem = 0; in idpf_rx_splitq_clean() 3622 rx_buf->netmem = 0; in idpf_rx_splitq_clean()
|
| /linux/drivers/net/ethernet/broadcom/bnxt/ |
| H A D | bnxt.c | 964 netmem_ref netmem; in __bnxt_alloc_rx_netmem() local 967 netmem = page_pool_alloc_frag_netmem(rxr->page_pool, offset, in __bnxt_alloc_rx_netmem() 970 netmem = page_pool_alloc_netmems(rxr->page_pool, gfp); in __bnxt_alloc_rx_netmem() 973 if (!netmem) in __bnxt_alloc_rx_netmem() 976 *mapping = page_pool_get_dma_addr_netmem(netmem) + *offset; in __bnxt_alloc_rx_netmem() 977 return netmem; in __bnxt_alloc_rx_netmem() 1072 netmem_ref netmem; in bnxt_alloc_rx_netmem() 1074 netmem = __bnxt_alloc_rx_netmem(bp, &mapping, rxr, &offset, gfp); in bnxt_alloc_rx_netmem() 1075 if (!netmem) in bnxt_alloc_rx_netmem() 1085 rx_agg_buf->netmem in bnxt_alloc_rx_netmem() 1069 netmem_ref netmem; bnxt_alloc_rx_netmem() local 1129 netmem_ref netmem; bnxt_reuse_rx_agg_bufs() local 1305 netmem_ref netmem; __bnxt_rx_agg_netmems() local 3561 netmem_ref netmem = rx_agg_buf->netmem; bnxt_free_one_rx_agg_ring() local [all...] |