# as I suspect all users of this package want 802.11e (WME) and
# 802.11n (HT) support.
ifneq ($(wildcard $(KLIB_BUILD)/Makefile),)
-COMPAT_LATEST_VERSION = 33
+COMPAT_LATEST_VERSION = 37
KERNEL_SUBLEVEL := $(shell $(MAKE) -C $(KLIB_BUILD) kernelversion | sed -n 's/^2\.6\.\([0-9]\+\).*/\1/p')
COMPAT_VERSIONS := $(shell I=$(COMPAT_LATEST_VERSION); while [ "$$I" -gt $(KERNEL_SUBLEVEL) ]; do echo $$I; I=$$(($$I - 1)); done)
$(foreach ver,$(COMPAT_VERSIONS),$(eval CONFIG_COMPAT_KERNEL_$(ver)=y))
-ifdef CONFIG_COMPAT_KERNEL_25
-$(error "ERROR: compat-wireless by default supports kernels >= 2.6.25, try enabling only one driver though")
-endif
+ifdef CONFIG_COMPAT_KERNEL_24
+$(error "ERROR: compat-wireless by default supports kernels >= 2.6.24, try enabling only one driver though")
+endif #CONFIG_COMPAT_KERNEL_24
ifeq ($(CONFIG_CFG80211),y)
$(error "ERROR: your kernel has CONFIG_CFG80211=y, you should have it CONFIG_CFG80211=m if you want to use this thing.")
#
# skb->requeue
#
-ifeq ($(shell test $(KERNEL_SUBLEVEL) -ge 27 && echo yes),yes)
+# In kernel 2.6.32 both attributes were removed.
+#
+ifeq ($(shell test $(KERNEL_SUBLEVEL) -ge 27 -a $(KERNEL_SUBLEVEL) -le 31 && echo yes),yes)
ifeq ($(CONFIG_MAC80211),)
-$(error "ERROR: Your >=2.6.27 kernel has CONFIG_MAC80211 disabled, you should have it CONFIG_MAC80211=m if you want to use this thing.")
+$(error "ERROR: Your >=2.6.27 and <= 2.6.31 kernel has CONFIG_MAC80211 disabled, you should have it CONFIG_MAC80211=m if you want to use this thing.")
endif
endif
CONFIG_COMPAT_BLUETOOTH=y
CONFIG_COMPAT_BLUETOOTH_MODULES=m
endif
-endif # Kernel >= 2.6.26
+endif #CONFIG_COMPAT_KERNEL_27
-ifeq ($(CONFIG_COMPAT_KERNEL_33),y)
-ifneq ($(CONFIG_FW_LOADER),)
+ifdef CONFIG_COMPAT_KERNEL_33
+ifdef CONFIG_FW_LOADER
CONFIG_COMPAT_FIRMWARE_CLASS=m
-endif
-endif
+endif #CONFIG_FW_LOADER
+endif #CONFIG_COMPAT_KERNEL_33
# Wireless subsystem stuff
CONFIG_MAC80211=m
-# CONFIG_MAC80211_DEBUGFS=y
-# CONFIG_MAC80211_NOINLINE=y
-# CONFIG_MAC80211_VERBOSE_DEBUG=y
-# CONFIG_MAC80211_HT_DEBUG=y
+CONFIG_MAC80211_DEBUGFS=y
+CONFIG_MAC80211_NOINLINE=y
+CONFIG_MAC80211_VERBOSE_DEBUG=y
+CONFIG_MAC80211_HT_DEBUG=y
# CONFIG_MAC80211_TKIP_DEBUG=y
# CONFIG_MAC80211_IBSS_DEBUG=y
-# CONFIG_MAC80211_VERBOSE_PS_DEBUG=y
+CONFIG_MAC80211_VERBOSE_PS_DEBUG=y
# CONFIG_MAC80211_VERBOSE_MPL_DEBUG=y
# CONFIG_MAC80211_VERBOSE_MHWMP_DEBUG=y
-# CONFIG_MAC80211_DEBUG_COUNTERS=y
+CONFIG_MAC80211_DEBUG_COUNTERS=y
# CONFIG_MAC80211_DRIVER_API_TRACER=y
# choose between pid and minstrel as default rate control algorithm
CONFIG_COMPAT_MAC80211_RC_DEFAULT=minstrel
CONFIG_MAC80211_RC_PID=y
CONFIG_MAC80211_RC_MINSTREL=y
+CONFIG_MAC80211_RC_MINSTREL_HT=y
CONFIG_MAC80211_LEDS=y
# enable mesh networking too
CONFIG_CFG80211=m
CONFIG_CFG80211_DEFAULT_PS=y
-# CONFIG_CFG80211_DEBUGFS=y
+CONFIG_CFG80211_DEBUGFS=y
# CONFIG_NL80211_TESTMODE=y
-# CONFIG_CFG80211_DEVELOPER_WARNINGS=y
-# CONFIG_CFG80211_REG_DEBUG=y
+CONFIG_CFG80211_DEVELOPER_WARNINGS=y
+CONFIG_CFG80211_REG_DEBUG=y
# See below for wext stuff
CONFIG_LIB80211=m
CONFIG_BT_L2CAP=m
CONFIG_BT_SCO=m
CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
CONFIG_BT_BNEP=m
-CONFIG_BT_ATH3K=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
# CONFIG_BT_CMTP depends on ISDN_CAPI
-ifneq ($(CONFIG_BT_CMTP),)
+ifdef CONFIG_ISDN_CAPI
CONFIG_BT_CMTP=m
-endif
+endif #CONFIG_ISDN_CAPI
CONFIG_BT_HIDP=m
-ifneq ($(CONFIG_WIRELESS_EXT),)
+CONFIG_BT_HCIUART=M
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_ATH3K=y
+CONFIG_BT_HCIUART_LL=y
+
+CONFIG_BT_HCIVHCI=m
+CONFIG_BT_MRVL=m
+
+ifdef CONFIG_PCMCIA
+CONFIG_BT_HCIDTL1=m
+CONFIG_BT_HCIBT3C=m
+CONFIG_BT_HCIBLUECARD=m
+CONFIG_BT_HCIBTUART=m
+endif #CONFIG_PCMCIA
+
+
+# We need CONFIG_WIRELESS_EXT for CONFIG_CFG80211_WEXT for every kernel
+# version. The new way CONFIG_CFG80211_WEXT is called from the kernel
+# does not work with compat-wireless because it calls some callback
+# function on struct wiphy. This struct is shipped with compat-wireless
+# and changes from kernel version to version. We are using the
+# wireless_handlers attribute which will be activated by
+# CONFIG_WIRELESS_EXT.
+ifdef CONFIG_WIRELESS_EXT
CONFIG_CFG80211_WEXT=y
+else #CONFIG_CFG80211_WEXT
+$(warning "WARNING: CONFIG_CFG80211_WEXT will be deactivated or not working because kernel was compiled with CONFIG_WIRELESS_EXT=n. Tools using wext interface like iwconfig will not work. To activate it build your kernel e.g. with CONFIG_LIBIPW=m.")
+endif #CONFIG_WIRELESS_EXT
+
+ifneq ($(CONFIG_STAGING),)
+ CONFIG_COMPAT_STAGING=m
endif
# mac80211 test driver
CONFIG_MAC80211_HWSIM=m
# PCI Drivers
-ifneq ($(CONFIG_PCI),)
+ifdef CONFIG_PCI
CONFIG_ATH5K=m
-# CONFIG_ATH5K_DEBUG=y
+CONFIG_ATH5K_DEBUG=y
CONFIG_ATH9K_HW=m
CONFIG_ATH9K=m
# Note: once ath9k_htc is added we'll have to move
CONFIG_ATH9K_PKTLOG=y
-CONFIG_IWLWIFI=m
+CONFIG_COMPAT_IWLWIFI=m
# CONFIG_IWLWIFI_DEBUG=y
# CONFIG_IWLWIFI_DEBUGFS=y
# CONFIG_IWLWIFI_DEVICE_TRACING=y
CONFIG_B43=m
CONFIG_B43_HWRNG=y
CONFIG_B43_PCI_AUTOSELECT=y
-ifneq ($(CONFIG_PCMCIA),)
+ifdef CONFIG_PCMCIA
CONFIG_B43_PCMCIA=y
-endif
+endif #CONFIG_PCMCIA
CONFIG_B43_LEDS=y
CONFIG_B43_PHY_LP=y
CONFIG_B43_NPHY=y
CONFIG_B43LEGACY_DMA=y
CONFIG_B43LEGACY_PIO=y
+ifdef CONFIG_WIRELESS_EXT
+ifdef CONFIG_WEXT_SPY
+ifdef CONFIG_WEXT_PRIV
# The Intel ipws
CONFIG_LIBIPW=m
# CONFIG_LIBIPW_DEBUG=y
-
CONFIG_IPW2100=m
CONFIG_IPW2100_MONITOR=y
# CONFIG_IPW2100_DEBUG=y
# it on via sysfs:
#
# % echo 1 > /sys/bus/pci/drivers/ipw2200/*/rtap_iface
+endif #CONFIG_WEXT_PRIV
+endif #CONFIG_WEXT_SPY
+endif #CONFIG_WIRELESS_EXT
-ifneq ($(CONFIG_SSB),)
+ifdef CONFIG_SSB
# Sonics Silicon Backplane
CONFIG_SSB_SPROM=y
# CONFIG_SSB_DEBUG=y
CONFIG_SSB_BLOCKIO=y
CONFIG_SSB_PCIHOST=y
CONFIG_SSB_B43_PCI_BRIDGE=y
-ifneq ($(CONFIG_PCMCIA),)
+ifdef CONFIG_PCMCIA
CONFIG_SSB_PCMCIAHOST=y
-endif
+endif #CONFIG_PCMCIA
# CONFIG_SSB_DEBUG=y
CONFIG_SSB_DRIVER_PCICORE=y
-endif
+endif #CONFIG_SSB
CONFIG_P54_PCI=m
CONFIG_RT2X00_LIB_PCI=m
CONFIG_RT2400PCI=m
CONFIG_RT2500PCI=m
-ifneq ($(CONFIG_CRC_CCITT),)
+ifdef CONFIG_CRC_CCITT
CONFIG_RT2800PCI=m
CONFIG_RT2800PCI_PCI=y
# CONFIG_RT2800PCI_RT30XX=y
# CONFIG_RT2800PCI_RT35XX=y
# CONFIG_RT2800PCI_SOC=y
-endif
+endif #CONFIG_CRC_CCITT
NEED_RT2X00=y
# Two rt2x00 drivers require firmware: rt61pci and rt73usb. They depend on
# CRC to check the firmware. We check here first for the PCI
# driver as we're in the PCI section.
-ifneq ($(CONFIG_CRC_ITU_T),)
+ifdef CONFIG_CRC_ITU_T
CONFIG_RT61PCI=m
NEED_RT2X00_FIRMWARE=y
-endif
+endif #CONFIG_CRC_ITU_T
CONFIG_MWL8K=m
CONFIG_ATL1=m
CONFIG_ATL2=m
CONFIG_ATL1E=m
+ifdef CONFIG_COMPAT_KERNEL_27
+CONFIG_ATL1C=n
+else #CONFIG_COMPAT_KERNEL_27
CONFIG_ATL1C=m
+endif #CONFIG_COMPAT_KERNEL_27
+ifdef CONFIG_WIRELESS_EXT
+ifdef CONFIG_WEXT_SPY
+ifdef CONFIG_WEXT_PRIV
CONFIG_HERMES=m
CONFIG_HERMES_CACHE_FW_ON_INIT=y
-ifneq ($(CONFIG_PPC_PMAC),)
+ifdef CONFIG_PPC_PMAC
CONFIG_APPLE_AIRPORT=m
-endif
+endif #CONFIG_PPC_PMAC
CONFIG_PLX_HERMES=m
CONFIG_TMD_HERMES=m
CONFIG_NORTEL_HERMES=m
CONFIG_PCI_HERMES=m
-ifneq ($(CONFIG_PCMCIA),)
+ifdef CONFIG_PCMCIA
CONFIG_PCMCIA_HERMES=m
CONFIG_PCMCIA_SPECTRUM=m
-endif
+endif #CONFIG_PCMCIA
+endif #CONFIG_WEXT_PRIV
+endif #CONFIG_WEXT_SPY
+endif #CONFIG_WIRELESS_EXT
-endif
+endif #CONFIG_PCI
## end of PCI
-ifneq ($(CONFIG_PCMCIA),)
+ifdef CONFIG_PCMCIA
ifdef CONFIG_COMPAT_KERNEL_27
CONFIG_LIBERTAS=n
CONFIG_LIBERTAS_CS=n
-else
+else #CONFIG_COMPAT_KERNEL_27
CONFIG_LIBERTAS_CS=m
NEED_LIBERTAS=y
-endif
+endif #CONFIG_COMPAT_KERNEL_27
-endif
+endif #CONFIG_PCMCIA
## end of PCMCIA
# This is required for some cards
CONFIG_EEPROM_93CX6=m
# USB Drivers
-ifneq ($(CONFIG_USB),)
+ifdef CONFIG_USB
CONFIG_ZD1211RW=m
# CONFIG_ZD1211RW_DEBUG=y
CONFIG_USB_NET_COMPAT_RNDIS_HOST=n
CONFIG_USB_NET_COMPAT_RNDIS_WLAN=n
CONFIG_USB_NET_COMPAT_CDCETHER=n
-else
+else #CONFIG_COMPAT_KERNEL_29
CONFIG_USB_COMPAT_USBNET=m
+ifdef CONFIG_USB_NET_CDCETHER
CONFIG_USB_NET_COMPAT_RNDIS_HOST=m
CONFIG_USB_NET_COMPAT_RNDIS_WLAN=m
+endif #CONFIG_USB_NET_CDCETHER
CONFIG_USB_NET_COMPAT_CDCETHER=m
-endif
+endif #CONFIG_COMPAT_KERNEL_29
CONFIG_P54_USB=m
ifndef CONFIG_COMPAT_KERNEL_28
CONFIG_AR9170_USB=m
CONFIG_AR9170_LEDS=y
-endif
+endif #CONFIG_COMPAT_KERNEL_28
CONFIG_ATH9K_HTC=m
CONFIG_ATH9K_HTC_DEBUGFS=y
# RT2500USB does not require firmware
CONFIG_RT2500USB=m
-ifneq ($(CONFIG_CRC_CCITT),)
+ifdef CONFIG_CRC_CCITT
CONFIG_RT2800USB=m
-# CONFIG_RT2800USB_RT30XX=y
-# CONFIG_RT2800USB_RT35XX=y
-# CONFIG_RT2800USB_UNKNOWN=y
-endif
+CONFIG_RT2800USB_RT30XX=y
+CONFIG_RT2800USB_RT35XX=y
+CONFIG_RT2800USB_UNKNOWN=y
+endif #CONFIG_CRC_CCITT
CONFIG_RT2X00_LIB_USB=m
NEED_RT2X00=y
# RT73USB requires firmware
-ifneq ($(CONFIG_CRC_ITU_T),)
+ifdef CONFIG_CRC_ITU_T
CONFIG_RT73USB=m
NEED_RT2X00_FIRMWARE=y
-endif
+endif #CONFIG_CRC_ITU_T
ifdef CONFIG_COMPAT_KERNEL_27
CONFIG_LIBERTAS_THINFIRM_USB=n
CONFIG_LIBERTAS_USB=n
NEED_LIBERTAS=n
-else
+else #CONFIG_COMPAT_KERNEL_27
CONFIG_LIBERTAS_THINFIRM_USB=m
CONFIG_LIBERTAS_USB=m
NEED_LIBERTAS=y
-endif
+endif #CONFIG_COMPAT_KERNEL_27
CONFIG_ORINOCO_USB=m
-endif # end of USB driver list
+CONFIG_BT_HCIBTUSB=m
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_ATH3K=m
-ifneq ($(CONFIG_SPI_MASTER),)
+endif #CONFIG_USB end of USB driver list
-CONFIG_WL1251=m
-ifneq ($(CONFIG_CRC7),)
+ifdef CONFIG_SPI_MASTER
+ifndef CONFIG_COMPAT_KERNEL_25
+
+ifdef CONFIG_CRC7
CONFIG_WL1251_SPI=m
-endif
CONFIG_WL1271_SPI=m
+endif #CONFIG_CRC7
CONFIG_P54_SPI=m
ifdef CONFIG_COMPAT_KERNEL_27
CONFIG_LIBERTAS_SPI=n
NEED_LIBERTAS=n
-else
+else #CONFIG_COMPAT_KERNEL_27
CONFIG_LIBERTAS_SPI=m
NEED_LIBERTAS=y
-endif
+endif #CONFIG_COMPAT_KERNEL_27
-endif # end of SPI driver list
+endif #CONFIG_COMPAT_KERNEL_25
+endif #CONFIG_SPI_MASTER end of SPI driver list
-ifneq ($(CONFIG_MMC),)
+ifdef CONFIG_MMC
CONFIG_SSB_SDIOHOST=y
CONFIG_B43_SDIO=y
+
+ifdef CONFIG_CRC7
CONFIG_WL1251_SDIO=m
-ifneq ($(CONFIG_ARM),)
+ifndef CONFIG_COMPAT_KERNEL_32
CONFIG_WL1271_SDIO=m
-endif
+endif #CONFIG_COMPAT_KERNEL_32
+
+endif #CONFIG_CRC7
ifdef CONFIG_COMPAT_KERNEL_27
CONFIG_LIBERTAS_SDIO=n
NEED_LIBERTAS=n
-else
+else #CONFIG_COMPAT_KERNEL_27
CONFIG_LIBERTAS_SDIO=m
NEED_LIBERTAS=y
-endif
+endif #CONFIG_COMPAT_KERNEL_27
-# Activate iwmc3200wifi support only on kernel >= 2.6.29.
-# iwmc3200wifi uses new netdev_ops api no supported by old kernel.
-ifndef CONFIG_COMPAT_KERNEL_29
CONFIG_IWM=m
# CONFIG_IWM_DEBUG=y
-endif
+
+CONFIG_BT_HCIBTSDIO=m
+CONFIG_BT_MRVL_SDIO=m
+
+ifneq ($(CONFIG_COMPAT_STAGING),)
+ifdef CONFIG_WIRELESS_EXT
+CONFIG_ATH6KL_CFG80211=y
+CONFIG_ATH6KL_DEBUG=y
+# CONFIG_ATH6KL_DISABLE_TARGET_DBGLOGS is not set
+# CONFIG_ATH6KL_ENABLE_COEXISTENCE is not set
+# CONFIG_ATH6KL_ENABLE_HOST_DEBUG is not set
+CONFIG_ATH6KL_ENABLE_TARGET_DEBUG_PRINTS=y
+# CONFIG_ATH6KL_HCI_BRIDGE is not set
+# CONFIG_ATH6KL_HTC_RAW_INTERFACE is not set
+# CONFIG_ATH6KL_SKIP_ABI_VERSION_CHECK is not set
+CONFIG_ATH6KL_VIRTUAL_SCATTER_GATHER=y
+CONFIG_ATH6K_LEGACY=m
+
+CONFIG_BRCM80211=m
+CONFIG_BRCM80211_PCI=y
+
+endif #CONFIG_WIRELESS_EXT
+endif #CONFIG_MMC
+
endif # end of SDIO driver list
CONFIG_RT2X00_LIB_HT=y
CONFIG_RT2X00_LIB_FIRMWARE=y
CONFIG_RT2X00_LIB_CRYPTO=y
+ifdef CONFIG_COMPAT_KERNEL_25
+CONFIG_RT2X00_LIB_LEDS=n
+else #CONFIG_COMPAT_KERNEL_25
CONFIG_RT2X00_LIB_LEDS=y
+endif #CONFIG_COMPAT_KERNEL_25
# CONFIG_RT2X00_DEBUG=y
# CONFIG_RT2X00_LIB_DEBUGFS
endif
CONFIG_ATH_DEBUG=y
CONFIG_WL12XX=y
+ifdef CONFIG_CRC7
CONFIG_WL1251=m
-ifneq ($(CONFIG_CRC7),)
CONFIG_WL1271=m
-endif
+endif #CONFIG_CRC7
ifdef CONFIG_COMPAT_KERNEL_27
CONFIG_LIBERTAS=n
-else
+else #CONFIG_COMPAT_KERNEL_27
ifeq ($(NEED_LIBERTAS),y)
CONFIG_LIBERTAS_THINFIRM=m
CONFIG_LIBERTAS=m
CONFIG_LIBERTAS_MESH=y
# CONFIG_LIBERTAS_DEBUG=y
endif
-endif
+endif #CONFIG_COMPAT_KERNEL_27
# We need the backported rfkill module on kernel < 2.6.31.
# In more recent kernel versions use the in kernel rfkill module.
CONFIG_RFKILL_BACKPORT=m
CONFIG_RFKILL_BACKPORT_LEDS=y
CONFIG_RFKILL_BACKPORT_INPUT=y
-endif
+endif #CONFIG_COMPAT_KERNEL_31