Lines Matching refs:region
364 struct devlink_region *region; member
372 struct devlink_region *region; in devlink_region_get_by_name() local
374 list_for_each_entry(region, &devlink->region_list, list) in devlink_region_get_by_name()
375 if (!strcmp(region->ops->name, region_name)) in devlink_region_get_by_name()
376 return region; in devlink_region_get_by_name()
385 struct devlink_region *region; in devlink_port_region_get_by_name() local
387 list_for_each_entry(region, &port->region_list, list) in devlink_port_region_get_by_name()
388 if (!strcmp(region->ops->name, region_name)) in devlink_port_region_get_by_name()
389 return region; in devlink_port_region_get_by_name()
395 devlink_region_snapshot_get_by_id(struct devlink_region *region, u32 id) in devlink_region_snapshot_get_by_id() argument
399 list_for_each_entry(snapshot, ®ion->snapshot_list, list) in devlink_region_snapshot_get_by_id()
4206 struct devlink_region *region) in devlink_nl_region_snapshots_id_put() argument
4217 list_for_each_entry(snapshot, ®ion->snapshot_list, list) { in devlink_nl_region_snapshots_id_put()
4234 struct devlink_region *region) in devlink_nl_region_fill() argument
4247 if (region->port) { in devlink_nl_region_fill()
4249 region->port->index); in devlink_nl_region_fill()
4254 err = nla_put_string(msg, DEVLINK_ATTR_REGION_NAME, region->ops->name); in devlink_nl_region_fill()
4259 region->size, in devlink_nl_region_fill()
4264 err = devlink_nl_region_snapshots_id_put(msg, devlink, region); in devlink_nl_region_fill()
4277 devlink_nl_region_notify_build(struct devlink_region *region, in devlink_nl_region_notify_build() argument
4281 struct devlink *devlink = region->devlink; in devlink_nl_region_notify_build()
4301 if (region->port) { in devlink_nl_region_notify_build()
4303 region->port->index); in devlink_nl_region_notify_build()
4309 region->ops->name); in devlink_nl_region_notify_build()
4320 region->size, DEVLINK_ATTR_PAD); in devlink_nl_region_notify_build()
4335 static void devlink_nl_region_notify(struct devlink_region *region, in devlink_nl_region_notify() argument
4339 struct devlink *devlink = region->devlink; in devlink_nl_region_notify()
4344 msg = devlink_nl_region_notify_build(region, snapshot, cmd, 0, 0); in devlink_nl_region_notify()
4495 __devlink_region_snapshot_create(struct devlink_region *region, in __devlink_region_snapshot_create() argument
4498 struct devlink *devlink = region->devlink; in __devlink_region_snapshot_create()
4505 if (region->cur_snapshots == region->max_snapshots) in __devlink_region_snapshot_create()
4508 if (devlink_region_snapshot_get_by_id(region, snapshot_id)) in __devlink_region_snapshot_create()
4520 snapshot->region = region; in __devlink_region_snapshot_create()
4523 list_add_tail(&snapshot->list, ®ion->snapshot_list); in __devlink_region_snapshot_create()
4525 region->cur_snapshots++; in __devlink_region_snapshot_create()
4527 devlink_nl_region_notify(region, snapshot, DEVLINK_CMD_REGION_NEW); in __devlink_region_snapshot_create()
4535 static void devlink_region_snapshot_del(struct devlink_region *region, in devlink_region_snapshot_del() argument
4538 struct devlink *devlink = region->devlink; in devlink_region_snapshot_del()
4542 devlink_nl_region_notify(region, snapshot, DEVLINK_CMD_REGION_DEL); in devlink_region_snapshot_del()
4543 region->cur_snapshots--; in devlink_region_snapshot_del()
4545 region->ops->destructor(snapshot->data); in devlink_region_snapshot_del()
4555 struct devlink_region *region; in devlink_nl_cmd_region_get_doit() local
4574 region = devlink_port_region_get_by_name(port, region_name); in devlink_nl_cmd_region_get_doit()
4576 region = devlink_region_get_by_name(devlink, region_name); in devlink_nl_cmd_region_get_doit()
4578 if (!region) in devlink_nl_cmd_region_get_doit()
4587 region); in devlink_nl_cmd_region_get_doit()
4602 struct devlink_region *region; in devlink_nl_cmd_region_get_port_dumpit() local
4605 list_for_each_entry(region, &port->region_list, list) { in devlink_nl_cmd_region_get_port_dumpit()
4614 NLM_F_MULTI, region); in devlink_nl_cmd_region_get_port_dumpit()
4630 struct devlink_region *region; in devlink_nl_cmd_region_get_devlink_dumpit() local
4635 list_for_each_entry(region, &devlink->region_list, list) { in devlink_nl_cmd_region_get_devlink_dumpit()
4644 NLM_F_MULTI, region); in devlink_nl_cmd_region_get_devlink_dumpit()
4691 struct devlink_region *region; in devlink_nl_cmd_region_del() local
4712 region = devlink_port_region_get_by_name(port, region_name); in devlink_nl_cmd_region_del()
4714 region = devlink_region_get_by_name(devlink, region_name); in devlink_nl_cmd_region_del()
4716 if (!region) in devlink_nl_cmd_region_del()
4719 snapshot = devlink_region_snapshot_get_by_id(region, snapshot_id); in devlink_nl_cmd_region_del()
4723 devlink_region_snapshot_del(region, snapshot); in devlink_nl_cmd_region_del()
4734 struct devlink_region *region; in devlink_nl_cmd_region_new() local
4757 region = devlink_port_region_get_by_name(port, region_name); in devlink_nl_cmd_region_new()
4759 region = devlink_region_get_by_name(devlink, region_name); in devlink_nl_cmd_region_new()
4761 if (!region) { in devlink_nl_cmd_region_new()
4766 if (!region->ops->snapshot) { in devlink_nl_cmd_region_new()
4771 if (region->cur_snapshots == region->max_snapshots) { in devlink_nl_cmd_region_new()
4780 if (devlink_region_snapshot_get_by_id(region, snapshot_id)) { in devlink_nl_cmd_region_new()
4797 err = region->port_ops->snapshot(port, region->port_ops, in devlink_nl_cmd_region_new()
4800 err = region->ops->snapshot(devlink, region->ops, in devlink_nl_cmd_region_new()
4805 err = __devlink_region_snapshot_create(region, data, snapshot_id); in devlink_nl_cmd_region_new()
4812 snapshot = devlink_region_snapshot_get_by_id(region, in devlink_nl_cmd_region_new()
4817 msg = devlink_nl_region_notify_build(region, snapshot, in devlink_nl_cmd_region_new()
4833 region->ops->destructor(data); in devlink_nl_cmd_region_new()
4839 devlink_region_snapshot_del(region, snapshot); in devlink_nl_cmd_region_new()
4876 struct devlink_region *region, in devlink_nl_region_read_snapshot_fill() argument
4890 snapshot = devlink_region_snapshot_get_by_id(region, snapshot_id); in devlink_nl_region_read_snapshot_fill()
4924 struct devlink_region *region; in devlink_nl_cmd_region_read_dumpit() local
4962 region = devlink_port_region_get_by_name(port, region_name); in devlink_nl_cmd_region_read_dumpit()
4964 region = devlink_region_get_by_name(devlink, region_name); in devlink_nl_cmd_region_read_dumpit()
4966 if (!region) { in devlink_nl_cmd_region_read_dumpit()
4981 if (end_offset > region->size) in devlink_nl_cmd_region_read_dumpit()
4982 end_offset = region->size; in devlink_nl_cmd_region_read_dumpit()
5002 if (region->port) { in devlink_nl_cmd_region_read_dumpit()
5004 region->port->index); in devlink_nl_cmd_region_read_dumpit()
5020 region, attrs, in devlink_nl_cmd_region_read_dumpit()
9232 struct devlink_region *region; in devlink_region_create() local
9245 region = kzalloc(sizeof(*region), GFP_KERNEL); in devlink_region_create()
9246 if (!region) { in devlink_region_create()
9251 region->devlink = devlink; in devlink_region_create()
9252 region->max_snapshots = region_max_snapshots; in devlink_region_create()
9253 region->ops = ops; in devlink_region_create()
9254 region->size = region_size; in devlink_region_create()
9255 INIT_LIST_HEAD(®ion->snapshot_list); in devlink_region_create()
9256 list_add_tail(®ion->list, &devlink->region_list); in devlink_region_create()
9257 devlink_nl_region_notify(region, NULL, DEVLINK_CMD_REGION_NEW); in devlink_region_create()
9260 return region; in devlink_region_create()
9282 struct devlink_region *region; in devlink_port_region_create() local
9295 region = kzalloc(sizeof(*region), GFP_KERNEL); in devlink_port_region_create()
9296 if (!region) { in devlink_port_region_create()
9301 region->devlink = devlink; in devlink_port_region_create()
9302 region->port = port; in devlink_port_region_create()
9303 region->max_snapshots = region_max_snapshots; in devlink_port_region_create()
9304 region->port_ops = ops; in devlink_port_region_create()
9305 region->size = region_size; in devlink_port_region_create()
9306 INIT_LIST_HEAD(®ion->snapshot_list); in devlink_port_region_create()
9307 list_add_tail(®ion->list, &port->region_list); in devlink_port_region_create()
9308 devlink_nl_region_notify(region, NULL, DEVLINK_CMD_REGION_NEW); in devlink_port_region_create()
9311 return region; in devlink_port_region_create()
9324 void devlink_region_destroy(struct devlink_region *region) in devlink_region_destroy() argument
9326 struct devlink *devlink = region->devlink; in devlink_region_destroy()
9332 list_for_each_entry_safe(snapshot, ts, ®ion->snapshot_list, list) in devlink_region_destroy()
9333 devlink_region_snapshot_del(region, snapshot); in devlink_region_destroy()
9335 list_del(®ion->list); in devlink_region_destroy()
9337 devlink_nl_region_notify(region, NULL, DEVLINK_CMD_REGION_DEL); in devlink_region_destroy()
9339 kfree(region); in devlink_region_destroy()
9400 int devlink_region_snapshot_create(struct devlink_region *region, in devlink_region_snapshot_create() argument
9403 struct devlink *devlink = region->devlink; in devlink_region_snapshot_create()
9407 err = __devlink_region_snapshot_create(region, data, snapshot_id); in devlink_region_snapshot_create()