From patchwork Wed Jun 15 15:27:51 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 102215 Delivered-To: patch@linaro.org Received: by 10.140.106.246 with SMTP id e109csp2631550qgf; Wed, 15 Jun 2016 08:27:07 -0700 (PDT) X-Received: by 10.36.120.193 with SMTP id p184mr18051907itc.22.1466004426828; Wed, 15 Jun 2016 08:27:06 -0700 (PDT) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d20si37919029pfk.240.2016.06.15.08.27.06; Wed, 15 Jun 2016 08:27:06 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of netdev-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=netdev-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933119AbcFOP1A (ORCPT + 4 others); Wed, 15 Jun 2016 11:27:00 -0400 Received: from mout.kundenserver.de ([212.227.126.131]:51052 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932121AbcFOP06 (ORCPT ); Wed, 15 Jun 2016 11:26:58 -0400 Received: from wuerfel.lan. ([78.42.132.4]) by mrelayeu.kundenserver.de (mreue001) with ESMTPA (Nemesis) id 0MJJta-1bFxbB2BWk-002lRU; Wed, 15 Jun 2016 17:26:39 +0200 From: Arnd Bergmann To: Matan Barak , Leon Romanovsky Cc: Arnd Bergmann , "David S. Miller" , Saeed Mahameed , Or Gerlitz , Doug Ledford , Eli Cohen , Majd Dibbiny , netdev@vger.kernel.org, linux-rdma@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/2] mlx5: only register devlink when ethernet is available Date: Wed, 15 Jun 2016 17:27:51 +0200 Message-Id: <20160615152816.2800830-1-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 X-Provags-ID: V03:K0:ToKxZRFBkoACn10ekfBH9YbhkKTgoTH9UXGpZIQXaZ3tpwt+F6w qvoh1UzSUTx+rSYdLg5EA31uWQqKUSqElCHorRCJ8GZ6fRo0XgCFDFrrK5GxzlXmb712FBS TXtkW3ZPMEipRqSpqdjUgunorGLWnjhTOkxmxsw8/utSv9YR/Z1ldOBDOcAraSIs6xUVzfP fk8uy+j0FF7hqShAqdnUw== X-UI-Out-Filterresults: notjunk:1; V01:K0:Mm6gj8AxTzQ=:tQFMJzxNOWk3g8tNh+IIvd 4jxzIWnAXTIqwgfKBTfapW9v/mms2l0W/4/InG7t+PGho5YUiN/SXieGj5uKTrosATgao51Ky G7LDzAKagV22PFTZ4huq7ZlnbmsDMkCeNLCARmi6qwxUTCLtNmrOxTAqLcoofHslMWDuXjmAE IrGaRmM6+PBiP9kHiJ6LfHKVt/PrPr+Hrsy341zVu6bSMIUd83Lze8QFqBcU+F8LXTMUdQpO1 XpF57D8gXxiLA3/UkjF2ddvvzCfQNvjpJy8GSlGNpTmRdVOvbhhOSk+Q0OfTQzBdMkNAhQ2HM RTj2cWgkmOKL3YmkpndogQTQN1hXxcmlyrgPNQsMLy+amNBtWXMGe124vgtSOm0LgSPhp7c5h RJXu88gnMy+ljI4f5hOd6VkEdtfm1NeqL1WaOu943sjv8vPIu//9ve6N/XM/8ifmAX2H0wb1w TVtZ++3Ou0hPtY/VdLnnv+US98LoJIx1mNvDuc5mksRJhHbHpYznUPbXPi0RRAzySfCEjcapr HJOYSV1oF91D12XZ9K+6TaKCjwVVCycKh5VH138OkPNsC1bPUtqv9l3fF0Uafo8kKuMogBNCM a4pIIYOaYrTfsZVwCThGxmuRN8KRL8tUq7Stg6DHjntp1q+PnLEL0aPNxTzVIWLHFmvsZq9GW iBl+hMLSZCg+HBLPV2hoYQLw5hJ6k6jN2C4lhF0OaZcvKgM1vYG17+7noGKEw/f/DKyA= Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org We get a build error with the mlx5 driver when the ethernet support (CONFIG_MLX5_CORE_EN) is disabled: drivers/net/ethernet/mellanox/mlx5/core/main.c:1320:22: error: 'mlx5_devlink_eswitch_mode_set' undeclared here (not in a function) drivers/net/ethernet/mellanox/mlx5/core/main.c:1321:22: error: 'mlx5_devlink_eswitch_mode_get' undeclared here (not in a function) drivers/net/built-in.o:(.rodata+0x25a68): undefined reference to `mlx5_devlink_eswitch_mode_get' drivers/net/built-in.o:(.rodata+0x25a6c): undefined reference to `mlx5_devlink_eswitch_mode_set' There are actually two problems here, but they are closely related, so I'm addressing them both: - The header is included under an #ifdef, which is usually a bad idea as it hides the function declarations, so we fail to compile even if we don't actually use the functions in the end. - The references to the functions are kept in the object file because we don't check whether they are built-in or not. As we don't want to add any useless #ifdef here, this uses an IS_ENABLED() check to drop the mlx5_devlink_ops structure when we don't need it, and to skip the register/unregister step. Signed-off-by: Arnd Bergmann Fixes: f7856daf57b9 ("net/mlx5: Add devlink interface") --- drivers/net/ethernet/mellanox/mlx5/core/main.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) -- 2.9.0 diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c index dc568096b87c..d238e312b123 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c @@ -54,9 +54,7 @@ #include #include "mlx5_core.h" #include "fs_core.h" -#ifdef CONFIG_MLX5_CORE_EN #include "eswitch.h" -#endif MODULE_AUTHOR("Eli Cohen "); MODULE_DESCRIPTION("Mellanox Connect-IB, ConnectX-4 core driver"); @@ -1329,7 +1327,8 @@ static int init_one(struct pci_dev *pdev, struct mlx5_priv *priv; int err; - devlink = devlink_alloc(&mlx5_devlink_ops, sizeof(*dev)); + devlink = devlink_alloc(IS_ENABLED(CONFIG_MLX5_CORE_EN) ? + &mlx5_devlink_ops : NULL, sizeof(*dev)); if (!devlink) { dev_err(&pdev->dev, "kzalloc failed\n"); return -ENOMEM; @@ -1372,7 +1371,8 @@ static int init_one(struct pci_dev *pdev, goto clean_health; } - err = devlink_register(devlink, &pdev->dev); + if (IS_ENABLED(CONFIG_MLX5_CORE_EN)) + err = devlink_register(devlink, &pdev->dev); if (err) goto clean_load; @@ -1397,7 +1397,8 @@ static void remove_one(struct pci_dev *pdev) struct devlink *devlink = priv_to_devlink(dev); struct mlx5_priv *priv = &dev->priv; - devlink_unregister(devlink); + if (IS_ENABLED(CONFIG_MLX5_CORE_EN)) + devlink_unregister(devlink); if (mlx5_unload_one(dev, priv)) { dev_err(&dev->pdev->dev, "mlx5_unload_one failed\n"); mlx5_health_cleanup(dev);