From e8ab38cfcb6eac7f4e7e3b8e787a9d4bea54c2cb Mon Sep 17 00:00:00 2001
From: Greg Rose <gregory.v.rose@intel.com>
Date: Tue, 3 Mar 2015 13:21:54 -0800
Subject: [PATCH] i40e: Fix dependencies in the i40e driver on configfs

Module dependencies are broken in the case where CONFIG_I40E=y and
CONFIG_CONFIGFS_FS=m.  This fixes the broken dependency.

Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
 drivers/net/ethernet/intel/Kconfig              | 9 +++++++++
 drivers/net/ethernet/intel/i40e/i40e.h          | 4 ++--
 drivers/net/ethernet/intel/i40e/i40e_configfs.c | 4 ++--
 drivers/net/ethernet/intel/i40e/i40e_main.c     | 8 ++++----
 4 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/drivers/net/ethernet/intel/Kconfig b/drivers/net/ethernet/intel/Kconfig
index f4ff465584a0..7216a5370a1f 100644
--- a/drivers/net/ethernet/intel/Kconfig
+++ b/drivers/net/ethernet/intel/Kconfig
@@ -303,6 +303,15 @@ config I40E_FCOE
 
 	  If unsure, say N.
 
+config I40E_CONFIGFS_FS
+	bool "Config File System Support (configfs)"
+	default n
+	depends on I40E && CONFIGFS_FS && !(I40E=y && CONFIGFS_FS=m)
+	---help---
+	  Provides support for the configfs file system for additional
+	  driver configuration.  Say Y here if you want to use the
+	  configuration file system in the driver.
+
 config I40EVF
 	tristate "Intel(R) XL710 X710 Virtual Function Ethernet support"
 	depends on PCI_MSI
diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h
index 1e9576bb911e..5761917734dc 100644
--- a/drivers/net/ethernet/intel/i40e/i40e.h
+++ b/drivers/net/ethernet/intel/i40e/i40e.h
@@ -741,10 +741,10 @@ int i40e_ptp_get_ts_config(struct i40e_pf *pf, struct ifreq *ifr);
 void i40e_ptp_init(struct i40e_pf *pf);
 void i40e_ptp_stop(struct i40e_pf *pf);
 int i40e_is_vsi_uplink_mode_veb(struct i40e_vsi *vsi);
-#if IS_ENABLED(CONFIG_CONFIGFS_FS)
+#if IS_ENABLED(CONFIG_I40E_CONFIGFS_FS)
 int i40e_configfs_init(void);
 void i40e_configfs_exit(void);
-#endif /* CONFIG_CONFIGFS_FS */
+#endif /* CONFIG_I40E_CONFIGFS_FS */
 i40e_status i40e_get_npar_bw_setting(struct i40e_pf *pf);
 i40e_status i40e_set_npar_bw_setting(struct i40e_pf *pf);
 i40e_status i40e_commit_npar_bw_setting(struct i40e_pf *pf);
diff --git a/drivers/net/ethernet/intel/i40e/i40e_configfs.c b/drivers/net/ethernet/intel/i40e/i40e_configfs.c
index 3af4f14559d7..d3cdfc24d5bf 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_configfs.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_configfs.c
@@ -27,7 +27,7 @@
 #include <linux/configfs.h>
 #include "i40e.h"
 
-#if IS_ENABLED(CONFIG_CONFIGFS_FS)
+#if IS_ENABLED(CONFIG_I40E_CONFIGFS_FS)
 
 /**
  * configfs structure for i40e
@@ -351,4 +351,4 @@ void i40e_configfs_exit(void)
 {
 	configfs_unregister_subsystem(&i40e_cfgfs_group_subsys);
 }
-#endif /* IS_ENABLED(CONFIG_CONFIGFS_FS) */
+#endif /* IS_ENABLED(CONFIG_I40E_CONFIGFS_FS) */
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 2757926f7805..aadc60432980 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -10108,9 +10108,9 @@ static int __init i40e_init_module(void)
 		i40e_driver_string, i40e_driver_version_str);
 	pr_info("%s: %s\n", i40e_driver_name, i40e_copyright);
 
-#if IS_ENABLED(CONFIG_CONFIGFS_FS)
+#if IS_ENABLED(CONFIG_I40E_CONFIGFS_FS)
 	i40e_configfs_init();
-#endif /* CONFIG_CONFIGFS_FS */
+#endif /* CONFIG_I40E_CONFIGFS_FS */
 	i40e_dbg_init();
 	return pci_register_driver(&i40e_driver);
 }
@@ -10126,8 +10126,8 @@ static void __exit i40e_exit_module(void)
 {
 	pci_unregister_driver(&i40e_driver);
 	i40e_dbg_exit();
-#if IS_ENABLED(CONFIG_CONFIGFS_FS)
+#if IS_ENABLED(CONFIG_I40E_CONFIGFS_FS)
 	i40e_configfs_exit();
-#endif /* CONFIG_CONFIGFS_FS */
+#endif /* CONFIG_I40E_CONFIGFS_FS */
 }
 module_exit(i40e_exit_module);