1*26ce8eb0SAlexander Lobakin /* SPDX-License-Identifier: GPL-2.0-only */ 2*26ce8eb0SAlexander Lobakin /* Copyright (C) 2025 Intel Corporation */ 3*26ce8eb0SAlexander Lobakin 4*26ce8eb0SAlexander Lobakin #ifndef __LIBETH_PRIV_H 5*26ce8eb0SAlexander Lobakin #define __LIBETH_PRIV_H 6*26ce8eb0SAlexander Lobakin 7*26ce8eb0SAlexander Lobakin #include <linux/types.h> 8*26ce8eb0SAlexander Lobakin 9*26ce8eb0SAlexander Lobakin /* XDP */ 10*26ce8eb0SAlexander Lobakin 11*26ce8eb0SAlexander Lobakin struct skb_shared_info; 12*26ce8eb0SAlexander Lobakin struct xdp_frame_bulk; 13*26ce8eb0SAlexander Lobakin 14*26ce8eb0SAlexander Lobakin struct libeth_xdp_ops { 15*26ce8eb0SAlexander Lobakin void (*bulk)(const struct skb_shared_info *sinfo, 16*26ce8eb0SAlexander Lobakin struct xdp_frame_bulk *bq, bool frags); 17*26ce8eb0SAlexander Lobakin }; 18*26ce8eb0SAlexander Lobakin 19*26ce8eb0SAlexander Lobakin void libeth_attach_xdp(const struct libeth_xdp_ops *ops); 20*26ce8eb0SAlexander Lobakin 21*26ce8eb0SAlexander Lobakin static inline void libeth_detach_xdp(void) 22*26ce8eb0SAlexander Lobakin { 23*26ce8eb0SAlexander Lobakin libeth_attach_xdp(NULL); 24*26ce8eb0SAlexander Lobakin } 25*26ce8eb0SAlexander Lobakin 26*26ce8eb0SAlexander Lobakin #endif /* __LIBETH_PRIV_H */ 27