From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6EBE4C43381 for ; Sun, 24 Feb 2019 06:46:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 322B8204EC for ; Sun, 24 Feb 2019 06:46:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=Mellanox.com header.i=@Mellanox.com header.b="fUyjMCpi" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727000AbfBXGqj (ORCPT ); Sun, 24 Feb 2019 01:46:39 -0500 Received: from mail-eopbgr40071.outbound.protection.outlook.com ([40.107.4.71]:39872 "EHLO EUR03-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726459AbfBXGqj (ORCPT ); Sun, 24 Feb 2019 01:46:39 -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=QY41pqg0YRK3OlmScz0WhflvS1J/MPjk5TBgpGHGoBA=; b=fUyjMCpiykIq5aXT/Ru1dxgSL0Js6tdyEtU+kVLWj+1+T+oE3ZvDAYwPztFwI61M9CVivo7/xF8v5KR20+jdzFpQBUY86dilCFlXeplJlG5vHjbwIpwMl3uX1YGiMbaz71nog4BZnr5Yno0KDw+p26ib9k0sM+dt8HFHyO3W8zY= Received: from AM6PR05MB5240.eurprd05.prod.outlook.com (20.177.196.214) by AM6PR05MB4343.eurprd05.prod.outlook.com (52.135.162.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.18; Sun, 24 Feb 2019 06:46:24 +0000 Received: from AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866]) by AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866%5]) with mapi id 15.20.1643.019; Sun, 24 Feb 2019 06:46:24 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , mlxsw , Ido Schimmel Subject: [PATCH net-next 03/15] mlxsw: spectrum_acl: Introduce a mutex to guard region list updates Thread-Topic: [PATCH net-next 03/15] mlxsw: spectrum_acl: Introduce a mutex to guard region list updates Thread-Index: AQHUzAyotX2xL3JaIkaRuOne2kKXNQ== Date: Sun, 24 Feb 2019 06:46:24 +0000 Message-ID: <20190224064525.14913-4-idosch@mellanox.com> References: <20190224064525.14913-1-idosch@mellanox.com> In-Reply-To: <20190224064525.14913-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM6P194CA0033.EURP194.PROD.OUTLOOK.COM (2603:10a6:209:90::46) To AM6PR05MB5240.eurprd05.prod.outlook.com (2603:10a6:20b:64::22) 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-ms-office365-filtering-correlation-id: f4e99fc4-4f63-4b67-17a2-08d69a23cb21 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(5600110)(711020)(4605104)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020);SRVR:AM6PR05MB4343; x-ms-traffictypediagnostic: AM6PR05MB4343: x-microsoft-exchange-diagnostics: =?iso-8859-1?Q?1;AM6PR05MB4343;23:Ge7iMjDx0Mf+7QmB6VKIAa3oSxG2lOYuciGoEnK?= =?iso-8859-1?Q?8aXpBui9omLCW88DAm6XScebRuZD95Gpi3LHejepii+7A3j1Kv7W7xhrcy?= =?iso-8859-1?Q?3fqJ+hhgNIhWLnvNwVCOxC9jQRyMkt0sHhUpcqzdNnT/p/y6bVjDbDhuLi?= =?iso-8859-1?Q?2yyks/foVRclsE5FyvTsEMUV26AzHRYlK57E8r6hfDCjxa56ItMXagjGME?= =?iso-8859-1?Q?rUXEMXvNpI3571Q6khkfRKQirmMCrdEr7Mv/PUmu2AncLHOVItsHtE8L2e?= =?iso-8859-1?Q?pazZbsb3onanS/WGsEeVb8ZPz+YF96L47ZwpZe2YROePB3oaRjVAXhd5VD?= =?iso-8859-1?Q?U0POYladRVLCQoYQ0fsvJK4p4vC/CfS1Ps7PMbdWCYffBtvG0DEXr4f/f3?= =?iso-8859-1?Q?d/x/RRoiqQD2TxPxol12X79YPkMaZTtePTMilwtZLQHtdN4P1J8+7mTMsX?= =?iso-8859-1?Q?JTzka5gi12+pdWVPLt3nBFLg1VdqzxJGu9Un56D28crYIBu39jcQOspS33?= =?iso-8859-1?Q?er7Yg8N0c4WZ20cLSR/+kjg8Bzc9Zrc/L2BzgENv+5lmyIHvBHmIs8nSH0?= =?iso-8859-1?Q?mSRwQQE6myqqjpPSVSI5+XKPC06zL1XIqPCJCdTF7aGcYcKQb7w/eaKV6o?= =?iso-8859-1?Q?y9R8SJY1c8qmOBmeUJKj39gs6eLPt2VHxfE8jYhlEjzfCUx/NkAHZcO+0P?= =?iso-8859-1?Q?qZNKu0f6FRP9HVFgVlT7O/fWuJOaeuuGOs84431FeT+/RSez7eBMQmch3j?= =?iso-8859-1?Q?a2LDqzUMqcDDPoo/dIACKNqKRza9i0vHyFhVCwQXoL1UrwD2TzUw/Ufls4?= =?iso-8859-1?Q?ZexudhxeOo9prXZ5FvbXIliZyhhXOHV0rtoXWP/e/EhWKUIEV+Qhc4t7Ns?= =?iso-8859-1?Q?KzthuiMm+4SWMVVo/0q1NREvz8AfDgmR/PhZNISr5fK4gaUrTVQq0fp+Cq?= =?iso-8859-1?Q?r3lomvbnlgrkTS+3fmlFm8eKNUsNNH0F0uZ1LOh6f+wnm2PpvdIC2SSZ08?= =?iso-8859-1?Q?yQri473wnth7FlIVB1CnanetDjNZ4wc9n6b2EOqhNO62/ZplUi8JziP/HQ?= =?iso-8859-1?Q?eg8kor3IkqFPfI6P+wVOA+nF+97rap5Hwr8m4I8Ad0wGoxCqD9NFlXI0Px?= =?iso-8859-1?Q?XW1J6Gan03TPUy1F9ycbl1oMhQ0rmMZpStn/GxZw8X0y9dzJVGDevEkJOh?= =?iso-8859-1?Q?h70SV35nRL7Xf1utfqkfi2kUEc7/g3//ClOBTflrkcHBNgQI6RhlpCsww/?= =?iso-8859-1?Q?79BZLn7oBiI7+TnOcpC7Cx78Szwjhj/Ig7O4ycxx+0s2RXujXDSZunMI4g?= =?iso-8859-1?Q?LxsRF5HYzrEKr57KEf0Jjyqf6Vnlxmfz1ih5xxokE2iZh1ZOQmFqrH6G8b?= =?iso-8859-1?Q?pCksjvA1b3SHLp3Z+Fvlwg8wwUX+h8h5Zp0VLVwa1v4r0wyYbkYAGpO3/I?= =?iso-8859-1?Q?uNewMqhgex1aAzJY/Fxz4VUIn8xnTBU1iMK?= x-microsoft-antispam-prvs: x-forefront-prvs: 09583628E0 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(366004)(396003)(136003)(376002)(346002)(39850400004)(199004)(189003)(102836004)(5660300002)(3846002)(14444005)(8936002)(6116002)(5640700003)(256004)(6506007)(386003)(1076003)(71200400001)(71190400001)(14454004)(6512007)(15650500001)(6436002)(81166006)(2351001)(81156014)(1730700003)(6346003)(50226002)(26005)(6916009)(5024004)(107886003)(2906002)(99286004)(86362001)(2501003)(486006)(2616005)(4326008)(11346002)(54906003)(66066001)(316002)(476003)(446003)(53936002)(68736007)(52116002)(7736002)(6486002)(8676002)(478600001)(106356001)(305945005)(105586002)(25786009)(186003)(36756003)(76176011)(97736004);DIR:OUT;SFP:1101;SCL:1;SRVR:AM6PR05MB4343;H:AM6PR05MB5240.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) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: eukq0J6sb+owMay8exwD1RcZvcrIkbJ+1INwNprzDMRUvnUtD+PeerCWoZODvBMEF1/nixs6HTyiy75I5oaCZd6EpkyHb5VRKb1MfIbtkOqnxcrK2R+WZXWi0qA4q3gurGTs3w3bUBA8Lynz7DdS33VSEHVotw1mMC8GOOEoXnz/nHzKwNrAZ3KjyADV24nXEFWRRVizFGH8edHcbys0af0NpFBQ04QaZQyCDVr9bo4SrKIp8BpW5W/RIl9alTEN2AlgT7FkT1wJDq9z2+S3aCxt1K4zAZc93QFQRn6KWH8x/etdii3o0/utNkEPBvSPcmdFpPaGDPnRB7JkPk/sMeY8kFZLo1Ybye0sD5rHptZlWyzW9nzDqysjwAz87tNHDmaecC7Wx6tX/QZ5bjTgAnwEcs2Gb2Bwb+95E+NMi9s= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: f4e99fc4-4f63-4b67-17a2-08d69a23cb21 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Feb 2019 06:46:23.7417 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB4343 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jiri Pirko In order to remove RTNL lock dependency, it is needed to protect the regions list in a group. Introduce a mutex to do the job. Signed-off-by: Jiri Pirko Signed-off-by: Ido Schimmel --- .../ethernet/mellanox/mlxsw/spectrum_acl_tcam.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c b/driv= ers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c index 922f17adcee7..21ebda19a2ad 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c @@ -8,6 +8,7 @@ #include #include #include +#include #include =20 #include "reg.h" @@ -161,6 +162,7 @@ struct mlxsw_sp_acl_tcam_pattern { struct mlxsw_sp_acl_tcam_group { struct mlxsw_sp_acl_tcam *tcam; u16 id; + struct mutex lock; /* guards region list updates */ struct list_head region_list; unsigned int region_count; }; @@ -259,6 +261,7 @@ mlxsw_sp_acl_tcam_group_add(struct mlxsw_sp_acl_tcam *t= cam, int err; =20 group->tcam =3D tcam; + mutex_init(&group->lock); INIT_LIST_HEAD(&group->region_list); =20 err =3D mlxsw_sp_acl_tcam_group_id_get(tcam, &group->id); @@ -272,6 +275,7 @@ static void mlxsw_sp_acl_tcam_group_del(struct mlxsw_sp= _acl_tcam_group *group) { struct mlxsw_sp_acl_tcam *tcam =3D group->tcam; =20 + mutex_destroy(&group->lock); mlxsw_sp_acl_tcam_group_id_put(tcam, group->id); WARN_ON(!list_empty(&group->region_list)); } @@ -390,8 +394,11 @@ mlxsw_sp_acl_tcam_group_region_attach(struct mlxsw_sp = *mlxsw_sp, struct list_head *pos; int err; =20 - if (group->region_count =3D=3D group->tcam->max_group_size) - return -ENOBUFS; + mutex_lock(&group->lock); + if (group->region_count =3D=3D group->tcam->max_group_size) { + err =3D -ENOBUFS; + goto err_region_count_check; + } =20 if (next_region) { /* If the next region is defined, place the new one @@ -415,10 +422,13 @@ mlxsw_sp_acl_tcam_group_region_attach(struct mlxsw_sp= *mlxsw_sp, goto err_group_update; =20 group->region_count++; + mutex_unlock(&group->lock); return 0; =20 err_group_update: list_del(®ion->list); +err_region_count_check: + mutex_unlock(&group->lock); return err; } =20 @@ -428,9 +438,11 @@ mlxsw_sp_acl_tcam_group_region_detach(struct mlxsw_sp = *mlxsw_sp, { struct mlxsw_sp_acl_tcam_group *group =3D region->group; =20 + mutex_lock(&group->lock); list_del(®ion->list); group->region_count--; mlxsw_sp_acl_tcam_group_update(mlxsw_sp, group); + mutex_unlock(&group->lock); } =20 static int --=20 2.20.1