From patchwork Fri Jun 15 13:23:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 929940 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=mellanox.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="BVoclkkS"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 416h6h1Rwlz9s37 for ; Fri, 15 Jun 2018 23:24:44 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965882AbeFONYm (ORCPT ); Fri, 15 Jun 2018 09:24:42 -0400 Received: from mail-ve1eur01on0048.outbound.protection.outlook.com ([104.47.1.48]:17056 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S965640AbeFONYY (ORCPT ); Fri, 15 Jun 2018 09:24:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=R1In30S62kkXLZ0Kcf06O3GvGo6xnAgFmn+C7RIANoM=; b=BVoclkkSc7k770UAF1LC+bXWcs304LTM2VS3VusXBaV1QNa+gVPRtUVeigIwl5WJBaCKZ4wQizgVdyis7waQC/8ekD3M36XCqGxVROWptAl/K/Da2FpuJKbwaHSUF/Qc3o96XVzswJfkUGp+TMgCjJdS5wdtD5tqRVx3mfif9FE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; Received: from localhost.localdomain (79.177.120.149) by AM4PR0501MB2324.eurprd05.prod.outlook.com (2603:10a6:200:53::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.863.14; Fri, 15 Jun 2018 13:24:19 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, jiri@mellanox.com, petrm@mellanox.com, dsahern@gmail.com, mlxsw@mellanox.com, Ido Schimmel Subject: [PATCH net 2/4] mlxsw: spectrum_router: Allow appending to dev-only routes Date: Fri, 15 Jun 2018 16:23:36 +0300 Message-Id: <20180615132338.14241-3-idosch@mellanox.com> X-Mailer: git-send-email 2.14.4 In-Reply-To: <20180615132338.14241-1-idosch@mellanox.com> References: <20180615132338.14241-1-idosch@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [79.177.120.149] X-ClientProxiedBy: LO2P265CA0041.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:61::29) To AM4PR0501MB2324.eurprd05.prod.outlook.com (2603:10a6:200:53::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c67afeaa-ee81-4aea-20a3-08d5d2c34d4a X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(711020)(48565401081)(2017052603328)(7153060)(7193020); SRVR:AM4PR0501MB2324; X-Microsoft-Exchange-Diagnostics: 1; AM4PR0501MB2324; 3:j8z/mOOau1x28jOEUUDVTd18XolVkOAW1z6+b9XXRN2xCmR3E6feNEwirgwd8AP+28lRzEWTt7H/VrbTQc2w2GFtrY5FnhzAhxVJhc8KRJgPowYcwsxjcsAXPXn4LVs+/QaQgpuZTLQMaIWRafllE2Kiarr0bhvPsnmFYheYjKFTWo4JbEIBgMLXLTjyn724n6tCUvaX2cZt8089TwdqTH8S4ZEW9pE1ttliOjZK0gtU90h1oqr4S2HokGaswwOo; 25:uEHRtj14wu0Ky3pnCPCBv0yhrrT0aptBc+i5wLGHucO7yN5pMqJRePE2+/yGVBE6Ne9mRlOIATsK3DYMoSgiRjT/9a/mBjJ02MKEJXEZR/HrP41ipTI7DYuE3dMNSa+PMOMm5VESiRHX34ICkuAraDIOS0xoFTXQsnNLBH5H9lbw2+EgHShxxbZprNo+M3cEH6G+VuPZW5HeYjEwKADmjqypD/3lNhw6OiW9FVvNhiNYn+KGxspO7B4E4163O4FCGKTplbi3ar+SjOUNJqLGb2kBTXahRn48JuaGgNKTX9MIcmEmySD4/Da2lwlBj54r5ttBN2Qk7wJBlZp72df16w==; 31:kb+wRI62aULw2cSlx5EPK3irJLHmQ3D8IFsDrTLvg4kNWxPWr+BHIwsxkFKYvQO83nAVXO3Qk6HnyhiyUX5zOpjOt8FQAV3WUnvwu2wwBdi5skD7wEQXoH5lv01eezZ+AeUY1MKuwK/yeaKygozklqq9K/dhluoI1pM/lJuOtaxH5PiWnjP1BR54/9rGUDcMUQsYZCQjRUrf0EVPPc0RUKyoCut4h87eRILKGqakYiM= X-MS-TrafficTypeDiagnostic: AM4PR0501MB2324: X-Microsoft-Exchange-Diagnostics: 1; AM4PR0501MB2324; 20:wQQl1Jz3fXA/Wfa+lLC7ogecBc1+7/0wownRaUg4Dpyv3kpIyTwHQGIXgqhhrN+ZarbeaRXTub1VEayAHNDrYT5i7rmcrtTUbXhC3fsO67iGIxQQkTxa5FrW/xCWktwTpDjbWgDVZ8NSLavpRvNie5+i4KZzGRCxxhDQc6HLzFnlYu7+4BMA9ZU4JyXi19wOy4f5t4lfAI/kVd3FKqygdVh5OsHAwCl1jWzpP7tEYPY49xnqBmnoPjzKFQYvLtkz7v4TQQ6ylNgXkmlam4XPh0p2q0K55X9R2SIugX12pRggUG86dYGdI0Mjh3vxRgqEgjXnpCYdoSRtWum4ZsfufOsGyl2tuzrlNZrtupBnrXJ9iHdEGjZSnPgmvdtvOakMNS2JcZBuFLbjDbbsN4pGnVTcFpuTaTJMmry4ZiFStXHbSUi7NLZHGsD58+E4j2NdXTdNrO5bP4f7u6XSvakL8yVEItVGeKB1V5NpRLPSeTqkpgsZZpsNWVgU6TK5Zi2w; 4:NxkhW/yBYJmxV851dcGNojmbt0U9TSMhpgCGP0bM8+QJ3NkrCNAZWY1nHrDh8eHw3CgVsxctjw71Wxg4gLKlIrJrNEm61aVgRNO1eGZ6lvo2UYdN/XXy4iiNFp5V0Pto7eBs0lLSxcEvybRKIuHWoxUmfIM7L/XpDBEKi3BPbj3TPAdwSwH+lvHFyd7g8BfcLJ/hjhIvNSdL6oGfnRgd+yxE0pw704VwvIMRbj/OKinoAEv/EwCr8awo/WdEvW/198CayDKIX+1v1hPPeVq9I/4yfvC5HPMZfE2lsSg8qDkg6X5aSSvpaJMdh1CqF5ZD X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(3231254)(944501410)(52105095)(10201501046)(3002001)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123564045)(20161123558120)(20161123560045)(6072148)(201708071742011)(7699016); SRVR:AM4PR0501MB2324; BCL:0; PCL:0; RULEID:; SRVR:AM4PR0501MB2324; X-Forefront-PRVS: 0704670F76 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(39380400002)(376002)(39860400002)(396003)(346002)(366004)(189003)(199004)(6512007)(25786009)(2906002)(2351001)(16586007)(53936002)(86362001)(4326008)(36756003)(39060400002)(105586002)(106356001)(476003)(107886003)(478600001)(1076002)(2361001)(50226002)(7736002)(68736007)(6116002)(47776003)(81166006)(316002)(6916009)(186003)(81156014)(305945005)(5660300001)(6506007)(50466002)(486006)(386003)(6486002)(956004)(26005)(11346002)(51416003)(66066001)(48376002)(97736004)(3846002)(59450400001)(6666003)(2616005)(8936002)(16526019)(8676002)(446003)(52116002)(76176011); DIR:OUT; SFP:1101; SCL:1; SRVR:AM4PR0501MB2324; H:localhost.localdomain; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; AM4PR0501MB2324; 23:R1j9SGfRcwtDqlKqV4yps8oi1K4yjyE47eql8ltlJEPqarj6T5iaLCSb9aXKk1KUJCskmj7LAupxgvTXhijqh08KkcUYQz7Kj6M5W/9fOp8iJkWFjyThor+PHwhunqqBpMbIN6kl341rkPch4S+UU4CMLOSy82s95yjfPHTn+7s9QVvcA0Ns+yRVhAUXftYOlmvHjEF5YIQ4nnyH2GAg3209WDVKX+9B2K7NeFOTnEpcR25y8bcl16Qi63ZJ+cVXPyNEYNEmE44769q5WqtmWF5sGqEJCFPUi3wRzNUM+wro6mqpNZo/kN5LU+sB2+sytp3lJUxk6rVDIprc8Pj3fXxWE0AtW0r3hjtWta15j2N7xIhjD+p2wpCxQXE+hYpUwSAgRwGQnOJVlB5HVnLUvn2ul8kvI6I/yFji4v2gcztPB3dCwAe+k1hpSmQ6yJfpXesH4CtKbssrKNl6VIUNcRzRmpAsPxh/tM8uq+yy1wGM7+cA6dfHuiPmQU1q4GfEFaljdw0slg2LwnzO96OSbnkMvYkyXh+0DjTnCxWJN/nhghtCBUOhI7GZO9h2IiDvTnc6l+O+VkRMPFSLhEuJwUMM2FhAxH2/5IcA74SRgVAAU2z7G68g4EgrTzkmvF87LlyzmCryThi4qaq4xdR1KrNJTs0jkMZGGXxMt17UVNkR1QC9lRrBKKuadKU5sjNZdZcWaPqOGUVF3D11BK2buX4IrW7RHCR1oHIEttXAEy2JEx9EJfJxoSiBok6+HZjZ7wCrQqgILc9McPU2S0GjEMi7kA0pFqqG3pvNKQoYEM3ggCwYwjjuU2GoN+OKm/lSX88S5IfrL8N2Vl2X3vW9vQEJ/BWc3UNwAP1A0+hoUsG2fe7qKj3/jWyUcTnAifLGZEnUNj2wBTmBBtpoX+o60flBmVpyGzF4sww/Mto4nEcL7ZAYKJu9dN/5oCmp+JEHKnSes/L0Rx0Kz15ZZR6BeG9rRrFO7xTppIChDW310YdCsnbJlQoZyEu0uq4xk9NaMqXyI23BOJE1oeVCIC8YsjqbHnl7oXqHvv+DOYcGETM8oPHJlqZCTKSMgRYiY1z6ZZiMSUk0kczU0T113M6C+hRPUDx+0GxFSofkQG0Qpa1nC1FOesLDcHZSNWwDvyKO3F+umTc5O50lt/v06SvNyLjmnwd259QljwuTwEX4GHOyp2z8Bb094lZ9K8sa35ZKKBNPIbmmhGkXWF1cPalqsaSRzsxbqznFyePcsyYHR6wGIYCUSR71FiY6TURhcONPcMVivW+CqvHXDBBRRb/92mQMLigVB25weKKPg1aqTRL2s4gPTU0+Ie4h6wPRkr8C X-Microsoft-Antispam-Message-Info: k8b3+lCfXnNCR4cHdYaG5cp+JTP3GHAbkQQzwfBw8PMwrDq5tbSZ5BCJEpj+2n0T114ohx13IK4eB37TX49tfedqyl9aEqNva6NNqmz968E61ZNEbenlsLPxrtUKevquQ7HcMbe+AZCl/slhl/ptyjCD+QpSxTzYhGPMOmkeTWoogQZ1q1DtAiR1EOw6HADa X-Microsoft-Exchange-Diagnostics: 1; AM4PR0501MB2324; 6:vpCshrWvMQYAlzwU5O3oYxANbvtLhvJu8dfYQ4Fn0bd9PlxCUwQZ7qCiAntq9ocWgLGxmS+ZpeUDmSQWrhHsRbONNNSsOdNFyPOWKQbfgWTVZXshuC6RH2xFF1IpItnbEFp5kmE4dgrFMoW3iYFHTKkZOcN+LyqqHsP7Rwd2sg1xfu1VyP3/uSwKeF8e9bu+xVcr/lFdieHC3qyyNlV7uGClaI+e1nQe53laUubU2OfrO7ZlFRwHNMfAE2TabjDjqxSbXqHEvjTixi9tLcCcgirw0DnXlwrM8Mm/25QccGD7LINcg59w+CkKvmhaLhiZHd5HlgJZqwfhXoX0c1JpQDrS4/vSRFfwmAC3F8je1fMVe6GDlhdrNGzB0Uxe3hbBHPTNczWi6ICUXsy2GdtRgKcIWiu1NP9GlLhMMuZ4vqf8SOG9amg9dsY0J1gT5LijN8GqSMhMYeBGBA9r91tL/w==; 5:ou3En76vfZvPbPLtE3m+OkGBCHcrrk8pKaa91x341bj+/NN3AIXuzCBXq7JCh15ZQh1ox/pdGXwn8F0pnEfoC4fasa9WHEypooxFsqPDN/5VsjYLMM1tORjWCQxsnD+rF42tC5U/agISplt4LSrxi5yF76QL9FQqeYe6H8PEX8o=; 24:Y8dh1ijx/wfpuCN48fMOuFIeywYJ3KYrm2dcTZr4T9n9d27M1eXk3ieUxNg2I0By7aNzRUpNOfmf6BahhXLAyOUt7LHsuF+IgdLhKR5S5OU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM4PR0501MB2324; 7:69l+1orisxt7Jh2z0FHMHjKgkTwgote1R7jF+xALbCQp9is42wSNLnzJ8NODOBl4B9VMf8JwnFRDI8s2Z2Ej04C+yaA4/rlccjl8b6cnzn5fCf+2yd87B3jHJzTkSSWqE9syGbCsC+O7XHXjiiF/i17ttL5ozcJUraipYZGciT8XPl/9JerEmsSOLjsni8QnD7GYcqfn5BQF1vRUQ5tmBuCaNEDFVn6Y/1rpdltcZuq8rqptmGnIenCnAQBH2cLO X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jun 2018 13:24:19.3146 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c67afeaa-ee81-4aea-20a3-08d5d2c34d4a X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR0501MB2324 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Commit f34436a43092 ("net/ipv6: Simplify route replace and appending into multipath route") changed the IPv6 route append logic so that dev-only routes can be appended and not only gatewayed routes. Align mlxsw with the new behaviour. Fixes: f34436a43092 ("net/ipv6: Simplify route replace and appending into multipath route") Signed-off-by: Ido Schimmel Acked-by: Jiri Pirko --- .../net/ethernet/mellanox/mlxsw/spectrum_router.c | 27 +++++++++++++++------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c index 77b2adb29341..c8956ab224ea 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c @@ -4771,11 +4771,11 @@ mlxsw_sp_fib6_entry_rt(const struct mlxsw_sp_fib6_entry *fib6_entry) static struct mlxsw_sp_fib6_entry * mlxsw_sp_fib6_node_mp_entry_find(const struct mlxsw_sp_fib_node *fib_node, - const struct fib6_info *nrt, bool replace) + const struct fib6_info *nrt, bool append) { struct mlxsw_sp_fib6_entry *fib6_entry; - if (!mlxsw_sp_fib6_rt_can_mp(nrt) || replace) + if (!append) return NULL; list_for_each_entry(fib6_entry, &fib_node->entry_list, common.list) { @@ -4790,8 +4790,7 @@ mlxsw_sp_fib6_node_mp_entry_find(const struct mlxsw_sp_fib_node *fib_node, break; if (rt->fib6_metric < nrt->fib6_metric) continue; - if (rt->fib6_metric == nrt->fib6_metric && - mlxsw_sp_fib6_rt_can_mp(rt)) + if (rt->fib6_metric == nrt->fib6_metric) return fib6_entry; if (rt->fib6_metric > nrt->fib6_metric) break; @@ -5316,7 +5315,8 @@ static void mlxsw_sp_fib6_entry_replace(struct mlxsw_sp *mlxsw_sp, } static int mlxsw_sp_router_fib6_add(struct mlxsw_sp *mlxsw_sp, - struct fib6_info *rt, bool replace) + struct fib6_info *rt, bool replace, + bool append) { struct mlxsw_sp_fib6_entry *fib6_entry; struct mlxsw_sp_fib_node *fib_node; @@ -5342,7 +5342,7 @@ static int mlxsw_sp_router_fib6_add(struct mlxsw_sp *mlxsw_sp, /* Before creating a new entry, try to append route to an existing * multipath entry. */ - fib6_entry = mlxsw_sp_fib6_node_mp_entry_find(fib_node, rt, replace); + fib6_entry = mlxsw_sp_fib6_node_mp_entry_find(fib_node, rt, append); if (fib6_entry) { err = mlxsw_sp_fib6_entry_nexthop_add(mlxsw_sp, fib6_entry, rt); if (err) @@ -5350,6 +5350,14 @@ static int mlxsw_sp_router_fib6_add(struct mlxsw_sp *mlxsw_sp, return 0; } + /* We received an append event, yet did not find any route to + * append to. + */ + if (WARN_ON(append)) { + err = -EINVAL; + goto err_fib6_entry_append; + } + fib6_entry = mlxsw_sp_fib6_entry_create(mlxsw_sp, fib_node, rt); if (IS_ERR(fib6_entry)) { err = PTR_ERR(fib6_entry); @@ -5367,6 +5375,7 @@ static int mlxsw_sp_router_fib6_add(struct mlxsw_sp *mlxsw_sp, err_fib6_node_entry_link: mlxsw_sp_fib6_entry_destroy(mlxsw_sp, fib6_entry); err_fib6_entry_create: +err_fib6_entry_append: err_fib6_entry_nexthop_add: mlxsw_sp_fib_node_put(mlxsw_sp, fib_node); return err; @@ -5717,7 +5726,7 @@ static void mlxsw_sp_router_fib6_event_work(struct work_struct *work) struct mlxsw_sp_fib_event_work *fib_work = container_of(work, struct mlxsw_sp_fib_event_work, work); struct mlxsw_sp *mlxsw_sp = fib_work->mlxsw_sp; - bool replace; + bool replace, append; int err; rtnl_lock(); @@ -5728,8 +5737,10 @@ static void mlxsw_sp_router_fib6_event_work(struct work_struct *work) case FIB_EVENT_ENTRY_APPEND: /* fall through */ case FIB_EVENT_ENTRY_ADD: replace = fib_work->event == FIB_EVENT_ENTRY_REPLACE; + append = fib_work->event == FIB_EVENT_ENTRY_APPEND; err = mlxsw_sp_router_fib6_add(mlxsw_sp, - fib_work->fen6_info.rt, replace); + fib_work->fen6_info.rt, replace, + append); if (err) mlxsw_sp_router_fib_abort(mlxsw_sp); mlxsw_sp_rt6_release(fib_work->fen6_info.rt);