iwlwifi: work around reverse dependency on MEI
authorArnd Bergmann <arnd@arndb.de>
Tue, 7 Dec 2021 15:14:36 +0000 (16:14 +0100)
committerLuca Coelho <luciano.coelho@intel.com>
Tue, 7 Dec 2021 18:18:06 +0000 (20:18 +0200)
If the iwlmei code is a loadable module, the main iwlwifi driver
cannot be built-in:

x86_64-linux-ld: drivers/net/wireless/intel/iwlwifi/pcie/trans.o: in function `iwl_pcie_prepare_card_hw':
trans.c:(.text+0x4158): undefined reference to `iwl_mei_is_connected'

Unfortunately, Kconfig enforces the opposite, forcing the MEI driver to
not be built-in if iwlwifi is a module.

To work around this, decouple iwlmei from iwlwifi and add the
dependency in the other direction.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Link: https://lore.kernel.org/r/20211207151447.3338818-1-arnd@kernel.org
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/Kconfig

index 337428e..cafdb45 100644 (file)
@@ -2,6 +2,7 @@
 config IWLWIFI
        tristate "Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi) "
        depends on PCI && HAS_IOMEM && CFG80211
+       depends on IWLMEI || !IWLMEI
        select FW_LOADER
        help
          Select to build the driver supporting the:
@@ -92,32 +93,6 @@ config IWLWIFI_BCAST_FILTERING
          If unsure, don't enable this option, as some programs might
          expect incoming broadcasts for their normal operations.
 
-config IWLMEI
-       tristate "Intel Management Engine communication over WLAN"
-       depends on INTEL_MEI
-       depends on PM
-       depends on IWLMVM
-       help
-         Enables the iwlmei kernel module.
-
-         CSME stands for Converged Security and Management Engine. It is a CPU
-         on the chipset and runs a dedicated firmware. AMT (Active Management
-         Technology) is one of the applications that run on that CPU. AMT
-         allows to control the platform remotely.
-
-         This kernel module allows to communicate with the Intel Management
-         Engine over Wifi. This is supported starting from Tiger Lake
-         platforms and has been tested on 9260 devices only.
-         If AMT is configured not to use the wireless device, this module is
-         harmless (and useless).
-         Enabling this option on a platform that has a different device and
-         has Wireless enabled on AMT can prevent WiFi from working correctly.
-
-         For more information see
-         <https://software.intel.com/en-us/manageability/>
-
-         If unsure, say N.
-
 menu "Debugging Options"
 
 config IWLWIFI_DEBUG
@@ -172,3 +147,28 @@ config IWLWIFI_DEVICE_TRACING
 endmenu
 
 endif
+
+config IWLMEI
+       tristate "Intel Management Engine communication over WLAN"
+       depends on INTEL_MEI
+       depends on PM
+       help
+         Enables the iwlmei kernel module.
+
+         CSME stands for Converged Security and Management Engine. It is a CPU
+         on the chipset and runs a dedicated firmware. AMT (Active Management
+         Technology) is one of the applications that run on that CPU. AMT
+         allows to control the platform remotely.
+
+         This kernel module allows to communicate with the Intel Management
+         Engine over Wifi. This is supported starting from Tiger Lake
+         platforms and has been tested on 9260 devices only.
+         If AMT is configured not to use the wireless device, this module is
+         harmless (and useless).
+         Enabling this option on a platform that has a different device and
+         has Wireless enabled on AMT can prevent WiFi from working correctly.
+
+         For more information see
+         <https://software.intel.com/en-us/manageability/>
+
+         If unsure, say N.