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