xref: /linux/drivers/net/ethernet/intel/idpf/xsk.h (revision 55a42f78ffd386e01a5404419f8c5ded7db70a21)
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