Symbol: mlxsw_afk
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
102
void mlxsw_afk_destroy(struct mlxsw_afk *mlxsw_afk)
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
104
WARN_ON(!list_empty(&mlxsw_afk->key_info_list));
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
105
kfree(mlxsw_afk);
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
128
mlxsw_afk_key_info_find(struct mlxsw_afk *mlxsw_afk,
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
133
list_for_each_entry(key_info, &mlxsw_afk->key_info_list, list) {
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
146
static void mlxsw_afk_picker_count_hits(struct mlxsw_afk *mlxsw_afk,
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
153
for (i = 0; i < mlxsw_afk->blocks_count; i++) {
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
154
const struct mlxsw_afk_block *block = &mlxsw_afk->blocks[i];
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
168
static void mlxsw_afk_picker_subtract_hits(struct mlxsw_afk *mlxsw_afk,
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
179
for (i = 0; i < mlxsw_afk->blocks_count; i++) {
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
187
static int mlxsw_afk_picker_most_hits_get(struct mlxsw_afk *mlxsw_afk,
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
194
for (i = 0; i < mlxsw_afk->blocks_count; i++) {
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
203
static int mlxsw_afk_picker_key_info_add(struct mlxsw_afk *mlxsw_afk,
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
210
if (key_info->blocks_count == mlxsw_afk->max_blocks)
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
220
&mlxsw_afk->blocks[block_index];
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
225
static int mlxsw_afk_keys_fill(struct mlxsw_afk *mlxsw_afk,
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
233
for_each_set_bit(i, chosen_blocks_bm, mlxsw_afk->blocks_count) {
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
234
if (!mlxsw_afk->blocks[i].high_entropy)
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
237
err = mlxsw_afk_picker_key_info_add(mlxsw_afk, picker, i,
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
245
for_each_set_bit(i, chosen_blocks_bm, mlxsw_afk->blocks_count) {
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
246
err = mlxsw_afk_picker_key_info_add(mlxsw_afk, picker, i,
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
255
static int mlxsw_afk_picker(struct mlxsw_afk *mlxsw_afk,
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
265
picker = kzalloc_objs(*picker, mlxsw_afk->blocks_count);
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
269
chosen_blocks_bm = bitmap_zalloc(mlxsw_afk->blocks_count, GFP_KERNEL);
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
289
mlxsw_afk_picker_count_hits(mlxsw_afk, picker, element);
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
294
block_index = mlxsw_afk_picker_most_hits_get(mlxsw_afk, picker);
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
309
mlxsw_afk_picker_subtract_hits(mlxsw_afk, picker, block_index);
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
314
err = mlxsw_afk_keys_fill(mlxsw_afk, chosen_blocks_bm, picker,
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
324
mlxsw_afk_key_info_create(struct mlxsw_afk *mlxsw_afk,
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
330
key_info = kzalloc_flex(*key_info, blocks, mlxsw_afk->max_blocks);
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
333
err = mlxsw_afk_picker(mlxsw_afk, key_info, elusage);
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
336
list_add(&key_info->list, &mlxsw_afk->key_info_list);
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
352
mlxsw_afk_key_info_get(struct mlxsw_afk *mlxsw_afk,
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
357
key_info = mlxsw_afk_key_info_find(mlxsw_afk, elusage);
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
362
return mlxsw_afk_key_info_create(mlxsw_afk, elusage);
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
515
void mlxsw_afk_encode(struct mlxsw_afk *mlxsw_afk,
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
546
mlxsw_afk->ops->encode_block(key, i, block_key);
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
547
mlxsw_afk->ops->encode_block(mask, i, block_mask);
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
552
void mlxsw_afk_clear(struct mlxsw_afk *mlxsw_afk, char *key,
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
558
mlxsw_afk->ops->clear_block(key, i);
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
60
static bool mlxsw_afk_blocks_check(struct mlxsw_afk *mlxsw_afk)
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
65
for (i = 0; i < mlxsw_afk->blocks_count; i++) {
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
66
const struct mlxsw_afk_block *block = &mlxsw_afk->blocks[i];
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
84
struct mlxsw_afk *mlxsw_afk_create(unsigned int max_blocks,
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
87
struct mlxsw_afk *mlxsw_afk;
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
89
mlxsw_afk = kzalloc_obj(*mlxsw_afk);
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
90
if (!mlxsw_afk)
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
92
INIT_LIST_HEAD(&mlxsw_afk->key_info_list);
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
93
mlxsw_afk->max_blocks = max_blocks;
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
94
mlxsw_afk->ops = ops;
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
95
mlxsw_afk->blocks = ops->blocks;
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
96
mlxsw_afk->blocks_count = ops->blocks_count;
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
97
WARN_ON(!mlxsw_afk_blocks_check(mlxsw_afk));
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
98
return mlxsw_afk;
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.h
185
struct mlxsw_afk;
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.h
194
struct mlxsw_afk *mlxsw_afk_create(unsigned int max_blocks,
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.h
196
void mlxsw_afk_destroy(struct mlxsw_afk *mlxsw_afk);
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.h
201
mlxsw_afk_key_info_get(struct mlxsw_afk *mlxsw_afk,
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.h
228
void mlxsw_afk_encode(struct mlxsw_afk *mlxsw_afk,
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.h
232
void mlxsw_afk_clear(struct mlxsw_afk *mlxsw_afk, char *key,
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
964
struct mlxsw_afk *mlxsw_sp_acl_afk(struct mlxsw_sp_acl *acl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
26
struct mlxsw_afk *afk;
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
39
struct mlxsw_afk *mlxsw_sp_acl_afk(struct mlxsw_sp_acl *acl)
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
228
struct mlxsw_afk *afk = mlxsw_sp_acl_afk(mlxsw_sp->acl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c
478
struct mlxsw_afk *afk = mlxsw_sp_acl_afk(mlxsw_sp->acl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_ctcam.c
47
struct mlxsw_afk *afk = mlxsw_sp_acl_afk(mlxsw_sp->acl);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
776
struct mlxsw_afk *afk = mlxsw_sp_acl_afk(mlxsw_sp->acl);