Lines Matching +refs:port +refs:id +refs:attrs

11 	struct devlink_port *port;  member
31 u32 id; member
47 devlink_port_region_get_by_name(struct devlink_port *port, in devlink_port_region_get_by_name() argument
52 list_for_each_entry(region, &port->region_list, list) in devlink_port_region_get_by_name()
60 devlink_region_snapshot_get_by_id(struct devlink_region *region, u32 id) in devlink_region_snapshot_get_by_id() argument
65 if (snapshot->id == id) in devlink_region_snapshot_get_by_id()
82 err = nla_put_u32(msg, DEVLINK_ATTR_REGION_SNAPSHOT_ID, snapshot->id); in devlink_nl_region_snapshot_id_put()
137 if (region->port) { in devlink_nl_region_fill()
139 region->port->index); in devlink_nl_region_fill()
195 if (region->port) { in devlink_nl_region_notify_build()
197 region->port->index); in devlink_nl_region_notify_build()
209 snapshot->id); in devlink_nl_region_notify_build()
279 static int __devlink_snapshot_id_increment(struct devlink *devlink, u32 id) in __devlink_snapshot_id_increment() argument
286 p = xa_load(&devlink->snapshot_ids, id); in __devlink_snapshot_id_increment()
300 err = xa_err(__xa_store(&devlink->snapshot_ids, id, xa_mk_value(count), in __devlink_snapshot_id_increment()
322 static void __devlink_snapshot_id_decrement(struct devlink *devlink, u32 id) in __devlink_snapshot_id_decrement() argument
328 p = xa_load(&devlink->snapshot_ids, id); in __devlink_snapshot_id_decrement()
339 __xa_store(&devlink->snapshot_ids, id, xa_mk_value(count), in __devlink_snapshot_id_decrement()
343 __xa_erase(&devlink->snapshot_ids, id); in __devlink_snapshot_id_decrement()
365 static int __devlink_snapshot_id_insert(struct devlink *devlink, u32 id) in __devlink_snapshot_id_insert() argument
370 if (xa_load(&devlink->snapshot_ids, id)) { in __devlink_snapshot_id_insert()
374 err = xa_err(__xa_store(&devlink->snapshot_ids, id, xa_mk_value(0), in __devlink_snapshot_id_insert()
396 static int __devlink_region_snapshot_id_get(struct devlink *devlink, u32 *id) in __devlink_region_snapshot_id_get() argument
398 return xa_alloc(&devlink->snapshot_ids, id, xa_mk_value(1), in __devlink_region_snapshot_id_get()
441 snapshot->id = snapshot_id; in __devlink_region_snapshot_create()
468 __devlink_snapshot_id_decrement(devlink, snapshot->id); in devlink_region_snapshot_del()
475 struct devlink_port *port = NULL; in devlink_nl_region_get_doit() local
485 if (info->attrs[DEVLINK_ATTR_PORT_INDEX]) { in devlink_nl_region_get_doit()
486 index = nla_get_u32(info->attrs[DEVLINK_ATTR_PORT_INDEX]); in devlink_nl_region_get_doit()
488 port = devlink_port_get_by_index(devlink, index); in devlink_nl_region_get_doit()
489 if (!port) in devlink_nl_region_get_doit()
493 region_name = nla_data(info->attrs[DEVLINK_ATTR_REGION_NAME]); in devlink_nl_region_get_doit()
494 if (port) in devlink_nl_region_get_doit()
495 region = devlink_port_region_get_by_name(port, region_name); in devlink_nl_region_get_doit()
519 struct devlink_port *port, in devlink_nl_cmd_region_get_port_dumpit() argument
525 list_for_each_entry(region, &port->region_list, list) { in devlink_nl_cmd_region_get_port_dumpit()
530 err = devlink_nl_region_fill(msg, port->devlink, in devlink_nl_cmd_region_get_port_dumpit()
551 struct devlink_port *port; in devlink_nl_region_get_dump_one() local
573 xa_for_each(&devlink->ports, port_index, port) { in devlink_nl_region_get_dump_one()
574 err = devlink_nl_cmd_region_get_port_dumpit(msg, cb, port, &idx, in devlink_nl_region_get_dump_one()
595 struct devlink_port *port = NULL; in devlink_nl_cmd_region_del() local
605 region_name = nla_data(info->attrs[DEVLINK_ATTR_REGION_NAME]); in devlink_nl_cmd_region_del()
606 snapshot_id = nla_get_u32(info->attrs[DEVLINK_ATTR_REGION_SNAPSHOT_ID]); in devlink_nl_cmd_region_del()
608 if (info->attrs[DEVLINK_ATTR_PORT_INDEX]) { in devlink_nl_cmd_region_del()
609 index = nla_get_u32(info->attrs[DEVLINK_ATTR_PORT_INDEX]); in devlink_nl_cmd_region_del()
611 port = devlink_port_get_by_index(devlink, index); in devlink_nl_cmd_region_del()
612 if (!port) in devlink_nl_cmd_region_del()
616 if (port) in devlink_nl_cmd_region_del()
617 region = devlink_port_region_get_by_name(port, region_name); in devlink_nl_cmd_region_del()
640 struct devlink_port *port = NULL; in devlink_nl_cmd_region_new() local
654 region_name = nla_data(info->attrs[DEVLINK_ATTR_REGION_NAME]); in devlink_nl_cmd_region_new()
656 if (info->attrs[DEVLINK_ATTR_PORT_INDEX]) { in devlink_nl_cmd_region_new()
657 index = nla_get_u32(info->attrs[DEVLINK_ATTR_PORT_INDEX]); in devlink_nl_cmd_region_new()
659 port = devlink_port_get_by_index(devlink, index); in devlink_nl_cmd_region_new()
660 if (!port) in devlink_nl_cmd_region_new()
664 if (port) in devlink_nl_cmd_region_new()
665 region = devlink_port_region_get_by_name(port, region_name); in devlink_nl_cmd_region_new()
687 snapshot_id_attr = info->attrs[DEVLINK_ATTR_REGION_SNAPSHOT_ID]; in devlink_nl_cmd_region_new()
708 if (port) in devlink_nl_cmd_region_new()
709 err = region->port_ops->snapshot(port, region->port_ops, in devlink_nl_cmd_region_new()
852 return region->port_ops->read(region->port, region->port_ops, extack, in devlink_region_port_direct_fill()
873 struct nlattr **attrs = info->info.attrs; in devlink_nl_cmd_region_read_dumpit() local
874 struct devlink_port *port = NULL; in devlink_nl_cmd_region_read_dumpit() local
886 devlink = devlink_get_from_attrs_lock(sock_net(cb->skb->sk), attrs); in devlink_nl_cmd_region_read_dumpit()
890 if (!attrs[DEVLINK_ATTR_REGION_NAME]) { in devlink_nl_cmd_region_read_dumpit()
896 if (attrs[DEVLINK_ATTR_PORT_INDEX]) { in devlink_nl_cmd_region_read_dumpit()
897 index = nla_get_u32(attrs[DEVLINK_ATTR_PORT_INDEX]); in devlink_nl_cmd_region_read_dumpit()
899 port = devlink_port_get_by_index(devlink, index); in devlink_nl_cmd_region_read_dumpit()
900 if (!port) { in devlink_nl_cmd_region_read_dumpit()
906 region_attr = attrs[DEVLINK_ATTR_REGION_NAME]; in devlink_nl_cmd_region_read_dumpit()
909 if (port) in devlink_nl_cmd_region_read_dumpit()
910 region = devlink_port_region_get_by_name(port, region_name); in devlink_nl_cmd_region_read_dumpit()
920 snapshot_attr = attrs[DEVLINK_ATTR_REGION_SNAPSHOT_ID]; in devlink_nl_cmd_region_read_dumpit()
922 if (!nla_get_flag(attrs[DEVLINK_ATTR_REGION_DIRECT])) { in devlink_nl_cmd_region_read_dumpit()
934 if (port) in devlink_nl_cmd_region_read_dumpit()
943 if (nla_get_flag(attrs[DEVLINK_ATTR_REGION_DIRECT])) { in devlink_nl_cmd_region_read_dumpit()
960 if (attrs[DEVLINK_ATTR_REGION_CHUNK_ADDR] && in devlink_nl_cmd_region_read_dumpit()
961 attrs[DEVLINK_ATTR_REGION_CHUNK_LEN]) { in devlink_nl_cmd_region_read_dumpit()
964 nla_get_u64(attrs[DEVLINK_ATTR_REGION_CHUNK_ADDR]); in devlink_nl_cmd_region_read_dumpit()
966 end_offset = nla_get_u64(attrs[DEVLINK_ATTR_REGION_CHUNK_ADDR]); in devlink_nl_cmd_region_read_dumpit()
967 end_offset += nla_get_u64(attrs[DEVLINK_ATTR_REGION_CHUNK_LEN]); in devlink_nl_cmd_region_read_dumpit()
991 if (region->port) { in devlink_nl_cmd_region_read_dumpit()
993 region->port->index); in devlink_nl_cmd_region_read_dumpit()
1113 devlink_port_region_create(struct devlink_port *port, in devlink_port_region_create() argument
1117 struct devlink *devlink = port->devlink; in devlink_port_region_create()
1121 ASSERT_DEVLINK_PORT_INITIALIZED(port); in devlink_port_region_create()
1128 if (devlink_port_region_get_by_name(port, ops->name)) { in devlink_port_region_create()
1140 region->port = port; in devlink_port_region_create()
1146 list_add_tail(&region->list, &port->region_list); in devlink_port_region_create()
1216 int devlink_region_snapshot_id_get(struct devlink *devlink, u32 *id) in devlink_region_snapshot_id_get() argument
1218 return __devlink_region_snapshot_id_get(devlink, id); in devlink_region_snapshot_id_get()
1232 void devlink_region_snapshot_id_put(struct devlink *devlink, u32 id) in devlink_region_snapshot_id_put() argument
1234 __devlink_snapshot_id_decrement(devlink, id); in devlink_region_snapshot_id_put()