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