config IWLWIFI
	tristate "Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi) "
	depends on PCI && MAC80211 && HAS_IOMEM
	select FW_LOADER
	select NEW_LEDS
	select LEDS_CLASS
	select LEDS_TRIGGERS
	select MAC80211_LEDS
	---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


	  This driver uses the kernel's mac80211 subsystem.

	  In order to use this driver, you will need a microcode (uCode)
	  image for it. You can obtain the microcode from:

	          <http://intellinuxwireless.org/>.

	  The microcode 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.txt>.  The
	  module will be called iwlwifi.

config IWLDVM
	tristate "Intel Wireless WiFi DVM Firmware support"
	depends on IWLWIFI
	default IWLWIFI
	help
	  This is the driver that supports the DVM firmware which is
	  used by most existing devices (with the exception of 7260
	  and 3160).

config IWLMVM
	tristate "Intel Wireless WiFi MVM Firmware support"
	depends on IWLWIFI
	help
	  This is the driver that supports the MVM firmware which is
	  currently only available for 7260 and 3160 devices.

# don't call it _MODULE -- will confuse Kconfig/fixdep/...
config IWLWIFI_OPMODE_MODULAR
	bool
	default y if IWLDVM=m
	default y if IWLMVM=m

comment "WARNING: iwlwifi is useless without IWLDVM or IWLMVM"
	depends on IWLWIFI && IWLDVM=n && IWLMVM=n

menu "Debugging Options"
	depends on IWLWIFI

config IWLWIFI_DEBUG
	bool "Enable full debugging output in the iwlwifi driver"
	depends on IWLWIFI
	---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 IWLWIFI && 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_DEBUG_EXPERIMENTAL_UCODE
        bool "Experimental uCode support"
        depends on IWLWIFI && IWLWIFI_DEBUG
        ---help---
	  Enable use of experimental ucode for testing and debugging.

config IWLWIFI_DEVICE_TRACING
	bool "iwlwifi device access tracing"
	depends on IWLWIFI
	depends on EVENT_TRACING
	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
