Lines Matching defs:devlink
10 struct devlink *devlink;
35 devlink_region_get_by_name(struct devlink *devlink, const char *region_name)
39 list_for_each_entry(region, &devlink->region_list, list)
72 struct devlink *devlink,
95 struct devlink *devlink,
108 err = devlink_nl_region_snapshot_id_put(msg, devlink, snapshot);
121 static int devlink_nl_region_fill(struct sk_buff *msg, struct devlink *devlink,
133 err = devlink_nl_put_handle(msg, devlink);
159 err = devlink_nl_region_snapshots_id_put(msg, devlink, region);
176 struct devlink *devlink = region->devlink;
191 err = devlink_nl_put_handle(msg, devlink);
233 struct devlink *devlink = region->devlink;
237 if (!xa_get_mark(&devlinks, devlink->index, DEVLINK_REGISTERED))
244 genlmsg_multicast_netns(&devlink_nl_family, devlink_net(devlink), msg,
248 void devlink_regions_notify_register(struct devlink *devlink)
252 list_for_each_entry(region, &devlink->region_list, list)
256 void devlink_regions_notify_unregister(struct devlink *devlink)
260 list_for_each_entry_reverse(region, &devlink->region_list, list)
266 * @devlink: devlink instance
279 static int __devlink_snapshot_id_increment(struct devlink *devlink, u32 id)
285 xa_lock(&devlink->snapshot_ids);
286 p = xa_load(&devlink->snapshot_ids, id);
300 err = xa_err(__xa_store(&devlink->snapshot_ids, id, xa_mk_value(count),
303 xa_unlock(&devlink->snapshot_ids);
309 * @devlink: devlink instance
322 static void __devlink_snapshot_id_decrement(struct devlink *devlink, u32 id)
327 xa_lock(&devlink->snapshot_ids);
328 p = xa_load(&devlink->snapshot_ids, id);
339 __xa_store(&devlink->snapshot_ids, id, xa_mk_value(count),
343 __xa_erase(&devlink->snapshot_ids, id);
346 xa_unlock(&devlink->snapshot_ids);
351 * @devlink: devlink instance
357 * This must be called while holding the devlink instance lock. Unlike
360 * releasing the devlink instance lock.
365 static int __devlink_snapshot_id_insert(struct devlink *devlink, u32 id)
369 xa_lock(&devlink->snapshot_ids);
370 if (xa_load(&devlink->snapshot_ids, id)) {
371 xa_unlock(&devlink->snapshot_ids);
374 err = xa_err(__xa_store(&devlink->snapshot_ids, id, xa_mk_value(0),
376 xa_unlock(&devlink->snapshot_ids);
382 * @devlink: devlink instance
386 * error on failure. Must be called while holding the devlink instance
396 static int __devlink_region_snapshot_id_get(struct devlink *devlink, u32 *id)
398 return xa_alloc(&devlink->snapshot_ids, id, xa_mk_value(1),
406 * from devlink. This is useful for future analyses of snapshots.
412 * @region: devlink region of the snapshot
420 struct devlink *devlink = region->devlink;
437 err = __devlink_snapshot_id_increment(devlink, snapshot_id);
460 struct devlink *devlink = region->devlink;
468 __devlink_snapshot_id_decrement(devlink, snapshot->id);
474 struct devlink *devlink = info->user_ptr[0];
488 port = devlink_port_get_by_index(devlink, index);
497 region = devlink_region_get_by_name(devlink, region_name);
506 err = devlink_nl_region_fill(msg, devlink, DEVLINK_CMD_REGION_GET,
530 err = devlink_nl_region_fill(msg, port->devlink,
545 struct devlink *devlink,
556 list_for_each_entry(region, &devlink->region_list, list) {
561 err = devlink_nl_region_fill(msg, devlink,
573 xa_for_each(&devlink->ports, port_index, port) {
593 struct devlink *devlink = info->user_ptr[0];
611 port = devlink_port_get_by_index(devlink, index);
619 region = devlink_region_get_by_name(devlink, region_name);
638 struct devlink *devlink = info->user_ptr[0];
659 port = devlink_port_get_by_index(devlink, index);
667 region = devlink_region_get_by_name(devlink, region_name);
697 err = __devlink_snapshot_id_insert(devlink, snapshot_id);
701 err = __devlink_region_snapshot_id_get(devlink, &snapshot_id);
712 err = region->ops->snapshot(devlink, region->ops,
750 __devlink_snapshot_id_decrement(devlink, snapshot_id);
862 return region->ops->read(region->devlink, region->ops, extack,
878 struct devlink *devlink;
886 devlink = devlink_get_from_attrs_lock(sock_net(cb->skb->sk), attrs);
887 if (IS_ERR(devlink))
888 return PTR_ERR(devlink);
899 port = devlink_port_get_by_index(devlink, index);
912 region = devlink_region_get_by_name(devlink, region_name);
987 err = devlink_nl_put_handle(skb, devlink);
1025 devl_unlock(devlink);
1026 devlink_put(devlink);
1032 devl_unlock(devlink);
1033 devlink_put(devlink);
1040 * @devlink: devlink
1045 struct devlink_region *devl_region_create(struct devlink *devlink,
1052 devl_assert_locked(devlink);
1057 if (devlink_region_get_by_name(devlink, ops->name))
1064 region->devlink = devlink;
1070 list_add_tail(®ion->list, &devlink->region_list);
1080 * @devlink: devlink
1085 * Context: Takes and release devlink->lock <mutex>.
1088 devlink_region_create(struct devlink *devlink,
1094 devl_lock(devlink);
1095 region = devl_region_create(devlink, ops, region_max_snapshots,
1097 devl_unlock(devlink);
1105 * @port: devlink port
1110 * Context: Takes and release devlink->lock <mutex>.
1117 struct devlink *devlink = port->devlink;
1126 devl_lock(devlink);
1139 region->devlink = devlink;
1149 devl_unlock(devlink);
1153 devl_unlock(devlink);
1161 * @region: devlink region to destroy
1165 struct devlink *devlink = region->devlink;
1168 devl_assert_locked(devlink);
1187 * @region: devlink region to destroy
1189 * Context: Takes and release devlink->lock <mutex>.
1193 struct devlink *devlink = region->devlink;
1195 devl_lock(devlink);
1197 devl_unlock(devlink);
1213 * @devlink: devlink
1216 int devlink_region_snapshot_id_get(struct devlink *devlink, u32 *id)
1218 return __devlink_region_snapshot_id_get(devlink, id);
1229 * @devlink: devlink
1232 void devlink_region_snapshot_id_put(struct devlink *devlink, u32 id)
1234 __devlink_snapshot_id_decrement(devlink, id);
1242 * from devlink. This is useful for future analyses of snapshots.
1246 * @region: devlink region of the snapshot