54a2bf4499273c377caa3cfea8bae385b1993404
[openwrt/staging/stintel.git] / package / kernel / mac80211 / Makefile
1 #
2 # Copyright (C) 2007-2015 OpenWrt.org
3 #
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
6 #
7
8 include $(TOPDIR)/rules.mk
9 include $(INCLUDE_DIR)/kernel.mk
10
11 PKG_NAME:=mac80211
12
13 PKG_VERSION:=6.6.15
14 PKG_RELEASE:=1
15 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources/
16 PKG_HASH:=3bbc461121134fda9089c084a5eed577d05e7837a157edf9a3797937172a3ece
17
18 PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
19 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(if $(BUILD_VARIANT),$(PKG_NAME)-$(BUILD_VARIANT)/)backports-$(PKG_VERSION)
20 PKG_BUILD_PARALLEL:=1
21
22 PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
23
24 PKG_DRIVERS = \
25 mac80211-hwsim \
26 mt7601u \
27 rsi91x rsi91x-usb rsi91x-sdio\
28 wlcore wl12xx wl18xx
29
30 PKG_CONFIG_DEPENDS:= \
31 CONFIG_PACKAGE_kmod-mac80211 \
32 CONFIG_PACKAGE_CFG80211_TESTMODE \
33 CONFIG_PACKAGE_MAC80211_DEBUGFS \
34 CONFIG_PACKAGE_MAC80211_MESH \
35 CONFIG_PACKAGE_MAC80211_TRACING \
36 CONFIG_PACKAGE_IWLWIFI_DEBUG \
37 CONFIG_PACKAGE_IWLWIFI_DEBUGFS \
38 CONFIG_PACKAGE_RTLWIFI_DEBUG \
39
40 include $(INCLUDE_DIR)/package.mk
41
42 WMENU:=Wireless Drivers
43
44 define KernelPackage/mac80211/Default
45 SUBMENU:=$(WMENU)
46 URL:=https://wireless.wiki.kernel.org/
47 MAINTAINER:=Felix Fietkau <nbd@nbd.name>
48 endef
49
50 # config_pacakge:
51 # 1 = OpenWrt KernelPackage name
52 # 2 = Optional list of variants for which the module may be selected:
53 # If empty, the module is only selected with the first variant
54 # Use $(ALL_VARIANTS) to allow module selection in all variants
55 config_package=$(if $(and $(CONFIG_PACKAGE_kmod-$(1)),$(call mac80211_variant_check,$(2))),m)
56 mac80211_variant_check=$(if $(ALL_VARIANTS),$(filter $(BUILD_VARIANT),$(if $(1),$(1),$(firstword $(ALL_VARIANTS)))),y)
57
58 config-y:= \
59 WLAN \
60 CFG80211_CERTIFICATION_ONUS \
61 MAC80211_RC_MINSTREL \
62 MAC80211_RC_MINSTREL_HT \
63 MAC80211_RC_MINSTREL_VHT \
64 MAC80211_RC_DEFAULT_MINSTREL \
65 WLAN_VENDOR_ADMTEK \
66 WLAN_VENDOR_ATH \
67 WLAN_VENDOR_ATMEL \
68 WLAN_VENDOR_BROADCOM \
69 WLAN_VENDOR_CISCO \
70 WLAN_VENDOR_INTEL \
71 WLAN_VENDOR_INTERSIL \
72 WLAN_VENDOR_MARVELL \
73 WLAN_VENDOR_MEDIATEK \
74 WLAN_VENDOR_RALINK \
75 WLAN_VENDOR_REALTEK \
76 WLAN_VENDOR_RSI \
77 WLAN_VENDOR_ST \
78 WLAN_VENDOR_TI \
79 WLAN_VENDOR_ZYDAS \
80
81 config-$(call config_package,cfg80211,$(ALL_VARIANTS)) += CFG80211
82 config-$(CONFIG_PACKAGE_CFG80211_TESTMODE) += NL80211_TESTMODE
83
84 config-$(call config_package,mac80211,$(ALL_VARIANTS)) += MAC80211
85 config-$(CONFIG_PACKAGE_MAC80211_MESH) += MAC80211_MESH
86
87 include ath.mk
88 include broadcom.mk
89 include intel.mk
90 include marvell.mk
91 include ralink.mk
92 include realtek.mk
93
94 PKG_CONFIG_DEPENDS += \
95 $(patsubst %,CONFIG_PACKAGE_kmod-%,$(PKG_DRIVERS))
96
97 define KernelPackage/cfg80211
98 $(call KernelPackage/mac80211/Default)
99 TITLE:=cfg80211 - wireless configuration API
100 DEPENDS+= +iw +iwinfo +wifi-scripts +wireless-regdb +USE_RFKILL:kmod-rfkill
101 ABI_VERSION:=$(PKG_VERSION)-$(PKG_RELEASE)
102 FILES:= \
103 $(PKG_BUILD_DIR)/compat/compat.ko \
104 $(PKG_BUILD_DIR)/net/wireless/cfg80211.ko
105 endef
106
107 define KernelPackage/cfg80211/description
108 cfg80211 is the Linux wireless LAN (802.11) configuration API.
109 endef
110
111 define KernelPackage/cfg80211/config
112 if PACKAGE_kmod-cfg80211
113
114 config PACKAGE_CFG80211_TESTMODE
115 bool "Enable testmode command support"
116 default n
117 help
118 This is typically used for tests and calibration during
119 manufacturing, or vendor specific debugging features
120
121 endif
122 endef
123
124
125 define KernelPackage/mac80211
126 $(call KernelPackage/mac80211/Default)
127 TITLE:=Linux 802.11 Wireless Networking Stack
128 # +kmod-crypto-cmac is a runtime only dependency of net/mac80211/aes_cmac.c
129 DEPENDS+= +kmod-cfg80211 +kmod-crypto-cmac +kmod-crypto-ccm +kmod-crypto-gcm +hostapd-common
130 KCONFIG:=\
131 CONFIG_AVERAGE=y
132 FILES:= $(PKG_BUILD_DIR)/net/mac80211/mac80211.ko
133 ABI_VERSION:=$(PKG_VERSION)-$(PKG_RELEASE)
134 MENU:=1
135 endef
136
137 define KernelPackage/mac80211/config
138 if PACKAGE_kmod-mac80211
139
140 config PACKAGE_MAC80211_DEBUGFS
141 bool "Export mac80211 internals in DebugFS"
142 select KERNEL_DEBUG_FS
143 default y
144 help
145 Select this to see extensive information about
146 the internal state of mac80211 in debugfs.
147
148 config PACKAGE_MAC80211_TRACING
149 bool "Enable tracing (mac80211 and supported drivers)"
150 select KERNEL_FTRACE
151 select KERNEL_ENABLE_DEFAULT_TRACERS
152 default n
153 help
154 Select this to enable tracing of mac80211 and
155 related wifi drivers (using trace-cmd).
156
157 config PACKAGE_MAC80211_MESH
158 bool "Enable 802.11s mesh support"
159 default y
160
161 endif
162 endef
163
164 define KernelPackage/mac80211/description
165 Generic IEEE 802.11 Networking Stack (mac80211)
166 endef
167
168 define KernelPackage/mac80211-hwsim
169 $(call KernelPackage/mac80211/Default)
170 TITLE:=mac80211 HW simulation device
171 DEPENDS+= +kmod-mac80211 +@DRIVER_11AX_SUPPORT +@DRIVER_11AC_SUPPORT
172 FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/virtual/mac80211_hwsim.ko
173 AUTOLOAD:=$(call AutoProbe,mac80211_hwsim)
174 endef
175
176
177 define KernelPackage/mt7601u
178 $(call KernelPackage/mac80211/Default)
179 TITLE:=MT7601U-based USB dongles Wireless Driver
180 DEPENDS+= +kmod-mac80211 @USB_SUPPORT +kmod-usb-core +mt7601u-firmware
181 FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/mediatek/mt7601u/mt7601u.ko
182 AUTOLOAD:=$(call AutoProbe,mt7601u)
183 endef
184
185 define KernelPackage/rsi91x
186 $(call KernelPackage/mac80211/Default)
187 TITLE:=Redpine Signals Inc 91x WLAN driver support
188 DEPENDS+= +kmod-mac80211 +rs9113-firmware
189 FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rsi/rsi_91x.ko
190 endef
191
192 define KernelPackage/rsi91x-usb
193 $(call KernelPackage/mac80211/Default)
194 TITLE:=Redpine Signals USB bus support
195 DEPENDS+=@USB_SUPPORT +kmod-usb-core +kmod-mac80211 +kmod-rsi91x +rs9113-firmware
196 FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rsi/rsi_usb.ko
197 AUTOLOAD:=$(call AutoProbe,rsi_usb)
198 endef
199
200 define KernelPackage/rsi91x-sdio
201 $(call KernelPackage/mac80211/Default)
202 TITLE:=Redpine Signals SDIO bus support
203 DEPENDS+= +kmod-mac80211 +kmod-mmc +kmod-rsi91x +rs9113-firmware
204 FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rsi/rsi_sdio.ko
205 AUTOLOAD:=$(call AutoProbe,rsi_sdio)
206 endef
207
208
209 define KernelPackage/wlcore
210 $(call KernelPackage/mac80211/Default)
211 TITLE:=TI common driver part
212 DEPENDS+= +kmod-mmc +kmod-mac80211
213 FILES:= \
214 $(PKG_BUILD_DIR)/drivers/net/wireless/ti/wlcore/wlcore.ko \
215 $(PKG_BUILD_DIR)/drivers/net/wireless/ti/wlcore/wlcore_sdio.ko
216 AUTOLOAD:=$(call AutoProbe,wlcore wlcore_sdio)
217 endef
218
219 define KernelPackage/wlcore/description
220 This module contains some common parts needed by TI Wireless drivers.
221 endef
222
223 define KernelPackage/wl12xx
224 $(call KernelPackage/mac80211/Default)
225 TITLE:=Driver for TI WL12xx
226 URL:=https://wireless.wiki.kernel.org/en/users/drivers/wl12xx
227 DEPENDS+= +kmod-wlcore +wl12xx-firmware
228 FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ti/wl12xx/wl12xx.ko
229 AUTOLOAD:=$(call AutoProbe,wl12xx)
230 endef
231
232 define KernelPackage/wl12xx/description
233 Kernel modules for TI WL12xx
234 endef
235
236 define KernelPackage/wl18xx
237 $(call KernelPackage/mac80211/Default)
238 TITLE:=Driver for TI WL18xx
239 URL:=https://wireless.wiki.kernel.org/en/users/drivers/wl18xx
240 DEPENDS+= +kmod-wlcore +wl18xx-firmware
241 FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ti/wl18xx/wl18xx.ko
242 AUTOLOAD:=$(call AutoProbe,wl18xx)
243 endef
244
245 define KernelPackage/wl18xx/description
246 Kernel modules for TI WL18xx
247 endef
248
249
250 ifdef CONFIG_PACKAGE_MAC80211_DEBUGFS
251 config-y += \
252 CFG80211_DEBUGFS \
253 MAC80211_DEBUGFS
254 endif
255
256 ifdef CONFIG_PACKAGE_MAC80211_TRACING
257 config-y += \
258 IWLWIFI_DEVICE_TRACING
259 endif
260
261 config-$(call config_package,mac80211-hwsim) += MAC80211_HWSIM
262 config-$(call config_package,mt7601u) += MT7601U
263 config-y += WL_MEDIATEK
264
265 config-$(call config_package,wlcore) += WLCORE WLCORE_SDIO
266 config-$(call config_package,wl12xx) += WL12XX
267 config-$(call config_package,wl18xx) += WL18XX
268 config-y += WL_TI WILINK_PLATFORM_DATA
269 config-$(call config_package,rsi91x) += RSI_91X
270 config-$(call config_package,rsi91x-usb) += RSI_USB
271 config-$(call config_package,rsi91x-sdio) += RSI_SDIO
272
273 config-$(CONFIG_LEDS_TRIGGERS) += MAC80211_LEDS
274
275 C_DEFINES=
276
277 ifeq ($(BUILD_VARIANT),smallbuffers)
278 C_DEFINES+= -DCONFIG_ATH10K_SMALLBUFFERS
279 endif
280
281 MAKE_OPTS:= \
282 $(subst -C $(LINUX_DIR),-C "$(PKG_BUILD_DIR)",$(KERNEL_MAKEOPTS)) \
283 EXTRA_CFLAGS="-I$(PKG_BUILD_DIR)/include $(IREMAP_CFLAGS) $(C_DEFINES)" \
284 KLIB_BUILD="$(LINUX_DIR)" \
285 MODPROBE=true \
286 KLIB=$(TARGET_MODULES_DIR) \
287 KERNEL_SUBLEVEL=$(lastword $(subst ., ,$(KERNEL_PATCHVER))) \
288 KBUILD_LDFLAGS_MODULE_PREREQ=
289
290 define ConfigVars
291 $(subst $(space),,$(foreach opt,$(config-$(1)),CPTCFG_$(opt)=$(1)
292 ))
293 endef
294
295 define mac80211_config
296 $(call ConfigVars,m)$(call ConfigVars,y)
297 endef
298 $(eval $(call shexport,mac80211_config))
299
300 define Build/Prepare
301 rm -rf $(PKG_BUILD_DIR)
302 mkdir -p $(PKG_BUILD_DIR)
303 $(PKG_UNPACK)
304 $(Build/Patch)
305 rm -rf \
306 $(PKG_BUILD_DIR)/include/linux/ssb \
307 $(PKG_BUILD_DIR)/include/linux/bcma \
308 $(PKG_BUILD_DIR)/include/net/bluetooth
309
310 rm -f \
311 $(PKG_BUILD_DIR)/include/linux/cordic.h \
312 $(PKG_BUILD_DIR)/include/linux/crc8.h \
313 $(PKG_BUILD_DIR)/include/linux/eeprom_93cx6.h \
314 $(PKG_BUILD_DIR)/include/linux/wl12xx.h \
315 $(PKG_BUILD_DIR)/include/linux/mhi.h \
316 $(PKG_BUILD_DIR)/include/net/ieee80211.h \
317 $(PKG_BUILD_DIR)/backport-include/linux/bcm47xx_nvram.h
318
319 echo 'compat-wireless-$(PKG_VERSION)-$(PKG_RELEASE)-$(REVISION)' > $(PKG_BUILD_DIR)/compat_version
320 endef
321
322 ifneq ($(CONFIG_PACKAGE_kmod-cfg80211),)
323 define Build/Compile/kmod
324 rm -rf $(PKG_BUILD_DIR)/modules
325 +$(MAKE) $(PKG_JOBS) $(MAKE_OPTS) modules
326 endef
327 endif
328
329 #do not Build/Configure for EXTERNAL KERNEL
330 ifeq ($(strip $(CONFIG_EXTERNAL_KERNEL_TREE)),"")
331 ifeq ($(strip $(CONFIG_KERNEL_GIT_CLONE_URI)),"")
332 define Build/Configure
333 cmp $(PKG_BUILD_DIR)/include/linux/ath9k_platform.h $(LINUX_DIR)/include/linux/ath9k_platform.h
334 cmp $(PKG_BUILD_DIR)/include/linux/ath5k_platform.h $(LINUX_DIR)/include/linux/ath5k_platform.h
335 cmp $(PKG_BUILD_DIR)/include/linux/rt2x00_platform.h $(LINUX_DIR)/include/linux/rt2x00_platform.h
336 endef
337 endif
338 endif
339
340 define Build/Patch
341 $(if $(QUILT),rm -rf $(PKG_BUILD_DIR)/patches; mkdir -p $(PKG_BUILD_DIR)/patches)
342 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/build,build/)
343 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/subsys,subsys/)
344 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/ath,ath/)
345 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/ath5k,ath5k/)
346 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/ath9k,ath9k/)
347 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/ath10k,ath10k/)
348 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/ath11k,ath11k/)
349 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/rt2x00,rt2x00/)
350 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/mt7601u,mt7601u/)
351 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/mwl,mwl/)
352 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/brcm,brcm/)
353 $(call PatchDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/rtl,rtl/)
354 $(if $(QUILT),touch $(PKG_BUILD_DIR)/.quilt_used)
355 endef
356
357 define Quilt/Refresh/Package
358 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/build,build/)
359 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/subsys,subsys/)
360 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/ath,ath/)
361 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/ath5k,ath5k/)
362 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/ath9k,ath9k/)
363 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/ath10k,ath10k/)
364 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/ath11k,ath11k/)
365 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/rt2x00,rt2x00/)
366 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/mt7601u,mt7601u/)
367 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/mwl,mwl/)
368 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/brcm,brcm/)
369 $(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(PATCH_DIR)/rtl,rtl/)
370 endef
371
372 define Build/Compile
373 $(SH_FUNC) var2file "$(call shvar,mac80211_config)" $(PKG_BUILD_DIR)/.config
374 $(MAKE) $(MAKE_OPTS) allnoconfig
375 $(call Build/Compile/kmod)
376 endef
377
378 define Build/InstallDev
379 mkdir -p \
380 $(1)/usr/include/mac80211 \
381 $(1)/usr/include/mac80211-backport \
382 $(1)/usr/include/mac80211/ath \
383 $(1)/usr/include/net/mac80211
384 $(CP) $(PKG_BUILD_DIR)/net/mac80211/*.h $(PKG_BUILD_DIR)/include/* $(1)/usr/include/mac80211/
385 $(CP) $(PKG_BUILD_DIR)/backport-include/* $(1)/usr/include/mac80211-backport/
386 $(CP) $(PKG_BUILD_DIR)/net/mac80211/rate.h $(1)/usr/include/net/mac80211/
387 $(CP) $(PKG_BUILD_DIR)/drivers/net/wireless/ath/*.h $(1)/usr/include/mac80211/ath/
388 rm -f $(1)/usr/include/mac80211-backport/linux/module.h
389 endef
390
391
392 $(eval $(foreach drv,$(PKG_DRIVERS),$(call KernelPackage,$(drv))))
393 $(eval $(call KernelPackage,cfg80211))
394 $(eval $(call KernelPackage,mac80211))