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,