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 Nambiarstatic 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 Nambiarstatic 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 Nambiarstatic 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