# SPDX-License-Identifier: GPL-2.0-only
#
# RTL8XXXU Wireless LAN device configuration
#
config RTL8XXXU
	tristate "Realtek 802.11n USB wireless chips support"
	depends on MAC80211 && USB
	depends on LEDS_CLASS
	help
	  This is an alternative driver for various Realtek RTL8XXX
	  parts written to utilize the Linux mac80211 stack.
	  The driver is known to work with a number of RTL8723AU,
	  RL8188CU, RTL8188RU, RTL8191CU, RTL8192CU, RTL8723BU, RTL8192EU,
	  RTL8188FU, RTL8188EU, RTL8710BU (aka RTL8188GU), and RTL8192FU
	  devices.

	  This driver is under development and has a limited feature
	  set. In particular it does not yet support 40MHz channels
	  and power management. However it should have a smaller
	  memory footprint than the vendor drivers and benefits
	  from the in kernel mac80211 stack.

	  It can coexist with the rtlwifi driver but you will need
	  to control which module you wish to load.

	  To compile this driver as a module, choose M here: the module will
	  be called rtl8xxxu.  If unsure, say N.

config RTL8XXXU_UNTESTED
	bool "Include support for untested Realtek 8xxx USB devices (EXPERIMENTAL)"
	depends on RTL8XXXU
	help
	  This option enables detection of Realtek 8723/8188/8191/8192 WiFi
	  USB devices which have not been tested directly by the driver
	  author or reported to be working by third parties.

	  Please report your results!
