xref: /linux/drivers/net/ethernet/pensando/ionic/ionic_api.h (revision 0e02faffdb80a95fdd8fb8482eecd3f006441c37)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /* Copyright (C) 2018-2025, Advanced Micro Devices, Inc. */
3 
4 #ifndef _IONIC_API_H_
5 #define _IONIC_API_H_
6 
7 #include <linux/auxiliary_bus.h>
8 #include "ionic_if.h"
9 #include "ionic_regs.h"
10 
11 /**
12  * struct ionic_aux_dev - Auxiliary device information
13  * @lif:        Logical interface
14  * @idx:        Index identifier
15  * @adev:       Auxiliary device
16  */
17 struct ionic_aux_dev {
18 	struct ionic_lif *lif;
19 	int idx;
20 	struct auxiliary_device adev;
21 };
22 
23 /**
24  * struct ionic_admin_ctx - Admin command context
25  * @work:       Work completion wait queue element
26  * @cmd:        Admin command (64B) to be copied to the queue
27  * @comp:       Admin completion (16B) copied from the queue
28  */
29 struct ionic_admin_ctx {
30 	struct completion work;
31 	union ionic_adminq_cmd cmd;
32 	union ionic_adminq_comp comp;
33 };
34 
35 /**
36  * ionic_adminq_post_wait - Post an admin command and wait for response
37  * @lif:        Logical interface
38  * @ctx:        API admin command context
39  *
40  * Post the command to an admin queue in the ethernet driver.  If this command
41  * succeeds, then the command has been posted, but that does not indicate a
42  * completion.  If this command returns success, then the completion callback
43  * will eventually be called.
44  *
45  * Return: zero or negative error status
46  */
47 int ionic_adminq_post_wait(struct ionic_lif *lif, struct ionic_admin_ctx *ctx);
48 
49 /**
50  * ionic_error_to_errno - Transform ionic_if errors to os errno
51  * @code:       Ionic error number
52  *
53  * Return:      Negative OS error number or zero
54  */
55 int ionic_error_to_errno(enum ionic_status_code code);
56 
57 /**
58  * ionic_request_rdma_reset - request reset or disable the device or lif
59  * @lif:        Logical interface
60  *
61  * The reset is triggered asynchronously. It will wait until reset request
62  * completes or times out.
63  */
64 void ionic_request_rdma_reset(struct ionic_lif *lif);
65 
66 #endif /* _IONIC_API_H_ */
67