mlxsw: spectrum: Increase number of linear entries
authorIdo Schimmel <idosch@mellanox.com>
Sun, 22 Oct 2017 21:11:49 +0000 (23:11 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 23 Oct 2017 04:23:06 +0000 (05:23 +0100)
The memory region where adjacency entries (nexthops) are stored is
called the KVD linear and is configured during initialization with a
size of 64K.

Extend this area with 32K more entries, that will be partitioned into 64
groups of 0.5K entries, thereby allowing us to support weighted nexthops
with high accuracy.

Change the ratio between both types of hash entries, so as to prevent
reduction in the number of double hash entries, which are used for IPv6
neighbours and routes with a prefix length greater than 64.

Note that the user will be able to control all these sizes once the
devlink resource manager is introduced.

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>
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
drivers/net/ethernet/mellanox/mlxsw/spectrum.h

index 1bc3fc35608418533e93ff8006a5fb7cecc6e637..12b6ac487d8d5b2596c3eee62c1299166f3432ee 100644 (file)
@@ -3885,8 +3885,8 @@ static const struct mlxsw_config_profile mlxsw_sp_config_profile = {
        .max_pkey                       = 0,
        .used_kvd_split_data            = 1,
        .kvd_hash_granularity           = MLXSW_SP_KVD_GRANULARITY,
-       .kvd_hash_single_parts          = 2,
-       .kvd_hash_double_parts          = 1,
+       .kvd_hash_single_parts          = 59,
+       .kvd_hash_double_parts          = 41,
        .kvd_linear_size                = MLXSW_SP_KVD_LINEAR_SIZE,
        .swid_config                    = {
                {
index 78ff20d86db15af343650fcde4660bf84f408f47..dc1b739c3ae1a4ddc9cb7a0317915dc4c6eea5a2 100644 (file)
@@ -62,7 +62,7 @@
 
 #define MLXSW_SP_PORT_BASE_SPEED 25000 /* Mb/s */
 
-#define MLXSW_SP_KVD_LINEAR_SIZE 65536 /* entries */
+#define MLXSW_SP_KVD_LINEAR_SIZE 98304 /* entries */
 #define MLXSW_SP_KVD_GRANULARITY 128
 
 struct mlxsw_sp_port;