Lines Matching full:devlink
14 #include <net/devlink.h>
33 struct devlink { struct
55 /* Serializes access to devlink instance specific objects such as argument
71 struct devlink *__devlink_alloc(const struct devlink_ops *ops, size_t priv_size, argument
75 #define devl_warn(devlink, format, args...) \ argument
77 if ((devlink)->dev) \
78 dev_warn((devlink)->dev, format, ##args); \
80 pr_warn("devlink (%s): " format, \
81 devlink_dev_name(devlink), ##args); \
84 /* devlink instances are open to the access from the user space after
89 * access possible to the devlink instance. All drivers perform that phase
92 * After *_register() - users and driver can access devlink instance at
100 /* Iterate over devlink pointers which were possible to get reference to.
101 * devlink_put() needs to be called for each iterated devlink pointer
104 #define devlinks_xa_for_each_registered_get(net, index, devlink) \ argument
105 for (index = 0; (devlink = devlinks_xa_find_get(net, &index)); index++)
107 struct devlink *devlinks_xa_find_get(struct net *net, unsigned long *indexp);
108 struct devlink *devlinks_xa_lookup_get(struct net *net, unsigned long index);
110 static inline bool __devl_is_registered(struct devlink *devlink) in __devl_is_registered() argument
112 return xa_get_mark(&devlinks, devlink->index, DEVLINK_REGISTERED); in __devl_is_registered()
115 static inline bool devl_is_registered(struct devlink *devlink) in devl_is_registered() argument
117 devl_assert_locked(devlink); in devl_is_registered()
118 return __devl_is_registered(devlink); in devl_is_registered()
121 static inline void devl_dev_lock(struct devlink *devlink, bool dev_lock) in devl_dev_lock() argument
123 if (dev_lock && devlink->dev) in devl_dev_lock()
124 device_lock(devlink->dev); in devl_dev_lock()
125 devl_lock(devlink); in devl_dev_lock()
128 static inline void devl_dev_unlock(struct devlink *devlink, bool dev_lock) in devl_dev_unlock() argument
130 devl_unlock(devlink); in devl_dev_unlock()
131 if (dev_lock && devlink->dev) in devl_dev_unlock()
132 device_unlock(devlink->dev); in devl_dev_unlock()
135 typedef void devlink_rel_notify_cb_t(struct devlink *devlink, u32 obj_index);
136 typedef void devlink_rel_cleanup_cb_t(struct devlink *devlink, u32 obj_index,
140 struct devlink *__must_check
141 devlink_nested_in_get_lock(struct devlink *devlink);
147 struct devlink *devlink);
148 void devlink_rel_nested_in_notify(struct devlink *devlink);
149 int devlink_rel_devlink_handle_put(struct sk_buff *msg, struct devlink *devlink,
155 struct devlink *devlink; member
157 struct devlink *parent_devlink;
194 struct devlink *devlink,
198 struct devlink *
201 struct devlink *
216 devlink_nl_put_handle(struct sk_buff *msg, struct devlink *devlink) in devlink_nl_put_handle() argument
218 if (nla_put_string(msg, DEVLINK_ATTR_BUS_NAME, devlink_bus_name(devlink))) in devlink_nl_put_handle()
220 if (nla_put_string(msg, DEVLINK_ATTR_DEV_NAME, devlink_dev_name(devlink))) in devlink_nl_put_handle()
222 if (nla_put_uint(msg, DEVLINK_ATTR_INDEX, devlink->index)) in devlink_nl_put_handle()
233 struct devlink *devlink, int attrtype);
236 static inline bool devlink_nl_notify_need(struct devlink *devlink) in devlink_nl_notify_need() argument
238 return genl_has_listeners(&devlink_nl_family, devlink_net(devlink), in devlink_nl_notify_need()
254 struct devlink *devlink) in devlink_nl_obj_desc_init() argument
257 desc->bus_name = devlink_bus_name(devlink); in devlink_nl_obj_desc_init()
258 desc->dev_name = devlink_dev_name(devlink); in devlink_nl_obj_desc_init()
259 desc->devlink_index = devlink->index; in devlink_nl_obj_desc_init()
272 static inline void devlink_nl_notify_send_desc(struct devlink *devlink, in devlink_nl_notify_send_desc() argument
277 devlink_net(devlink), in devlink_nl_notify_send_desc()
283 static inline void devlink_nl_notify_send(struct devlink *devlink, in devlink_nl_notify_send() argument
288 devlink_nl_obj_desc_init(&desc, devlink); in devlink_nl_notify_send()
289 devlink_nl_notify_send_desc(devlink, msg, &desc); in devlink_nl_notify_send()
293 void devlink_notify_register(struct devlink *devlink);
294 void devlink_notify_unregister(struct devlink *devlink);
295 void devlink_ports_notify_register(struct devlink *devlink);
296 void devlink_ports_notify_unregister(struct devlink *devlink);
297 void devlink_params_notify_register(struct devlink *devlink);
298 void devlink_params_notify_unregister(struct devlink *devlink);
299 void devlink_regions_notify_register(struct devlink *devlink);
300 void devlink_regions_notify_unregister(struct devlink *devlink);
301 void devlink_trap_policers_notify_register(struct devlink *devlink);
302 void devlink_trap_policers_notify_unregister(struct devlink *devlink);
303 void devlink_trap_groups_notify_register(struct devlink *devlink);
304 void devlink_trap_groups_notify_unregister(struct devlink *devlink);
305 void devlink_traps_notify_register(struct devlink *devlink);
306 void devlink_traps_notify_unregister(struct devlink *devlink);
307 void devlink_rates_notify_register(struct devlink *devlink);
308 void devlink_rates_notify_unregister(struct devlink *devlink);
309 void devlink_linecards_notify_register(struct devlink *devlink);
310 void devlink_linecards_notify_unregister(struct devlink *devlink);
316 struct devlink_port *devlink_port_get_by_index(struct devlink *devlink,
321 devlink_port_get_from_info(struct devlink *devlink, struct genl_info *info);
322 struct devlink_port *devlink_port_get_from_attrs(struct devlink *devlink,
327 int devlink_reload(struct devlink *devlink, struct net *dest_net,
338 void devlink_params_driverinit_load_new(struct devlink *devlink);
342 int devlink_resources_validate(struct devlink *devlink,
348 int devlink_rates_check(struct devlink *devlink,