Lines Matching full:xdp
28 struct xdp_buff *xdp) in bnxt_xmit_bd() argument
38 if (xdp && xdp_buff_has_frags(xdp)) { in bnxt_xmit_bd()
39 sinfo = xdp_get_shared_info_from_buff(xdp); in bnxt_xmit_bd()
47 if (xdp) in bnxt_xmit_bd()
48 tx_buf->page = virt_to_head_page(xdp->data); in bnxt_xmit_bd()
96 struct xdp_buff *xdp) in __bnxt_xmit_xdp() argument
100 tx_buf = bnxt_xmit_bd(bp, txr, mapping, len, xdp); in __bnxt_xmit_xdp()
183 struct xdp_buff *xdp) in bnxt_xdp_buff_init() argument
198 xdp_init_buff(xdp, buflen, &rxr->xdp_rxq); in bnxt_xdp_buff_init()
199 xdp_prepare_buff(xdp, data_ptr - offset, offset, len, true); in bnxt_xdp_buff_init()
203 struct xdp_buff *xdp) in bnxt_xdp_buff_frags_free() argument
208 if (!xdp || !xdp_buff_has_frags(xdp)) in bnxt_xdp_buff_frags_free()
210 shinfo = xdp_get_shared_info_from_buff(xdp); in bnxt_xdp_buff_frags_free()
220 * true - packet consumed by XDP and new buffer is allocated.
224 struct xdp_buff *xdp, struct page *page, u8 **data_ptr, in bnxt_rx_xdp() argument
245 /* BNXT_RX_PAGE_MODE(bp) when XDP enabled */ in bnxt_rx_xdp()
246 orig_data = xdp->data; in bnxt_rx_xdp()
248 act = bpf_prog_run_xdp(xdp_prog, xdp); in bnxt_rx_xdp()
257 *len = xdp->data_end - xdp->data; in bnxt_rx_xdp()
258 if (orig_data != xdp->data) { in bnxt_rx_xdp()
259 offset = xdp->data - xdp->data_hard_start; in bnxt_rx_xdp()
260 *data_ptr = xdp->data_hard_start + offset; in bnxt_rx_xdp()
272 if (unlikely(xdp_buff_has_frags(xdp))) { in bnxt_rx_xdp()
273 struct skb_shared_info *sinfo = xdp_get_shared_info_from_buff(xdp); in bnxt_rx_xdp()
281 bnxt_xdp_buff_frags_free(rxr, xdp); in bnxt_rx_xdp()
291 NEXT_RX(rxr->rx_prod), xdp); in bnxt_rx_xdp()
303 bnxt_xdp_buff_frags_free(rxr, xdp); in bnxt_rx_xdp()
308 if (xdp_do_redirect(bp->dev, xdp, xdp_prog)) { in bnxt_rx_xdp()
323 bnxt_xdp_buff_frags_free(rxr, xdp); in bnxt_rx_xdp()
357 struct xdp_frame *xdp = frames[i]; in bnxt_xdp_xmit() local
362 mapping = dma_map_single(&pdev->dev, xdp->data, xdp->len, in bnxt_xdp_xmit()
368 __bnxt_xmit_xdp_redirect(bp, txr, mapping, xdp->len, xdp); in bnxt_xdp_xmit()
393 netdev_warn(dev, "MTU %d larger than %d without XDP frag support.\n", in bnxt_xdp_set()
398 netdev_warn(dev, "XDP is disallowed when HDS is enabled.\n"); in bnxt_xdp_set()
402 netdev_warn(dev, "ethtool rx/tx channels must be combined to support XDP.\n"); in bnxt_xdp_set()
414 netdev_warn(dev, "Unable to reserve enough TX rings to support XDP.\n"); in bnxt_xdp_set()
444 int bnxt_xdp(struct net_device *dev, struct netdev_bpf *xdp) in bnxt_xdp() argument
449 switch (xdp->command) { in bnxt_xdp()
451 rc = bnxt_xdp_set(bp, xdp->prog); in bnxt_xdp()
462 struct page_pool *pool, struct xdp_buff *xdp) in bnxt_xdp_build_skb() argument
464 struct skb_shared_info *sinfo = xdp_get_shared_info_from_buff(xdp); in bnxt_xdp_build_skb()
472 xdp_buff_is_frag_pfmemalloc(xdp)); in bnxt_xdp_build_skb()