Lines Matching refs:devlink_sb
9 struct devlink_sb { struct
19 static u16 devlink_sb_pool_count(struct devlink_sb *devlink_sb) in devlink_sb_pool_count() argument
21 return devlink_sb->ingress_pools_count + devlink_sb->egress_pools_count; in devlink_sb_pool_count()
24 static struct devlink_sb *devlink_sb_get_by_index(struct devlink *devlink, in devlink_sb_get_by_index()
27 struct devlink_sb *devlink_sb; in devlink_sb_get_by_index() local
29 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_sb_get_by_index()
30 if (devlink_sb->index == sb_index) in devlink_sb_get_by_index()
31 return devlink_sb; in devlink_sb_get_by_index()
42 static struct devlink_sb *devlink_sb_get_from_attrs(struct devlink *devlink, in devlink_sb_get_from_attrs()
47 struct devlink_sb *devlink_sb; in devlink_sb_get_from_attrs() local
49 devlink_sb = devlink_sb_get_by_index(devlink, sb_index); in devlink_sb_get_from_attrs()
50 if (!devlink_sb) in devlink_sb_get_from_attrs()
52 return devlink_sb; in devlink_sb_get_from_attrs()
57 static struct devlink_sb *devlink_sb_get_from_info(struct devlink *devlink, in devlink_sb_get_from_info()
63 static int devlink_sb_pool_index_get_from_attrs(struct devlink_sb *devlink_sb, in devlink_sb_pool_index_get_from_attrs() argument
73 if (val >= devlink_sb_pool_count(devlink_sb)) in devlink_sb_pool_index_get_from_attrs()
79 static int devlink_sb_pool_index_get_from_info(struct devlink_sb *devlink_sb, in devlink_sb_pool_index_get_from_info() argument
83 return devlink_sb_pool_index_get_from_attrs(devlink_sb, info->attrs, in devlink_sb_pool_index_get_from_info()
136 devlink_sb_tc_index_get_from_attrs(struct devlink_sb *devlink_sb, in devlink_sb_tc_index_get_from_attrs() argument
148 val >= devlink_sb->ingress_tc_count) in devlink_sb_tc_index_get_from_attrs()
151 val >= devlink_sb->egress_tc_count) in devlink_sb_tc_index_get_from_attrs()
158 devlink_sb_tc_index_get_from_info(struct devlink_sb *devlink_sb, in devlink_sb_tc_index_get_from_info() argument
163 return devlink_sb_tc_index_get_from_attrs(devlink_sb, info->attrs, in devlink_sb_tc_index_get_from_info()
168 struct devlink_sb *devlink_sb, in devlink_nl_sb_fill() argument
180 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index)) in devlink_nl_sb_fill()
182 if (nla_put_u32(msg, DEVLINK_ATTR_SB_SIZE, devlink_sb->size)) in devlink_nl_sb_fill()
185 devlink_sb->ingress_pools_count)) in devlink_nl_sb_fill()
188 devlink_sb->egress_pools_count)) in devlink_nl_sb_fill()
191 devlink_sb->ingress_tc_count)) in devlink_nl_sb_fill()
194 devlink_sb->egress_tc_count)) in devlink_nl_sb_fill()
208 struct devlink_sb *devlink_sb; in devlink_nl_sb_get_doit() local
212 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_sb_get_doit()
213 if (IS_ERR(devlink_sb)) in devlink_nl_sb_get_doit()
214 return PTR_ERR(devlink_sb); in devlink_nl_sb_get_doit()
220 err = devlink_nl_sb_fill(msg, devlink, devlink_sb, in devlink_nl_sb_get_doit()
236 struct devlink_sb *devlink_sb; in devlink_nl_sb_get_dump_one() local
240 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_nl_sb_get_dump_one()
245 err = devlink_nl_sb_fill(msg, devlink, devlink_sb, in devlink_nl_sb_get_dump_one()
265 struct devlink_sb *devlink_sb, in devlink_nl_sb_pool_fill() argument
273 err = devlink->ops->sb_pool_get(devlink, devlink_sb->index, in devlink_nl_sb_pool_fill()
284 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index)) in devlink_nl_sb_pool_fill()
310 struct devlink_sb *devlink_sb; in devlink_nl_sb_pool_get_doit() local
315 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_sb_pool_get_doit()
316 if (IS_ERR(devlink_sb)) in devlink_nl_sb_pool_get_doit()
317 return PTR_ERR(devlink_sb); in devlink_nl_sb_pool_get_doit()
319 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_sb_pool_get_doit()
331 err = devlink_nl_sb_pool_fill(msg, devlink, devlink_sb, pool_index, in devlink_nl_sb_pool_get_doit()
344 struct devlink_sb *devlink_sb, in __sb_pool_get_dumpit() argument
347 u16 pool_count = devlink_sb_pool_count(devlink_sb); in __sb_pool_get_dumpit()
357 devlink_sb, in __sb_pool_get_dumpit()
373 struct devlink_sb *devlink_sb; in devlink_nl_sb_pool_get_dump_one() local
380 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_nl_sb_pool_get_dump_one()
382 devlink, devlink_sb, in devlink_nl_sb_pool_get_dump_one()
420 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_pool_set_doit() local
425 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_cmd_sb_pool_set_doit()
426 if (IS_ERR(devlink_sb)) in devlink_nl_cmd_sb_pool_set_doit()
427 return PTR_ERR(devlink_sb); in devlink_nl_cmd_sb_pool_set_doit()
429 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_pool_set_doit()
442 return devlink_sb_pool_set(devlink, devlink_sb->index, in devlink_nl_cmd_sb_pool_set_doit()
450 struct devlink_sb *devlink_sb, in devlink_nl_sb_port_pool_fill() argument
460 err = ops->sb_port_pool_get(devlink_port, devlink_sb->index, in devlink_nl_sb_port_pool_fill()
473 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index)) in devlink_nl_sb_port_pool_fill()
484 err = ops->sb_occ_port_pool_get(devlink_port, devlink_sb->index, in devlink_nl_sb_port_pool_fill()
511 struct devlink_sb *devlink_sb; in devlink_nl_sb_port_pool_get_doit() local
516 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_sb_port_pool_get_doit()
517 if (IS_ERR(devlink_sb)) in devlink_nl_sb_port_pool_get_doit()
518 return PTR_ERR(devlink_sb); in devlink_nl_sb_port_pool_get_doit()
520 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_sb_port_pool_get_doit()
533 devlink_sb, pool_index, in devlink_nl_sb_port_pool_get_doit()
546 struct devlink_sb *devlink_sb, in __sb_port_pool_get_dumpit() argument
550 u16 pool_count = devlink_sb_pool_count(devlink_sb); in __sb_port_pool_get_dumpit()
563 devlink_sb, in __sb_port_pool_get_dumpit()
581 struct devlink_sb *devlink_sb; in devlink_nl_sb_port_pool_get_dump_one() local
588 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_nl_sb_port_pool_get_dump_one()
590 devlink, devlink_sb, in devlink_nl_sb_port_pool_get_dump_one()
629 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_port_pool_set_doit() local
634 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_cmd_sb_port_pool_set_doit()
635 if (IS_ERR(devlink_sb)) in devlink_nl_cmd_sb_port_pool_set_doit()
636 return PTR_ERR(devlink_sb); in devlink_nl_cmd_sb_port_pool_set_doit()
638 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_port_pool_set_doit()
647 return devlink_sb_port_pool_set(devlink_port, devlink_sb->index, in devlink_nl_cmd_sb_port_pool_set_doit()
654 struct devlink_sb *devlink_sb, u16 tc_index, in devlink_nl_sb_tc_pool_bind_fill() argument
665 err = ops->sb_tc_pool_bind_get(devlink_port, devlink_sb->index, in devlink_nl_sb_tc_pool_bind_fill()
679 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index)) in devlink_nl_sb_tc_pool_bind_fill()
695 devlink_sb->index, in devlink_nl_sb_tc_pool_bind_fill()
721 struct devlink_sb *devlink_sb; in devlink_nl_sb_tc_pool_bind_get_doit() local
727 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_sb_tc_pool_bind_get_doit()
728 if (IS_ERR(devlink_sb)) in devlink_nl_sb_tc_pool_bind_get_doit()
729 return PTR_ERR(devlink_sb); in devlink_nl_sb_tc_pool_bind_get_doit()
735 err = devlink_sb_tc_index_get_from_info(devlink_sb, info, in devlink_nl_sb_tc_pool_bind_get_doit()
748 devlink_sb, tc_index, pool_type, in devlink_nl_sb_tc_pool_bind_get_doit()
763 struct devlink_sb *devlink_sb, in __sb_tc_pool_bind_get_dumpit() argument
773 tc_index < devlink_sb->ingress_tc_count; tc_index++) { in __sb_tc_pool_bind_get_dumpit()
780 devlink_sb, in __sb_tc_pool_bind_get_dumpit()
791 tc_index < devlink_sb->egress_tc_count; tc_index++) { in __sb_tc_pool_bind_get_dumpit()
798 devlink_sb, in __sb_tc_pool_bind_get_dumpit()
818 struct devlink_sb *devlink_sb; in devlink_nl_sb_tc_pool_bind_get_dump_one() local
825 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_nl_sb_tc_pool_bind_get_dump_one()
827 devlink, devlink_sb, in devlink_nl_sb_tc_pool_bind_get_dump_one()
870 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_tc_pool_bind_set_doit() local
876 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
877 if (IS_ERR(devlink_sb)) in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
878 return PTR_ERR(devlink_sb); in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
884 err = devlink_sb_tc_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
889 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
898 return devlink_sb_tc_pool_bind_set(devlink_port, devlink_sb->index, in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
908 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_occ_snapshot_doit() local
910 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_cmd_sb_occ_snapshot_doit()
911 if (IS_ERR(devlink_sb)) in devlink_nl_cmd_sb_occ_snapshot_doit()
912 return PTR_ERR(devlink_sb); in devlink_nl_cmd_sb_occ_snapshot_doit()
915 return ops->sb_occ_snapshot(devlink, devlink_sb->index); in devlink_nl_cmd_sb_occ_snapshot_doit()
924 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_occ_max_clear_doit() local
926 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_cmd_sb_occ_max_clear_doit()
927 if (IS_ERR(devlink_sb)) in devlink_nl_cmd_sb_occ_max_clear_doit()
928 return PTR_ERR(devlink_sb); in devlink_nl_cmd_sb_occ_max_clear_doit()
931 return ops->sb_occ_max_clear(devlink, devlink_sb->index); in devlink_nl_cmd_sb_occ_max_clear_doit()
940 struct devlink_sb *devlink_sb; in devl_sb_register() local
947 devlink_sb = kzalloc(sizeof(*devlink_sb), GFP_KERNEL); in devl_sb_register()
948 if (!devlink_sb) in devl_sb_register()
950 devlink_sb->index = sb_index; in devl_sb_register()
951 devlink_sb->size = size; in devl_sb_register()
952 devlink_sb->ingress_pools_count = ingress_pools_count; in devl_sb_register()
953 devlink_sb->egress_pools_count = egress_pools_count; in devl_sb_register()
954 devlink_sb->ingress_tc_count = ingress_tc_count; in devl_sb_register()
955 devlink_sb->egress_tc_count = egress_tc_count; in devl_sb_register()
956 list_add_tail(&devlink_sb->list, &devlink->sb_list); in devl_sb_register()
979 struct devlink_sb *devlink_sb; in devl_sb_unregister() local
983 devlink_sb = devlink_sb_get_by_index(devlink, sb_index); in devl_sb_unregister()
984 WARN_ON(!devlink_sb); in devl_sb_unregister()
985 list_del(&devlink_sb->list); in devl_sb_unregister()
986 kfree(devlink_sb); in devl_sb_unregister()