Lines Matching refs:devlink_sb

9 struct devlink_sb {
19 static u16 devlink_sb_pool_count(struct devlink_sb *devlink_sb)
21 return devlink_sb->ingress_pools_count + devlink_sb->egress_pools_count;
24 static struct devlink_sb *devlink_sb_get_by_index(struct devlink *devlink,
27 struct devlink_sb *devlink_sb;
29 list_for_each_entry(devlink_sb, &devlink->sb_list, list) {
30 if (devlink_sb->index == sb_index)
31 return devlink_sb;
42 static struct devlink_sb *devlink_sb_get_from_attrs(struct devlink *devlink,
47 struct devlink_sb *devlink_sb;
49 devlink_sb = devlink_sb_get_by_index(devlink, sb_index);
50 if (!devlink_sb)
52 return devlink_sb;
57 static struct devlink_sb *devlink_sb_get_from_info(struct devlink *devlink,
63 static int devlink_sb_pool_index_get_from_attrs(struct devlink_sb *devlink_sb,
73 if (val >= devlink_sb_pool_count(devlink_sb))
79 static int devlink_sb_pool_index_get_from_info(struct devlink_sb *devlink_sb,
83 return devlink_sb_pool_index_get_from_attrs(devlink_sb, info->attrs,
136 devlink_sb_tc_index_get_from_attrs(struct devlink_sb *devlink_sb,
148 val >= devlink_sb->ingress_tc_count)
151 val >= devlink_sb->egress_tc_count)
158 devlink_sb_tc_index_get_from_info(struct devlink_sb *devlink_sb,
163 return devlink_sb_tc_index_get_from_attrs(devlink_sb, info->attrs,
168 struct devlink_sb *devlink_sb,
180 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index))
182 if (nla_put_u32(msg, DEVLINK_ATTR_SB_SIZE, devlink_sb->size))
185 devlink_sb->ingress_pools_count))
188 devlink_sb->egress_pools_count))
191 devlink_sb->ingress_tc_count))
194 devlink_sb->egress_tc_count))
208 struct devlink_sb *devlink_sb;
212 devlink_sb = devlink_sb_get_from_info(devlink, info);
213 if (IS_ERR(devlink_sb))
214 return PTR_ERR(devlink_sb);
220 err = devlink_nl_sb_fill(msg, devlink, devlink_sb,
236 struct devlink_sb *devlink_sb;
240 list_for_each_entry(devlink_sb, &devlink->sb_list, list) {
245 err = devlink_nl_sb_fill(msg, devlink, devlink_sb,
265 struct devlink_sb *devlink_sb,
273 err = devlink->ops->sb_pool_get(devlink, devlink_sb->index,
284 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index))
310 struct devlink_sb *devlink_sb;
315 devlink_sb = devlink_sb_get_from_info(devlink, info);
316 if (IS_ERR(devlink_sb))
317 return PTR_ERR(devlink_sb);
319 err = devlink_sb_pool_index_get_from_info(devlink_sb, info,
331 err = devlink_nl_sb_pool_fill(msg, devlink, devlink_sb, pool_index,
344 struct devlink_sb *devlink_sb,
347 u16 pool_count = devlink_sb_pool_count(devlink_sb);
357 devlink_sb,
373 struct devlink_sb *devlink_sb;
380 list_for_each_entry(devlink_sb, &devlink->sb_list, list) {
382 devlink, devlink_sb,
420 struct devlink_sb *devlink_sb;
425 devlink_sb = devlink_sb_get_from_info(devlink, info);
426 if (IS_ERR(devlink_sb))
427 return PTR_ERR(devlink_sb);
429 err = devlink_sb_pool_index_get_from_info(devlink_sb, info,
442 return devlink_sb_pool_set(devlink, devlink_sb->index,
450 struct devlink_sb *devlink_sb,
460 err = ops->sb_port_pool_get(devlink_port, devlink_sb->index,
473 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index))
484 err = ops->sb_occ_port_pool_get(devlink_port, devlink_sb->index,
511 struct devlink_sb *devlink_sb;
516 devlink_sb = devlink_sb_get_from_info(devlink, info);
517 if (IS_ERR(devlink_sb))
518 return PTR_ERR(devlink_sb);
520 err = devlink_sb_pool_index_get_from_info(devlink_sb, info,
533 devlink_sb, pool_index,
546 struct devlink_sb *devlink_sb,
550 u16 pool_count = devlink_sb_pool_count(devlink_sb);
563 devlink_sb,
581 struct devlink_sb *devlink_sb;
588 list_for_each_entry(devlink_sb, &devlink->sb_list, list) {
590 devlink, devlink_sb,
629 struct devlink_sb *devlink_sb;
634 devlink_sb = devlink_sb_get_from_info(devlink, info);
635 if (IS_ERR(devlink_sb))
636 return PTR_ERR(devlink_sb);
638 err = devlink_sb_pool_index_get_from_info(devlink_sb, info,
647 return devlink_sb_port_pool_set(devlink_port, devlink_sb->index,
654 struct devlink_sb *devlink_sb, u16 tc_index,
665 err = ops->sb_tc_pool_bind_get(devlink_port, devlink_sb->index,
679 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index))
695 devlink_sb->index,
721 struct devlink_sb *devlink_sb;
727 devlink_sb = devlink_sb_get_from_info(devlink, info);
728 if (IS_ERR(devlink_sb))
729 return PTR_ERR(devlink_sb);
735 err = devlink_sb_tc_index_get_from_info(devlink_sb, info,
748 devlink_sb, tc_index, pool_type,
763 struct devlink_sb *devlink_sb,
773 tc_index < devlink_sb->ingress_tc_count; tc_index++) {
780 devlink_sb,
791 tc_index < devlink_sb->egress_tc_count; tc_index++) {
798 devlink_sb,
818 struct devlink_sb *devlink_sb;
825 list_for_each_entry(devlink_sb, &devlink->sb_list, list) {
827 devlink, devlink_sb,
870 struct devlink_sb *devlink_sb;
876 devlink_sb = devlink_sb_get_from_info(devlink, info);
877 if (IS_ERR(devlink_sb))
878 return PTR_ERR(devlink_sb);
884 err = devlink_sb_tc_index_get_from_info(devlink_sb, info,
889 err = devlink_sb_pool_index_get_from_info(devlink_sb, info,
898 return devlink_sb_tc_pool_bind_set(devlink_port, devlink_sb->index,
907 struct devlink_sb *devlink_sb;
909 devlink_sb = devlink_sb_get_from_info(devlink, info);
910 if (IS_ERR(devlink_sb))
911 return PTR_ERR(devlink_sb);
914 return ops->sb_occ_snapshot(devlink, devlink_sb->index);
923 struct devlink_sb *devlink_sb;
925 devlink_sb = devlink_sb_get_from_info(devlink, info);
926 if (IS_ERR(devlink_sb))
927 return PTR_ERR(devlink_sb);
930 return ops->sb_occ_max_clear(devlink, devlink_sb->index);
939 struct devlink_sb *devlink_sb;
946 devlink_sb = kzalloc(sizeof(*devlink_sb), GFP_KERNEL);
947 if (!devlink_sb)
949 devlink_sb->index = sb_index;
950 devlink_sb->size = size;
951 devlink_sb->ingress_pools_count = ingress_pools_count;
952 devlink_sb->egress_pools_count = egress_pools_count;
953 devlink_sb->ingress_tc_count = ingress_tc_count;
954 devlink_sb->egress_tc_count = egress_tc_count;
955 list_add_tail(&devlink_sb->list, &devlink->sb_list);
978 struct devlink_sb *devlink_sb;
982 devlink_sb = devlink_sb_get_by_index(devlink, sb_index);
983 WARN_ON(!devlink_sb);
984 list_del(&devlink_sb->list);
985 kfree(devlink_sb);