# SPDX-License-Identifier: GPL-2.0-only
config HOSTAP
	tristate "IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP)"
	select WIRELESS_EXT
	select WEXT_SPY
	select WEXT_PRIV
	select CRYPTO
	select CRYPTO_ARC4
	select CRYPTO_ECB
	select CRYPTO_AES
	select CRYPTO_MICHAEL_MIC
	select CRYPTO_ECB
	select CRC32
	select LIB80211
	select LIB80211_CRYPT_WEP
	select LIB80211_CRYPT_TKIP
	select LIB80211_CRYPT_CCMP
	---help---
	Shared driver code for IEEE 802.11b wireless cards based on
	Intersil Prism2/2.5/3 chipset. This driver supports so called
	Host AP mode that allows the card to act as an IEEE 802.11
	access point.

	See <http://hostap.epitest.fi/> for more information about the
	Host AP driver configuration and tools. This site includes
	information and tools (hostapd and wpa_supplicant) for WPA/WPA2
	support.

	This option includes the base Host AP driver code that is shared by
	different hardware models. You will also need to enable support for
	PLX/PCI/CS version of the driver to actually use the driver.

	The driver can be compiled as a module and it will be called
	hostap.

config HOSTAP_FIRMWARE
	bool "Support downloading firmware images with Host AP driver"
	depends on HOSTAP
	---help---
	Configure Host AP driver to include support for firmware image
	download. This option by itself only enables downloading to the
	volatile memory, i.e. the card RAM. This option is required to
	support cards that don't have firmware in flash, such as D-Link
	DWL-520 rev E and D-Link DWL-650 rev P.

	Firmware image downloading needs a user space tool, prism2_srec.
	It is available from http://hostap.epitest.fi/.

config HOSTAP_FIRMWARE_NVRAM
	bool "Support for non-volatile firmware download"
	depends on HOSTAP_FIRMWARE
	---help---
	Allow Host AP driver to write firmware images to the non-volatile
	card memory, i.e. flash memory that survives power cycling.
	Enable this option if you want to be able to change card firmware
	permanently.

	Firmware image downloading needs a user space tool, prism2_srec.
	It is available from http://hostap.epitest.fi/.

config HOSTAP_PLX
	tristate "Host AP driver for Prism2/2.5/3 in PLX9052 PCI adaptors"
	depends on PCI && HOSTAP
	---help---
	Host AP driver's version for Prism2/2.5/3 PC Cards in PLX9052 based
	PCI adaptors.

	"Host AP support for Prism2/2.5/3 IEEE 802.11b" is required for this
	driver and its help text includes more information about the Host AP
	driver.

	The driver can be compiled as a module and will be named
	hostap_plx.

config HOSTAP_PCI
	tristate "Host AP driver for Prism2.5 PCI adaptors"
	depends on PCI && HOSTAP
	---help---
	Host AP driver's version for Prism2.5 PCI adaptors.

	"Host AP support for Prism2/2.5/3 IEEE 802.11b" is required for this
	driver and its help text includes more information about the Host AP
	driver.

	The driver can be compiled as a module and will be named
	hostap_pci.

config HOSTAP_CS
	tristate "Host AP driver for Prism2/2.5/3 PC Cards"
	depends on PCMCIA && HOSTAP
	---help---
	Host AP driver's version for Prism2/2.5/3 PC Cards.

	"Host AP support for Prism2/2.5/3 IEEE 802.11b" is required for this
	driver and its help text includes more information about the Host AP
	driver.

	The driver can be compiled as a module and will be named
	hostap_cs.
