From patchwork Fri Jul 27 19:11:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petr Machata X-Patchwork-Id: 10547639 X-Patchwork-Delegate: idosch@idosch.org Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D1B87112E for ; Fri, 27 Jul 2018 19:11:19 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C04202C4A5 for ; Fri, 27 Jul 2018 19:11:19 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BE5F42C4C4; Fri, 27 Jul 2018 19:11:19 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.8 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED,MAILING_LIST_MULTI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.ozlabs.org (lists.ozlabs.org [203.11.71.2]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id EC5A52C4C2 for ; Fri, 27 Jul 2018 19:11:18 +0000 (UTC) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 41cdq92D0bzF19q for ; Sat, 28 Jul 2018 05:11:17 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=mellanox.com Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="J/Epfz3e"; dkim-atps=neutral X-Original-To: linux-mlxsw@lists.ozlabs.org Delivered-To: linux-mlxsw@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=mellanox.com (client-ip=40.107.8.78; helo=eur04-vi1-obe.outbound.protection.outlook.com; envelope-from=petrm@mellanox.com; receiver=) Authentication-Results: lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=mellanox.com Authentication-Results: lists.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="J/Epfz3e"; dkim-atps=neutral Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80078.outbound.protection.outlook.com [40.107.8.78]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 41cdq26r9szF16W for ; Sat, 28 Jul 2018 05:11:10 +1000 (AEST) 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=XifDBL2a3YnELOPsjAVEI0W5RI97+X+L8ORXOKpoPJM=; b=J/Epfz3eCEOOO9rOvKIokp2WUIZcSpfKD80B7fL4ryLL2/ZWN16n/sm/GxCPRQ+6kkpWjSDe9piuFvC1JArX5fIy9m0Sbng9HLQ5Vrq23tS1NVrc9va255MzPtgux/VMK7jUBACiimXr/kXc8UEoxAvAXzw55giQZ5GNc6whKDo= Received: from t540p (78.45.160.211) by AM0PR05MB4177.eurprd05.prod.outlook.com (2603:10a6:208:57::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.995.19; Fri, 27 Jul 2018 19:11:05 +0000 From: Petr Machata To: Subject: [PATCH net-next mlxsw 2/4] mlxsw: spectrum: Extract work-scheduling into a new function In-Reply-To: References: Message-Id: <2d58502993edcf6becf5d2bd6a51c16fef49aae3.1532717939.git.petrm@mellanox.com> Date: Fri, 27 Jul 2018 21:11:01 +0200 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux) MIME-Version: 1.0 X-Originating-IP: [78.45.160.211] X-ClientProxiedBy: VI1PR08CA0130.eurprd08.prod.outlook.com (2603:10a6:800:d4::32) To AM0PR05MB4177.eurprd05.prod.outlook.com (2603:10a6:208:57::26) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e178684d-ea76-41bc-04f6-08d5f3f4b3e3 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600074)(711020)(4618075)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:AM0PR05MB4177; X-Microsoft-Exchange-Diagnostics: 1; AM0PR05MB4177; 3:QDDwdeAh9pU/Ihdk+bn+ybzKfs72boFizxAgIhv4KecjZ7qG4a4Xt3vZODwCsQOmW7GMTvGxz4c0ZrC5Ks0nwyTP1EpEAsZbImaACJlm3YL8kgit1csbvFkY6YNCqMl27avnxgn6Y7iDCtw53BnNcyRd8jPsMNwqHiFRjChibyeH8UXP1tDiHslCgbgt41bRDe3Kr9TLTSqxcoOYLHuIuCaNbY8tAiEYweScinJOocSIoSWxyeIa11zPfTougXoN; 25:Sych7/mWkGdE6iw53G263quRW3u+FBXZLkA9+1tY9HfF/bPg30ePXZyypSoEi0iPNeMc8uDhAQr8kjrtPi7X0t09T26TlKOeTucUkPDjkxxrshr+6V6ic5LOult/+v4gFWPlqa1yQLwhqc7j9skvMMMwDAVxKKdU7A/a3VN9WKAmQSnJq0/aWvDwBPTFfqDQGrcW3nDi2/9KnITOfKRJiuxC7SxEz4CFi/k5v81SGQpf6LEXW2EY/w8hufNXEaEgY6UtE8cw5cnVKwzBit+yJ+tnz7RQrXAS8UmzUx2X7ctsyYEDTlX1yEi78P7o0xSYz0qoJxdfzUW8glrWBnOyGA==; 31:bcDBuEUD14N0uIBO31C+QtjMTEFahr7f1w28bubdBzzOPw7IlkUGJUa/uJFX+gUniY7Ywka2lJEY5WYmLoaRzoHGSheN7umrcokHt+Ex1TGvsiWunxH8nqSd0hyM/cGFdFFGLwv4jbAj/d083UJ4eaLqCz/RNzQVwXCwXD+34NF+RTXV5OmGJx3Tq/VZ++tmHHP/3pclbdT9hXR7TZILsD3IlOn4/wYSjfNeI1gkqzs= X-MS-TrafficTypeDiagnostic: AM0PR05MB4177: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=petrm@mellanox.com; X-Microsoft-Exchange-Diagnostics: 1; AM0PR05MB4177; 20:AuJOswdz5L7sLxhrcMzLMI1PbCrJJs2q9L+e/qAma+I/ttITnivgCBd3gtjlA0DdrL8Iro/iwXnSDiZ5j7OhYcGItH6UgayaLp2nxeSE6a2eixTjmM/yVXiDnfrJiqC3Gr8XjYTIMYaxrFQ9goEc7Ex3nfWaFc9ICSZqx35TrYXEeGDKDsPCXPJMXlkdS4akNijuUaGGS1wC/hKyC2mHniCQffuqyKxyQA4rhDcKKLPfyELsHsZh9ET1/VOfJx58EG+NFsHL5iEEYFUZfH0StY7+XsTxJhelDfD5O+1ztLGFsEga2yCth1KSbz2ZdYsKBNnEmzDXw4X2Rrq9pgJSJ0pU5ROMjsa2JZ0TL8QySe6wHPW1+aE//blRuLip6UONYODPI5ZPo/LV0fnp5JVy63WAxvYoInwBR7oUyHmAmfU9hwJI1fMnZ0Z+lC2TU2dvWewizLtbhZayPoXXDB9n9px+gPnG3GchAL0JfIuc3Ys9AUsZ3ux5uH/4uzm9WT6e; 4:b2sIEz9VF8Bp9FbZLL1S6s4E+RJlFHkwAFnF0vxZ674VrpInwhgyVYmJHIvf7+pTqT7H2oCgsWdVFSUHOEfvnZ7OjPsWbDYZvv3z0Fu1zPBxDUgiwSdsCXaMpoT4cWrLZKAZ+ATjzRNDYoZBj+IhxBgmwzk6QzfV1KIYD/bzOE+2+LKgAyQeO1wc8O1blsT03RaE+3PyEOMayZf1atCJxFDswvHfR4/zj88B5e29NPwE01UyA6iT+Ui0Z75yK079v2BPBQxMRMsHt1A3co1hww== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(3231311)(944501410)(52105095)(93006095)(93001095)(10201501046)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123564045)(20161123560045)(20161123562045)(6072148)(201708071742011)(7699016); SRVR:AM0PR05MB4177; BCL:0; PCL:0; RULEID:; SRVR:AM0PR05MB4177; X-Forefront-PRVS: 07467C4D33 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(979002)(366004)(39860400002)(396003)(346002)(376002)(136003)(199004)(189003)(6486002)(186003)(16526019)(25786009)(5660300001)(26005)(48376002)(86362001)(386003)(6496006)(50466002)(305945005)(6636002)(7736002)(8936002)(66066001)(6666003)(47776003)(8676002)(2351001)(81166006)(81156014)(97736004)(446003)(11346002)(6116002)(58126008)(16586007)(37006003)(316002)(76176011)(2906002)(52116002)(6862004)(14444005)(956004)(118296001)(2616005)(51416003)(68736007)(36756003)(476003)(478600001)(486006)(53936002)(105586002)(3846002)(106356001)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR05MB4177; H:t540p; 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-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM0PR05MB4177; 23:hc/D7DyEH4HNDdtQ3h4uF2z9tnfLjL0iXAwklfSoO?= nWzcrYJVGi7vx/qo1bdZSflMYeLc7NoSlDKH1hYL5m6n0b9Yg+/NpWqCyQDtuI3Y5tvBx14nR+ApP+VdtNMenOLhYR2bgqdWkTXJ1l1PTetXr/YuoRdlDOnUmFQgk9FtGIXu4sC/KD3Oe/jGsRTuOWTBrACl3+wZDXYIqRB5McNH9pxXUWWTb2YC4c8l04fI9rF7NdfrvVbC+N8EI4yUFkTKSCrjkPKM8rVSOCwxXwjHyjaXI3rW0pKD3uyh8vFSZOT+uP/co1N6pwdvvW+PnZkUpOEHyeQBFMQl/cI2GZSEE7cF83Cut8AgFh1+CaS5egR9WpCwMGn2pLGQ/EVho5n3xGql6ZI+2QXdpjBDvdNRyJLF3nzAjPXIfH0cnUaNhqDYnNyeXLx5+4vHN03yqLfJovPL6CKOR3qKvnZ6WL7UL8HZKgH8Ryw8UZh5I0eLkjtozCgNvYS3/4/tMwZiL2MAxmxOLTYrHT0A0cuEaxp2e0tBvjpPpk5kxgIM89/zZDebwRyWjkwRXApxWJnlAvQFsOXSMs6ZzlgGPgVR5oXcNFUPDvBXNNh8wifw8H/+lC941/5w/M3RMzU1yOr+02pPxBWee6+9QPn6j/6G69nHHZ9k1J9+ByNR9qP/Qw7NGfpGw56uZDfWq1YWvJ+RYX/htM2l+Pm4lpfnceaWV3ETj8V1ETrMACKB4YPJM+eS6s8TbV8IIm8WUnwT08DP0xgMz6evfxHY2p1U7ncfngHCqrBZNMo7h+enwQga4j1TUw3rWUu3VtCzeIerx2WQHcnmqoJt5/sOX9bbTwK6EbcOfpI01H+IsvhDv9sESEzJOChgAyqTXcnA8wAMPMmDkQDuu6FIVyxDVIT8fSMjEFHf5cOf4ASJQCwCAf2Z5vnSTe40GP6AJyRw52d7W6e+gXl27uqmiz9HFzx8xCWJLGIujQXqc2TZDg7l5RnkU+2bNjx97Pe1yCWa9ewmjg/wUN5YgSMB8D/nUbqKxC1T3OjMJ3G6nt5hlJY7ao65JOTW5M56IzNTlrsVRI1W8iFCQDK5xtRkvwfJClDHR1cmNQTolN7TTNegPuRXOKO3UT+BJskykGmGUVO7kR+e0tv5WhRT2v1nBwzaxRmJdAXNULm7t2qvGb5EY9Y1jfNL5JCcYljUYZm3GIXrjaseI2weXim3Neu+MpC1K4FfEB0Ma6SvlQnPQT9Vm70FoFgKW4AGy9JpxYV8fq2OLaxDPWmOs5erKEaFMwZQWB4Mlbf9hKsJnv7URf4NKnW5eMJtIdzgZ72SVok6nt0o+hmHDc+1YlX X-Microsoft-Antispam-Message-Info: 64U2yFzsUzlR5vVkuU6OSl6DBrtLYt9p03VlVlHhFe9Oa+3Ti1M3ZapoK+0gqqfMqvkCz8d++HQag85Xdp1XAGVx1biJ0ZlTCJoz/yQ1G9erDa2zrbG5nPivkTQskXD6JRTR2ux6anytiXX9TAmXRFYl8du5wsPrF40AgV8xBRUBefSCW5BTrJ/Ubbunsw/6EI92svmRCBjVo0G2OCam3TNegfs9I+GWUrtNGbEvRz/TrI4yNN+wFgYPJn1DnWpikpv4Zlszxq6I6dEtROt2mD07EWLJFuexlhObICIhPAbBKhZp8lscxdinlvJGD8Su3osbz6YHnLIYKS8wMfIkOVYCRBPzET5nMOCm8ZzFXgk= X-Microsoft-Exchange-Diagnostics: 1; AM0PR05MB4177; 6:7QKZnb4L1srIttNOh6mLGrHo3TQXTmuSwUdWNfbCEmmKY/LypxqS69Hedliy+Vv4Nj82mUIQagDOMXZhh8AWpHhF+lKxczkpK3P0ySeH/r7CtgtnkNj+7ihg5bJqi0Ok39DVcZso+fGJy39zFWdtQ48LDrxBsvBNwZgKLiQy2DtsyD5rp85vIOxq/8FF9/krRE3zuTyWk5n8Y/JmxOq7qAFryTi5wUBcds/P0WR4/GN0Z9tSeOM1xLD8DcmuTY6vd8m/MqjuMNsGAKVB3wZbjWE5RVDLyONQUW67MVlDmCXD6QaGM9fNakGRQ9LV6VkAZNKvSXBLCRuRrXAlHFneeARIwWCzYEK7BgYBrTLiRFshNfM3AMYAIoaOIRRKsa3ebGSuWGJo8sutHU+Rk+/myGvi2yBqJH5QovlBj/lQ/1Zhd8/fGoyLAfbOF6VyX0A+cNwB6z9f4qIy9EiOmrawQA==; 5:IG10IkBwVRi1ypT6OEgdXR2xs8NHD7rTe8Qz2chNpl1YAgaYqLGsyM145F2n9DeRpLg5q3gu38u3jucgEQexBW9nL7n0PQjdT0V+hRN45SlwkWGjtLG60bE+oPC5/5cCZUC1vkmUp6nYuXIu/yg8xejoe5nLEL2Jxb4WV1RZxmI=; 7:ZTca0uZWtb1RpcQqeyrLNLpnZ9hMzmEF5eyHXnO8qC28WaiLhWU++wK4LQGi5KnGbBy0MijLG4g8RwEPRGjiyH+RzEN2gJDLeblIdeEECfSnpMVOqRTCRMf4BTULSO3XrSxfT6FLaA3tSu66tPDtV9MIY8XxpEGmZJX/Guyt11D9+PPfElRc/jdWA1ksFce90V4/2EmIxHY6rieUmZ7lk+t6abbWwUYd6l/DjxHQPvPB/gqY2aef0B9vnzewuZQ2 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jul 2018 19:11:05.6551 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e178684d-ea76-41bc-04f6-08d5f3f4b3e3 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR05MB4177 X-BeenThere: linux-mlxsw@lists.ozlabs.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: mlxsw driver development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linux-mlxsw-bounces+patchwork-linux-mlxsw=patchwork.kernel.org@lists.ozlabs.org X-Virus-Scanned: ClamAV using ClamSMTP The boilerplate to schedule NETEVENT_IPV4_MPATH_HASH_UPDATE and NETEVENT_IPV6_MPATH_HASH_UPDATE handling is almost equivalent to that of NETEVENT_IPV4_FWD_UPDATE_PRIORITY_UPDATE that's coming in the next patch. The only difference is which actual worker function should be called. Extract this boilerplate into a named function in order to allow reuse. Signed-off-by: Petr Machata --- .../net/ethernet/mellanox/mlxsw/spectrum_router.c | 38 +++++++++++++--------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c index 1d4c02a36432..08b105bfb65d 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c @@ -2402,17 +2402,36 @@ static void mlxsw_sp_router_mp_hash_event_work(struct work_struct *work) kfree(net_work); } +static int mlxsw_sp_router_schedule_work(struct net *net, + struct notifier_block *nb, + void (*cb)(struct work_struct *)) +{ + struct mlxsw_sp_netevent_work *net_work; + struct mlxsw_sp_router *router; + + if (!net_eq(net, &init_net)) + return NOTIFY_DONE; + + net_work = kzalloc(sizeof(*net_work), GFP_ATOMIC); + if (!net_work) + return NOTIFY_BAD; + + router = container_of(nb, struct mlxsw_sp_router, netevent_nb); + INIT_WORK(&net_work->work, cb); + net_work->mlxsw_sp = router->mlxsw_sp; + mlxsw_core_schedule_work(&net_work->work); + return NOTIFY_DONE; +} + static int mlxsw_sp_router_netevent_event(struct notifier_block *nb, unsigned long event, void *ptr) { struct mlxsw_sp_netevent_work *net_work; struct mlxsw_sp_port *mlxsw_sp_port; - struct mlxsw_sp_router *router; struct mlxsw_sp *mlxsw_sp; unsigned long interval; struct neigh_parms *p; struct neighbour *n; - struct net *net; switch (event) { case NETEVENT_DELAY_PROBE_TIME_UPDATE: @@ -2466,20 +2485,9 @@ static int mlxsw_sp_router_netevent_event(struct notifier_block *nb, break; case NETEVENT_IPV4_MPATH_HASH_UPDATE: case NETEVENT_IPV6_MPATH_HASH_UPDATE: - net = ptr; + return mlxsw_sp_router_schedule_work(ptr, nb, + mlxsw_sp_router_mp_hash_event_work); - if (!net_eq(net, &init_net)) - return NOTIFY_DONE; - - net_work = kzalloc(sizeof(*net_work), GFP_ATOMIC); - if (!net_work) - return NOTIFY_BAD; - - router = container_of(nb, struct mlxsw_sp_router, netevent_nb); - INIT_WORK(&net_work->work, mlxsw_sp_router_mp_hash_event_work); - net_work->mlxsw_sp = router->mlxsw_sp; - mlxsw_core_schedule_work(&net_work->work); - break; } return NOTIFY_DONE;