# SPDX-License-Identifier: GPL-2.0
config RTLLIB
	tristate "Support for rtllib wireless devices"
	depends on WLAN && m
	select LIB80211
	select CRC32
	help
	  If you have a wireless card that uses rtllib, say
	  Y. Currently the only card is the rtl8192e.

	  If unsure, say N.

	  This driver adds support for rtllib wireless cards.
	  Only the rtl8192e is supported as of now.

if RTLLIB

config RTLLIB_CRYPTO_CCMP
	tristate "Support for rtllib CCMP crypto"
	depends on RTLLIB
	select CRYPTO
	select CRYPTO_AES
	select CRYPTO_CCM
	default y
	help
	  CCMP crypto driver for rtllib.

	  If you enabled RTLLIB, you want this.
	  Adds support for the CCM mode Protocol crypto driver for
	  use in wireless cards (including rtllib cards).

config RTLLIB_CRYPTO_TKIP
	tristate "Support for rtllib TKIP crypto"
	depends on RTLLIB
	select CRYPTO
	select CRYPTO_LIB_ARC4
	select CRYPTO_MICHAEL_MIC
	default y
	help
	  TKIP crypto driver for rtllib.

	  If you enabled RTLLIB, you want this.
	  Adds support for the Temporal Key Integrity Protocol for
	  the IEEE 802.11i standard for use on wireless cards.

config RTLLIB_CRYPTO_WEP
	tristate "Support for rtllib WEP crypto"
	select CRYPTO_LIB_ARC4
	depends on RTLLIB
	default y
	help
	  WEP crypto driver for rtllib.

	  If you enabled RTLLIB, you want this.
	  Adds support for the (now weak) Wired Equivalent Privacy
	  (WEP) crypto protocol for wireless cards.
	  NOTE: This protocol is now considered insecure.

source "drivers/staging/rtl8192e/rtl8192e/Kconfig"

endif
