mlxsw_afk 20 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c static bool mlxsw_afk_blocks_check(struct mlxsw_afk *mlxsw_afk) mlxsw_afk 25 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c for (i = 0; i < mlxsw_afk->blocks_count; i++) { mlxsw_afk 26 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c const struct mlxsw_afk_block *block = &mlxsw_afk->blocks[i]; mlxsw_afk 42 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c struct mlxsw_afk *mlxsw_afk_create(unsigned int max_blocks, mlxsw_afk 45 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c struct mlxsw_afk *mlxsw_afk; mlxsw_afk 47 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c mlxsw_afk = kzalloc(sizeof(*mlxsw_afk), GFP_KERNEL); mlxsw_afk 48 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c if (!mlxsw_afk) mlxsw_afk 50 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c INIT_LIST_HEAD(&mlxsw_afk->key_info_list); mlxsw_afk 51 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c mlxsw_afk->max_blocks = max_blocks; mlxsw_afk 52 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c mlxsw_afk->ops = ops; mlxsw_afk 53 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c mlxsw_afk->blocks = ops->blocks; mlxsw_afk 54 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c mlxsw_afk->blocks_count = ops->blocks_count; mlxsw_afk 55 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c WARN_ON(!mlxsw_afk_blocks_check(mlxsw_afk)); mlxsw_afk 56 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c return mlxsw_afk; mlxsw_afk 60 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c void mlxsw_afk_destroy(struct mlxsw_afk *mlxsw_afk) mlxsw_afk 62 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c WARN_ON(!list_empty(&mlxsw_afk->key_info_list)); mlxsw_afk 63 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c kfree(mlxsw_afk); mlxsw_afk 86 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c mlxsw_afk_key_info_find(struct mlxsw_afk *mlxsw_afk, mlxsw_afk 91 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c list_for_each_entry(key_info, &mlxsw_afk->key_info_list, list) { mlxsw_afk 105 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c static void mlxsw_afk_picker_count_hits(struct mlxsw_afk *mlxsw_afk, mlxsw_afk 112 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c for (i = 0; i < mlxsw_afk->blocks_count; i++) { mlxsw_afk 113 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c const struct mlxsw_afk_block *block = &mlxsw_afk->blocks[i]; mlxsw_afk 127 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c static void mlxsw_afk_picker_subtract_hits(struct mlxsw_afk *mlxsw_afk, mlxsw_afk 138 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c for (i = 0; i < mlxsw_afk->blocks_count; i++) { mlxsw_afk 146 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c static int mlxsw_afk_picker_most_hits_get(struct mlxsw_afk *mlxsw_afk, mlxsw_afk 153 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c for (i = 0; i < mlxsw_afk->blocks_count; i++) { mlxsw_afk 162 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c static int mlxsw_afk_picker_key_info_add(struct mlxsw_afk *mlxsw_afk, mlxsw_afk 169 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c if (key_info->blocks_count == mlxsw_afk->max_blocks) mlxsw_afk 179 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c &mlxsw_afk->blocks[block_index]; mlxsw_afk 184 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c static int mlxsw_afk_picker(struct mlxsw_afk *mlxsw_afk, mlxsw_afk 193 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c alloc_size = sizeof(picker->hits[0]) * mlxsw_afk->blocks_count; mlxsw_afk 212 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c mlxsw_afk_picker_count_hits(mlxsw_afk, picker, element); mlxsw_afk 217 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c block_index = mlxsw_afk_picker_most_hits_get(mlxsw_afk, picker); mlxsw_afk 222 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c err = mlxsw_afk_picker_key_info_add(mlxsw_afk, picker, mlxsw_afk 226 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c mlxsw_afk_picker_subtract_hits(mlxsw_afk, picker, block_index); mlxsw_afk 236 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c mlxsw_afk_key_info_create(struct mlxsw_afk *mlxsw_afk, mlxsw_afk 242 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c key_info = kzalloc(struct_size(key_info, blocks, mlxsw_afk->max_blocks), mlxsw_afk 246 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c err = mlxsw_afk_picker(mlxsw_afk, key_info, elusage); mlxsw_afk 249 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c list_add(&key_info->list, &mlxsw_afk->key_info_list); mlxsw_afk 265 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c mlxsw_afk_key_info_get(struct mlxsw_afk *mlxsw_afk, mlxsw_afk 270 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c key_info = mlxsw_afk_key_info_find(mlxsw_afk, elusage); mlxsw_afk 275 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c return mlxsw_afk_key_info_create(mlxsw_afk, elusage); mlxsw_afk 425 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c void mlxsw_afk_encode(struct mlxsw_afk *mlxsw_afk, mlxsw_afk 456 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c mlxsw_afk->ops->encode_block(key, i, block_key); mlxsw_afk 457 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c mlxsw_afk->ops->encode_block(mask, i, block_mask); mlxsw_afk 462 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c void mlxsw_afk_clear(struct mlxsw_afk *mlxsw_afk, char *key, mlxsw_afk 468 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c mlxsw_afk->ops->clear_block(key, i); mlxsw_afk 204 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.h struct mlxsw_afk; mlxsw_afk 213 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.h struct mlxsw_afk *mlxsw_afk_create(unsigned int max_blocks, mlxsw_afk 215 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.h void mlxsw_afk_destroy(struct mlxsw_afk *mlxsw_afk); mlxsw_afk 220 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.h mlxsw_afk_key_info_get(struct mlxsw_afk *mlxsw_afk, mlxsw_afk 247 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.h void mlxsw_afk_encode(struct mlxsw_afk *mlxsw_afk, mlxsw_afk 251 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.h void mlxsw_afk_clear(struct mlxsw_afk *mlxsw_afk, char *key, mlxsw_afk 661 drivers/net/ethernet/mellanox/mlxsw/spectrum.h struct mlxsw_afk *mlxsw_sp_acl_afk(struct mlxsw_sp_acl *acl); mlxsw_afk 25 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c struct mlxsw_afk *afk; mlxsw_afk 38 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c struct mlxsw_afk *mlxsw_sp_acl_afk(struct mlxsw_sp_acl *acl) mlxsw_afk 230 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c struct mlxsw_afk *afk = mlxsw_sp_acl_afk(mlxsw_sp->acl); mlxsw_afk 479 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c struct mlxsw_afk *afk = mlxsw_sp_acl_afk(mlxsw_sp->acl); mlxsw_afk 47 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c struct mlxsw_afk *afk = mlxsw_sp_acl_afk(mlxsw_sp->acl); mlxsw_afk 800 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c struct mlxsw_afk *afk = mlxsw_sp_acl_afk(mlxsw_sp->acl);