# SPDX-License-Identifier: GPL-2.0-only
config WIRELESS_EXT
	bool

config WEXT_CORE
	def_bool y
	depends on CFG80211_WEXT || WIRELESS_EXT

config WEXT_PROC
	def_bool y
	depends on PROC_FS
	depends on WEXT_CORE

config WEXT_SPY
	bool

config WEXT_PRIV
	bool

config CFG80211
	tristate "cfg80211 - wireless configuration API"
	depends on RFKILL || !RFKILL
	select FW_LOADER
	select CRC32
	# may need to update this when certificates are changed and are
	# using a different algorithm, though right now they shouldn't
	# (this is here rather than below to allow it to be a module)
	select CRYPTO_SHA256 if CFG80211_USE_KERNEL_REGDB_KEYS
	help
	  cfg80211 is the Linux wireless LAN (802.11) configuration API.
	  Enable this if you have a wireless device.

	  For more information refer to documentation on the wireless wiki:

	  https://wireless.wiki.kernel.org/en/developers/Documentation/cfg80211

	  When built as a module it will be called cfg80211.

if CFG80211

config NL80211_TESTMODE
	bool "nl80211 testmode command"
	help
	  The nl80211 testmode command helps implementing things like
	  factory calibration or validation tools for wireless chips.

	  Select this option ONLY for kernels that are specifically
	  built for such purposes.

	  Debugging tools that are supposed to end up in the hands of
	  users should better be implemented with debugfs.

	  Say N.

config CFG80211_DEVELOPER_WARNINGS
	bool "enable developer warnings"
	default n
	help
	  This option enables some additional warnings that help
	  cfg80211 developers and driver developers, but beware that
	  they can also trigger due to races with userspace.

	  For example, when a driver reports that it was disconnected
	  from the AP, but the user disconnects manually at the same
	  time, the warning might trigger spuriously due to races.

	  Say Y only if you are developing cfg80211 or a driver based
	  on it (or mac80211).


config CFG80211_CERTIFICATION_ONUS
	bool "cfg80211 certification onus"
	depends on EXPERT
	default n
	help
	  You should disable this option unless you are both capable
	  and willing to ensure your system will remain regulatory
	  compliant with the features available under this option.
	  Some options may still be under heavy development and
	  for whatever reason regulatory compliance has not or
	  cannot yet be verified. Regulatory verification may at
	  times only be possible until you have the final system
	  in place.

	  This option should only be enabled by system integrators
	  or distributions that have done work necessary to ensure
	  regulatory certification on the system with the enabled
	  features. Alternatively you can enable this option if
	  you are a wireless researcher and are working in a controlled
	  and approved environment by your local regulatory agency.

config CFG80211_REQUIRE_SIGNED_REGDB
	bool "require regdb signature" if CFG80211_CERTIFICATION_ONUS
	default y
	select SYSTEM_DATA_VERIFICATION
	help
	  Require that in addition to the "regulatory.db" file a
	  "regulatory.db.p7s" can be loaded with a valid PKCS#7
	  signature for the regulatory.db file made by one of the
	  keys in the certs/ directory.

config CFG80211_USE_KERNEL_REGDB_KEYS
	bool "allow regdb keys shipped with the kernel" if CFG80211_CERTIFICATION_ONUS
	default y
	depends on CFG80211_REQUIRE_SIGNED_REGDB
	help
	  Allow the regulatory database to be signed by one of the keys for
	  which certificates are part of the kernel sources
	  (in net/wireless/certs/).

	  This is currently only Seth Forshee's key, who is the regulatory
	  database maintainer.

config CFG80211_EXTRA_REGDB_KEYDIR
	string "additional regdb key directory" if CFG80211_CERTIFICATION_ONUS
	depends on CFG80211_REQUIRE_SIGNED_REGDB
	help
	  If selected, point to a directory with DER-encoded X.509
	  certificates like in the kernel sources (net/wireless/certs/)
	  that shall be accepted for a signed regulatory database.

	  Note that you need to also select the correct CRYPTO_<hash> modules
	  for your certificates, and if cfg80211 is built-in they also must be.

config CFG80211_REG_CELLULAR_HINTS
	bool "cfg80211 regulatory support for cellular base station hints"
	depends on CFG80211_CERTIFICATION_ONUS
	help
	  This option enables support for parsing regulatory hints
	  from cellular base stations. If enabled and at least one driver
	  claims support for parsing cellular base station hints the
	  regulatory core will allow and parse these regulatory hints.
	  The regulatory core will only apply these regulatory hints on
	  drivers that support this feature. You should only enable this
	  feature if you have tested and validated this feature on your
	  systems.

config CFG80211_REG_RELAX_NO_IR
	bool "cfg80211 support for NO_IR relaxation"
	depends on CFG80211_CERTIFICATION_ONUS
	help
	 This option enables support for relaxation of the NO_IR flag for
	 situations that certain regulatory bodies have provided clarifications
	 on how relaxation can occur. This feature has an inherent dependency on
	 userspace features which must have been properly tested and as such is
	 not enabled by default.

	 A relaxation feature example is allowing the operation of a P2P group
	 owner (GO) on channels marked with NO_IR if there is an additional BSS
	 interface which associated to an AP which userspace assumes or confirms
	 to be an authorized master, i.e., with radar detection support and DFS
	 capabilities. However, note that in order to not create daisy chain
	 scenarios, this relaxation is not allowed in cases where the BSS client
	 is associated to P2P GO and in addition the P2P GO instantiated on
	 a channel due to this relaxation should not allow connection from
	 non P2P clients.

	 The regulatory core will apply these relaxations only for drivers that
	 support this feature by declaring the appropriate channel flags and
	 capabilities in their registration flow.

config CFG80211_DEFAULT_PS
	bool "enable powersave by default"
	default y
	help
	  This option enables powersave mode by default.

	  If this causes your applications to misbehave you should fix your
	  applications instead -- they need to register their network
	  latency requirement, see Documentation/power/pm_qos_interface.rst.

config CFG80211_DEBUGFS
	bool "cfg80211 DebugFS entries"
	depends on DEBUG_FS
	help
	  You can enable this if you want debugfs entries for cfg80211.

	  If unsure, say N.

config CFG80211_CRDA_SUPPORT
	bool "support CRDA" if EXPERT
	default y
	help
	  You should enable this option unless you know for sure you have no
	  need for it, for example when using the regulatory database loaded as
	  a firmware file.

	  If unsure, say Y.

config CFG80211_WEXT
	bool "cfg80211 wireless extensions compatibility" if !CFG80211_WEXT_EXPORT
	select WEXT_CORE
	default y if CFG80211_WEXT_EXPORT
	help
	  Enable this option if you need old userspace for wireless
	  extensions with cfg80211-based drivers.

config CFG80211_WEXT_EXPORT
	bool
	help
	  Drivers should select this option if they require cfg80211's
	  wext compatibility symbols to be exported.

endif # CFG80211

config LIB80211
	tristate
	default n
	help
	  This options enables a library of common routines used
	  by IEEE802.11 wireless LAN drivers.

	  Drivers should select this themselves if needed.

config LIB80211_CRYPT_WEP
	tristate
	select CRYPTO_LIB_ARC4

config LIB80211_CRYPT_CCMP
	tristate
	select CRYPTO
	select CRYPTO_AES
	select CRYPTO_CCM

config LIB80211_CRYPT_TKIP
	tristate
	select CRYPTO_LIB_ARC4

config LIB80211_DEBUG
	bool "lib80211 debugging messages"
	depends on LIB80211
	default n
	help
	  You can enable this if you want verbose debugging messages
	  from lib80211.

	  If unsure, say N.