From patchwork Sun Jan 20 06:50:46 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1028092 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="LV3BqlfQ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43j51L6gk0z9sBn for ; Sun, 20 Jan 2019 17:51:02 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727294AbfATGuv (ORCPT ); Sun, 20 Jan 2019 01:50:51 -0500 Received: from mail-eopbgr50082.outbound.protection.outlook.com ([40.107.5.82]:29856 "EHLO EUR03-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726775AbfATGuu (ORCPT ); Sun, 20 Jan 2019 01:50:50 -0500 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=62k+i4OPU89bfnffymRGDIQk+r7n8UTwH75LZxCVsjA=; b=LV3BqlfQXc58c3T19OxogNFJ8/+CFfsbyJAM2oCK6CJ6/2pZX0l7MAv0FuhnaYnulT4wW3+gQoyh4MCUYlIjoWY1NXyGxTi9oG1NRvOrcGPK9JtDnipTpfbrAa3I8IJWALOvqXpPCFSMl7kU8e7dL0+MI35V1SLb2a+Q9+15GyQ= Received: from AM6PR05MB6056.eurprd05.prod.outlook.com (20.179.2.148) by AM6PR05MB4408.eurprd05.prod.outlook.com (52.135.162.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1537.26; Sun, 20 Jan 2019 06:50:47 +0000 Received: from AM6PR05MB6056.eurprd05.prod.outlook.com ([fe80::3411:612a:f48b:a5e2]) by AM6PR05MB6056.eurprd05.prod.outlook.com ([fe80::3411:612a:f48b:a5e2%5]) with mapi id 15.20.1537.031; Sun, 20 Jan 2019 06:50:47 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Nir Dotan , mlxsw , Ido Schimmel Subject: [PATCH net-next 06/18] mlxsw: spectrum_router: Mark RIF index as taken before creation Thread-Topic: [PATCH net-next 06/18] mlxsw: spectrum_router: Mark RIF index as taken before creation Thread-Index: AQHUsIx4Xyp4Z2kLCkOgyX9f518C6A== Date: Sun, 20 Jan 2019 06:50:46 +0000 Message-ID: <20190120065007.21352-7-idosch@mellanox.com> References: <20190120065007.21352-1-idosch@mellanox.com> In-Reply-To: <20190120065007.21352-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM6P192CA0103.EURP192.PROD.OUTLOOK.COM (2603:10a6:209:8d::44) To AM6PR05MB6056.eurprd05.prod.outlook.com (2603:10a6:20b:ab::20) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM6PR05MB4408; 6:rzPqFJw+o4HxaMfG7DIgrtcm2HYSVu9jwdyad4kjOGomezS94uWQZ9y9pZQRiLNuVvhoJ9PpfqssUBQOZq9LMam8hf7ZMyb9YumQauyuB6uECmPmjQHixA6tO9Ls9cU/6Eevv9kO9XBcnYI45y3Vw2vBxgDsgI2Q0Jelrdu53LwMCkKCP3IAgWuUYEpRqtCKA3BGL5xZKaEOlqLCGtcyquauldOaqgAZtNj+MO0saFJjompjIiLDf+0+oY0KLJZ5tBSnBnk3YB381Z7h0T2aUMm4xrwQzTYbfBuuT6LNL5gteK7VIbYUblQCF06BsHIf4yi/KIkqGC4MqOHIH2lwWYvzADbMAfD3MtUUEHp0jdz/6EOAv+UwPct++RioU9AVicGj2PSykMUdMRbsqwwitWZ8MJd0gLAHs9YEQqCVELtBbh1kSRT4YExQVpN0SjcyIsKbEo+MQG0/UbhzZCCOZg==; 5:ZYRsoPw2pR+4aXICXsuYhu+vHmZitsHfYHLd9PKMb7oGnoNdKcs3dtNf34XX65htZjqXwEND67ORppNsyU2UbfVKLwnfVI0pGw7hq/uhNv8RVy5hvtCQCqh+9N7sFAmdnktuDFfnvtssiL8cL2sAEWrgAj+bCCfSa7umracWnajZSY4335nSwwvcyLVcOFWdBNW11tg8xBUqQccqWTjnIA==; 7:nTCJ3ljq7VjUJKaR8Dd0v0Z/54avQvOgTmOA9mTI5KlpFgtSmgsxAKxHSZA/J4U4hRsWzv2NYeehEf8BqeJjSpCiYMTrL6vkpYO1zUsyHGpnrqVO/fIYlsCTrEx2m3UXKnwqhf0goz1hSDKrST3kiQ== x-ms-office365-filtering-correlation-id: 3e8e3c82-a9da-4acf-cfd3-08d67ea398f6 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(5600109)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:AM6PR05MB4408; x-ms-traffictypediagnostic: AM6PR05MB4408: x-microsoft-antispam-prvs: x-forefront-prvs: 0923977CCA x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(39850400004)(376002)(366004)(136003)(346002)(199004)(189003)(8936002)(66066001)(2351001)(106356001)(105586002)(7736002)(81166006)(1730700003)(81156014)(305945005)(8676002)(316002)(54906003)(6116002)(6512007)(3846002)(99286004)(14454004)(478600001)(1076003)(66574012)(486006)(53936002)(4326008)(107886003)(71190400001)(256004)(14444005)(25786009)(71200400001)(68736007)(102836004)(36756003)(186003)(26005)(6916009)(476003)(2616005)(50226002)(11346002)(446003)(6486002)(6436002)(5640700003)(386003)(6506007)(2906002)(52116002)(76176011)(2501003)(97736004)(86362001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR05MB4408; H:AM6PR05MB6056.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: N3uHcfEIsSv8CQMLsb/f3DE4SGFWN9vcLyDu6ex4RB41kikxJ3wOcWUN/dbqYcl6adDviV0VIX032g1VhZOyCzCVpwfaz/6H4u+GJEdSa+eX2tVdwB5B3GkMv0kv3CXMEVa6R6WZe7iqLAFjdjEIqfDqiHhD5/bZ22ozCvbookIEv2jlocxZYgI1Sf0bpK6qXYep9WkoecVTSIIUFs+tvfz44mduofWHWdSW6ax/V0ZN4DVSPoR6vC/M47Wug9ffnyMJOK7C7uUUQylkJV/uT8tK3QtSIdsAuoGjZ2/mysCwiwDgnatHBCqKzp7ZgFIKEGtxzsdrbzgtvGoU2X12Low6DOjV4TrGJw4GZOUCeXnPKyXf88/6VdECH2YpVOJ4g+3ofeP2gOHhGXb6fv8J8jcjVUduurbijJ3BssGmFEA= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3e8e3c82-a9da-4acf-cfd3-08d67ea398f6 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Jan 2019 06:50:42.5272 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB4408 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Nir Dotan The presence of an allocated RIF in mlxsw_sp->router->rifs[rif_index] marks that rif_index as taken. Set the marking of a taken RIF to happen before calling ops->create in order to allow creation of a GRE underlay RIF, which may be allocated and created as part of an overlay RIF creation. Signed-off-by: Nir Dotan Reviewed-by: Petr Machata Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c index c55bd5af0341..1cac38365503 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c @@ -6303,6 +6303,7 @@ mlxsw_sp_rif_create(struct mlxsw_sp *mlxsw_sp, goto err_rif_alloc; } dev_hold(rif->dev); + mlxsw_sp->router->rifs[rif_index] = rif; rif->mlxsw_sp = mlxsw_sp; rif->ops = ops; @@ -6329,7 +6330,6 @@ mlxsw_sp_rif_create(struct mlxsw_sp *mlxsw_sp, } mlxsw_sp_rif_counters_alloc(rif); - mlxsw_sp->router->rifs[rif_index] = rif; return rif; @@ -6341,6 +6341,7 @@ mlxsw_sp_rif_create(struct mlxsw_sp *mlxsw_sp, if (fid) mlxsw_sp_fid_put(fid); err_fid_get: + mlxsw_sp->router->rifs[rif_index] = NULL; dev_put(rif->dev); kfree(rif); err_rif_alloc: @@ -6361,7 +6362,6 @@ static void mlxsw_sp_rif_destroy(struct mlxsw_sp_rif *rif) mlxsw_sp_router_rif_gone_sync(mlxsw_sp, rif); vr = &mlxsw_sp->router->vrs[rif->vr_id]; - mlxsw_sp->router->rifs[rif->rif_index] = NULL; mlxsw_sp_rif_counters_free(rif); for (i = 0; i < MLXSW_SP_L3_PROTO_MAX; i++) mlxsw_sp_mr_rif_del(vr->mr_table[i], rif); @@ -6369,6 +6369,7 @@ static void mlxsw_sp_rif_destroy(struct mlxsw_sp_rif *rif) if (fid) /* Loopback RIFs are not associated with a FID. */ mlxsw_sp_fid_put(fid); + mlxsw_sp->router->rifs[rif->rif_index] = NULL; dev_put(rif->dev); kfree(rif); vr->rif_count--;