parman             15 drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c 	struct parman *parman;
parman             99 drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c 	err = parman_item_add(tcam_region->parman,
parman            117 drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c 	parman_item_remove(tcam_region->parman,
parman            243 drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c 	struct parman *parman;
parman            254 drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c 	parman = parman_create(&mlxsw_sp1_mr_tcam_region_parman_ops,
parman            256 drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c 	if (!parman) {
parman            260 drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c 	mr_tcam_region->parman = parman;
parman            271 drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c 		parman_prio_init(mr_tcam_region->parman,
parman            276 drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c 	parman_destroy(parman);
parman            290 drivers/net/ethernet/mellanox/mlxsw/spectrum1_mr_tcam.c 	parman_destroy(mr_tcam_region->parman);
parman            164 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c 	cregion->parman = parman_create(&mlxsw_sp_acl_ctcam_region_parman_ops,
parman            166 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c 	if (!cregion->parman)
parman            173 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c 	parman_destroy(cregion->parman);
parman            180 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c 	parman_prio_init(cregion->parman, &cchunk->parman_prio, priority);
parman            197 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c 	err = parman_item_add(cregion->parman, &cchunk->parman_prio,
parman            209 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c 	parman_item_remove(cregion->parman, &cchunk->parman_prio,
parman            220 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c 	parman_item_remove(cregion->parman, &cchunk->parman_prio,
parman             94 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h 	struct parman *parman;
parman             64 include/linux/parman.h struct parman;
parman             66 include/linux/parman.h struct parman *parman_create(const struct parman_ops *ops, void *priv);
parman             67 include/linux/parman.h void parman_destroy(struct parman *parman);
parman             68 include/linux/parman.h void parman_prio_init(struct parman *parman, struct parman_prio *prio,
parman             71 include/linux/parman.h int parman_item_add(struct parman *parman, struct parman_prio *prio,
parman             73 include/linux/parman.h void parman_item_remove(struct parman *parman, struct parman_prio *prio,
parman             44 lib/parman.c   	int (*item_add)(struct parman *parman, struct parman_prio *prio,
parman             46 lib/parman.c   	void (*item_remove)(struct parman *parman, struct parman_prio *prio,
parman             59 lib/parman.c   static int parman_enlarge(struct parman *parman)
parman             61 lib/parman.c   	unsigned long new_count = parman->limit_count +
parman             62 lib/parman.c   				  parman->ops->resize_step;
parman             65 lib/parman.c   	err = parman->ops->resize(parman->priv, new_count);
parman             68 lib/parman.c   	parman->limit_count = new_count;
parman             72 lib/parman.c   static int parman_shrink(struct parman *parman)
parman             74 lib/parman.c   	unsigned long new_count = parman->limit_count -
parman             75 lib/parman.c   				  parman->ops->resize_step;
parman             78 lib/parman.c   	if (new_count < parman->ops->base_count)
parman             80 lib/parman.c   	err = parman->ops->resize(parman->priv, new_count);
parman             83 lib/parman.c   	parman->limit_count = new_count;
parman            115 lib/parman.c   static unsigned long parman_lsort_new_index_find(struct parman *parman,
parman            118 lib/parman.c   	list_for_each_entry_from_reverse(prio, &parman->prio_list, list) {
parman            126 lib/parman.c   static void __parman_prio_move(struct parman *parman, struct parman_prio *prio,
parman            130 lib/parman.c   	parman->ops->move(parman->priv, item->index, to_index, count);
parman            133 lib/parman.c   static void parman_prio_shift_down(struct parman *parman,
parman            143 lib/parman.c   	__parman_prio_move(parman, prio, item, to_index, 1);
parman            148 lib/parman.c   static void parman_prio_shift_up(struct parman *parman,
parman            158 lib/parman.c   	__parman_prio_move(parman, prio, item, to_index, 1);
parman            163 lib/parman.c   static void parman_prio_item_remove(struct parman *parman,
parman            176 lib/parman.c   	__parman_prio_move(parman, prio, last_item, to_index, 1);
parman            182 lib/parman.c   static int parman_lsort_item_add(struct parman *parman,
parman            190 lib/parman.c   	if (parman->count + 1 > parman->limit_count) {
parman            191 lib/parman.c   		err = parman_enlarge(parman);
parman            196 lib/parman.c   	new_index = parman_lsort_new_index_find(parman, prio);
parman            197 lib/parman.c   	list_for_each_entry_reverse(prio2, &parman->prio_list, list) {
parman            200 lib/parman.c   		parman_prio_shift_down(parman, prio2);
parman            204 lib/parman.c   	parman->count++;
parman            208 lib/parman.c   static void parman_lsort_item_remove(struct parman *parman,
parman            212 lib/parman.c   	parman_prio_item_remove(parman, prio, item);
parman            213 lib/parman.c   	list_for_each_entry_continue(prio, &parman->prio_list, list)
parman            214 lib/parman.c   		parman_prio_shift_up(parman, prio);
parman            215 lib/parman.c   	parman->count--;
parman            216 lib/parman.c   	if (parman->limit_count - parman->count >= parman->ops->resize_step)
parman            217 lib/parman.c   		parman_shrink(parman);
parman            268 lib/parman.c   struct parman *parman_create(const struct parman_ops *ops, void *priv)
parman            270 lib/parman.c   	struct parman *parman;
parman            272 lib/parman.c   	parman = kzalloc(sizeof(*parman), GFP_KERNEL);
parman            273 lib/parman.c   	if (!parman)
parman            275 lib/parman.c   	INIT_LIST_HEAD(&parman->prio_list);
parman            276 lib/parman.c   	parman->ops = ops;
parman            277 lib/parman.c   	parman->priv = priv;
parman            278 lib/parman.c   	parman->limit_count = ops->base_count;
parman            279 lib/parman.c   	parman->algo = parman_algos[ops->algo];
parman            280 lib/parman.c   	return parman;
parman            290 lib/parman.c   void parman_destroy(struct parman *parman)
parman            292 lib/parman.c   	WARN_ON(!list_empty(&parman->prio_list));
parman            293 lib/parman.c   	kfree(parman);
parman            308 lib/parman.c   void parman_prio_init(struct parman *parman, struct parman_prio *prio,
parman            318 lib/parman.c   	list_for_each(pos, &parman->prio_list) {
parman            352 lib/parman.c   int parman_item_add(struct parman *parman, struct parman_prio *prio,
parman            355 lib/parman.c   	return parman->algo->item_add(parman, prio, item);
parman            367 lib/parman.c   void parman_item_remove(struct parman *parman, struct parman_prio *prio,
parman            370 lib/parman.c   	parman->algo->item_remove(parman, prio, item);
parman             78 lib/test_parman.c 	struct parman *parman;
parman            172 lib/test_parman.c 		parman_prio_init(test_parman->parman, &prio->parman_prio,
parman            211 lib/test_parman.c 		parman_item_remove(test_parman->parman,
parman            228 lib/test_parman.c 	test_parman->parman = parman_create(ops, test_parman);
parman            229 lib/test_parman.c 	if (!test_parman->parman) {
parman            250 lib/test_parman.c 	parman_destroy(test_parman->parman);
parman            281 lib/test_parman.c 			err = parman_item_add(test_parman->parman,
parman            290 lib/test_parman.c 			parman_item_remove(test_parman->parman,