xref: /linux/drivers/net/ethernet/intel/idpf/xsk.h (revision 96da9d67da780c9fc10edc8822dcc69d62898d8d)
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;
109705d655SAlexander Lobakin struct idpf_buf_queue;
11*96da9d67SAlexander Lobakin struct idpf_q_vector;
129705d655SAlexander Lobakin struct idpf_rx_queue;
138ff6d622SAlexander Lobakin struct idpf_tx_queue;
143d57b2c0SMichal Kubiak struct idpf_vport;
15*96da9d67SAlexander Lobakin struct net_device;
163d57b2c0SMichal Kubiak struct netdev_bpf;
173d57b2c0SMichal Kubiak 
188ff6d622SAlexander Lobakin void idpf_xsk_setup_queue(const struct idpf_vport *vport, void *q,
198ff6d622SAlexander Lobakin 			  enum virtchnl2_queue_type type);
208ff6d622SAlexander Lobakin void idpf_xsk_clear_queue(void *q, enum virtchnl2_queue_type type);
21*96da9d67SAlexander Lobakin void idpf_xsk_init_wakeup(struct idpf_q_vector *qv);
228ff6d622SAlexander Lobakin 
239705d655SAlexander Lobakin int idpf_xskfq_init(struct idpf_buf_queue *bufq);
249705d655SAlexander Lobakin void idpf_xskfq_rel(struct idpf_buf_queue *bufq);
258ff6d622SAlexander Lobakin void idpf_xsksq_clean(struct idpf_tx_queue *xdpq);
269705d655SAlexander Lobakin 
279705d655SAlexander Lobakin int idpf_xskrq_poll(struct idpf_rx_queue *rxq, u32 budget);
288ff6d622SAlexander Lobakin bool idpf_xsk_xmit(struct idpf_tx_queue *xsksq);
298ff6d622SAlexander Lobakin 
303d57b2c0SMichal Kubiak int idpf_xsk_pool_setup(struct idpf_vport *vport, struct netdev_bpf *xdp);
31*96da9d67SAlexander Lobakin int idpf_xsk_wakeup(struct net_device *dev, u32 qid, u32 flags);
323d57b2c0SMichal Kubiak 
333d57b2c0SMichal Kubiak #endif /* !_IDPF_XSK_H_ */
34