mirror of
https://github.com/torvalds/linux.git
synced 2026-05-01 13:02:35 -04:00
iwlwifi is the driver of all Intel wifi devices since 2008. Since then, the hardware has changed a lot, but the firmware API has changed even more. The need to keep one driver that supports all those different APIs led us to introduce a new architecture circa 2012 which allowed us to keep the same interface to the hardware (DMAs, Tx queues, etc...) with a new layer to implement the mid-layer between mac80211 and the firmware. The first component is called the 'transport' and the latter is called 'operation_mode' a.k.a op_mode. In 2013 we took advantage of the new architecture to introduce iwlmvm which allowed us to implement the, then, new firmware API. This op_mode supports 7260 and up, those devices supports support at least VHT. Since then, wifi evolved and so did the firmware. It became much bigger and took a lot of functionality from the driver. It became increasingly hard to keep the same op_mode for the newest devices and we experienced frequent regressions on older devices. In order to avoid those regressions and keep the code maintainable, we decided it was about time to start a new op_mode. iwlmld is a new op_mode that supports BE200 or newer if the firmware being used is 97.ucode or newer. If the user has an older devices or BE200 with .96.ucode, iwlmvm will be loaded. Of course, this op_mode selection is seamless. All the features supported in iwlmvm are supported in iwlmld besides a few seldom used use cases: injection and Hotspot 2.0. Those are under work. A few points about the implementation: * iwlmld doesn't have any mutexes, it relies on the wiphy_lock * iwlmld is more "resource oriented": stations, links and interfaces are allocated and freed only after all the relevant flows are completed. * Firmware notifications' sizes are validated in a more structured way. We would love to see this new op_mode merged in 6.15. The firmware for this new driver (.97.ucode) is not yet publicly available but it'll be sent very soon. People eager to get an early version of this firmware can contact Emmanuel at: emmanuel.grumbach@intel.com I've listed the people who directly contributed code, but many others from various teams have contributed in other ways. Co-developed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com> Co-developed-by: Avraham Stern <avraham.stern@intel.com> Signed-off-by: Avraham Stern <avraham.stern@intel.com> Co-developed-by: Daniel Gabay <daniel.gabay@intel.com> Signed-off-by: Daniel Gabay <daniel.gabay@intel.com> Co-developed-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Co-developed-by: Anjaneyulu <pagadala.yesu.anjaneyulu@intel.com> Signed-off-by: Anjaneyulu <pagadala.yesu.anjaneyulu@intel.com> Co-developed-by: Yedidya Benshimol <yedidya.ben.shimol@intel.com> Signed-off-by: Yedidya Benshimol <yedidya.ben.shimol@intel.com> Co-developed-by: Benjamin Berg <benjamin.berg@intel.com> Signed-off-by: Benjamin Berg <benjamin.berg@intel.com> Co-developed-by: Shaul Triebitz <shaul.triebitz@intel.com> Signed-off-by: Shaul Triebitz <shaul.triebitz@intel.com> Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com> Link: https://lore.kernel.org/linux-wireless/20250216094321.537988-1-miriam.rachel.korenblit@intel.com/ [fix Kconfig, fix api/phy.h includes, SPDX tag and coding style issues, duplicated includes per 0-day robot] Signed-off-by: Johannes Berg <johannes.berg@intel.com>
185 lines
5.8 KiB
Plaintext
185 lines
5.8 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
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:
|
|
|
|
Intel Wireless WiFi Link Next-Gen AGN
|
|
|
|
This option enables support for use with the following hardware:
|
|
Intel Wireless WiFi Link 6250AGN Adapter
|
|
Intel 6000 Series Wi-Fi Adapters (6200AGN and 6300AGN)
|
|
Intel WiFi Link 1000BGN
|
|
Intel Wireless WiFi 5150AGN
|
|
Intel Wireless WiFi 5100AGN, 5300AGN, and 5350AGN
|
|
Intel 6005 Series Wi-Fi Adapters
|
|
Intel 6030 Series Wi-Fi Adapters
|
|
Intel Wireless WiFi Link 6150BGN 2 Adapter
|
|
Intel 100 Series Wi-Fi Adapters (100BGN and 130BGN)
|
|
Intel 2000 Series Wi-Fi Adapters
|
|
Intel 7260 Wi-Fi Adapter
|
|
Intel 3160 Wi-Fi Adapter
|
|
Intel 7265 Wi-Fi Adapter
|
|
Intel 8260 Wi-Fi Adapter
|
|
Intel 3165 Wi-Fi Adapter
|
|
|
|
|
|
This driver uses the kernel's mac80211 subsystem.
|
|
|
|
In order to use this driver, you will need a firmware
|
|
image for it. You can obtain the microcode from:
|
|
|
|
<https://wireless.wiki.kernel.org/en/users/Drivers/iwlwifi>.
|
|
|
|
The firmware is typically installed in /lib/firmware. You can
|
|
look in the hotplug script /etc/hotplug/firmware.agent to
|
|
determine which directory FIRMWARE_DIR is set to when the script
|
|
runs.
|
|
|
|
If you want to compile the driver as a module ( = code which can be
|
|
inserted in and removed from the running kernel whenever you want),
|
|
say M here and read <file:Documentation/kbuild/modules.rst>. The
|
|
module will be called iwlwifi.
|
|
|
|
if IWLWIFI
|
|
|
|
config IWLWIFI_KUNIT_TESTS
|
|
tristate
|
|
depends on KUNIT
|
|
default KUNIT_ALL_TESTS
|
|
help
|
|
Enable this option for iwlwifi kunit tests.
|
|
|
|
If unsure, say N.
|
|
|
|
config IWLWIFI_LEDS
|
|
bool
|
|
depends on LEDS_CLASS=y || LEDS_CLASS=MAC80211
|
|
depends on IWLMVM || IWLDVM
|
|
select LEDS_TRIGGERS
|
|
select MAC80211_LEDS
|
|
default y
|
|
|
|
config IWLDVM
|
|
tristate "Intel Wireless WiFi DVM Firmware support"
|
|
depends on MAC80211
|
|
help
|
|
This is the driver that supports the DVM firmware. The list
|
|
of the devices that use this firmware is available here:
|
|
https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi#firmware
|
|
|
|
config IWLMVM
|
|
tristate "Intel Wireless WiFi MVM Firmware support"
|
|
select WANT_DEV_COREDUMP
|
|
depends on MAC80211
|
|
depends on PTP_1588_CLOCK_OPTIONAL
|
|
help
|
|
This is the driver that supports the MVM firmware. The list
|
|
of the devices that use this firmware is available here:
|
|
https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi#firmware
|
|
|
|
config IWLMLD
|
|
tristate "Intel Wireless WiFi MLD Firmware support"
|
|
select WANT_DEV_COREDUMP
|
|
depends on MAC80211
|
|
depends on PTP_1588_CLOCK_OPTIONAL
|
|
help
|
|
This is the driver that supports firmwares of MLD capable devices.
|
|
The list of the devices that use this firmware is available here:
|
|
https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi#firmware
|
|
|
|
# don't call it _MODULE -- will confuse Kconfig/fixdep/...
|
|
config IWLWIFI_OPMODE_MODULAR
|
|
bool
|
|
default y if IWLDVM=m
|
|
default y if IWLMVM=m
|
|
default y if IWLMLD=m
|
|
|
|
comment "WARNING: iwlwifi is useless without IWLDVM or IWLMVM or IWLMLD"
|
|
depends on IWLDVM=n && IWLMVM=n && IWLMLD=n
|
|
|
|
menu "Debugging Options"
|
|
|
|
config IWLWIFI_DEBUG
|
|
bool "Enable full debugging output in the iwlwifi driver"
|
|
help
|
|
This option will enable debug tracing output for the iwlwifi drivers
|
|
|
|
This will result in the kernel module being ~100k larger. You can
|
|
control which debug output is sent to the kernel log by setting the
|
|
value in
|
|
|
|
/sys/module/iwlwifi/parameters/debug
|
|
|
|
This entry will only exist if this option is enabled.
|
|
|
|
To set a value, simply echo an 8-byte hex value to the same file:
|
|
|
|
% echo 0x43fff > /sys/module/iwlwifi/parameters/debug
|
|
|
|
You can find the list of debug mask values in:
|
|
drivers/net/wireless/iwlwifi/iwl-debug.h
|
|
|
|
If this is your first time using this driver, you should say Y here
|
|
as the debug information can assist others in helping you resolve
|
|
any problems you may encounter.
|
|
|
|
config IWLWIFI_DEBUGFS
|
|
bool "iwlwifi debugfs support"
|
|
depends on MAC80211_DEBUGFS
|
|
help
|
|
Enable creation of debugfs files for the iwlwifi drivers. This
|
|
is a low-impact option that allows getting insight into the
|
|
driver's state at runtime.
|
|
|
|
config IWLWIFI_DEVICE_TRACING
|
|
bool "iwlwifi device access tracing"
|
|
depends on EVENT_TRACING
|
|
default y
|
|
help
|
|
Say Y here to trace all commands, including TX frames and IO
|
|
accesses, sent to the device. If you say yes, iwlwifi will
|
|
register with the ftrace framework for event tracing and dump
|
|
all this information to the ringbuffer, you may need to
|
|
increase the ringbuffer size. See the ftrace documentation
|
|
for more information.
|
|
|
|
When tracing is not enabled, this option still has some
|
|
(though rather small) overhead.
|
|
|
|
If unsure, say Y so we can help you better when problems
|
|
occur.
|
|
endmenu
|
|
|
|
endif
|
|
|
|
config IWLMEI
|
|
tristate "Intel Management Engine communication over WLAN"
|
|
depends on INTEL_MEI
|
|
depends on PM
|
|
depends on CFG80211
|
|
depends on BROKEN
|
|
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.
|