summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller2016-10-28 19:43:56 +0200
committerDavid S. Miller2016-10-28 19:43:56 +0200
commitc2e169be8ce7bde1e4189dc6e72eb9861fe9b6fb (patch)
treec36e71c6b5f4743cb3af7f1b47172356962667b6
parentnet sched filters: fix notification of filter delete with proper handle (diff)
parentmlxsw: spectrum_router: Compare only trees which are in use during tree get (diff)
downloadkernel-qcow2-linux-c2e169be8ce7bde1e4189dc6e72eb9861fe9b6fb.tar.gz
kernel-qcow2-linux-c2e169be8ce7bde1e4189dc6e72eb9861fe9b6fb.tar.xz
kernel-qcow2-linux-c2e169be8ce7bde1e4189dc6e72eb9861fe9b6fb.zip
Merge branch 'mlxsw-fixes'
Jiri Pirko says: ==================== mlxsw: Couple of fixes Couple of LPM tree management fixes. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
index f3d50d369bbe..4573da2c5560 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
@@ -320,6 +320,8 @@ mlxsw_sp_lpm_tree_create(struct mlxsw_sp *mlxsw_sp,
lpm_tree);
if (err)
goto err_left_struct_set;
+ memcpy(&lpm_tree->prefix_usage, prefix_usage,
+ sizeof(lpm_tree->prefix_usage));
return lpm_tree;
err_left_struct_set:
@@ -343,7 +345,8 @@ mlxsw_sp_lpm_tree_get(struct mlxsw_sp *mlxsw_sp,
for (i = 0; i < MLXSW_SP_LPM_TREE_COUNT; i++) {
lpm_tree = &mlxsw_sp->router.lpm_trees[i];
- if (lpm_tree->proto == proto &&
+ if (lpm_tree->ref_count != 0 &&
+ lpm_tree->proto == proto &&
mlxsw_sp_prefix_usage_eq(&lpm_tree->prefix_usage,
prefix_usage))
goto inc_ref_count;