Makefile 12 KB

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