config IWLWIFI
	tristate "Intel Wireless Wifi"
	depends on PCI && MAC80211 && WLAN_80211 && EXPERIMENTAL
	select LIB80211
	select FW_LOADER
	select MAC80211_LEDS if IWLWIFI_LEDS
	select LEDS_CLASS if IWLWIFI_LEDS

config IWLWIFI_LEDS
	bool "Enable LED support in iwlagn and iwl3945 drivers"
	depends on IWLWIFI
	default y
	---help---
	  Select this if you want LED support.

config IWLWIFI_SPECTRUM_MEASUREMENT
	bool "Enable Spectrum Measurement in iwlagn driver"
	depends on IWLWIFI
	---help---
	  This option will enable spectrum measurement for the iwlagn driver.

config IWLWIFI_DEBUG
	bool "Enable full debugging output in iwlagn and iwl3945 drivers"
	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/class/net/wlan0/device/debug_level

	  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/class/net/wlan0/device/debug_level

	  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 "iwlagn debugfs support"
        depends on IWLWIFI && IWLWIFI_DEBUG && MAC80211_DEBUGFS
        ---help---
	  Enable creation of debugfs files for the iwlwifi drivers.

config IWLAGN
	tristate "Intel Wireless WiFi Next Gen AGN (iwlagn)"
	depends on IWLWIFI
	---help---
	  Select to build the driver supporting the:

	  Intel Wireless WiFi Link Next-Gen AGN

	  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 iwlagn.


config IWL4965
	bool "Intel Wireless WiFi 4965AGN"
	depends on IWLAGN
	---help---
	  This option enables support for Intel Wireless WiFi Link 4965AGN

config IWL5000
	bool "Intel Wireless WiFi 5000AGN; Intel WiFi Link 1000, 6000, and 6050 Series"
	depends on IWLAGN
	---help---
	  This option enables support for Intel Wireless WiFi Link 5000AGN Family

config IWL3945
	tristate "Intel PRO/Wireless 3945ABG/BG Network Connection (iwl3945)"
	depends on IWLWIFI
	---help---
	  Select to build the driver supporting the:

	  Intel PRO/Wireless 3945ABG/BG Network Connection

	  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 iwl3945.

config IWL3945_SPECTRUM_MEASUREMENT
	bool "Enable Spectrum Measurement in iwl3945 driver"
	depends on IWL3945
	---help---
	  This option will enable spectrum measurement for the iwl3945 driver.
