Lines Matching refs:devlink_sb

177 struct devlink_sb {  struct
187 static u16 devlink_sb_pool_count(struct devlink_sb *devlink_sb) in devlink_sb_pool_count() argument
189 return devlink_sb->ingress_pools_count + devlink_sb->egress_pools_count; in devlink_sb_pool_count()
192 static struct devlink_sb *devlink_sb_get_by_index(struct devlink *devlink, in devlink_sb_get_by_index()
195 struct devlink_sb *devlink_sb; in devlink_sb_get_by_index() local
197 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_sb_get_by_index()
198 if (devlink_sb->index == sb_index) in devlink_sb_get_by_index()
199 return devlink_sb; in devlink_sb_get_by_index()
210 static struct devlink_sb *devlink_sb_get_from_attrs(struct devlink *devlink, in devlink_sb_get_from_attrs()
215 struct devlink_sb *devlink_sb; in devlink_sb_get_from_attrs() local
217 devlink_sb = devlink_sb_get_by_index(devlink, sb_index); in devlink_sb_get_from_attrs()
218 if (!devlink_sb) in devlink_sb_get_from_attrs()
220 return devlink_sb; in devlink_sb_get_from_attrs()
225 static struct devlink_sb *devlink_sb_get_from_info(struct devlink *devlink, in devlink_sb_get_from_info()
231 static int devlink_sb_pool_index_get_from_attrs(struct devlink_sb *devlink_sb, in devlink_sb_pool_index_get_from_attrs() argument
241 if (val >= devlink_sb_pool_count(devlink_sb)) in devlink_sb_pool_index_get_from_attrs()
247 static int devlink_sb_pool_index_get_from_info(struct devlink_sb *devlink_sb, in devlink_sb_pool_index_get_from_info() argument
251 return devlink_sb_pool_index_get_from_attrs(devlink_sb, info->attrs, in devlink_sb_pool_index_get_from_info()
304 devlink_sb_tc_index_get_from_attrs(struct devlink_sb *devlink_sb, in devlink_sb_tc_index_get_from_attrs() argument
316 val >= devlink_sb->ingress_tc_count) in devlink_sb_tc_index_get_from_attrs()
319 val >= devlink_sb->egress_tc_count) in devlink_sb_tc_index_get_from_attrs()
326 devlink_sb_tc_index_get_from_info(struct devlink_sb *devlink_sb, in devlink_sb_tc_index_get_from_info() argument
331 return devlink_sb_tc_index_get_from_attrs(devlink_sb, info->attrs, in devlink_sb_tc_index_get_from_info()
414 struct devlink_sb *devlink_sb; in devlink_nl_pre_doit() local
416 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_pre_doit()
417 if (IS_ERR(devlink_sb)) { in devlink_nl_pre_doit()
418 err = PTR_ERR(devlink_sb); in devlink_nl_pre_doit()
421 info->user_ptr[1] = devlink_sb; in devlink_nl_pre_doit()
831 struct devlink_sb *devlink_sb, in devlink_nl_sb_fill() argument
843 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index)) in devlink_nl_sb_fill()
845 if (nla_put_u32(msg, DEVLINK_ATTR_SB_SIZE, devlink_sb->size)) in devlink_nl_sb_fill()
848 devlink_sb->ingress_pools_count)) in devlink_nl_sb_fill()
851 devlink_sb->egress_pools_count)) in devlink_nl_sb_fill()
854 devlink_sb->ingress_tc_count)) in devlink_nl_sb_fill()
857 devlink_sb->egress_tc_count)) in devlink_nl_sb_fill()
872 struct devlink_sb *devlink_sb = info->user_ptr[1]; in devlink_nl_cmd_sb_get_doit() local
880 err = devlink_nl_sb_fill(msg, devlink, devlink_sb, in devlink_nl_cmd_sb_get_doit()
895 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_get_dumpit() local
905 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_nl_cmd_sb_get_dumpit()
910 err = devlink_nl_sb_fill(msg, devlink, devlink_sb, in devlink_nl_cmd_sb_get_dumpit()
931 struct devlink_sb *devlink_sb, in devlink_nl_sb_pool_fill() argument
939 err = devlink->ops->sb_pool_get(devlink, devlink_sb->index, in devlink_nl_sb_pool_fill()
950 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index)) in devlink_nl_sb_pool_fill()
977 struct devlink_sb *devlink_sb = info->user_ptr[1]; in devlink_nl_cmd_sb_pool_get_doit() local
982 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_pool_get_doit()
994 err = devlink_nl_sb_pool_fill(msg, devlink, devlink_sb, pool_index, in devlink_nl_cmd_sb_pool_get_doit()
1007 struct devlink_sb *devlink_sb, in __sb_pool_get_dumpit() argument
1010 u16 pool_count = devlink_sb_pool_count(devlink_sb); in __sb_pool_get_dumpit()
1020 devlink_sb, in __sb_pool_get_dumpit()
1035 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_pool_get_dumpit() local
1046 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_nl_cmd_sb_pool_get_dumpit()
1048 devlink_sb, in devlink_nl_cmd_sb_pool_get_dumpit()
1083 struct devlink_sb *devlink_sb = info->user_ptr[1]; in devlink_nl_cmd_sb_pool_set_doit() local
1089 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_pool_set_doit()
1102 return devlink_sb_pool_set(devlink, devlink_sb->index, in devlink_nl_cmd_sb_pool_set_doit()
1110 struct devlink_sb *devlink_sb, in devlink_nl_sb_port_pool_fill() argument
1120 err = ops->sb_port_pool_get(devlink_port, devlink_sb->index, in devlink_nl_sb_port_pool_fill()
1133 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index)) in devlink_nl_sb_port_pool_fill()
1144 err = ops->sb_occ_port_pool_get(devlink_port, devlink_sb->index, in devlink_nl_sb_port_pool_fill()
1169 struct devlink_sb *devlink_sb = info->user_ptr[1]; in devlink_nl_cmd_sb_port_pool_get_doit() local
1174 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_port_pool_get_doit()
1187 devlink_sb, pool_index, in devlink_nl_cmd_sb_port_pool_get_doit()
1200 struct devlink_sb *devlink_sb, in __sb_port_pool_get_dumpit() argument
1204 u16 pool_count = devlink_sb_pool_count(devlink_sb); in __sb_port_pool_get_dumpit()
1216 devlink_sb, in __sb_port_pool_get_dumpit()
1233 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_port_pool_get_dumpit() local
1244 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_nl_cmd_sb_port_pool_get_dumpit()
1246 devlink, devlink_sb, in devlink_nl_cmd_sb_port_pool_get_dumpit()
1281 struct devlink_sb *devlink_sb = info->user_ptr[1]; in devlink_nl_cmd_sb_port_pool_set_doit() local
1286 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_port_pool_set_doit()
1295 return devlink_sb_port_pool_set(devlink_port, devlink_sb->index, in devlink_nl_cmd_sb_port_pool_set_doit()
1302 struct devlink_sb *devlink_sb, u16 tc_index, in devlink_nl_sb_tc_pool_bind_fill() argument
1313 err = ops->sb_tc_pool_bind_get(devlink_port, devlink_sb->index, in devlink_nl_sb_tc_pool_bind_fill()
1327 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index)) in devlink_nl_sb_tc_pool_bind_fill()
1343 devlink_sb->index, in devlink_nl_sb_tc_pool_bind_fill()
1369 struct devlink_sb *devlink_sb = info->user_ptr[1]; in devlink_nl_cmd_sb_tc_pool_bind_get_doit() local
1379 err = devlink_sb_tc_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_tc_pool_bind_get_doit()
1392 devlink_sb, tc_index, pool_type, in devlink_nl_cmd_sb_tc_pool_bind_get_doit()
1407 struct devlink_sb *devlink_sb, in __sb_tc_pool_bind_get_dumpit() argument
1416 tc_index < devlink_sb->ingress_tc_count; tc_index++) { in __sb_tc_pool_bind_get_dumpit()
1423 devlink_sb, in __sb_tc_pool_bind_get_dumpit()
1434 tc_index < devlink_sb->egress_tc_count; tc_index++) { in __sb_tc_pool_bind_get_dumpit()
1441 devlink_sb, in __sb_tc_pool_bind_get_dumpit()
1460 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_tc_pool_bind_get_dumpit() local
1472 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_nl_cmd_sb_tc_pool_bind_get_dumpit()
1475 devlink_sb, in devlink_nl_cmd_sb_tc_pool_bind_get_dumpit()
1512 struct devlink_sb *devlink_sb = info->user_ptr[1]; in devlink_nl_cmd_sb_tc_pool_bind_set_doit() local
1523 err = devlink_sb_tc_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
1528 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
1537 return devlink_sb_tc_pool_bind_set(devlink_port, devlink_sb->index, in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
1546 struct devlink_sb *devlink_sb = info->user_ptr[1]; in devlink_nl_cmd_sb_occ_snapshot_doit() local
1550 return ops->sb_occ_snapshot(devlink, devlink_sb->index); in devlink_nl_cmd_sb_occ_snapshot_doit()
1558 struct devlink_sb *devlink_sb = info->user_ptr[1]; in devlink_nl_cmd_sb_occ_max_clear_doit() local
1562 return ops->sb_occ_max_clear(devlink, devlink_sb->index); in devlink_nl_cmd_sb_occ_max_clear_doit()
6596 struct devlink_sb *devlink_sb; in devlink_sb_register() local
6605 devlink_sb = kzalloc(sizeof(*devlink_sb), GFP_KERNEL); in devlink_sb_register()
6606 if (!devlink_sb) { in devlink_sb_register()
6610 devlink_sb->index = sb_index; in devlink_sb_register()
6611 devlink_sb->size = size; in devlink_sb_register()
6612 devlink_sb->ingress_pools_count = ingress_pools_count; in devlink_sb_register()
6613 devlink_sb->egress_pools_count = egress_pools_count; in devlink_sb_register()
6614 devlink_sb->ingress_tc_count = ingress_tc_count; in devlink_sb_register()
6615 devlink_sb->egress_tc_count = egress_tc_count; in devlink_sb_register()
6616 list_add_tail(&devlink_sb->list, &devlink->sb_list); in devlink_sb_register()
6625 struct devlink_sb *devlink_sb; in devlink_sb_unregister() local
6628 devlink_sb = devlink_sb_get_by_index(devlink, sb_index); in devlink_sb_unregister()
6629 WARN_ON(!devlink_sb); in devlink_sb_unregister()
6630 list_del(&devlink_sb->list); in devlink_sb_unregister()
6632 kfree(devlink_sb); in devlink_sb_unregister()