Home
last modified time | relevance | path

Searched refs:netmem (Results 1 – 25 of 38) sorted by relevance

12

/linux/include/net/
H A Dnetmem.h142 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 Dpage_pool.c379 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 Dnetmem_priv.h6 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 Dpage_pool_priv.h19 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 Ddevmem.c475 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 Dmp_dmabuf_devmem.h20 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 Dxdp.c433 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 Dskbuff.c126 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 Dpage_pool.h45 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 Drx.h45 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 Dxdp.h721 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 Dxdp.c265 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 Drx.c226 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 Dcontrolq.h254 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 Den_rx.c278 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 Dfbnic_txrx.c733 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 Dfbnic_txrx.h106 netmem_ref netmem; member
/linux/include/net/page_pool/
H A Dtypes.h103 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 Dskbuff.h362 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 Dzcrx.c712 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 Dindex.rst86 netmem
/linux/Documentation/translations/zh_CN/networking/
H A Dindex.rst28 netmem
/linux/drivers/net/ethernet/google/gve/
H A Dgve_rx_dqo.c589 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 Dbnge_netdev.c710 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 Dcontrolq.c26 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()

12