xref: /linux/drivers/net/ethernet/intel/ixd/ixd_ctlq.h (revision 91ec2035134982b98fab0609a9fd8480e8217dc1)
1*29735d99SLarysa Zaremba /* SPDX-License-Identifier: GPL-2.0-only */
2*29735d99SLarysa Zaremba /* Copyright (C) 2025 Intel Corporation */
3*29735d99SLarysa Zaremba 
4*29735d99SLarysa Zaremba #ifndef _IXD_CTLQ_H_
5*29735d99SLarysa Zaremba #define _IXD_CTLQ_H_
6*29735d99SLarysa Zaremba 
7*29735d99SLarysa Zaremba #include <linux/net/intel/virtchnl2.h>
8*29735d99SLarysa Zaremba 
9*29735d99SLarysa Zaremba #define IXD_CTLQ_TIMEOUT 2000
10*29735d99SLarysa Zaremba 
11*29735d99SLarysa Zaremba /**
12*29735d99SLarysa Zaremba  * struct ixd_ctlq_req - Standard virtchnl request description
13*29735d99SLarysa Zaremba  * @opcode: protocol opcode, only virtchnl2 is needed for now
14*29735d99SLarysa Zaremba  * @send_size: required length of the send buffer
15*29735d99SLarysa Zaremba  * @send_buff_init: function to initialize the allocated send buffer
16*29735d99SLarysa Zaremba  * @recv_process: function to handle the CP response
17*29735d99SLarysa Zaremba  * @ctx: additional context for callbacks
18*29735d99SLarysa Zaremba  */
19*29735d99SLarysa Zaremba struct ixd_ctlq_req {
20*29735d99SLarysa Zaremba 	enum virtchnl2_op opcode;
21*29735d99SLarysa Zaremba 	size_t send_size;
22*29735d99SLarysa Zaremba 	void (*send_buff_init)(struct ixd_adapter *adapter, void *send_buff,
23*29735d99SLarysa Zaremba 			       void *ctx);
24*29735d99SLarysa Zaremba 	int (*recv_process)(struct ixd_adapter *adapter, void *recv_buff,
25*29735d99SLarysa Zaremba 			    size_t recv_size, void *ctx);
26*29735d99SLarysa Zaremba 	void *ctx;
27*29735d99SLarysa Zaremba };
28*29735d99SLarysa Zaremba 
29*29735d99SLarysa Zaremba void ixd_ctlq_clean_sq(struct ixd_adapter *adapter, bool force);
30*29735d99SLarysa Zaremba int ixd_ctlq_do_req(struct ixd_adapter *adapter,
31*29735d99SLarysa Zaremba 		    const struct ixd_ctlq_req *req);
32*29735d99SLarysa Zaremba void ixd_ctlq_rx_task(struct work_struct *work);
33*29735d99SLarysa Zaremba 
34*29735d99SLarysa Zaremba #endif /* _IXD_CTLQ_H_ */
35