Lines Matching full:devlink
14 #include <net/devlink.h>
33 struct devlink {
55 /* Serializes access to devlink instance specific objects such as
71 struct devlink *__devlink_alloc(const struct devlink_ops *ops, size_t priv_size,
75 #define devl_warn(devlink, format, args...) \
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) \
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)
112 return xa_get_mark(&devlinks, devlink->index, DEVLINK_REGISTERED);
115 static inline bool devl_is_registered(struct devlink *devlink)
117 devl_assert_locked(devlink);
118 return __devl_is_registered(devlink);
121 static inline void devl_dev_lock(struct devlink *devlink, bool dev_lock)
123 if (dev_lock && devlink->dev)
124 device_lock(devlink->dev);
125 devl_lock(devlink);
128 static inline void devl_dev_unlock(struct devlink *devlink, bool dev_lock)
130 devl_unlock(devlink);
131 if (dev_lock && devlink->dev)
132 device_unlock(devlink->dev);
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;
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)
218 if (nla_put_string(msg, DEVLINK_ATTR_BUS_NAME, devlink_bus_name(devlink)))
220 if (nla_put_string(msg, DEVLINK_ATTR_DEV_NAME, devlink_dev_name(devlink)))
222 if (nla_put_uint(msg, DEVLINK_ATTR_INDEX, devlink->index))
233 struct devlink *devlink, int attrtype);
236 static inline bool devlink_nl_notify_need(struct devlink *devlink)
238 return genl_has_listeners(&devlink_nl_family, devlink_net(devlink),
254 struct devlink *devlink)
257 desc->bus_name = devlink_bus_name(devlink);
258 desc->dev_name = devlink_dev_name(devlink);
259 desc->devlink_index = devlink->index;
272 static inline void devlink_nl_notify_send_desc(struct devlink *devlink,
277 devlink_net(devlink),
283 static inline void devlink_nl_notify_send(struct devlink *devlink,
288 devlink_nl_obj_desc_init(&desc, devlink);
289 devlink_nl_notify_send_desc(devlink, msg, &desc);
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 void devlink_reload_netns_change(struct devlink *devlink,
330 int devlink_reload(struct devlink *devlink, struct net *dest_net,
341 void devlink_params_driverinit_load_new(struct devlink *devlink);
345 int devlink_resources_validate(struct devlink *devlink,
351 int devlink_rates_check(struct devlink *devlink,