erp_table 45 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_erp_table *erp_table; erp_table 72 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c (*erp_create)(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 74 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c void (*erp_destroy)(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 79 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_mask_create(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 82 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_mask_destroy(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 85 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_second_mask_create(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 88 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_second_mask_destroy(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 91 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_first_mask_create(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 94 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_first_mask_destroy(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 97 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_no_mask_destroy(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 121 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_table_is_used(const struct mlxsw_sp_acl_erp_table *erp_table) erp_table 123 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c return erp_table->ops != &erp_single_mask_ops && erp_table 124 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->ops != &erp_no_mask_ops; erp_table 130 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c return erp->index % erp->erp_table->erp_core->num_erp_banks; erp_table 134 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_table_entry_size(const struct mlxsw_sp_acl_erp_table *erp_table) erp_table 136 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_atcam_region *aregion = erp_table->aregion; erp_table 137 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_erp_core *erp_core = erp_table->erp_core; erp_table 142 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c static int mlxsw_sp_acl_erp_id_get(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 147 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c id = find_first_zero_bit(erp_table->erp_id_bitmap, erp_table 150 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c __set_bit(id, erp_table->erp_id_bitmap); erp_table 158 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c static void mlxsw_sp_acl_erp_id_put(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 161 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c __clear_bit(id, erp_table->erp_id_bitmap); erp_table 181 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_master_mask_update(struct mlxsw_sp_acl_erp_table *erp_table) erp_table 183 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_tcam_region *region = erp_table->aregion->region; erp_table 190 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c bitmap_to_arr32((u32 *) master_mask, erp_table->master_mask.bitmap, erp_table 197 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_master_mask_set(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 208 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c &erp_table->master_mask); erp_table 210 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_sp_acl_erp_master_mask_update(erp_table); erp_table 219 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c &erp_table->master_mask); erp_table 224 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_master_mask_clear(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 235 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c &erp_table->master_mask); erp_table 237 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_sp_acl_erp_master_mask_update(erp_table); erp_table 246 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c &erp_table->master_mask); erp_table 251 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_generic_create(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 261 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_sp_acl_erp_id_get(erp_table, &erp->id); erp_table 266 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c list_add(&erp->list, &erp_table->atcam_erps_list); erp_table 267 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->num_atcam_erps++; erp_table 268 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp->erp_table = erp_table; erp_table 270 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_sp_acl_erp_master_mask_set(erp_table, &erp->key); erp_table 277 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->num_atcam_erps--; erp_table 279 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_id_put(erp_table, erp->id); erp_table 288 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_erp_table *erp_table = erp->erp_table; erp_table 290 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_master_mask_clear(erp_table, &erp->key); erp_table 291 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->num_atcam_erps--; erp_table 293 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_id_put(erp_table, erp->id); erp_table 337 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_table_master_rp(struct mlxsw_sp_acl_erp_table *erp_table) erp_table 339 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c if (!list_is_singular(&erp_table->atcam_erps_list)) erp_table 342 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c return list_first_entry(&erp_table->atcam_erps_list, erp_table 346 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c static int mlxsw_sp_acl_erp_index_get(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 351 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c index = find_first_zero_bit(erp_table->erp_index_bitmap, erp_table 352 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->num_max_atcam_erps); erp_table 353 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c if (index < erp_table->num_max_atcam_erps) { erp_table 354 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c __set_bit(index, erp_table->erp_index_bitmap); erp_table 362 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c static void mlxsw_sp_acl_erp_index_put(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 365 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c __clear_bit(index, erp_table->erp_index_bitmap); erp_table 369 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_table_locate(const struct mlxsw_sp_acl_erp_table *erp_table, erp_table 373 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c unsigned int entry_size = mlxsw_sp_acl_erp_table_entry_size(erp_table); erp_table 374 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_erp_core *erp_core = erp_table->erp_core; erp_table 379 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c *p_erpt_index = erp_table->base_index + row * entry_size; erp_table 383 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_table_erp_add(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 386 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp *mlxsw_sp = erp_table->erp_core->mlxsw_sp; erp_table 391 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_table_locate(erp_table, erp, &erpt_bank, &erpt_index); erp_table 392 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c key_size = (enum mlxsw_reg_perpt_key_size) erp_table->aregion->type; erp_table 394 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c 0, erp_table->base_index, erp->index, erp_table 396 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_reg_perpt_erp_vector_pack(perpt_pl, erp_table->erp_index_bitmap, erp_table 405 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_erp_table *erp_table = erp->erp_table; erp_table 406 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp *mlxsw_sp = erp_table->erp_core->mlxsw_sp; erp_table 411 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_table_locate(erp_table, erp, &erpt_bank, &erpt_index); erp_table 412 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c key_size = (enum mlxsw_reg_perpt_key_size) erp_table->aregion->type; erp_table 414 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c 0, erp_table->base_index, erp->index, empty_mask); erp_table 415 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_reg_perpt_erp_vector_pack(perpt_pl, erp_table->erp_index_bitmap, erp_table 422 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_table_enable(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 425 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_tcam_region *region = erp_table->aregion->region; erp_table 426 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp *mlxsw_sp = erp_table->erp_core->mlxsw_sp; erp_table 430 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->base_index, 0); erp_table 431 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_reg_pererp_erp_vector_pack(pererp_pl, erp_table->erp_index_bitmap, erp_table 438 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_table_disable(struct mlxsw_sp_acl_erp_table *erp_table) erp_table 440 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_tcam_region *region = erp_table->aregion->region; erp_table 441 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp *mlxsw_sp = erp_table->erp_core->mlxsw_sp; erp_table 445 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c master_rp = mlxsw_sp_acl_erp_table_master_rp(erp_table); erp_table 456 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_table_relocate(struct mlxsw_sp_acl_erp_table *erp_table) erp_table 461 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c list_for_each_entry(erp, &erp_table->atcam_erps_list, list) { erp_table 462 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_sp_acl_erp_table_erp_add(erp_table, erp); erp_table 470 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c list_for_each_entry_continue_reverse(erp, &erp_table->atcam_erps_list, erp_table 477 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_table_expand(struct mlxsw_sp_acl_erp_table *erp_table) erp_table 479 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c unsigned int num_erps, old_num_erps = erp_table->num_max_atcam_erps; erp_table 480 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_erp_core *erp_core = erp_table->erp_core; erp_table 481 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c unsigned long old_base_index = erp_table->base_index; erp_table 482 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c bool ctcam_le = erp_table->num_ctcam_erps > 0; erp_table 485 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c if (erp_table->num_atcam_erps < erp_table->num_max_atcam_erps) erp_table 488 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c if (erp_table->num_max_atcam_erps == MLXSW_SP_ACL_ERP_MAX_PER_REGION) erp_table 493 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->aregion->type, erp_table 494 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c &erp_table->base_index); erp_table 497 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->num_max_atcam_erps = num_erps; erp_table 499 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_sp_acl_erp_table_relocate(erp_table); erp_table 503 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_sp_acl_erp_table_enable(erp_table, ctcam_le); erp_table 508 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->aregion->type, old_base_index); erp_table 514 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->num_max_atcam_erps = old_num_erps; erp_table 516 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->aregion->type, erp_table 517 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->base_index); erp_table 518 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->base_index = old_base_index; erp_table 523 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_acl_erp_table_bf_add(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 526 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_atcam_region *aregion = erp_table->aregion; erp_table 533 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->erp_core->bf, erp_table 545 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->erp_core->bf, erp_table 551 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_acl_erp_table_bf_del(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 554 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_atcam_region *aregion = erp_table->aregion; erp_table 560 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->erp_core->bf, erp_table 565 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_region_table_trans(struct mlxsw_sp_acl_erp_table *erp_table) erp_table 567 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_erp_core *erp_core = erp_table->erp_core; erp_table 573 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->aregion->type, erp_table 574 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c &erp_table->base_index); erp_table 577 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->num_max_atcam_erps = erp_core->num_erp_banks; erp_table 582 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c master_rp = mlxsw_sp_acl_erp_table_master_rp(erp_table); erp_table 592 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c __set_bit(master_rp->index, erp_table->erp_index_bitmap); erp_table 594 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_sp_acl_erp_table_erp_add(erp_table, master_rp); erp_table 602 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_acl_erp_table_bf_add(erp_table, master_rp); erp_table 606 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_sp_acl_erp_table_enable(erp_table, false); erp_table 613 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_acl_erp_table_bf_del(erp_table, master_rp); erp_table 617 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c __clear_bit(master_rp->index, erp_table->erp_index_bitmap); erp_table 619 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_table_free(erp_core, erp_table->num_max_atcam_erps, erp_table 620 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->aregion->type, erp_table 621 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->base_index); erp_table 626 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_region_master_mask_trans(struct mlxsw_sp_acl_erp_table *erp_table) erp_table 628 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_erp_core *erp_core = erp_table->erp_core; erp_table 631 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_table_disable(erp_table); erp_table 632 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c master_rp = mlxsw_sp_acl_erp_table_master_rp(erp_table); erp_table 635 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_acl_erp_table_bf_del(erp_table, master_rp); erp_table 637 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c __clear_bit(master_rp->index, erp_table->erp_index_bitmap); erp_table 638 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_table_free(erp_core, erp_table->num_max_atcam_erps, erp_table 639 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->aregion->type, erp_table 640 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->base_index); erp_table 644 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_region_erp_add(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 647 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_tcam_region *region = erp_table->aregion->region; erp_table 648 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp *mlxsw_sp = erp_table->erp_core->mlxsw_sp; erp_table 649 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c bool ctcam_le = erp_table->num_ctcam_erps > 0; erp_table 653 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->base_index, 0); erp_table 654 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_reg_pererp_erp_vector_pack(pererp_pl, erp_table->erp_index_bitmap, erp_table 663 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_erp_table *erp_table = erp->erp_table; erp_table 664 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_tcam_region *region = erp_table->aregion->region; erp_table 665 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp *mlxsw_sp = erp_table->erp_core->mlxsw_sp; erp_table 666 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c bool ctcam_le = erp_table->num_ctcam_erps > 0; erp_table 670 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->base_index, 0); erp_table 671 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_reg_pererp_erp_vector_pack(pererp_pl, erp_table->erp_index_bitmap, erp_table 679 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_region_ctcam_enable(struct mlxsw_sp_acl_erp_table *erp_table) erp_table 682 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c if (erp_table->num_ctcam_erps > 1) erp_table 685 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c return mlxsw_sp_acl_erp_table_enable(erp_table, true); erp_table 689 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_region_ctcam_disable(struct mlxsw_sp_acl_erp_table *erp_table) erp_table 692 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c if (erp_table->num_ctcam_erps > 1) erp_table 695 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_table_enable(erp_table, false); erp_table 699 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c __mlxsw_sp_acl_erp_table_other_inc(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 707 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c if (!mlxsw_sp_acl_erp_table_is_used(erp_table)) { erp_table 708 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_sp_acl_erp_region_table_trans(erp_table); erp_table 714 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c if (erp_table->ops != &erp_multiple_masks_ops) erp_table 715 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->ops = &erp_multiple_masks_ops; erp_table 722 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c static int mlxsw_sp_acl_erp_ctcam_inc(struct mlxsw_sp_acl_erp_table *erp_table) erp_table 724 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c return __mlxsw_sp_acl_erp_table_other_inc(erp_table, erp_table 725 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c &erp_table->num_ctcam_erps); erp_table 728 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c static int mlxsw_sp_acl_erp_delta_inc(struct mlxsw_sp_acl_erp_table *erp_table) erp_table 730 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c return __mlxsw_sp_acl_erp_table_other_inc(erp_table, erp_table 731 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c &erp_table->num_deltas); erp_table 735 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c __mlxsw_sp_acl_erp_table_other_dec(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 744 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c if (erp_table->num_ctcam_erps > 0 || erp_table->num_deltas > 0) erp_table 747 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c switch (erp_table->num_atcam_erps) { erp_table 753 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->ops = &erp_two_masks_ops; erp_table 761 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_region_master_mask_trans(erp_table); erp_table 762 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->ops = &erp_single_mask_ops; erp_table 768 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_table_disable(erp_table); erp_table 769 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_table_free(erp_table->erp_core, erp_table 770 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->num_max_atcam_erps, erp_table 771 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->aregion->type, erp_table 772 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->base_index); erp_table 773 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->ops = &erp_no_mask_ops; erp_table 780 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c static void mlxsw_sp_acl_erp_ctcam_dec(struct mlxsw_sp_acl_erp_table *erp_table) erp_table 782 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c __mlxsw_sp_acl_erp_table_other_dec(erp_table, erp_table 783 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c &erp_table->num_ctcam_erps); erp_table 786 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c static void mlxsw_sp_acl_erp_delta_dec(struct mlxsw_sp_acl_erp_table *erp_table) erp_table 788 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c __mlxsw_sp_acl_erp_table_other_dec(erp_table, erp_table 789 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c &erp_table->num_deltas); erp_table 793 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_ctcam_mask_create(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 807 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_sp_acl_erp_ctcam_inc(erp_table); erp_table 811 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp->erp_table = erp_table; erp_table 813 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_sp_acl_erp_master_mask_set(erp_table, &erp->key); erp_table 817 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_sp_acl_erp_region_ctcam_enable(erp_table); erp_table 824 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_master_mask_clear(erp_table, &erp->key); erp_table 826 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_ctcam_dec(erp_table); erp_table 835 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_erp_table *erp_table = erp->erp_table; erp_table 837 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_region_ctcam_disable(erp_table); erp_table 838 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_master_mask_clear(erp_table, &erp->key); erp_table 839 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_ctcam_dec(erp_table); erp_table 844 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_mask_create(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 851 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c return mlxsw_sp_acl_erp_ctcam_mask_create(erp_table, key); erp_table 854 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_sp_acl_erp_table_expand(erp_table); erp_table 858 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp = mlxsw_sp_acl_erp_generic_create(erp_table, key); erp_table 862 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_sp_acl_erp_index_get(erp_table, &erp->index); erp_table 866 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_sp_acl_erp_table_erp_add(erp_table, erp); erp_table 870 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_sp_acl_erp_region_erp_add(erp_table, erp); erp_table 874 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->ops = &erp_multiple_masks_ops; erp_table 881 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_index_put(erp_table, erp->index); erp_table 888 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_mask_destroy(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 896 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_index_put(erp_table, erp->index); erp_table 899 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c if (erp_table->num_atcam_erps == 2 && erp_table->num_ctcam_erps == 0 && erp_table 900 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->num_deltas == 0) erp_table 901 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->ops = &erp_two_masks_ops; erp_table 905 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_second_mask_create(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 912 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c return mlxsw_sp_acl_erp_ctcam_mask_create(erp_table, key); erp_table 915 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_sp_acl_erp_region_table_trans(erp_table); erp_table 919 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp = mlxsw_sp_acl_erp_generic_create(erp_table, key); erp_table 925 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_sp_acl_erp_index_get(erp_table, &erp->index); erp_table 929 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_sp_acl_erp_table_erp_add(erp_table, erp); erp_table 933 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_sp_acl_erp_region_erp_add(erp_table, erp); erp_table 937 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->ops = &erp_two_masks_ops; erp_table 944 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_index_put(erp_table, erp->index); erp_table 948 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_region_master_mask_trans(erp_table); erp_table 953 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_second_mask_destroy(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 961 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_index_put(erp_table, erp->index); erp_table 964 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_region_master_mask_trans(erp_table); erp_table 966 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->ops = &erp_single_mask_ops; erp_table 970 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_first_mask_create(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 978 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp = mlxsw_sp_acl_erp_generic_create(erp_table, key); erp_table 982 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->ops = &erp_single_mask_ops; erp_table 988 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_first_mask_destroy(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 992 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->ops = &erp_no_mask_ops; erp_table 996 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_no_mask_destroy(struct mlxsw_sp_acl_erp_table *erp_table, erp_table 1006 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_erp_table *erp_table = aregion->erp_table; erp_table 1012 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mutex_lock(&erp_table->objagg_lock); erp_table 1013 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c objagg_obj = objagg_obj_get(erp_table->objagg, &key); erp_table 1014 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mutex_unlock(&erp_table->objagg_lock); erp_table 1024 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_erp_table *erp_table = aregion->erp_table; erp_table 1026 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mutex_lock(&erp_table->objagg_lock); erp_table 1027 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c objagg_obj_put(erp_table->objagg, objagg_obj); erp_table 1028 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mutex_unlock(&erp_table->objagg_lock); erp_table 1040 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c if (!mlxsw_sp_acl_erp_table_is_used(erp->erp_table)) erp_table 1045 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp->erp_table->erp_core->bf, erp_table 1058 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c if (!mlxsw_sp_acl_erp_table_is_used(erp->erp_table)) erp_table 1063 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp->erp_table->erp_core->bf, erp_table 1235 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_erp_table *erp_table = aregion->erp_table; erp_table 1255 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_sp_acl_erp_delta_inc(erp_table); erp_table 1260 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = mlxsw_sp_acl_erp_master_mask_set(erp_table, &delta->key); erp_table 1267 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_delta_dec(erp_table); erp_table 1277 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_erp_table *erp_table = aregion->erp_table; erp_table 1279 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_master_mask_clear(erp_table, &delta->key); erp_table 1280 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_delta_dec(erp_table); erp_table 1288 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_erp_table *erp_table = aregion->erp_table; erp_table 1295 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c return erp_table->ops->erp_create(erp_table, key); erp_table 1301 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_erp_table *erp_table = aregion->erp_table; erp_table 1303 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->ops->erp_destroy(erp_table, root_priv); erp_table 1320 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_erp_table *erp_table; erp_table 1323 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table = kzalloc(sizeof(*erp_table), GFP_KERNEL); erp_table 1324 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c if (!erp_table) erp_table 1327 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->objagg = objagg_create(&mlxsw_sp_acl_erp_objagg_ops, erp_table 1329 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c if (IS_ERR(erp_table->objagg)) { erp_table 1330 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c err = PTR_ERR(erp_table->objagg); erp_table 1334 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->erp_core = aregion->atcam->erp_core; erp_table 1335 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->ops = &erp_no_mask_ops; erp_table 1336 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c INIT_LIST_HEAD(&erp_table->atcam_erps_list); erp_table 1337 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table->aregion = aregion; erp_table 1338 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mutex_init(&erp_table->objagg_lock); erp_table 1340 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c return erp_table; erp_table 1343 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c kfree(erp_table); erp_table 1348 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_table_destroy(struct mlxsw_sp_acl_erp_table *erp_table) erp_table 1350 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c WARN_ON(!list_empty(&erp_table->atcam_erps_list)); erp_table 1351 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mutex_destroy(&erp_table->objagg_lock); erp_table 1352 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c objagg_destroy(erp_table->objagg); erp_table 1353 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c kfree(erp_table); erp_table 1382 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_erp_table *erp_table = aregion->erp_table; erp_table 1389 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mutex_lock(&erp_table->objagg_lock); erp_table 1390 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c ostats = objagg_stats_get(erp_table->objagg); erp_table 1391 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mutex_unlock(&erp_table->objagg_lock); erp_table 1419 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_erp_table *erp_table = aregion->erp_table; erp_table 1425 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mutex_lock(&erp_table->objagg_lock); erp_table 1426 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c hints = objagg_hints_get(erp_table->objagg, erp_table 1428 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mutex_unlock(&erp_table->objagg_lock); erp_table 1459 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c struct mlxsw_sp_acl_erp_table *erp_table; erp_table 1463 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c erp_table = mlxsw_sp_acl_erp_table_create(aregion, hints); erp_table 1464 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c if (IS_ERR(erp_table)) erp_table 1465 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c return PTR_ERR(erp_table); erp_table 1466 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c aregion->erp_table = erp_table; erp_table 1482 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_table_destroy(erp_table); erp_table 1488 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c mlxsw_sp_acl_erp_table_destroy(aregion->erp_table); erp_table 168 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h struct mlxsw_sp_acl_erp_table *erp_table;