Lines Matching refs:devlink_sb
268 struct devlink_sb { struct
278 static u16 devlink_sb_pool_count(struct devlink_sb *devlink_sb) in devlink_sb_pool_count() argument
280 return devlink_sb->ingress_pools_count + devlink_sb->egress_pools_count; in devlink_sb_pool_count()
283 static struct devlink_sb *devlink_sb_get_by_index(struct devlink *devlink, in devlink_sb_get_by_index()
286 struct devlink_sb *devlink_sb; in devlink_sb_get_by_index() local
288 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_sb_get_by_index()
289 if (devlink_sb->index == sb_index) in devlink_sb_get_by_index()
290 return devlink_sb; in devlink_sb_get_by_index()
301 static struct devlink_sb *devlink_sb_get_from_attrs(struct devlink *devlink, in devlink_sb_get_from_attrs()
306 struct devlink_sb *devlink_sb; in devlink_sb_get_from_attrs() local
308 devlink_sb = devlink_sb_get_by_index(devlink, sb_index); in devlink_sb_get_from_attrs()
309 if (!devlink_sb) in devlink_sb_get_from_attrs()
311 return devlink_sb; in devlink_sb_get_from_attrs()
316 static struct devlink_sb *devlink_sb_get_from_info(struct devlink *devlink, in devlink_sb_get_from_info()
322 static int devlink_sb_pool_index_get_from_attrs(struct devlink_sb *devlink_sb, in devlink_sb_pool_index_get_from_attrs() argument
332 if (val >= devlink_sb_pool_count(devlink_sb)) in devlink_sb_pool_index_get_from_attrs()
338 static int devlink_sb_pool_index_get_from_info(struct devlink_sb *devlink_sb, in devlink_sb_pool_index_get_from_info() argument
342 return devlink_sb_pool_index_get_from_attrs(devlink_sb, info->attrs, in devlink_sb_pool_index_get_from_info()
395 devlink_sb_tc_index_get_from_attrs(struct devlink_sb *devlink_sb, in devlink_sb_tc_index_get_from_attrs() argument
407 val >= devlink_sb->ingress_tc_count) in devlink_sb_tc_index_get_from_attrs()
410 val >= devlink_sb->egress_tc_count) in devlink_sb_tc_index_get_from_attrs()
417 devlink_sb_tc_index_get_from_info(struct devlink_sb *devlink_sb, in devlink_sb_tc_index_get_from_info() argument
422 return devlink_sb_tc_index_get_from_attrs(devlink_sb, info->attrs, in devlink_sb_tc_index_get_from_info()
1854 struct devlink_sb *devlink_sb, in devlink_nl_sb_fill() argument
1866 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index)) in devlink_nl_sb_fill()
1868 if (nla_put_u32(msg, DEVLINK_ATTR_SB_SIZE, devlink_sb->size)) in devlink_nl_sb_fill()
1871 devlink_sb->ingress_pools_count)) in devlink_nl_sb_fill()
1874 devlink_sb->egress_pools_count)) in devlink_nl_sb_fill()
1877 devlink_sb->ingress_tc_count)) in devlink_nl_sb_fill()
1880 devlink_sb->egress_tc_count)) in devlink_nl_sb_fill()
1895 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_get_doit() local
1899 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_cmd_sb_get_doit()
1900 if (IS_ERR(devlink_sb)) in devlink_nl_cmd_sb_get_doit()
1901 return PTR_ERR(devlink_sb); in devlink_nl_cmd_sb_get_doit()
1907 err = devlink_nl_sb_fill(msg, devlink, devlink_sb, in devlink_nl_cmd_sb_get_doit()
1922 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_get_dumpit() local
1937 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_nl_cmd_sb_get_dumpit()
1942 err = devlink_nl_sb_fill(msg, devlink, devlink_sb, in devlink_nl_cmd_sb_get_dumpit()
1966 struct devlink_sb *devlink_sb, in devlink_nl_sb_pool_fill() argument
1974 err = devlink->ops->sb_pool_get(devlink, devlink_sb->index, in devlink_nl_sb_pool_fill()
1985 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index)) in devlink_nl_sb_pool_fill()
2012 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_pool_get_doit() local
2017 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_cmd_sb_pool_get_doit()
2018 if (IS_ERR(devlink_sb)) in devlink_nl_cmd_sb_pool_get_doit()
2019 return PTR_ERR(devlink_sb); in devlink_nl_cmd_sb_pool_get_doit()
2021 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_pool_get_doit()
2033 err = devlink_nl_sb_pool_fill(msg, devlink, devlink_sb, pool_index, in devlink_nl_cmd_sb_pool_get_doit()
2046 struct devlink_sb *devlink_sb, in __sb_pool_get_dumpit() argument
2049 u16 pool_count = devlink_sb_pool_count(devlink_sb); in __sb_pool_get_dumpit()
2059 devlink_sb, in __sb_pool_get_dumpit()
2074 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_pool_get_dumpit() local
2090 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_nl_cmd_sb_pool_get_dumpit()
2092 devlink_sb, in devlink_nl_cmd_sb_pool_get_dumpit()
2136 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_pool_set_doit() local
2141 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_cmd_sb_pool_set_doit()
2142 if (IS_ERR(devlink_sb)) in devlink_nl_cmd_sb_pool_set_doit()
2143 return PTR_ERR(devlink_sb); in devlink_nl_cmd_sb_pool_set_doit()
2145 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_pool_set_doit()
2158 return devlink_sb_pool_set(devlink, devlink_sb->index, in devlink_nl_cmd_sb_pool_set_doit()
2166 struct devlink_sb *devlink_sb, in devlink_nl_sb_port_pool_fill() argument
2176 err = ops->sb_port_pool_get(devlink_port, devlink_sb->index, in devlink_nl_sb_port_pool_fill()
2189 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index)) in devlink_nl_sb_port_pool_fill()
2200 err = ops->sb_occ_port_pool_get(devlink_port, devlink_sb->index, in devlink_nl_sb_port_pool_fill()
2227 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_port_pool_get_doit() local
2232 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_cmd_sb_port_pool_get_doit()
2233 if (IS_ERR(devlink_sb)) in devlink_nl_cmd_sb_port_pool_get_doit()
2234 return PTR_ERR(devlink_sb); in devlink_nl_cmd_sb_port_pool_get_doit()
2236 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_port_pool_get_doit()
2249 devlink_sb, pool_index, in devlink_nl_cmd_sb_port_pool_get_doit()
2262 struct devlink_sb *devlink_sb, in __sb_port_pool_get_dumpit() argument
2266 u16 pool_count = devlink_sb_pool_count(devlink_sb); in __sb_port_pool_get_dumpit()
2278 devlink_sb, in __sb_port_pool_get_dumpit()
2295 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_port_pool_get_dumpit() local
2311 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_nl_cmd_sb_port_pool_get_dumpit()
2313 devlink, devlink_sb, in devlink_nl_cmd_sb_port_pool_get_dumpit()
2357 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_port_pool_set_doit() local
2362 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_cmd_sb_port_pool_set_doit()
2363 if (IS_ERR(devlink_sb)) in devlink_nl_cmd_sb_port_pool_set_doit()
2364 return PTR_ERR(devlink_sb); in devlink_nl_cmd_sb_port_pool_set_doit()
2366 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_port_pool_set_doit()
2375 return devlink_sb_port_pool_set(devlink_port, devlink_sb->index, in devlink_nl_cmd_sb_port_pool_set_doit()
2382 struct devlink_sb *devlink_sb, u16 tc_index, in devlink_nl_sb_tc_pool_bind_fill() argument
2393 err = ops->sb_tc_pool_bind_get(devlink_port, devlink_sb->index, in devlink_nl_sb_tc_pool_bind_fill()
2407 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index)) in devlink_nl_sb_tc_pool_bind_fill()
2423 devlink_sb->index, in devlink_nl_sb_tc_pool_bind_fill()
2449 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_tc_pool_bind_get_doit() local
2455 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_cmd_sb_tc_pool_bind_get_doit()
2456 if (IS_ERR(devlink_sb)) in devlink_nl_cmd_sb_tc_pool_bind_get_doit()
2457 return PTR_ERR(devlink_sb); in devlink_nl_cmd_sb_tc_pool_bind_get_doit()
2463 err = devlink_sb_tc_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_tc_pool_bind_get_doit()
2476 devlink_sb, tc_index, pool_type, in devlink_nl_cmd_sb_tc_pool_bind_get_doit()
2491 struct devlink_sb *devlink_sb, in __sb_tc_pool_bind_get_dumpit() argument
2500 tc_index < devlink_sb->ingress_tc_count; tc_index++) { in __sb_tc_pool_bind_get_dumpit()
2507 devlink_sb, in __sb_tc_pool_bind_get_dumpit()
2518 tc_index < devlink_sb->egress_tc_count; tc_index++) { in __sb_tc_pool_bind_get_dumpit()
2525 devlink_sb, in __sb_tc_pool_bind_get_dumpit()
2544 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_tc_pool_bind_get_dumpit() local
2560 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_nl_cmd_sb_tc_pool_bind_get_dumpit()
2563 devlink_sb, in devlink_nl_cmd_sb_tc_pool_bind_get_dumpit()
2610 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_tc_pool_bind_set_doit() local
2616 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
2617 if (IS_ERR(devlink_sb)) in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
2618 return PTR_ERR(devlink_sb); in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
2624 err = devlink_sb_tc_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
2629 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
2638 return devlink_sb_tc_pool_bind_set(devlink_port, devlink_sb->index, in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
2648 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_occ_snapshot_doit() local
2650 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_cmd_sb_occ_snapshot_doit()
2651 if (IS_ERR(devlink_sb)) in devlink_nl_cmd_sb_occ_snapshot_doit()
2652 return PTR_ERR(devlink_sb); in devlink_nl_cmd_sb_occ_snapshot_doit()
2655 return ops->sb_occ_snapshot(devlink, devlink_sb->index); in devlink_nl_cmd_sb_occ_snapshot_doit()
2664 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_occ_max_clear_doit() local
2666 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_cmd_sb_occ_max_clear_doit()
2667 if (IS_ERR(devlink_sb)) in devlink_nl_cmd_sb_occ_max_clear_doit()
2668 return PTR_ERR(devlink_sb); in devlink_nl_cmd_sb_occ_max_clear_doit()
2671 return ops->sb_occ_max_clear(devlink, devlink_sb->index); in devlink_nl_cmd_sb_occ_max_clear_doit()
9542 struct devlink_sb *devlink_sb; in devlink_sb_register() local
9551 devlink_sb = kzalloc(sizeof(*devlink_sb), GFP_KERNEL); in devlink_sb_register()
9552 if (!devlink_sb) { in devlink_sb_register()
9556 devlink_sb->index = sb_index; in devlink_sb_register()
9557 devlink_sb->size = size; in devlink_sb_register()
9558 devlink_sb->ingress_pools_count = ingress_pools_count; in devlink_sb_register()
9559 devlink_sb->egress_pools_count = egress_pools_count; in devlink_sb_register()
9560 devlink_sb->ingress_tc_count = ingress_tc_count; in devlink_sb_register()
9561 devlink_sb->egress_tc_count = egress_tc_count; in devlink_sb_register()
9562 list_add_tail(&devlink_sb->list, &devlink->sb_list); in devlink_sb_register()
9571 struct devlink_sb *devlink_sb; in devlink_sb_unregister() local
9574 devlink_sb = devlink_sb_get_by_index(devlink, sb_index); in devlink_sb_unregister()
9575 WARN_ON(!devlink_sb); in devlink_sb_unregister()
9576 list_del(&devlink_sb->list); in devlink_sb_unregister()
9578 kfree(devlink_sb); in devlink_sb_unregister()