xref: /linux/drivers/net/ethernet/intel/ixd/ixd_devlink.h (revision 91ec2035134982b98fab0609a9fd8480e8217dc1)
1*f290d48fSAmritha Nambiar /* SPDX-License-Identifier: GPL-2.0 */
2*f290d48fSAmritha Nambiar /* Copyright (c) 2025, Intel Corporation. */
3*f290d48fSAmritha Nambiar 
4*f290d48fSAmritha Nambiar #ifndef _IXD_DEVLINK_H_
5*f290d48fSAmritha Nambiar #define _IXD_DEVLINK_H_
6*f290d48fSAmritha Nambiar 
7*f290d48fSAmritha Nambiar #include <net/devlink.h>
8*f290d48fSAmritha Nambiar 
9*f290d48fSAmritha Nambiar #include "ixd.h"
10*f290d48fSAmritha Nambiar 
11*f290d48fSAmritha Nambiar struct ixd_adapter *ixd_adapter_alloc(struct device *dev);
12*f290d48fSAmritha Nambiar 
13*f290d48fSAmritha Nambiar /**
14*f290d48fSAmritha Nambiar  * ixd_devlink_free - teardown the devlink
15*f290d48fSAmritha Nambiar  * @adapter: the adapter structure to free
16*f290d48fSAmritha Nambiar  *
17*f290d48fSAmritha Nambiar  */
ixd_devlink_free(struct ixd_adapter * adapter)18*f290d48fSAmritha Nambiar static inline void ixd_devlink_free(struct ixd_adapter *adapter)
19*f290d48fSAmritha Nambiar {
20*f290d48fSAmritha Nambiar 	struct devlink *devlink = priv_to_devlink(adapter);
21*f290d48fSAmritha Nambiar 
22*f290d48fSAmritha Nambiar 	devlink_free(devlink);
23*f290d48fSAmritha Nambiar }
24*f290d48fSAmritha Nambiar 
25*f290d48fSAmritha Nambiar /**
26*f290d48fSAmritha Nambiar  * ixd_devlink_unregister - Unregister devlink for this adapter.
27*f290d48fSAmritha Nambiar  * @adapter: the adapter structure to cleanup
28*f290d48fSAmritha Nambiar  *
29*f290d48fSAmritha Nambiar  * Init task must be completed or cancelled beforehand.
30*f290d48fSAmritha Nambiar  */
ixd_devlink_unregister(struct ixd_adapter * adapter)31*f290d48fSAmritha Nambiar static inline void ixd_devlink_unregister(struct ixd_adapter *adapter)
32*f290d48fSAmritha Nambiar {
33*f290d48fSAmritha Nambiar 	if (!adapter->init_task.success)
34*f290d48fSAmritha Nambiar 		return;
35*f290d48fSAmritha Nambiar 
36*f290d48fSAmritha Nambiar 	devlink_unregister(priv_to_devlink(adapter));
37*f290d48fSAmritha Nambiar }
38*f290d48fSAmritha Nambiar 
39*f290d48fSAmritha Nambiar /**
40*f290d48fSAmritha Nambiar  * ixd_devlink_register - Register devlink interface for this adapter
41*f290d48fSAmritha Nambiar  * @adapter: pointer to ixd adapter structure to be associated with devlink
42*f290d48fSAmritha Nambiar  *
43*f290d48fSAmritha Nambiar  * Register the devlink instance associated with this adapter
44*f290d48fSAmritha Nambiar  */
ixd_devlink_register(struct ixd_adapter * adapter)45*f290d48fSAmritha Nambiar static inline void ixd_devlink_register(struct ixd_adapter *adapter)
46*f290d48fSAmritha Nambiar {
47*f290d48fSAmritha Nambiar 	devlink_register(priv_to_devlink(adapter));
48*f290d48fSAmritha Nambiar }
49*f290d48fSAmritha Nambiar 
50*f290d48fSAmritha Nambiar #endif /* _IXD_DEVLINK_H_ */
51