xref: /linux/drivers/net/ethernet/intel/libeth/priv.h (revision 8be4d31cb8aaeea27bde4b7ddb26e28a89062ebf)
126ce8eb0SAlexander Lobakin /* SPDX-License-Identifier: GPL-2.0-only */
226ce8eb0SAlexander Lobakin /* Copyright (C) 2025 Intel Corporation */
326ce8eb0SAlexander Lobakin 
426ce8eb0SAlexander Lobakin #ifndef __LIBETH_PRIV_H
526ce8eb0SAlexander Lobakin #define __LIBETH_PRIV_H
626ce8eb0SAlexander Lobakin 
726ce8eb0SAlexander Lobakin #include <linux/types.h>
826ce8eb0SAlexander Lobakin 
926ce8eb0SAlexander Lobakin /* XDP */
1026ce8eb0SAlexander Lobakin 
11*5495c58cSAlexander Lobakin enum xdp_action;
12b3ad8450SAlexander Lobakin struct libeth_xdp_buff;
13b3ad8450SAlexander Lobakin struct libeth_xdp_tx_frame;
1426ce8eb0SAlexander Lobakin struct skb_shared_info;
1526ce8eb0SAlexander Lobakin struct xdp_frame_bulk;
1626ce8eb0SAlexander Lobakin 
1740e846d1SAlexander Lobakin extern const struct xsk_tx_metadata_ops libeth_xsktmo_slow;
1840e846d1SAlexander Lobakin 
19b3ad8450SAlexander Lobakin void libeth_xsk_tx_return_bulk(const struct libeth_xdp_tx_frame *bq,
20b3ad8450SAlexander Lobakin 			       u32 count);
21*5495c58cSAlexander Lobakin u32 libeth_xsk_prog_exception(struct libeth_xdp_buff *xdp, enum xdp_action act,
22*5495c58cSAlexander Lobakin 			      int ret);
23b3ad8450SAlexander Lobakin 
2426ce8eb0SAlexander Lobakin struct libeth_xdp_ops {
2526ce8eb0SAlexander Lobakin 	void	(*bulk)(const struct skb_shared_info *sinfo,
2626ce8eb0SAlexander Lobakin 			struct xdp_frame_bulk *bq, bool frags);
27b3ad8450SAlexander Lobakin 	void	(*xsk)(struct libeth_xdp_buff *xdp);
2826ce8eb0SAlexander Lobakin };
2926ce8eb0SAlexander Lobakin 
3026ce8eb0SAlexander Lobakin void libeth_attach_xdp(const struct libeth_xdp_ops *ops);
3126ce8eb0SAlexander Lobakin 
libeth_detach_xdp(void)3226ce8eb0SAlexander Lobakin static inline void libeth_detach_xdp(void)
3326ce8eb0SAlexander Lobakin {
3426ce8eb0SAlexander Lobakin 	libeth_attach_xdp(NULL);
3526ce8eb0SAlexander Lobakin }
3626ce8eb0SAlexander Lobakin 
3726ce8eb0SAlexander Lobakin #endif /* __LIBETH_PRIV_H */
38