mlxsw: reg: Add Policy Engine Algorithmic Bloom Filter Entries Register
Bloom filter is a bit vector which allows the HW a fast lookup on a small size bit vector, that may reduce the number of lookups on the A-TCAM memory. PEABFE register allows setting values to the bits of the bit vector mentioned above. Add the register to be later used in A-TCAM optimizations. Signed-off-by: Nir Dotan <nird@mellanox.com> Signed-off-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
0634d694b0
Коммит
418089a850
|
@ -3095,6 +3095,72 @@ static inline void mlxsw_reg_pererp_pack(char *payload, u16 region_id,
|
|||
mlxsw_reg_pererp_master_rp_id_set(payload, master_rp_id);
|
||||
}
|
||||
|
||||
/* PEABFE - Policy-Engine Algorithmic Bloom Filter Entries Register
|
||||
* ----------------------------------------------------------------
|
||||
* This register configures the Bloom filter entries.
|
||||
*/
|
||||
#define MLXSW_REG_PEABFE_ID 0x3022
|
||||
#define MLXSW_REG_PEABFE_BASE_LEN 0x10
|
||||
#define MLXSW_REG_PEABFE_BF_REC_LEN 0x4
|
||||
#define MLXSW_REG_PEABFE_BF_REC_MAX_COUNT 256
|
||||
#define MLXSW_REG_PEABFE_LEN (MLXSW_REG_PEABFE_BASE_LEN + \
|
||||
MLXSW_REG_PEABFE_BF_REC_LEN * \
|
||||
MLXSW_REG_PEABFE_BF_REC_MAX_COUNT)
|
||||
|
||||
MLXSW_REG_DEFINE(peabfe, MLXSW_REG_PEABFE_ID, MLXSW_REG_PEABFE_LEN);
|
||||
|
||||
/* reg_peabfe_size
|
||||
* Number of BF entries to be updated.
|
||||
* Range 1..256
|
||||
* Access: Op
|
||||
*/
|
||||
MLXSW_ITEM32(reg, peabfe, size, 0x00, 0, 9);
|
||||
|
||||
/* reg_peabfe_bf_entry_state
|
||||
* Bloom filter state
|
||||
* 0 - Clear
|
||||
* 1 - Set
|
||||
* Access: RW
|
||||
*/
|
||||
MLXSW_ITEM32_INDEXED(reg, peabfe, bf_entry_state,
|
||||
MLXSW_REG_PEABFE_BASE_LEN, 31, 1,
|
||||
MLXSW_REG_PEABFE_BF_REC_LEN, 0x00, false);
|
||||
|
||||
/* reg_peabfe_bf_entry_bank
|
||||
* Bloom filter bank ID
|
||||
* Range 0..cap_max_erp_table_banks-1
|
||||
* Access: Index
|
||||
*/
|
||||
MLXSW_ITEM32_INDEXED(reg, peabfe, bf_entry_bank,
|
||||
MLXSW_REG_PEABFE_BASE_LEN, 24, 4,
|
||||
MLXSW_REG_PEABFE_BF_REC_LEN, 0x00, false);
|
||||
|
||||
/* reg_peabfe_bf_entry_index
|
||||
* Bloom filter entry index
|
||||
* Range 0..2^cap_max_bf_log-1
|
||||
* Access: Index
|
||||
*/
|
||||
MLXSW_ITEM32_INDEXED(reg, peabfe, bf_entry_index,
|
||||
MLXSW_REG_PEABFE_BASE_LEN, 0, 24,
|
||||
MLXSW_REG_PEABFE_BF_REC_LEN, 0x00, false);
|
||||
|
||||
static inline void mlxsw_reg_peabfe_pack(char *payload)
|
||||
{
|
||||
MLXSW_REG_ZERO(peabfe, payload);
|
||||
}
|
||||
|
||||
static inline void mlxsw_reg_peabfe_rec_pack(char *payload, int rec_index,
|
||||
u8 state, u8 bank, u32 bf_index)
|
||||
{
|
||||
u8 num_rec = mlxsw_reg_peabfe_size_get(payload);
|
||||
|
||||
if (rec_index >= num_rec)
|
||||
mlxsw_reg_peabfe_size_set(payload, rec_index + 1);
|
||||
mlxsw_reg_peabfe_bf_entry_state_set(payload, rec_index, state);
|
||||
mlxsw_reg_peabfe_bf_entry_bank_set(payload, rec_index, bank);
|
||||
mlxsw_reg_peabfe_bf_entry_index_set(payload, rec_index, bf_index);
|
||||
}
|
||||
|
||||
/* IEDR - Infrastructure Entry Delete Register
|
||||
* ----------------------------------------------------
|
||||
* This register is used for deleting entries from the entry tables.
|
||||
|
@ -9608,6 +9674,7 @@ static const struct mlxsw_reg_info *mlxsw_reg_infos[] = {
|
|||
MLXSW_REG(pemrbt),
|
||||
MLXSW_REG(ptce2),
|
||||
MLXSW_REG(perpt),
|
||||
MLXSW_REG(peabfe),
|
||||
MLXSW_REG(perar),
|
||||
MLXSW_REG(ptce3),
|
||||
MLXSW_REG(percr),
|
||||
|
|
Загрузка…
Ссылка в новой задаче