Lines Matching full:hierarchy
254 struct net_shaper_hierarchy *hierarchy = net_shaper_hierarchy(binding); in net_shaper_lookup() local
257 if (!hierarchy || xa_get_mark(&hierarchy->shapers, index, in net_shaper_lookup()
261 return xa_load(&hierarchy->shapers, index); in net_shaper_lookup()
264 /* Allocate on demand the per device shaper's hierarchy container.
270 struct net_shaper_hierarchy *hierarchy = net_shaper_hierarchy(binding); in net_shaper_hierarchy_setup() local
272 if (hierarchy) in net_shaper_hierarchy_setup()
273 return hierarchy; in net_shaper_hierarchy_setup()
275 hierarchy = kmalloc(sizeof(*hierarchy), GFP_KERNEL); in net_shaper_hierarchy_setup()
276 if (!hierarchy) in net_shaper_hierarchy_setup()
280 xa_init_flags(&hierarchy->shapers, XA_FLAGS_ALLOC); in net_shaper_hierarchy_setup()
285 WRITE_ONCE(binding->netdev->net_shaper_hierarchy, hierarchy); in net_shaper_hierarchy_setup()
288 return hierarchy; in net_shaper_hierarchy_setup()
291 /* Prepare the hierarchy container to actually insert the given shaper, doing
298 struct net_shaper_hierarchy *hierarchy = net_shaper_hierarchy(binding); in net_shaper_pre_insert() local
303 if (!hierarchy) in net_shaper_pre_insert()
307 cur = xa_load(&hierarchy->shapers, index); in net_shaper_pre_insert()
321 ret = xa_alloc(&hierarchy->shapers, &index, NULL, in net_shaper_pre_insert()
338 /* Mark 'tentative' shaper inside the hierarchy container. in net_shaper_pre_insert()
341 xa_lock(&hierarchy->shapers); in net_shaper_pre_insert()
342 prev = __xa_store(&hierarchy->shapers, index, cur, GFP_KERNEL); in net_shaper_pre_insert()
343 __xa_set_mark(&hierarchy->shapers, index, NET_SHAPER_NOT_VALID); in net_shaper_pre_insert()
344 xa_unlock(&hierarchy->shapers); in net_shaper_pre_insert()
355 xa_erase(&hierarchy->shapers, index); in net_shaper_pre_insert()
365 struct net_shaper_hierarchy *hierarchy = net_shaper_hierarchy(binding); in net_shaper_commit() local
370 xa_lock(&hierarchy->shapers); in net_shaper_commit()
374 cur = xa_load(&hierarchy->shapers, index); in net_shaper_commit()
379 * and update the hierarchy container. in net_shaper_commit()
381 __xa_clear_mark(&hierarchy->shapers, index, in net_shaper_commit()
385 xa_unlock(&hierarchy->shapers); in net_shaper_commit()
388 /* Rollback all the tentative inserts from the hierarchy. */
391 struct net_shaper_hierarchy *hierarchy = net_shaper_hierarchy(binding); in net_shaper_rollback() local
395 if (!hierarchy) in net_shaper_rollback()
398 xa_lock(&hierarchy->shapers); in net_shaper_rollback()
399 xa_for_each_marked(&hierarchy->shapers, index, cur, in net_shaper_rollback()
401 __xa_erase(&hierarchy->shapers, index); in net_shaper_rollback()
404 xa_unlock(&hierarchy->shapers); in net_shaper_rollback()
533 /* Fetch existing hierarchy, if any, so that user provide info will in net_shaper_parse_info()
778 struct net_shaper_hierarchy *hierarchy; in net_shaper_nl_get_dumpit() local
785 hierarchy = net_shaper_hierarchy(binding); in net_shaper_nl_get_dumpit()
786 if (!hierarchy) in net_shaper_nl_get_dumpit()
790 for (; (shaper = xa_find(&hierarchy->shapers, &ctx->start_index, in net_shaper_nl_get_dumpit()
803 struct net_shaper_hierarchy *hierarchy; in net_shaper_nl_set_doit() local
822 hierarchy = net_shaper_hierarchy_setup(binding); in net_shaper_nl_set_doit()
823 if (!hierarchy) { in net_shaper_nl_set_doit()
858 struct net_shaper_hierarchy *hierarchy = net_shaper_hierarchy(binding); in __net_shaper_delete() local
870 xa_erase(&hierarchy->shapers, net_shaper_handle_to_index(&handle)); in __net_shaper_delete()
1013 struct net_shaper_hierarchy *hierarchy = net_shaper_hierarchy(binding); in net_shaper_pre_del_node() local
1042 xa_for_each(&hierarchy->shapers, index, cur) { in net_shaper_pre_del_node()
1069 struct net_shaper_hierarchy *hierarchy; in net_shaper_nl_delete_doit() local
1086 hierarchy = net_shaper_hierarchy(binding); in net_shaper_nl_delete_doit()
1087 if (!hierarchy) { in net_shaper_nl_delete_doit()
1141 struct net_shaper_hierarchy *hierarchy; in net_shaper_nl_group_doit() local
1199 hierarchy = net_shaper_hierarchy_setup(binding); in net_shaper_nl_group_doit()
1200 if (!hierarchy) { in net_shaper_nl_group_doit()
1356 struct net_shaper_hierarchy *hierarchy = net_shaper_hierarchy(binding); in net_shaper_flush() local
1360 if (!hierarchy) in net_shaper_flush()
1364 xa_lock(&hierarchy->shapers); in net_shaper_flush()
1365 xa_for_each(&hierarchy->shapers, index, cur) { in net_shaper_flush()
1366 __xa_erase(&hierarchy->shapers, index); in net_shaper_flush()
1369 xa_unlock(&hierarchy->shapers); in net_shaper_flush()
1372 kfree(hierarchy); in net_shaper_flush()
1388 struct net_shaper_hierarchy *hierarchy; in net_shaper_set_real_num_tx_queues() local
1394 hierarchy = net_shaper_hierarchy(&binding); in net_shaper_set_real_num_tx_queues()
1395 if (!hierarchy) in net_shaper_set_real_num_tx_queues()
1420 xa_erase(&hierarchy->shapers, index); in net_shaper_set_real_num_tx_queues()