Lines Matching refs:devlink_sb

190 struct devlink_sb {  struct
200 static u16 devlink_sb_pool_count(struct devlink_sb *devlink_sb) in devlink_sb_pool_count() argument
202 return devlink_sb->ingress_pools_count + devlink_sb->egress_pools_count; in devlink_sb_pool_count()
205 static struct devlink_sb *devlink_sb_get_by_index(struct devlink *devlink, in devlink_sb_get_by_index()
208 struct devlink_sb *devlink_sb; in devlink_sb_get_by_index() local
210 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_sb_get_by_index()
211 if (devlink_sb->index == sb_index) in devlink_sb_get_by_index()
212 return devlink_sb; in devlink_sb_get_by_index()
223 static struct devlink_sb *devlink_sb_get_from_attrs(struct devlink *devlink, in devlink_sb_get_from_attrs()
228 struct devlink_sb *devlink_sb; in devlink_sb_get_from_attrs() local
230 devlink_sb = devlink_sb_get_by_index(devlink, sb_index); in devlink_sb_get_from_attrs()
231 if (!devlink_sb) in devlink_sb_get_from_attrs()
233 return devlink_sb; in devlink_sb_get_from_attrs()
238 static struct devlink_sb *devlink_sb_get_from_info(struct devlink *devlink, in devlink_sb_get_from_info()
244 static int devlink_sb_pool_index_get_from_attrs(struct devlink_sb *devlink_sb, in devlink_sb_pool_index_get_from_attrs() argument
254 if (val >= devlink_sb_pool_count(devlink_sb)) in devlink_sb_pool_index_get_from_attrs()
260 static int devlink_sb_pool_index_get_from_info(struct devlink_sb *devlink_sb, in devlink_sb_pool_index_get_from_info() argument
264 return devlink_sb_pool_index_get_from_attrs(devlink_sb, info->attrs, in devlink_sb_pool_index_get_from_info()
317 devlink_sb_tc_index_get_from_attrs(struct devlink_sb *devlink_sb, in devlink_sb_tc_index_get_from_attrs() argument
329 val >= devlink_sb->ingress_tc_count) in devlink_sb_tc_index_get_from_attrs()
332 val >= devlink_sb->egress_tc_count) in devlink_sb_tc_index_get_from_attrs()
339 devlink_sb_tc_index_get_from_info(struct devlink_sb *devlink_sb, in devlink_sb_tc_index_get_from_info() argument
344 return devlink_sb_tc_index_get_from_attrs(devlink_sb, info->attrs, in devlink_sb_tc_index_get_from_info()
1140 struct devlink_sb *devlink_sb, in devlink_nl_sb_fill() argument
1152 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index)) in devlink_nl_sb_fill()
1154 if (nla_put_u32(msg, DEVLINK_ATTR_SB_SIZE, devlink_sb->size)) in devlink_nl_sb_fill()
1157 devlink_sb->ingress_pools_count)) in devlink_nl_sb_fill()
1160 devlink_sb->egress_pools_count)) in devlink_nl_sb_fill()
1163 devlink_sb->ingress_tc_count)) in devlink_nl_sb_fill()
1166 devlink_sb->egress_tc_count)) in devlink_nl_sb_fill()
1181 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_get_doit() local
1185 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_cmd_sb_get_doit()
1186 if (IS_ERR(devlink_sb)) in devlink_nl_cmd_sb_get_doit()
1187 return PTR_ERR(devlink_sb); in devlink_nl_cmd_sb_get_doit()
1193 err = devlink_nl_sb_fill(msg, devlink, devlink_sb, in devlink_nl_cmd_sb_get_doit()
1208 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_get_dumpit() local
1218 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_nl_cmd_sb_get_dumpit()
1223 err = devlink_nl_sb_fill(msg, devlink, devlink_sb, in devlink_nl_cmd_sb_get_dumpit()
1244 struct devlink_sb *devlink_sb, in devlink_nl_sb_pool_fill() argument
1252 err = devlink->ops->sb_pool_get(devlink, devlink_sb->index, in devlink_nl_sb_pool_fill()
1263 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index)) in devlink_nl_sb_pool_fill()
1290 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_pool_get_doit() local
1295 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_cmd_sb_pool_get_doit()
1296 if (IS_ERR(devlink_sb)) in devlink_nl_cmd_sb_pool_get_doit()
1297 return PTR_ERR(devlink_sb); in devlink_nl_cmd_sb_pool_get_doit()
1299 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_pool_get_doit()
1311 err = devlink_nl_sb_pool_fill(msg, devlink, devlink_sb, pool_index, in devlink_nl_cmd_sb_pool_get_doit()
1324 struct devlink_sb *devlink_sb, in __sb_pool_get_dumpit() argument
1327 u16 pool_count = devlink_sb_pool_count(devlink_sb); in __sb_pool_get_dumpit()
1337 devlink_sb, in __sb_pool_get_dumpit()
1352 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_pool_get_dumpit() local
1363 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_nl_cmd_sb_pool_get_dumpit()
1365 devlink_sb, in devlink_nl_cmd_sb_pool_get_dumpit()
1406 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_pool_set_doit() local
1411 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_cmd_sb_pool_set_doit()
1412 if (IS_ERR(devlink_sb)) in devlink_nl_cmd_sb_pool_set_doit()
1413 return PTR_ERR(devlink_sb); in devlink_nl_cmd_sb_pool_set_doit()
1415 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_pool_set_doit()
1428 return devlink_sb_pool_set(devlink, devlink_sb->index, in devlink_nl_cmd_sb_pool_set_doit()
1436 struct devlink_sb *devlink_sb, in devlink_nl_sb_port_pool_fill() argument
1446 err = ops->sb_port_pool_get(devlink_port, devlink_sb->index, in devlink_nl_sb_port_pool_fill()
1459 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index)) in devlink_nl_sb_port_pool_fill()
1470 err = ops->sb_occ_port_pool_get(devlink_port, devlink_sb->index, in devlink_nl_sb_port_pool_fill()
1497 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_port_pool_get_doit() local
1502 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_cmd_sb_port_pool_get_doit()
1503 if (IS_ERR(devlink_sb)) in devlink_nl_cmd_sb_port_pool_get_doit()
1504 return PTR_ERR(devlink_sb); in devlink_nl_cmd_sb_port_pool_get_doit()
1506 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_port_pool_get_doit()
1519 devlink_sb, pool_index, in devlink_nl_cmd_sb_port_pool_get_doit()
1532 struct devlink_sb *devlink_sb, in __sb_port_pool_get_dumpit() argument
1536 u16 pool_count = devlink_sb_pool_count(devlink_sb); in __sb_port_pool_get_dumpit()
1548 devlink_sb, in __sb_port_pool_get_dumpit()
1565 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_port_pool_get_dumpit() local
1576 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_nl_cmd_sb_port_pool_get_dumpit()
1578 devlink, devlink_sb, in devlink_nl_cmd_sb_port_pool_get_dumpit()
1619 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_port_pool_set_doit() local
1624 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_cmd_sb_port_pool_set_doit()
1625 if (IS_ERR(devlink_sb)) in devlink_nl_cmd_sb_port_pool_set_doit()
1626 return PTR_ERR(devlink_sb); in devlink_nl_cmd_sb_port_pool_set_doit()
1628 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_port_pool_set_doit()
1637 return devlink_sb_port_pool_set(devlink_port, devlink_sb->index, in devlink_nl_cmd_sb_port_pool_set_doit()
1644 struct devlink_sb *devlink_sb, u16 tc_index, in devlink_nl_sb_tc_pool_bind_fill() argument
1655 err = ops->sb_tc_pool_bind_get(devlink_port, devlink_sb->index, in devlink_nl_sb_tc_pool_bind_fill()
1669 if (nla_put_u32(msg, DEVLINK_ATTR_SB_INDEX, devlink_sb->index)) in devlink_nl_sb_tc_pool_bind_fill()
1685 devlink_sb->index, in devlink_nl_sb_tc_pool_bind_fill()
1711 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_tc_pool_bind_get_doit() local
1717 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_cmd_sb_tc_pool_bind_get_doit()
1718 if (IS_ERR(devlink_sb)) in devlink_nl_cmd_sb_tc_pool_bind_get_doit()
1719 return PTR_ERR(devlink_sb); in devlink_nl_cmd_sb_tc_pool_bind_get_doit()
1725 err = devlink_sb_tc_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_tc_pool_bind_get_doit()
1738 devlink_sb, tc_index, pool_type, in devlink_nl_cmd_sb_tc_pool_bind_get_doit()
1753 struct devlink_sb *devlink_sb, in __sb_tc_pool_bind_get_dumpit() argument
1762 tc_index < devlink_sb->ingress_tc_count; tc_index++) { in __sb_tc_pool_bind_get_dumpit()
1769 devlink_sb, in __sb_tc_pool_bind_get_dumpit()
1780 tc_index < devlink_sb->egress_tc_count; tc_index++) { in __sb_tc_pool_bind_get_dumpit()
1787 devlink_sb, in __sb_tc_pool_bind_get_dumpit()
1806 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_tc_pool_bind_get_dumpit() local
1818 list_for_each_entry(devlink_sb, &devlink->sb_list, list) { in devlink_nl_cmd_sb_tc_pool_bind_get_dumpit()
1821 devlink_sb, in devlink_nl_cmd_sb_tc_pool_bind_get_dumpit()
1865 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_tc_pool_bind_set_doit() local
1871 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
1872 if (IS_ERR(devlink_sb)) in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
1873 return PTR_ERR(devlink_sb); in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
1879 err = devlink_sb_tc_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
1884 err = devlink_sb_pool_index_get_from_info(devlink_sb, info, in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
1893 return devlink_sb_tc_pool_bind_set(devlink_port, devlink_sb->index, in devlink_nl_cmd_sb_tc_pool_bind_set_doit()
1903 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_occ_snapshot_doit() local
1905 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_cmd_sb_occ_snapshot_doit()
1906 if (IS_ERR(devlink_sb)) in devlink_nl_cmd_sb_occ_snapshot_doit()
1907 return PTR_ERR(devlink_sb); in devlink_nl_cmd_sb_occ_snapshot_doit()
1910 return ops->sb_occ_snapshot(devlink, devlink_sb->index); in devlink_nl_cmd_sb_occ_snapshot_doit()
1919 struct devlink_sb *devlink_sb; in devlink_nl_cmd_sb_occ_max_clear_doit() local
1921 devlink_sb = devlink_sb_get_from_info(devlink, info); in devlink_nl_cmd_sb_occ_max_clear_doit()
1922 if (IS_ERR(devlink_sb)) in devlink_nl_cmd_sb_occ_max_clear_doit()
1923 return PTR_ERR(devlink_sb); in devlink_nl_cmd_sb_occ_max_clear_doit()
1926 return ops->sb_occ_max_clear(devlink, devlink_sb->index); in devlink_nl_cmd_sb_occ_max_clear_doit()
8429 struct devlink_sb *devlink_sb; in devlink_sb_register() local
8438 devlink_sb = kzalloc(sizeof(*devlink_sb), GFP_KERNEL); in devlink_sb_register()
8439 if (!devlink_sb) { in devlink_sb_register()
8443 devlink_sb->index = sb_index; in devlink_sb_register()
8444 devlink_sb->size = size; in devlink_sb_register()
8445 devlink_sb->ingress_pools_count = ingress_pools_count; in devlink_sb_register()
8446 devlink_sb->egress_pools_count = egress_pools_count; in devlink_sb_register()
8447 devlink_sb->ingress_tc_count = ingress_tc_count; in devlink_sb_register()
8448 devlink_sb->egress_tc_count = egress_tc_count; in devlink_sb_register()
8449 list_add_tail(&devlink_sb->list, &devlink->sb_list); in devlink_sb_register()
8458 struct devlink_sb *devlink_sb; in devlink_sb_unregister() local
8461 devlink_sb = devlink_sb_get_by_index(devlink, sb_index); in devlink_sb_unregister()
8462 WARN_ON(!devlink_sb); in devlink_sb_unregister()
8463 list_del(&devlink_sb->list); in devlink_sb_unregister()
8465 kfree(devlink_sb); in devlink_sb_unregister()