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);