xref: /linux/drivers/net/ethernet/intel/libeth/priv.h (revision b3ad8450b4dc46c4ab0641f665068fd2a4d1adba)
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*b3ad8450SAlexander Lobakin struct libeth_xdp_buff;
12*b3ad8450SAlexander Lobakin struct libeth_xdp_tx_frame;
1326ce8eb0SAlexander Lobakin struct skb_shared_info;
1426ce8eb0SAlexander Lobakin struct xdp_frame_bulk;
1526ce8eb0SAlexander Lobakin 
16*b3ad8450SAlexander Lobakin void libeth_xsk_tx_return_bulk(const struct libeth_xdp_tx_frame *bq,
17*b3ad8450SAlexander Lobakin 			       u32 count);
18*b3ad8450SAlexander Lobakin 
1926ce8eb0SAlexander Lobakin struct libeth_xdp_ops {
2026ce8eb0SAlexander Lobakin 	void	(*bulk)(const struct skb_shared_info *sinfo,
2126ce8eb0SAlexander Lobakin 			struct xdp_frame_bulk *bq, bool frags);
22*b3ad8450SAlexander Lobakin 	void	(*xsk)(struct libeth_xdp_buff *xdp);
2326ce8eb0SAlexander Lobakin };
2426ce8eb0SAlexander Lobakin 
2526ce8eb0SAlexander Lobakin void libeth_attach_xdp(const struct libeth_xdp_ops *ops);
2626ce8eb0SAlexander Lobakin 
2726ce8eb0SAlexander Lobakin static inline void libeth_detach_xdp(void)
2826ce8eb0SAlexander Lobakin {
2926ce8eb0SAlexander Lobakin 	libeth_attach_xdp(NULL);
3026ce8eb0SAlexander Lobakin }
3126ce8eb0SAlexander Lobakin 
3226ce8eb0SAlexander Lobakin #endif /* __LIBETH_PRIV_H */
33