# SPDX-License-Identifier: GPL-2.0-only
#
# RTL8XXXU Wireless LAN device configuration
#
config RTL8XXXU
	tristate "RTL8723AU/RTL8188[CR]U/RTL819[12]CU (mac80211) support"
	depends on MAC80211 && USB
	---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, and RTL8192CU 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 drivers from drivers/staging/rtl8723au,
	  drivers/staging/rtl8192u, and drivers/net/wireless/rtlwifi,
	  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 r8xxxu.  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!
