Lines Matching refs:devlink_sb
171 struct devlink_sb { struct
181 static u16 devlink_sb_pool_count(struct devlink_sb *devlink_sb) in devlink_sb_pool_count() argument
183 return devlink_sb->ingress_pools_count + devlink_sb->egress_pools_count; in devlink_sb_pool_count()
186 static struct devlink_sb *devlink_sb_get_by_index(struct devlink *devlink, in devlink_sb_get_by_index()
189 struct devlink_sb *devlink_sb; in devlink_sb_get_by_index() local
191 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_sb_get_by_index()
192 if (devlink_sb->index == sb_index) in devlink_sb_get_by_index()
193 return devlink_sb; in devlink_sb_get_by_index()
204 static struct devlink_sb *devlink_sb_get_from_attrs(struct devlink *devlink, in devlink_sb_get_from_attrs()
209 struct devlink_sb *devlink_sb; in devlink_sb_get_from_attrs() local
211 devlink_sb = devlink_sb_get_by_index(devlink, sb_index); in devlink_sb_get_from_attrs()
212 if (!devlink_sb) in devlink_sb_get_from_attrs()
214 return devlink_sb; in devlink_sb_get_from_attrs()
219 static struct devlink_sb *devlink_sb_get_from_info(struct devlink *devlink, in devlink_sb_get_from_info()
225 static int devlink_sb_pool_index_get_from_attrs(struct devlink_sb *devlink_sb, in devlink_sb_pool_index_get_from_attrs() argument
235 if (val >= devlink_sb_pool_count(devlink_sb)) in devlink_sb_pool_index_get_from_attrs()
241 static int devlink_sb_pool_index_get_from_info(struct devlink_sb *devlink_sb, in devlink_sb_pool_index_get_from_info() argument
245 return devlink_sb_pool_index_get_from_attrs(devlink_sb, info->attrs, in devlink_sb_pool_index_get_from_info()
298 devlink_sb_tc_index_get_from_attrs(struct devlink_sb *devlink_sb, in devlink_sb_tc_index_get_from_attrs() argument
310 val >= devlink_sb->ingress_tc_count) in devlink_sb_tc_index_get_from_attrs()
313 val >= devlink_sb->egress_tc_count) in devlink_sb_tc_index_get_from_attrs()
320 devlink_sb_tc_index_get_from_info(struct devlink_sb *devlink_sb, in devlink_sb_tc_index_get_from_info() argument
325 return devlink_sb_tc_index_get_from_attrs(devlink_sb, info->attrs, in devlink_sb_tc_index_get_from_info()
417 struct devlink_sb *devlink_sb; in devlink_nl_pre_doit() local
419 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_pre_doit()
420 if (IS_ERR(devlink_sb)) { in devlink_nl_pre_doit()
421 err = PTR_ERR(devlink_sb); in devlink_nl_pre_doit()
424 info->user_ptr[1] = devlink_sb; in devlink_nl_pre_doit()
805 struct devlink_sb *devlink_sb, in devlink_nl_sb_fill() argument
817 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index)) in devlink_nl_sb_fill()
819 if (nla_put_u32(msg, DEVLINK_ATTR_SB_SIZE, devlink_sb->size)) in devlink_nl_sb_fill()
822 devlink_sb->ingress_pools_count)) in devlink_nl_sb_fill()
825 devlink_sb->egress_pools_count)) in devlink_nl_sb_fill()
828 devlink_sb->ingress_tc_count)) in devlink_nl_sb_fill()
831 devlink_sb->egress_tc_count)) in devlink_nl_sb_fill()
846 struct devlink_sb *devlink_sb = info->user_ptr[1]; in devlink_nl_cmd_sb_get_doit() local
854 err = devlink_nl_sb_fill(msg, devlink, devlink_sb, in devlink_nl_cmd_sb_get_doit()
869 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_get_dumpit() local
879 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_nl_cmd_sb_get_dumpit()
884 err = devlink_nl_sb_fill(msg, devlink, devlink_sb, in devlink_nl_cmd_sb_get_dumpit()
905 struct devlink_sb *devlink_sb, in devlink_nl_sb_pool_fill() argument
913 err = devlink->ops->sb_pool_get(devlink, devlink_sb->index, in devlink_nl_sb_pool_fill()
924 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index)) in devlink_nl_sb_pool_fill()
948 struct devlink_sb *devlink_sb = info->user_ptr[1]; in devlink_nl_cmd_sb_pool_get_doit() local
953 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_pool_get_doit()
965 err = devlink_nl_sb_pool_fill(msg, devlink, devlink_sb, pool_index, in devlink_nl_cmd_sb_pool_get_doit()
978 struct devlink_sb *devlink_sb, in __sb_pool_get_dumpit() argument
981 u16 pool_count = devlink_sb_pool_count(devlink_sb); in __sb_pool_get_dumpit()
991 devlink_sb, in __sb_pool_get_dumpit()
1006 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_pool_get_dumpit() local
1017 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_nl_cmd_sb_pool_get_dumpit()
1019 devlink_sb, in devlink_nl_cmd_sb_pool_get_dumpit()
1053 struct devlink_sb *devlink_sb = info->user_ptr[1]; in devlink_nl_cmd_sb_pool_set_doit() local
1059 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_pool_set_doit()
1072 return devlink_sb_pool_set(devlink, devlink_sb->index, in devlink_nl_cmd_sb_pool_set_doit()
1079 struct devlink_sb *devlink_sb, in devlink_nl_sb_port_pool_fill() argument
1089 err = ops->sb_port_pool_get(devlink_port, devlink_sb->index, in devlink_nl_sb_port_pool_fill()
1102 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index)) in devlink_nl_sb_port_pool_fill()
1113 err = ops->sb_occ_port_pool_get(devlink_port, devlink_sb->index, in devlink_nl_sb_port_pool_fill()
1138 struct devlink_sb *devlink_sb = info->user_ptr[1]; in devlink_nl_cmd_sb_port_pool_get_doit() local
1143 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_port_pool_get_doit()
1156 devlink_sb, pool_index, in devlink_nl_cmd_sb_port_pool_get_doit()
1169 struct devlink_sb *devlink_sb, in __sb_port_pool_get_dumpit() argument
1173 u16 pool_count = devlink_sb_pool_count(devlink_sb); in __sb_port_pool_get_dumpit()
1185 devlink_sb, in __sb_port_pool_get_dumpit()
1202 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_port_pool_get_dumpit() local
1213 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_nl_cmd_sb_port_pool_get_dumpit()
1215 devlink, devlink_sb, in devlink_nl_cmd_sb_port_pool_get_dumpit()
1249 struct devlink_sb *devlink_sb = info->user_ptr[1]; in devlink_nl_cmd_sb_port_pool_set_doit() local
1254 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_port_pool_set_doit()
1263 return devlink_sb_port_pool_set(devlink_port, devlink_sb->index, in devlink_nl_cmd_sb_port_pool_set_doit()
1270 struct devlink_sb *devlink_sb, u16 tc_index, in devlink_nl_sb_tc_pool_bind_fill() argument
1281 err = ops->sb_tc_pool_bind_get(devlink_port, devlink_sb->index, in devlink_nl_sb_tc_pool_bind_fill()
1295 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index)) in devlink_nl_sb_tc_pool_bind_fill()
1311 devlink_sb->index, in devlink_nl_sb_tc_pool_bind_fill()
1337 struct devlink_sb *devlink_sb = info->user_ptr[1]; in devlink_nl_cmd_sb_tc_pool_bind_get_doit() local
1347 err = devlink_sb_tc_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_tc_pool_bind_get_doit()
1360 devlink_sb, tc_index, pool_type, in devlink_nl_cmd_sb_tc_pool_bind_get_doit()
1375 struct devlink_sb *devlink_sb, in __sb_tc_pool_bind_get_dumpit() argument
1384 tc_index < devlink_sb->ingress_tc_count; tc_index++) { in __sb_tc_pool_bind_get_dumpit()
1391 devlink_sb, in __sb_tc_pool_bind_get_dumpit()
1402 tc_index < devlink_sb->egress_tc_count; tc_index++) { in __sb_tc_pool_bind_get_dumpit()
1409 devlink_sb, in __sb_tc_pool_bind_get_dumpit()
1428 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_tc_pool_bind_get_dumpit() local
1440 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_nl_cmd_sb_tc_pool_bind_get_dumpit()
1443 devlink_sb, in devlink_nl_cmd_sb_tc_pool_bind_get_dumpit()
1479 struct devlink_sb *devlink_sb = info->user_ptr[1]; in devlink_nl_cmd_sb_tc_pool_bind_set_doit() local
1490 err = devlink_sb_tc_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
1495 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
1504 return devlink_sb_tc_pool_bind_set(devlink_port, devlink_sb->index, in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
1513 struct devlink_sb *devlink_sb = info->user_ptr[1]; in devlink_nl_cmd_sb_occ_snapshot_doit() local
1517 return ops->sb_occ_snapshot(devlink, devlink_sb->index); in devlink_nl_cmd_sb_occ_snapshot_doit()
1525 struct devlink_sb *devlink_sb = info->user_ptr[1]; in devlink_nl_cmd_sb_occ_max_clear_doit() local
1529 return ops->sb_occ_max_clear(devlink, devlink_sb->index); in devlink_nl_cmd_sb_occ_max_clear_doit()
4071 struct devlink_sb *devlink_sb; in devlink_sb_register() local
4080 devlink_sb = kzalloc(sizeof(*devlink_sb), GFP_KERNEL); in devlink_sb_register()
4081 if (!devlink_sb) { in devlink_sb_register()
4085 devlink_sb->index = sb_index; in devlink_sb_register()
4086 devlink_sb->size = size; in devlink_sb_register()
4087 devlink_sb->ingress_pools_count = ingress_pools_count; in devlink_sb_register()
4088 devlink_sb->egress_pools_count = egress_pools_count; in devlink_sb_register()
4089 devlink_sb->ingress_tc_count = ingress_tc_count; in devlink_sb_register()
4090 devlink_sb->egress_tc_count = egress_tc_count; in devlink_sb_register()
4091 list_add_tail(&devlink_sb->list, &devlink->sb_list); in devlink_sb_register()
4100 struct devlink_sb *devlink_sb; in devlink_sb_unregister() local
4103 devlink_sb = devlink_sb_get_by_index(devlink, sb_index); in devlink_sb_unregister()
4104 WARN_ON(!devlink_sb); in devlink_sb_unregister()
4105 list_del(&devlink_sb->list); in devlink_sb_unregister()
4107 kfree(devlink_sb); in devlink_sb_unregister()