xref: /linux/drivers/net/ethernet/intel/idpf/xsk.h (revision 9705d6552f5871a66b8701863567f11cee08dc76)
13d57b2c0SMichal Kubiak /* SPDX-License-Identifier: GPL-2.0-only */
23d57b2c0SMichal Kubiak /* Copyright (C) 2025 Intel Corporation */
33d57b2c0SMichal Kubiak 
43d57b2c0SMichal Kubiak #ifndef _IDPF_XSK_H_
53d57b2c0SMichal Kubiak #define _IDPF_XSK_H_
63d57b2c0SMichal Kubiak 
73d57b2c0SMichal Kubiak #include <linux/types.h>
83d57b2c0SMichal Kubiak 
98ff6d622SAlexander Lobakin enum virtchnl2_queue_type;
10*9705d655SAlexander Lobakin struct idpf_buf_queue;
11*9705d655SAlexander Lobakin struct idpf_rx_queue;
128ff6d622SAlexander Lobakin struct idpf_tx_queue;
133d57b2c0SMichal Kubiak struct idpf_vport;
143d57b2c0SMichal Kubiak struct netdev_bpf;
153d57b2c0SMichal Kubiak 
168ff6d622SAlexander Lobakin void idpf_xsk_setup_queue(const struct idpf_vport *vport, void *q,
178ff6d622SAlexander Lobakin 			  enum virtchnl2_queue_type type);
188ff6d622SAlexander Lobakin void idpf_xsk_clear_queue(void *q, enum virtchnl2_queue_type type);
198ff6d622SAlexander Lobakin 
20*9705d655SAlexander Lobakin int idpf_xskfq_init(struct idpf_buf_queue *bufq);
21*9705d655SAlexander Lobakin void idpf_xskfq_rel(struct idpf_buf_queue *bufq);
228ff6d622SAlexander Lobakin void idpf_xsksq_clean(struct idpf_tx_queue *xdpq);
23*9705d655SAlexander Lobakin 
24*9705d655SAlexander Lobakin int idpf_xskrq_poll(struct idpf_rx_queue *rxq, u32 budget);
258ff6d622SAlexander Lobakin bool idpf_xsk_xmit(struct idpf_tx_queue *xsksq);
268ff6d622SAlexander Lobakin 
273d57b2c0SMichal Kubiak int idpf_xsk_pool_setup(struct idpf_vport *vport, struct netdev_bpf *xdp);
283d57b2c0SMichal Kubiak 
293d57b2c0SMichal Kubiak #endif /* !_IDPF_XSK_H_ */
30