#
# WiMAX LAN device configuration
#
# Note the ugly 'depends on' on WIMAX: that disallows RFKILL to be a
# module if WIMAX is to be linked in. The WiMAX code is done in such a
# way that it doesn't require and explicit dependency on RFKILL in
# case an embedded system wants to rip it out.
#
# As well, enablement of the RFKILL code means we need the INPUT layer
# support to inject events coming from hw rfkill switches. That
# dependency could be killed if input.h provided appropriate means to
# work when input is disabled.

comment "WiMAX Wireless Broadband support requires CONFIG_INPUT enabled"
	depends on INPUT = n && RFKILL != n

menuconfig WIMAX
	tristate "WiMAX Wireless Broadband support"
	depends on (y && RFKILL != m) || m
	depends on (INPUT && RFKILL != n) || RFKILL = n
	help

	  Select to configure support for devices that provide
	  wireless broadband connectivity using the WiMAX protocol
	  (IEEE 802.16).

	  Please note that most of these devices require signing up
	  for a service plan with a provider.

	  The different WiMAX drivers can be enabled in the menu entry

	  Device Drivers > Network device support > WiMAX Wireless
	  Broadband devices

	  If unsure, it is safe to select M (module).

config WIMAX_DEBUG_LEVEL
	int "WiMAX debug level"
	depends on WIMAX
	default 8
	help

	  Select the maximum debug verbosity level to be compiled into
	  the WiMAX stack code.

	  By default, debug messages are disabled at runtime and can
	  be selectively enabled for different parts of the code using
	  the sysfs debug-levels file.

	  If set at zero, this will compile out all the debug code.

	  It is recommended that it is left at 8.
