1*b3ad8450SAlexander Lobakin // SPDX-License-Identifier: GPL-2.0-only 2*b3ad8450SAlexander Lobakin /* Copyright (C) 2025 Intel Corporation */ 3*b3ad8450SAlexander Lobakin 4*b3ad8450SAlexander Lobakin #define DEFAULT_SYMBOL_NAMESPACE "LIBETH_XDP" 5*b3ad8450SAlexander Lobakin 6*b3ad8450SAlexander Lobakin #include <linux/export.h> 7*b3ad8450SAlexander Lobakin 8*b3ad8450SAlexander Lobakin #include <net/libeth/xsk.h> 9*b3ad8450SAlexander Lobakin 10*b3ad8450SAlexander Lobakin #include "priv.h" 11*b3ad8450SAlexander Lobakin 12*b3ad8450SAlexander Lobakin /* ``XDP_TX`` bulking */ 13*b3ad8450SAlexander Lobakin 14*b3ad8450SAlexander Lobakin void __cold libeth_xsk_tx_return_bulk(const struct libeth_xdp_tx_frame *bq, 15*b3ad8450SAlexander Lobakin u32 count) 16*b3ad8450SAlexander Lobakin { 17*b3ad8450SAlexander Lobakin for (u32 i = 0; i < count; i++) 18*b3ad8450SAlexander Lobakin libeth_xsk_buff_free_slow(bq[i].xsk); 19*b3ad8450SAlexander Lobakin } 20*b3ad8450SAlexander Lobakin 21*b3ad8450SAlexander Lobakin /* Rx polling path */ 22*b3ad8450SAlexander Lobakin 23*b3ad8450SAlexander Lobakin /** 24*b3ad8450SAlexander Lobakin * libeth_xsk_buff_free_slow - free an XSk Rx buffer 25*b3ad8450SAlexander Lobakin * @xdp: buffer to free 26*b3ad8450SAlexander Lobakin * 27*b3ad8450SAlexander Lobakin * Slowpath version of xsk_buff_free() to be used on exceptions, cleanups etc. 28*b3ad8450SAlexander Lobakin * to avoid unwanted inlining. 29*b3ad8450SAlexander Lobakin */ 30*b3ad8450SAlexander Lobakin void libeth_xsk_buff_free_slow(struct libeth_xdp_buff *xdp) 31*b3ad8450SAlexander Lobakin { 32*b3ad8450SAlexander Lobakin xsk_buff_free(&xdp->base); 33*b3ad8450SAlexander Lobakin } 34*b3ad8450SAlexander Lobakin EXPORT_SYMBOL_GPL(libeth_xsk_buff_free_slow); 35