From patchwork Mon Mar 26 12:01:32 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 890928 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="rMh/ohxk"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 408t8w2s4Hz9rx7 for ; Mon, 26 Mar 2018 23:04:00 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751677AbeCZMD6 (ORCPT ); Mon, 26 Mar 2018 08:03:58 -0400 Received: from mail-he1eur01on0080.outbound.protection.outlook.com ([104.47.0.80]:57920 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751024AbeCZMCa (ORCPT ); Mon, 26 Mar 2018 08:02:30 -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; bh=EAqDtYBiwlX3hBq97qzh1I4kRYJ49JCAjp67bROxf7w=; b=rMh/ohxkM/jHd1Ap0JUTIOPRgvHcBPFh+eD7LVukzlh6GLjBPyU1cV89IFe0fluux/ps4opxNfCGLoRzGfbxiYsGQ3bPFFv1/qZaWtuGnq4neLiCLB1pGD0erso9sYWyR7PntKF4WG2zSUARB2zj1gHEMUGH/kBFwJ1652mwwkw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; Received: from splinter.mtl.com (193.47.165.251) by DB6PR0501MB2005.eurprd05.prod.outlook.com (2603:10a6:4:6::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.609.10; Mon, 26 Mar 2018 12:02:23 +0000 From: Ido Schimmel To: netdev@vger.kernel.org Cc: davem@davemloft.net, yuvalm@mellanox.com, jiri@mellanox.com, nikolay@cumulusnetworks.com, Ido Schimmel Subject: [PATCH net-next 02/15] ipmr: Make MFC fib notifiers common Date: Mon, 26 Mar 2018 15:01:32 +0300 Message-Id: <20180326120145.11752-3-idosch@mellanox.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180326120145.11752-1-idosch@mellanox.com> References: <20180326120145.11752-1-idosch@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [193.47.165.251] X-ClientProxiedBy: AM5PR0102CA0028.eurprd01.prod.exchangelabs.com (2603:10a6:206::41) To DB6PR0501MB2005.eurprd05.prod.outlook.com (2603:10a6:4:6::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: f5eb35cf-f337-4fad-f942-08d593116fe0 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(5600026)(4604075)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:DB6PR0501MB2005; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2005; 3:3KvN64BPhKE6l2+Op8VxT+karRLOsEWb9cy4DVc+YASg+ju7P5YTfNuR6m10lq7w06X5ezddm6LtcFxhIdYfrfDrK5OxQJZn8tGfF/jQC3SBvio2TtEX08NI3taWp0EUJLXYI4fxMltNXos2k3+z4QHO1ZGmPZc/9vnaJXrQKHuszKaAMhywCkz/YmDBj5jfc85NO1ulW0H9aVEb06WSqaLhFxx6KyPiGntdL6SVokwizU76uWGalbOLIxLWOPqv; 25:R9G6Ohn8tdICtJL3Wkw0R2QpqU735ad5sIycMkZMbP0xnaKjTn+z+PqeO7YcBMES2OquTzrtlrHIZRpYxpkD6cCHX+CN9R5bKS7+fylBG2pgQI9FGUnwAt8splSYuSCLLvU7cLWuENewTcYPEOnoZ9UUTea42VzB7vaF9axf+dEM3L8HP7rphea8bXiMBdOUOV9ivebw70Wou80RnAxgWBfTNYhLTCeXevMP82ZnobtCVAiQBFRRs1omTAoRQSofudHDEzbwOUKr9eeFUlXVfUCFaVGFaJdcUFaLJu5y5fTpwRglAyQLvHf80BOFXf8WymodJbNByHkvQA/WSVx5Jg==; 31:9ej8kf4xcg2mozK6SRijYKD4Msf1iqmRbmjInUQavkK63X8M4l1q3StSjXXfUQTwmBGAlEUiJnvIIdRZ1XFv+xhE92i7QlocxTuACqhjq5G5I7krOa5IUwKh53mgPZA8FjLNhSJbj9Ki2d1odq/4B6Nz3dNPYIx5U7gv65+QkPQH8V4QnqBNfUd7t9kepMqpgv0808/mLFSVZsJC0VgWF7VpeTKtZIcrdnuTTyWO4vo= X-MS-TrafficTypeDiagnostic: DB6PR0501MB2005: X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2005; 20:Mti9+vh0qtIMYOKnTnUnEwYLBcdN2nXJ4Ac/7nNWnkaDLxcHdJbDPq32H3lOhqn89z/0MIgZAAlpAOjunU53wODM1k1yks1xfot2N5b8PqSizzkWme3VjTklE/NqsBG+NnjM5rpADVzZKnST5BChBup9nasPh8TEnAGf3o9ETIwYvaqedDGEZaDrEfioiqPVIVur2FuVVszsaiL9RZKJTu5XLPNvTifXXItU6l7vjX3v4TvmT4wlUJVriYf+G+HUkEQWC2IYWzRy+QyNJDpxKLN206MesD77kniDQnmxgGfXkHkwr8XjY4rDkUqU5VGczOnkhtoVetAGIMPzj9GK0+IaI8pcsfg2amK4jegLrS1Df9wrMGriMaad+rpsL84+dVeB3mP51s8tjvB6kyQg3nV0q8PuiuCnaCtTn2HiGE31TMVMGdoCb8DPbygW13qAnJbfoP4kD+FApIvbUMKs4k8S9+FP+dkzV35koWQaMRf5w3a4BtpFZsDSiTuzeJ+d; 4:VsNTF9aPYl2mX9xCGgJgtMXrFNmARiSud1YAcFnuQ+8yxx7G7qFymR4oy3O0dGSLNGmSBLEO1qXDLgYhHfv1+OsUfxomd0QC25waCAZxYcW4cn9IsjGlLGXoHGjt294H6cgtBYmV3auaY/iJY6yRA1zqanDvFM8+JxBZ9iOLmeufXjZ3Z0av3nPSWhu6hKc+ddC7xWQupRU0a05+2RfHqEaQhlN8uaio2HlC3/qBNeKzafQummRY6OncqiLvQY8uB/7r1/LLdLnM8QGJ4LI3ukG3x9TlB986GR8MkR8GLXq/LgQ+eXl3NuIFU3GGaQPt X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231221)(944501327)(52105095)(93006095)(93001095)(3002001)(10201501046)(6055026)(6041310)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(20161123564045)(6072148)(201708071742011); SRVR:DB6PR0501MB2005; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0501MB2005; X-Forefront-PRVS: 06237E4555 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(346002)(396003)(39380400002)(376002)(39860400002)(366004)(199004)(189003)(386003)(68736007)(66066001)(3846002)(6116002)(316002)(16586007)(6486002)(106356001)(956004)(2616005)(446003)(26005)(11346002)(97736004)(478600001)(48376002)(186003)(50466002)(53416004)(305945005)(47776003)(4326008)(7736002)(16526019)(2361001)(2351001)(2906002)(1076002)(8676002)(105586002)(50226002)(5660300001)(52116002)(51416003)(25786009)(6512007)(6916009)(6666003)(107886003)(86362001)(6506007)(36756003)(81166006)(81156014)(8936002)(53936002)(76176011); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0501MB2005; H:splinter.mtl.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2005; 23:tQy26EwlMl/UrZkLKTfxOPGQ3Q93IA7vb9yCBejmMZy0Ceycfk1uFktLAPYPjvOKdPal+Gnc7wLmvj/UDbh/4TrHPaZn09Qdd/XAUabTKurjFs5V98xS+wc1rV3vk2cIxHs2m2mtak8HFXh24255RuOTaoeZoyUKhC1cDGgVleQMWAYlEMd+Ph7aEE1kBTwt7lz+KR4GRxn+rEmEz6d3gAKybLHBS6TCGqlndubwd3aoWKFCqK6yrHH3e2GupMut9aoIRBi59lPxF9dYQ3p3NCvDs95kec7o2ZgHPty0fau/st9f8K6DEC/5iN/4XMFQ4E7i5H/jrMfASCFqszyXYxwdUsP5XHtKj99BJ/ECGDBwYFkMbiaP4iqEYV5Ygo8AzX75YBSQOvpYjREtoU7uq5vEpvcrJdhJRiXlkYbcQ4UcRj1EzLHTUnaCjwzow2yTmmpyBCfIphbppzybuCecIIXTbgDJqFhz+z0h82FigafjtklS48dKtUm9snonkLloaNh32upJdy22/SR3Mp+3zXWHoXQS/pOaiJ/TEfPWj/CD7ODzOgosXZYJXXTRy+8taCN6ya0lDaJAPhmf8UYz4QBTDYk2Xb0sNbN4AjDQu4E6fZ96AmrD8fC3DAaHG9DNayyAed5x1TtADNqpMOxH1N639UA/uZxqBCfnUWF8JVr9xVir4ZbDAJixW0aVacX/ZVP6fy+7ytvkESG7mzXTcglwU46DBC7AEVvchevC3xCB76BeowAUojkjslLUZTrcWxQfS13XDtrOZT13Ger/muLnkuGVuilSk0M5LdHGEtr7ZDr5LadUCEDRSO/razabDJSee5CrzoXMJBv7TUEnGQ22eqzjvaIOAQXxFv89gM+4UWCd1+p6ekjaqRnNcM/+M8jcoXWQh43gHiNVu1LVaOUitSYcVw4PxU9ymcPv63/ht5o3O8OcvNQpQ1tcPA+XkqIJkY2+gkMUVII54Pbt5Lnrn+4p0ajZNlcLdhagw1BMJJaK9U8/J6/weL00uDa8vdjqlqTjrDahdJOcZvkFfQegZBijrmJT0VaRNP3ypYezjBvb9aQ/WuexnB0EzNRZowDTLoiZNTPCkcVD+3H5WiWfpvc03NK6bIOs4xinZ+yLPaqwMX1sXS8TU/PjxaIrK4ELs4lGZyAzUHKdUDP9BtFpZ+Ru/1vK/AotMP7pEp39FxUHsqisxA3hHVSZGaeQbWvHNIq3BKMxuaGhze+9KlkXVZXvfmGNdLtakbsO6mI= X-Microsoft-Antispam-Message-Info: OZIm4QqqaA7hL8y3pHuCme9bh0af8DUj6T9hoVeFS1rO8wMNJ4R2E+iKyl6dcW6j8lS/BiyZ4eKQgrBTQ3HuXcFx3a/yL/85xCthYU7KaaCnq67zvrfIS9QUR4OiFpXbtAvTqBLHCxZ2/Sw1JySjz+btRWMailr7s3vzuRW/IMagBqjIPuecg3XN94yLm98j X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2005; 6:yx1lQHlupH47GKsCHKguhwkcAQIVsXtZpgMDMMCJLKjygCepoi42ipp9IxEHwI4juYhhWnP9PVYIIT20pzTJP6CxOq6D9Bd8vR99qIezzY7dUAclDWQ+3YC+FT89pOwROJJ2GIZOKY4Jem12kEIGsehVq1ftaaH66sarU5yEy5pdO5QGzvJ6RFdqVQFeDDlOFnpBZ/IYO27rP+7bClvch9o955ZWCWIproTTf19OfL3uwA1fEJniUqvU0DCP10K3MTIxEA5smQVbzTMBWS3vDVoY83oDMwtUtj74Tk2lmUxzGGyoZYrp+mOguosuQxvd5tHXWorb1GuFIxu5hXoHnhRnHuNg80qcWEGoHRDbAcO1hqw2SVmxanh+pEn2bCT6N8O24SKnw4KWghKsrHIcyGpdMhmcpqiFxl+qoV3jfA4QGQC0OM5P89J1peKtT5uJteRZNBUVFbqeZ8l682nY1w==; 5:8V8oHYDobnaLDvgL7pOMpklrsj7LqGNA2zfcSGya+orXtzv4W9pY5/M2lMjz8qHVgdLi3qTJocvRgFUW0eLF83cIk/NhFdjRyTyqUIt5YJo8V8E05/X11WODrQpohHwJC1dQBWRET7GCHM2X4j15RAjiS7SVKqXSgbEmXaJiKJA=; 24:eIvAjwILcRiB4ITpvbN75Ad3Djs22PeiaSH/N7RZuC4u04vyb65W0aaYhm/yOWTQkOt6DZ/pOy5hhv+5rVXzlChHiYeg/6NsACIQ6U0pBvI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB6PR0501MB2005; 7:LTzQus4C5h+GsrHaa3VjYTmm+3ood4zvuHXyz7CEoUbp1O5dvRm/wJbjtrr3am5q36PCe1J+1xS6x+Tkazs4PR379/P3T6DwIHupkh6BQFs+Qh0iqjY4AUjTvjv7erpD18FVVZt+rwvAgFf6YsWj8l0Db2ASSMn8nLBsopRJ1cgABlr1irDu9OJ0GgEkqYcgW0P5E5/G2wtmwCQearjlZQn8xjn0Yf6OFrroNnKDxC2jH8f7Wj3zWVl+/OMAzyEV X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Mar 2018 12:02:23.6816 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f5eb35cf-f337-4fad-f942-08d593116fe0 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0501MB2005 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Yuval Mintz Like vif notifications, move the notifier struct for MFC as well as its helpers into a common file; Currently they're only used by ipmr. Signed-off-by: Yuval Mintz Signed-off-by: Ido Schimmel --- .../net/ethernet/mellanox/mlxsw/spectrum_router.c | 13 ++++--- include/linux/mroute.h | 6 --- include/linux/mroute_base.h | 44 ++++++++++++++++++++++ net/ipv4/ipmr.c | 26 ++----------- 4 files changed, 56 insertions(+), 33 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c index 921bd1075edf..8d067de924cf 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c @@ -5391,7 +5391,9 @@ static int mlxsw_sp_router_fibmr_add(struct mlxsw_sp *mlxsw_sp, if (IS_ERR(vr)) return PTR_ERR(vr); - return mlxsw_sp_mr_route4_add(vr->mr4_table, men_info->mfc, replace); + return mlxsw_sp_mr_route4_add(vr->mr4_table, + (struct mfc_cache *) men_info->mfc, + replace); } static void mlxsw_sp_router_fibmr_del(struct mlxsw_sp *mlxsw_sp, @@ -5406,7 +5408,8 @@ static void mlxsw_sp_router_fibmr_del(struct mlxsw_sp *mlxsw_sp, if (WARN_ON(!vr)) return; - mlxsw_sp_mr_route4_del(vr->mr4_table, men_info->mfc); + mlxsw_sp_mr_route4_del(vr->mr4_table, + (struct mfc_cache *) men_info->mfc); mlxsw_sp_vr_put(mlxsw_sp, vr); } @@ -5682,11 +5685,11 @@ static void mlxsw_sp_router_fibmr_event_work(struct work_struct *work) replace); if (err) mlxsw_sp_router_fib_abort(mlxsw_sp); - ipmr_cache_put(fib_work->men_info.mfc); + ipmr_cache_put((struct mfc_cache *) fib_work->men_info.mfc); break; case FIB_EVENT_ENTRY_DEL: mlxsw_sp_router_fibmr_del(mlxsw_sp, &fib_work->men_info); - ipmr_cache_put(fib_work->men_info.mfc); + ipmr_cache_put((struct mfc_cache *) fib_work->men_info.mfc); break; case FIB_EVENT_VIF_ADD: err = mlxsw_sp_router_fibmr_vif_add(mlxsw_sp, @@ -5766,7 +5769,7 @@ mlxsw_sp_router_fibmr_event(struct mlxsw_sp_fib_event_work *fib_work, case FIB_EVENT_ENTRY_ADD: /* fall through */ case FIB_EVENT_ENTRY_DEL: memcpy(&fib_work->men_info, info, sizeof(fib_work->men_info)); - ipmr_cache_hold(fib_work->men_info.mfc); + ipmr_cache_hold((struct mfc_cache *) fib_work->men_info.mfc); break; case FIB_EVENT_VIF_ADD: /* fall through */ case FIB_EVENT_VIF_DEL: diff --git a/include/linux/mroute.h b/include/linux/mroute.h index 3f70a04a5879..c855d80b51f7 100644 --- a/include/linux/mroute.h +++ b/include/linux/mroute.h @@ -80,12 +80,6 @@ struct mfc_cache { }; }; -struct mfc_entry_notifier_info { - struct fib_notifier_info info; - struct mfc_cache *mfc; - u32 tb_id; -}; - struct rtmsg; int ipmr_get_route(struct net *net, struct sk_buff *skb, __be32 saddr, __be32 daddr, diff --git a/include/linux/mroute_base.h b/include/linux/mroute_base.h index 23326f5402f3..2c594686c05e 100644 --- a/include/linux/mroute_base.h +++ b/include/linux/mroute_base.h @@ -152,6 +152,50 @@ struct mr_mfc { struct rcu_head rcu; }; +struct mfc_entry_notifier_info { + struct fib_notifier_info info; + struct mr_mfc *mfc; + u32 tb_id; +}; + +static inline int mr_call_mfc_notifier(struct notifier_block *nb, + struct net *net, + unsigned short family, + enum fib_event_type event_type, + struct mr_mfc *mfc, u32 tb_id) +{ + struct mfc_entry_notifier_info info = { + .info = { + .family = family, + .net = net, + }, + .mfc = mfc, + .tb_id = tb_id + }; + + return call_fib_notifier(nb, net, event_type, &info.info); +} + +static inline int mr_call_mfc_notifiers(struct net *net, + unsigned short family, + enum fib_event_type event_type, + struct mr_mfc *mfc, u32 tb_id, + unsigned int *ipmr_seq) +{ + struct mfc_entry_notifier_info info = { + .info = { + .family = family, + .net = net, + }, + .mfc = mfc, + .tb_id = tb_id + }; + + ASSERT_RTNL(); + (*ipmr_seq)++; + return call_fib_notifiers(net, event_type, &info.info); +} + struct mr_table; /** diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c index bb1a0655f8e4..470956d2d8ad 100644 --- a/net/ipv4/ipmr.c +++ b/net/ipv4/ipmr.c @@ -669,34 +669,16 @@ static int call_ipmr_mfc_entry_notifier(struct notifier_block *nb, enum fib_event_type event_type, struct mfc_cache *mfc, u32 tb_id) { - struct mfc_entry_notifier_info info = { - .info = { - .family = RTNL_FAMILY_IPMR, - .net = net, - }, - .mfc = mfc, - .tb_id = tb_id - }; - - return call_fib_notifier(nb, net, event_type, &info.info); + return mr_call_mfc_notifier(nb, net, RTNL_FAMILY_IPMR, + event_type, &mfc->_c, tb_id); } static int call_ipmr_mfc_entry_notifiers(struct net *net, enum fib_event_type event_type, struct mfc_cache *mfc, u32 tb_id) { - struct mfc_entry_notifier_info info = { - .info = { - .family = RTNL_FAMILY_IPMR, - .net = net, - }, - .mfc = mfc, - .tb_id = tb_id - }; - - ASSERT_RTNL(); - net->ipv4.ipmr_seq++; - return call_fib_notifiers(net, event_type, &info.info); + return mr_call_mfc_notifiers(net, RTNL_FAMILY_IPMR, event_type, + &mfc->_c, tb_id, &net->ipv4.ipmr_seq); } /**