Skip to content

Commit 330e2cc

Browse files
idoschdavem330
authored andcommitted
mlxsw: spectrum: Add another partition to KVD linear
The KVD linear is currently partitioned into two partitions. One for single entries and another for groups of 32 entries. Add another partition consisting of groups of 512 entries which will allow us to more accurately represent the nexthop weights in non-equal cost multi-path routing. Signed-off-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent f11fbaf commit 330e2cc

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

drivers/net/ethernet/mellanox/mlxsw/spectrum_kvdl.c

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,22 @@
4141
#define MLXSW_SP_KVDL_SINGLE_SIZE 16384
4242
#define MLXSW_SP_KVDL_SINGLE_END \
4343
(MLXSW_SP_KVDL_SINGLE_SIZE + MLXSW_SP_KVDL_SINGLE_BASE - 1)
44+
4445
#define MLXSW_SP_KVDL_CHUNKS_BASE \
4546
(MLXSW_SP_KVDL_SINGLE_BASE + MLXSW_SP_KVDL_SINGLE_SIZE)
46-
#define MLXSW_SP_KVDL_CHUNKS_SIZE \
47-
(MLXSW_SP_KVD_LINEAR_SIZE - MLXSW_SP_KVDL_CHUNKS_BASE)
47+
#define MLXSW_SP_KVDL_CHUNKS_SIZE 49152
4848
#define MLXSW_SP_KVDL_CHUNKS_END \
4949
(MLXSW_SP_KVDL_CHUNKS_SIZE + MLXSW_SP_KVDL_CHUNKS_BASE - 1)
50+
51+
#define MLXSW_SP_KVDL_LARGE_CHUNKS_BASE \
52+
(MLXSW_SP_KVDL_CHUNKS_BASE + MLXSW_SP_KVDL_CHUNKS_SIZE)
53+
#define MLXSW_SP_KVDL_LARGE_CHUNKS_SIZE \
54+
(MLXSW_SP_KVD_LINEAR_SIZE - MLXSW_SP_KVDL_LARGE_CHUNKS_BASE)
55+
#define MLXSW_SP_KVDL_LARGE_CHUNKS_END \
56+
(MLXSW_SP_KVDL_LARGE_CHUNKS_SIZE + MLXSW_SP_KVDL_LARGE_CHUNKS_BASE - 1)
57+
5058
#define MLXSW_SP_CHUNK_MAX 32
59+
#define MLXSW_SP_LARGE_CHUNK_MAX 512
5160

5261
struct mlxsw_sp_kvdl_part_info {
5362
unsigned int part_index;
@@ -192,6 +201,12 @@ static const struct mlxsw_sp_kvdl_part_info kvdl_parts_info[] = {
192201
.end_index = MLXSW_SP_KVDL_CHUNKS_END,
193202
.alloc_size = MLXSW_SP_CHUNK_MAX,
194203
},
204+
{
205+
.part_index = 2,
206+
.start_index = MLXSW_SP_KVDL_LARGE_CHUNKS_BASE,
207+
.end_index = MLXSW_SP_KVDL_LARGE_CHUNKS_END,
208+
.alloc_size = MLXSW_SP_LARGE_CHUNK_MAX,
209+
},
195210
};
196211

197212
static struct mlxsw_sp_kvdl_part *

0 commit comments

Comments
 (0)