objagg             66 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c 	struct objagg *objagg;
objagg           1013 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c 	objagg_obj = objagg_obj_get(erp_table->objagg, &key);
objagg           1027 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c 	objagg_obj_put(erp_table->objagg, objagg_obj);
objagg           1327 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c 	erp_table->objagg = objagg_create(&mlxsw_sp_acl_erp_objagg_ops,
objagg           1329 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c 	if (IS_ERR(erp_table->objagg)) {
objagg           1330 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c 		err = PTR_ERR(erp_table->objagg);
objagg           1352 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c 	objagg_destroy(erp_table->objagg);
objagg           1390 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c 	ostats = objagg_stats_get(erp_table->objagg);
objagg           1426 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c 	hints = objagg_hints_get(erp_table->objagg,
objagg             19 include/linux/objagg.h struct objagg;
objagg             27 include/linux/objagg.h struct objagg_obj *objagg_obj_get(struct objagg *objagg, void *obj);
objagg             28 include/linux/objagg.h void objagg_obj_put(struct objagg *objagg, struct objagg_obj *objagg_obj);
objagg             29 include/linux/objagg.h struct objagg *objagg_create(const struct objagg_ops *ops,
objagg             31 include/linux/objagg.h void objagg_destroy(struct objagg *objagg);
objagg             50 include/linux/objagg.h const struct objagg_stats *objagg_stats_get(struct objagg *objagg);
objagg             57 include/linux/objagg.h struct objagg_hints *objagg_hints_get(struct objagg *objagg,
objagg              5 include/trace/events/objagg.h #define TRACE_SYSTEM objagg
objagg             12 include/trace/events/objagg.h struct objagg;
objagg             16 include/trace/events/objagg.h 	TP_PROTO(const struct objagg *objagg),
objagg             18 include/trace/events/objagg.h 	TP_ARGS(objagg),
objagg             21 include/trace/events/objagg.h 		__field(const void *, objagg)
objagg             25 include/trace/events/objagg.h 		__entry->objagg = objagg;
objagg             28 include/trace/events/objagg.h 	TP_printk("objagg %p", __entry->objagg)
objagg             32 include/trace/events/objagg.h 	TP_PROTO(const struct objagg *objagg),
objagg             34 include/trace/events/objagg.h 	TP_ARGS(objagg),
objagg             37 include/trace/events/objagg.h 		__field(const void *, objagg)
objagg             41 include/trace/events/objagg.h 		__entry->objagg = objagg;
objagg             44 include/trace/events/objagg.h 	TP_printk("objagg %p", __entry->objagg)
objagg             48 include/trace/events/objagg.h 	TP_PROTO(const struct objagg *objagg,
objagg             51 include/trace/events/objagg.h 	TP_ARGS(objagg, obj),
objagg             54 include/trace/events/objagg.h 		__field(const void *, objagg)
objagg             59 include/trace/events/objagg.h 		__entry->objagg = objagg;
objagg             63 include/trace/events/objagg.h 	TP_printk("objagg %p, obj %p", __entry->objagg, __entry->obj)
objagg             67 include/trace/events/objagg.h 	TP_PROTO(const struct objagg *objagg,
objagg             70 include/trace/events/objagg.h 	TP_ARGS(objagg, obj),
objagg             73 include/trace/events/objagg.h 		__field(const void *, objagg)
objagg             78 include/trace/events/objagg.h 		__entry->objagg = objagg;
objagg             82 include/trace/events/objagg.h 	TP_printk("objagg %p, obj %p", __entry->objagg, __entry->obj)
objagg             86 include/trace/events/objagg.h 	TP_PROTO(const struct objagg *objagg,
objagg             90 include/trace/events/objagg.h 	TP_ARGS(objagg, obj, refcount),
objagg             93 include/trace/events/objagg.h 		__field(const void *, objagg)
objagg             99 include/trace/events/objagg.h 		__entry->objagg = objagg;
objagg            105 include/trace/events/objagg.h 		  __entry->objagg, __entry->obj, __entry->refcount)
objagg            109 include/trace/events/objagg.h 	TP_PROTO(const struct objagg *objagg,
objagg            113 include/trace/events/objagg.h 	TP_ARGS(objagg, obj, refcount),
objagg            116 include/trace/events/objagg.h 		__field(const void *, objagg)
objagg            122 include/trace/events/objagg.h 		__entry->objagg = objagg;
objagg            128 include/trace/events/objagg.h 		  __entry->objagg, __entry->obj, __entry->refcount)
objagg            132 include/trace/events/objagg.h 	TP_PROTO(const struct objagg *objagg,
objagg            137 include/trace/events/objagg.h 	TP_ARGS(objagg, obj, parent, parent_refcount),
objagg            140 include/trace/events/objagg.h 		__field(const void *, objagg)
objagg            147 include/trace/events/objagg.h 		__entry->objagg = objagg;
objagg            154 include/trace/events/objagg.h 		  __entry->objagg, __entry->obj,
objagg            159 include/trace/events/objagg.h 	TP_PROTO(const struct objagg *objagg,
objagg            164 include/trace/events/objagg.h 	TP_ARGS(objagg, obj, parent, parent_refcount),
objagg            167 include/trace/events/objagg.h 		__field(const void *, objagg)
objagg            174 include/trace/events/objagg.h 		__entry->objagg = objagg;
objagg            181 include/trace/events/objagg.h 		  __entry->objagg, __entry->obj,
objagg            186 include/trace/events/objagg.h 	TP_PROTO(const struct objagg *objagg,
objagg            189 include/trace/events/objagg.h 	TP_ARGS(objagg, obj),
objagg            192 include/trace/events/objagg.h 		__field(const void *, objagg)
objagg            197 include/trace/events/objagg.h 		__entry->objagg = objagg;
objagg            202 include/trace/events/objagg.h 		  __entry->objagg, __entry->obj)
objagg            206 include/trace/events/objagg.h 	TP_PROTO(const struct objagg *objagg,
objagg            209 include/trace/events/objagg.h 	TP_ARGS(objagg, obj),
objagg            212 include/trace/events/objagg.h 		__field(const void *, objagg)
objagg            217 include/trace/events/objagg.h 		__entry->objagg = objagg;
objagg            222 include/trace/events/objagg.h 		  __entry->objagg, __entry->obj)
objagg            158 lib/objagg.c   static struct objagg_obj *objagg_obj_lookup(struct objagg *objagg, void *obj)
objagg            160 lib/objagg.c   	return rhashtable_lookup_fast(&objagg->obj_ht, obj, objagg->ht_params);
objagg            163 lib/objagg.c   static int objagg_obj_parent_assign(struct objagg *objagg,
objagg            170 lib/objagg.c   	delta_priv = objagg->ops->delta_create(objagg->priv, parent->obj,
objagg            182 lib/objagg.c   	trace_objagg_obj_parent_assign(objagg, objagg_obj,
objagg            188 lib/objagg.c   static int objagg_obj_parent_lookup_assign(struct objagg *objagg,
objagg            194 lib/objagg.c   	list_for_each_entry(objagg_obj_cur, &objagg->obj_list, list) {
objagg            200 lib/objagg.c   		err = objagg_obj_parent_assign(objagg, objagg_obj,
objagg            208 lib/objagg.c   static void __objagg_obj_put(struct objagg *objagg,
objagg            211 lib/objagg.c   static void objagg_obj_parent_unassign(struct objagg *objagg,
objagg            214 lib/objagg.c   	trace_objagg_obj_parent_unassign(objagg, objagg_obj,
objagg            217 lib/objagg.c   	objagg->ops->delta_destroy(objagg->priv, objagg_obj->delta_priv);
objagg            218 lib/objagg.c   	__objagg_obj_put(objagg, objagg_obj->parent);
objagg            221 lib/objagg.c   static int objagg_obj_root_id_alloc(struct objagg *objagg,
objagg            229 lib/objagg.c   	if (!objagg->hints) {
objagg            241 lib/objagg.c   		min = objagg->hints->root_count;
objagg            245 lib/objagg.c   	root_id = ida_alloc_range(&objagg->root_ida, min, max, GFP_KERNEL);
objagg            253 lib/objagg.c   static void objagg_obj_root_id_free(struct objagg *objagg,
objagg            256 lib/objagg.c   	if (!objagg->hints)
objagg            258 lib/objagg.c   	ida_free(&objagg->root_ida, objagg_obj->root_id);
objagg            261 lib/objagg.c   static int objagg_obj_root_create(struct objagg *objagg,
objagg            267 lib/objagg.c   	err = objagg_obj_root_id_alloc(objagg, objagg_obj, hnode);
objagg            270 lib/objagg.c   	objagg_obj->root_priv = objagg->ops->root_create(objagg->priv,
objagg            277 lib/objagg.c   	trace_objagg_obj_root_create(objagg, objagg_obj);
objagg            281 lib/objagg.c   	objagg_obj_root_id_free(objagg, objagg_obj);
objagg            285 lib/objagg.c   static void objagg_obj_root_destroy(struct objagg *objagg,
objagg            288 lib/objagg.c   	trace_objagg_obj_root_destroy(objagg, objagg_obj);
objagg            289 lib/objagg.c   	objagg->ops->root_destroy(objagg->priv, objagg_obj->root_priv);
objagg            290 lib/objagg.c   	objagg_obj_root_id_free(objagg, objagg_obj);
objagg            293 lib/objagg.c   static struct objagg_obj *__objagg_obj_get(struct objagg *objagg, void *obj);
objagg            295 lib/objagg.c   static int objagg_obj_init_with_hints(struct objagg *objagg,
objagg            303 lib/objagg.c   	hnode = objagg_hints_lookup(objagg->hints, objagg_obj->obj);
objagg            311 lib/objagg.c   		return objagg_obj_root_create(objagg, objagg_obj, hnode);
objagg            313 lib/objagg.c   	parent = __objagg_obj_get(objagg, hnode->parent->obj);
objagg            317 lib/objagg.c   	err = objagg_obj_parent_assign(objagg, objagg_obj, parent, false);
objagg            327 lib/objagg.c   	objagg_obj_put(objagg, parent);
objagg            331 lib/objagg.c   static int objagg_obj_init(struct objagg *objagg,
objagg            340 lib/objagg.c   	err = objagg_obj_init_with_hints(objagg, objagg_obj, &hint_found);
objagg            348 lib/objagg.c   	err = objagg_obj_parent_lookup_assign(objagg, objagg_obj);
objagg            352 lib/objagg.c   	return objagg_obj_root_create(objagg, objagg_obj, NULL);
objagg            355 lib/objagg.c   static void objagg_obj_fini(struct objagg *objagg,
objagg            359 lib/objagg.c   		objagg_obj_parent_unassign(objagg, objagg_obj);
objagg            361 lib/objagg.c   		objagg_obj_root_destroy(objagg, objagg_obj);
objagg            364 lib/objagg.c   static struct objagg_obj *objagg_obj_create(struct objagg *objagg, void *obj)
objagg            369 lib/objagg.c   	objagg_obj = kzalloc(sizeof(*objagg_obj) + objagg->ops->obj_size,
objagg            374 lib/objagg.c   	memcpy(objagg_obj->obj, obj, objagg->ops->obj_size);
objagg            376 lib/objagg.c   	err = objagg_obj_init(objagg, objagg_obj);
objagg            380 lib/objagg.c   	err = rhashtable_insert_fast(&objagg->obj_ht, &objagg_obj->ht_node,
objagg            381 lib/objagg.c   				     objagg->ht_params);
objagg            384 lib/objagg.c   	list_add(&objagg_obj->list, &objagg->obj_list);
objagg            385 lib/objagg.c   	objagg->obj_count++;
objagg            386 lib/objagg.c   	trace_objagg_obj_create(objagg, objagg_obj);
objagg            391 lib/objagg.c   	objagg_obj_fini(objagg, objagg_obj);
objagg            397 lib/objagg.c   static struct objagg_obj *__objagg_obj_get(struct objagg *objagg, void *obj)
objagg            404 lib/objagg.c   	objagg_obj = objagg_obj_lookup(objagg, obj);
objagg            410 lib/objagg.c   	return objagg_obj_create(objagg, obj);
objagg            437 lib/objagg.c   struct objagg_obj *objagg_obj_get(struct objagg *objagg, void *obj)
objagg            441 lib/objagg.c   	objagg_obj = __objagg_obj_get(objagg, obj);
objagg            445 lib/objagg.c   	trace_objagg_obj_get(objagg, objagg_obj, objagg_obj->refcount);
objagg            450 lib/objagg.c   static void objagg_obj_destroy(struct objagg *objagg,
objagg            453 lib/objagg.c   	trace_objagg_obj_destroy(objagg, objagg_obj);
objagg            454 lib/objagg.c   	--objagg->obj_count;
objagg            456 lib/objagg.c   	rhashtable_remove_fast(&objagg->obj_ht, &objagg_obj->ht_node,
objagg            457 lib/objagg.c   			       objagg->ht_params);
objagg            458 lib/objagg.c   	objagg_obj_fini(objagg, objagg_obj);
objagg            462 lib/objagg.c   static void __objagg_obj_put(struct objagg *objagg,
objagg            466 lib/objagg.c   		objagg_obj_destroy(objagg, objagg_obj);
objagg            478 lib/objagg.c   void objagg_obj_put(struct objagg *objagg, struct objagg_obj *objagg_obj)
objagg            480 lib/objagg.c   	trace_objagg_obj_put(objagg, objagg_obj, objagg_obj->refcount);
objagg            482 lib/objagg.c   	__objagg_obj_put(objagg, objagg_obj);
objagg            514 lib/objagg.c   struct objagg *objagg_create(const struct objagg_ops *ops,
objagg            517 lib/objagg.c   	struct objagg *objagg;
objagg            525 lib/objagg.c   	objagg = kzalloc(sizeof(*objagg), GFP_KERNEL);
objagg            526 lib/objagg.c   	if (!objagg)
objagg            528 lib/objagg.c   	objagg->ops = ops;
objagg            530 lib/objagg.c   		objagg->hints = objagg_hints;
objagg            533 lib/objagg.c   	objagg->priv = priv;
objagg            534 lib/objagg.c   	INIT_LIST_HEAD(&objagg->obj_list);
objagg            536 lib/objagg.c   	objagg->ht_params.key_len = ops->obj_size;
objagg            537 lib/objagg.c   	objagg->ht_params.key_offset = offsetof(struct objagg_obj, obj);
objagg            538 lib/objagg.c   	objagg->ht_params.head_offset = offsetof(struct objagg_obj, ht_node);
objagg            540 lib/objagg.c   	err = rhashtable_init(&objagg->obj_ht, &objagg->ht_params);
objagg            544 lib/objagg.c   	ida_init(&objagg->root_ida);
objagg            546 lib/objagg.c   	trace_objagg_create(objagg);
objagg            547 lib/objagg.c   	return objagg;
objagg            550 lib/objagg.c   	kfree(objagg);
objagg            561 lib/objagg.c   void objagg_destroy(struct objagg *objagg)
objagg            563 lib/objagg.c   	trace_objagg_destroy(objagg);
objagg            564 lib/objagg.c   	ida_destroy(&objagg->root_ida);
objagg            565 lib/objagg.c   	WARN_ON(!list_empty(&objagg->obj_list));
objagg            566 lib/objagg.c   	rhashtable_destroy(&objagg->obj_ht);
objagg            567 lib/objagg.c   	if (objagg->hints)
objagg            568 lib/objagg.c   		objagg_hints_put(objagg->hints);
objagg            569 lib/objagg.c   	kfree(objagg);
objagg            604 lib/objagg.c   const struct objagg_stats *objagg_stats_get(struct objagg *objagg)
objagg            611 lib/objagg.c   					   objagg->obj_count), GFP_KERNEL);
objagg            616 lib/objagg.c   	list_for_each_entry(objagg_obj, &objagg->obj_list, list) {
objagg            777 lib/objagg.c   static struct objagg_tmp_graph *objagg_tmp_graph_create(struct objagg *objagg)
objagg            779 lib/objagg.c   	unsigned int nodes_count = objagg->obj_count;
objagg            803 lib/objagg.c   	list_for_each_entry(objagg_obj, &objagg->obj_list, list) {
objagg            817 lib/objagg.c   			if (objagg->ops->delta_check(objagg->priv,
objagg            843 lib/objagg.c   				      struct objagg *objagg)
objagg            852 lib/objagg.c   	graph = objagg_tmp_graph_create(objagg);
objagg            864 lib/objagg.c   						 objagg->ops->obj_size,
objagg            880 lib/objagg.c   							 objagg->ops->obj_size,
objagg            897 lib/objagg.c   			    struct objagg *objagg);
objagg            940 lib/objagg.c   struct objagg_hints *objagg_hints_get(struct objagg *objagg,
objagg            951 lib/objagg.c   	objagg_hints->ops = objagg->ops;
objagg            956 lib/objagg.c   	objagg_hints->ht_params.key_len = objagg->ops->obj_size;
objagg            967 lib/objagg.c   	err = algo->fillup_hints(objagg_hints, objagg);
objagg            971 lib/objagg.c   	if (WARN_ON(objagg_hints->node_count != objagg->obj_count)) {
objagg             47 lib/test_objagg.c 					struct objagg *objagg,
objagg             55 lib/test_objagg.c 	objagg_obj = objagg_obj_get(objagg, &key);
objagg             72 lib/test_objagg.c 	objagg_obj_put(objagg, objagg_obj);
objagg             76 lib/test_objagg.c static void world_obj_put(struct world *world, struct objagg *objagg,
objagg             84 lib/test_objagg.c 	objagg_obj_put(objagg, objagg_obj);
objagg            151 lib/test_objagg.c static int test_nodelta_obj_get(struct world *world, struct objagg *objagg,
objagg            163 lib/test_objagg.c 	objagg_obj = world_obj_get(world, objagg, key_id);
objagg            200 lib/test_objagg.c 	objagg_obj_put(objagg, objagg_obj);
objagg            204 lib/test_objagg.c static int test_nodelta_obj_put(struct world *world, struct objagg *objagg,
objagg            209 lib/test_objagg.c 	world_obj_put(world, objagg, key_id);
objagg            226 lib/test_objagg.c static int check_stats_zero(struct objagg *objagg)
objagg            231 lib/test_objagg.c 	stats = objagg_stats_get(objagg);
objagg            244 lib/test_objagg.c static int check_stats_nodelta(struct objagg *objagg)
objagg            250 lib/test_objagg.c 	stats = objagg_stats_get(objagg);
objagg            307 lib/test_objagg.c 	struct objagg *objagg;
objagg            311 lib/test_objagg.c 	objagg = objagg_create(&nodelta_ops, NULL, &world);
objagg            312 lib/test_objagg.c 	if (IS_ERR(objagg))
objagg            313 lib/test_objagg.c 		return PTR_ERR(objagg);
objagg            315 lib/test_objagg.c 	err = check_stats_zero(objagg);
objagg            321 lib/test_objagg.c 		err = test_nodelta_obj_get(&world, objagg, i, true);
objagg            330 lib/test_objagg.c 		err = test_nodelta_obj_get(&world, objagg, i, false);
objagg            335 lib/test_objagg.c 	err = check_stats_nodelta(objagg);
objagg            340 lib/test_objagg.c 		err = test_nodelta_obj_put(&world, objagg, i, false);
objagg            345 lib/test_objagg.c 		err = test_nodelta_obj_put(&world, objagg, i, true);
objagg            350 lib/test_objagg.c 	err = check_stats_zero(objagg);
objagg            354 lib/test_objagg.c 	objagg_destroy(objagg);
objagg            361 lib/test_objagg.c 		world_obj_put(&world, objagg, i);
objagg            367 lib/test_objagg.c 		world_obj_put(&world, objagg, i);
objagg            370 lib/test_objagg.c 	objagg_destroy(objagg);
objagg            740 lib/test_objagg.c static int check_expect_stats(struct objagg *objagg,
objagg            747 lib/test_objagg.c 	stats = objagg_stats_get(objagg);
objagg            758 lib/test_objagg.c 				  struct objagg *objagg,
objagg            775 lib/test_objagg.c 		objagg_obj = world_obj_get(world, objagg, key_id);
objagg            780 lib/test_objagg.c 		world_obj_put(world, objagg, key_id);
objagg            791 lib/test_objagg.c 	err = check_expect_stats(objagg, &action_item->expect_stats, &errmsg);
objagg            803 lib/test_objagg.c 	test_delta_action_item(world, objagg, action_item, true);
objagg            810 lib/test_objagg.c 	struct objagg *objagg;
objagg            814 lib/test_objagg.c 	objagg = objagg_create(&delta_ops, NULL, &world);
objagg            815 lib/test_objagg.c 	if (IS_ERR(objagg))
objagg            816 lib/test_objagg.c 		return PTR_ERR(objagg);
objagg            819 lib/test_objagg.c 		err = test_delta_action_item(&world, objagg,
objagg            825 lib/test_objagg.c 	objagg_destroy(objagg);
objagg            830 lib/test_objagg.c 		test_delta_action_item(&world, objagg, &action_items[i], true);
objagg            832 lib/test_objagg.c 	objagg_destroy(objagg);
objagg            872 lib/test_objagg.c static void pr_debug_stats(struct objagg *objagg)
objagg            876 lib/test_objagg.c 	stats = objagg_stats_get(objagg);
objagg            915 lib/test_objagg.c 	struct objagg *objagg2;
objagg            916 lib/test_objagg.c 	struct objagg *objagg;
objagg            921 lib/test_objagg.c 	objagg = objagg_create(&delta_ops, NULL, &world);
objagg            922 lib/test_objagg.c 	if (IS_ERR(objagg))
objagg            923 lib/test_objagg.c 		return PTR_ERR(objagg);
objagg            926 lib/test_objagg.c 		objagg_obj = world_obj_get(&world, objagg,
objagg            934 lib/test_objagg.c 	pr_debug_stats(objagg);
objagg            935 lib/test_objagg.c 	err = check_expect_stats(objagg, &hints_case->expect_stats, &errmsg);
objagg            941 lib/test_objagg.c 	hints = objagg_hints_get(objagg, OBJAGG_OPT_ALGO_SIMPLE_GREEDY);
objagg            981 lib/test_objagg.c 		world_obj_put(&world2, objagg, hints_case->key_ids[i]);
objagg            990 lib/test_objagg.c 		world_obj_put(&world, objagg, hints_case->key_ids[i]);
objagg            992 lib/test_objagg.c 	objagg_destroy(objagg);