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