1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* Copyright (C) 2025 Intel Corporation */ 3 4 #ifndef _IDPF_XSK_H_ 5 #define _IDPF_XSK_H_ 6 7 #include <linux/types.h> 8 9 enum virtchnl2_queue_type; 10 struct idpf_buf_queue; 11 struct idpf_q_vector; 12 struct idpf_rx_queue; 13 struct idpf_tx_queue; 14 struct idpf_vport; 15 struct net_device; 16 struct netdev_bpf; 17 18 void idpf_xsk_setup_queue(const struct idpf_vport *vport, void *q, 19 enum virtchnl2_queue_type type); 20 void idpf_xsk_clear_queue(void *q, enum virtchnl2_queue_type type); 21 void idpf_xsk_init_wakeup(struct idpf_q_vector *qv); 22 23 int idpf_xskfq_init(struct idpf_buf_queue *bufq); 24 void idpf_xskfq_rel(struct idpf_buf_queue *bufq); 25 void idpf_xsksq_clean(struct idpf_tx_queue *xdpq); 26 27 int idpf_xskrq_poll(struct idpf_rx_queue *rxq, u32 budget); 28 bool idpf_xsk_xmit(struct idpf_tx_queue *xsksq); 29 30 int idpf_xsk_pool_setup(struct idpf_vport *vport, struct netdev_bpf *xdp); 31 int idpf_xsk_wakeup(struct net_device *dev, u32 qid, u32 flags); 32 33 #endif /* !_IDPF_XSK_H_ */ 34