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