Lines Matching refs:xdpf
410 void xdp_return_frame(struct xdp_frame *xdpf)
415 if (likely(!xdp_frame_has_frags(xdpf)))
418 sinfo = xdp_get_shared_info_from_frame(xdpf);
422 __xdp_return(page_address(page), &xdpf->mem, false, NULL);
425 __xdp_return(xdpf->data, &xdpf->mem, false, NULL);
429 void xdp_return_frame_rx_napi(struct xdp_frame *xdpf)
434 if (likely(!xdp_frame_has_frags(xdpf)))
437 sinfo = xdp_get_shared_info_from_frame(xdpf);
441 __xdp_return(page_address(page), &xdpf->mem, true, NULL);
444 __xdp_return(xdpf->data, &xdpf->mem, true, NULL);
472 void xdp_return_frame_bulk(struct xdp_frame *xdpf,
475 struct xdp_mem_info *mem = &xdpf->mem;
479 xdp_return_frame(xdpf);
498 if (unlikely(xdp_frame_has_frags(xdpf))) {
502 sinfo = xdp_get_shared_info_from_frame(xdpf);
511 bq->q[bq->count++] = xdpf->data;
548 struct xdp_frame *xdpf;
556 if (sizeof(*xdpf) + totsize > PAGE_SIZE)
564 xdpf = addr;
565 memset(xdpf, 0, sizeof(*xdpf));
567 addr += sizeof(*xdpf);
571 xdpf->data = addr + metasize;
572 xdpf->len = totsize - metasize;
573 xdpf->headroom = 0;
574 xdpf->metasize = metasize;
575 xdpf->frame_sz = PAGE_SIZE;
576 xdpf->mem.type = MEM_TYPE_PAGE_ORDER0;
579 return xdpf;
600 struct sk_buff *__xdp_build_skb_from_frame(struct xdp_frame *xdpf,
604 struct skb_shared_info *sinfo = xdp_get_shared_info_from_frame(xdpf);
610 if (unlikely(xdp_frame_has_frags(xdpf)))
613 /* Part of headroom was reserved to xdpf */
614 headroom = sizeof(*xdpf) + xdpf->headroom;
619 frame_size = xdpf->frame_sz;
621 hard_start = xdpf->data - headroom;
627 __skb_put(skb, xdpf->len);
628 if (xdpf->metasize)
629 skb_metadata_set(skb, xdpf->metasize);
631 if (unlikely(xdp_frame_has_frags(xdpf)))
634 nr_frags * xdpf->frame_sz,
635 xdp_frame_is_frag_pfmemalloc(xdpf));
646 if (xdpf->mem.type == MEM_TYPE_PAGE_POOL)
650 xdp_scrub_frame(xdpf);
656 struct sk_buff *xdp_build_skb_from_frame(struct xdp_frame *xdpf,
667 return __xdp_build_skb_from_frame(xdpf, skb, dev);
671 struct xdp_frame *xdpf_clone(struct xdp_frame *xdpf)
678 headroom = xdpf->headroom + sizeof(*xdpf);
679 totalsize = headroom + xdpf->len;
688 memcpy(addr, xdpf, totalsize);