From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arnd Bergmann 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> Return-path: Sender: linux-rdma-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Matan Barak , Leon Romanovsky Cc: Arnd Bergmann , "David S. Miller" , Saeed Mahameed , Or Gerlitz , Doug Ledford , Eli Cohen , Majd Dibbiny , netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-Id: linux-rdma@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(-) 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); -- 2.9.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933087AbcFOP1A (ORCPT ); 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 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: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@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(-) 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); -- 2.9.0