| /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() local 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() [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 | 475 netmem_ref netmem; in mp_dmabuf_devmem_alloc_netmems() local 481 netmem = net_iov_to_netmem(niov); in mp_dmabuf_devmem_alloc_netmems() 483 page_pool_set_pp_info(pool, netmem); in mp_dmabuf_devmem_alloc_netmems() 486 trace_page_pool_state_hold(pool, netmem, pool->pages_state_hold_cnt); in mp_dmabuf_devmem_alloc_netmems() 487 return netmem; in mp_dmabuf_devmem_alloc_netmems() 497 bool mp_dmabuf_devmem_release_page(struct page_pool *pool, netmem_ref netmem) in mp_dmabuf_devmem_release_page() argument 499 long refcount = atomic_long_read(netmem_get_pp_ref_count_ref(netmem)); in mp_dmabuf_devmem_release_page() 501 if (WARN_ON_ONCE(!netmem_is_net_iov(netmem))) in mp_dmabuf_devmem_release_page() 507 page_pool_clear_pp_info(netmem); in mp_dmabuf_devmem_release_page() 509 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)); 1029 bool napi_pp_put_page(netmem_ref netmem) in napi_pp_put_page() argument 1031 netmem = netmem_compound_head(netmem); in napi_pp_put_page() 1033 if (unlikely(!netmem_is_pp(netmem))) in napi_pp_put_page() 1036 page_pool_put_full_netmem(netmem_get_pp(netmem), netmem, false); in napi_pp_put_page() 1072 head_netmem = netmem_compound_head(shinfo->frags[i].netmem); in skb_pp_frag_ref() 7479 void __get_netmem(netmem_ref netmem) in __get_netmem() argument 7481 struct net_iov *niov = netmem_to_net_iov(netmem); in __get_netmem() 7484 net_devmem_get_net_iov(netmem_to_net_iov(netmem)); in __get_netmem() [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 111 buf->netmem = page_pool_dev_alloc_netmem(fq->pp, &buf->offset, in libeth_rx_alloc() 113 if (unlikely(!buf->netmem)) in libeth_rx_alloc() 116 return page_pool_get_dma_addr_netmem(buf->netmem) + buf->offset + in libeth_rx_alloc() 120 void libeth_rx_recycle_slow(netmem_ref netmem); 136 netmem_ref netmem = fqe->netmem; in libeth_rx_sync_for_cpu() local 143 libeth_rx_recycle_slow(netmem); in libeth_rx_sync_for_cpu() 147 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 | 226 void __cold libeth_rx_recycle_slow(netmem_ref netmem) in libeth_rx_recycle_slow() argument 228 page_pool_put_full_netmem(netmem_get_pp(netmem), netmem, false); in libeth_rx_recycle_slow()
|
| /linux/include/linux/net/intel/libie/ |
| H A D | controlq.h | 254 netmem_ref netmem; in libie_ctlq_release_rx_buf() local 259 netmem = virt_to_netmem(rx_buf->iov_base); in libie_ctlq_release_rx_buf() 260 page_pool_put_full_netmem(netmem_get_pp(netmem), netmem, false); in libie_ctlq_release_rx_buf()
|
| /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() 312 li->frag_page.netmem = 0; in mlx5e_mpwqe_linear_page_refill() 329 return netmem_address(li->frag_page.netmem) + frag_offset; in mlx5e_mpwqe_get_linear_page_frag() [all …]
|
| /linux/drivers/net/ethernet/meta/fbnic/ |
| H A D | fbnic_txrx.c | 733 netmem_ref netmem) in fbnic_page_pool_init() argument 737 page_pool_fragment_netmem(netmem, FBNIC_PAGECNT_BIAS_MAX); in fbnic_page_pool_init() 739 rx_buf->netmem = netmem; in fbnic_page_pool_init() 750 return netmem_to_page(rx_buf->netmem); in fbnic_page_pool_get_head() 760 return rx_buf->netmem; in fbnic_page_pool_get_data() 767 netmem_ref netmem = rx_buf->netmem; in fbnic_page_pool_drain() local 769 if (!page_pool_unref_netmem(netmem, rx_buf->pagecnt_bias)) in fbnic_page_pool_drain() 770 page_pool_put_unrefed_netmem(ring->page_pool, netmem, -1, in fbnic_page_pool_drain() 773 rx_buf->netmem = 0; in fbnic_page_pool_drain() 874 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/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 | 362 netmem_ref netmem; member 2552 netmem_ref netmem, int off, in skb_frag_fill_netmem_desc() argument 2555 frag->netmem = netmem; in skb_frag_fill_netmem_desc() 2568 int i, netmem_ref netmem, in __skb_fill_netmem_desc_noacc() argument 2573 skb_frag_fill_netmem_desc(frag, netmem, off, size); in __skb_fill_netmem_desc_noacc() 2610 __skb_fill_netmem_desc(struct sk_buff *skb, int i, netmem_ref netmem, in __skb_fill_netmem_desc() argument 2615 __skb_fill_netmem_desc_noacc(skb_shinfo(skb), i, netmem, off, size); in __skb_fill_netmem_desc() 2617 if (netmem_is_net_iov(netmem)) { in __skb_fill_netmem_desc() 2622 page = netmem_to_page(netmem); in __skb_fill_netmem_desc() 2641 skb_fill_netmem_desc(struct sk_buff *skb, int i, netmem_ref netmem, in skb_fill_netmem_desc() argument [all …]
|
| /linux/io_uring/ |
| H A D | zcrx.c | 712 netmem_ref netmem = net_iov_to_netmem(niov); in io_zcrx_return_niov() local 719 page_pool_put_unrefed_netmem(niov->desc.pp, netmem, -1, false); in io_zcrx_return_niov() 1246 netmem_ref netmem = net_iov_to_netmem(niov); in zcrx_put_refill_niov() local 1250 if (page_pool_unref_netmem(netmem, refs) != 0) in zcrx_put_refill_niov() 1399 static bool io_pp_zc_release_netmem(struct page_pool *pp, netmem_ref netmem) in io_pp_zc_release_netmem() argument 1403 if (WARN_ON_ONCE(!netmem_is_net_iov(netmem))) in io_pp_zc_release_netmem() 1406 niov = netmem_to_net_iov(netmem); in io_pp_zc_release_netmem() 1508 netmem_ref netmem = netmems[i]; in zcrx_return_buffers() local 1509 struct net_iov *niov = netmem_to_net_iov(netmem); in zcrx_return_buffers() 1513 if (!page_pool_unref_and_test(netmem)) in zcrx_return_buffers() [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/google/gve/ |
| H A D | gve_rx_dqo.c | 589 buf_state->page_info.netmem, in gve_skb_add_rx_frag() 797 page_info->netmem, in gve_dma_sync() 854 if (!netmem_is_net_iov(buf_state->page_info.netmem)) in gve_rx_dqo() 855 prefetch(netmem_to_page(buf_state->page_info.netmem)); in gve_rx_dqo() 892 netmem_is_net_iov(buf_state->page_info.netmem)) { in gve_rx_dqo() 953 netmem_is_net_iov(buf_state->page_info.netmem))) { in gve_rx_dqo()
|
| /linux/drivers/net/ethernet/broadcom/bnge/ |
| H A D | bnge_netdev.c | 710 netmem_ref netmem = rx_agg_buf->netmem; in bnge_free_one_agg_ring_bufs() local 712 if (!netmem) in bnge_free_one_agg_ring_bufs() 715 rx_agg_buf->netmem = 0; in bnge_free_one_agg_ring_bufs() 718 page_pool_recycle_direct_netmem(rxr->page_pool, netmem); in bnge_free_one_agg_ring_bufs() 1395 netmem_ref netmem; in __bnge_alloc_rx_netmem() local 1398 netmem = page_pool_alloc_frag_netmem(rxr->page_pool, offset, in __bnge_alloc_rx_netmem() 1401 netmem = page_pool_alloc_netmems(rxr->page_pool, gfp); in __bnge_alloc_rx_netmem() 1404 if (!netmem) in __bnge_alloc_rx_netmem() 1407 *mapping = page_pool_get_dma_addr_netmem(netmem) + *offset; in __bnge_alloc_rx_netmem() 1408 return netmem; in __bnge_alloc_rx_netmem() [all …]
|
| /linux/drivers/net/ethernet/intel/libie/ |
| H A D | controlq.c | 26 page_pool_put_full_netmem(fq.pp, fq.fqes[ntc].netmem, false); in libie_ctlq_free_fq() 610 .iov_base = netmem_address(rx_buf->netmem) + in libie_ctlq_fill_rx_msg() 618 page_pool_put_full_netmem(netmem_get_pp(rx_buf->netmem), in libie_ctlq_fill_rx_msg() 619 rx_buf->netmem, false); in libie_ctlq_fill_rx_msg()
|