From 66dcc9cb7ab1a647df8654c4cb28a20138b26d9f Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Sat, 21 Oct 2017 18:23:14 +0200 Subject: [PATCH] kernel: make Wireless Extensions (WEXT) support optional Currently we always have WEXT support enabled, but it is only needed for a few legacy drivers and utilities (and, unfortunately the rtl8192cu 11n staging driver). Since this bloats both kernel (builtin and in cfg80211) and userspace (wpa-supplicant) for most targets, allow disabling it for building leaner kernels. In a short test build with ALL_NONSHARED on ar71xx, the unpadded file sizes were: y n delta kernel 1364205 1361585 -2620 rootfs 2020282 2006686 -13596 Resulting in a total of 15.8 kB saved. Signed-off-by: Jonas Gorski --- config/Config-kernel.in | 16 ++++++++++++++++ package/kernel/linux/modules/wireless.mk | 4 ++-- package/kernel/mac80211/Makefile | 16 +++++++++------- target/linux/generic/config-3.18 | 8 ++++---- target/linux/generic/config-4.4 | 8 ++++---- target/linux/generic/config-4.9 | 8 ++++---- 6 files changed, 39 insertions(+), 21 deletions(-) diff --git a/config/Config-kernel.in b/config/Config-kernel.in index 3468899adc..f48a79b30c 100644 --- a/config/Config-kernel.in +++ b/config/Config-kernel.in @@ -765,3 +765,19 @@ config KERNEL_DEVKMEM Say Y here if you want to support the /dev/kmem device. The /dev/kmem device is rarely used, but can be used for certain kind of kernel debugging operations. + +config KERNEL_WIRELESS_EXT + bool "Enable Wireless Extensions support (deprecated)" + default y + help + Say Y here if you want to enable the deprecated Wireless Extensions + API for legacy 11b/11g drivers and utilities. + +if KERNEL_WIRELESS_EXT + + config KERNEL_WEXT_SPY + def_bool y + + config KERNEL_WEXT_PRIV + def_bool y +endif diff --git a/package/kernel/linux/modules/wireless.mk b/package/kernel/linux/modules/wireless.mk index 7b1c663567..139ce352aa 100644 --- a/package/kernel/linux/modules/wireless.mk +++ b/package/kernel/linux/modules/wireless.mk @@ -10,7 +10,7 @@ WIRELESS_MENU:=Wireless Drivers define KernelPackage/net-prism54 SUBMENU:=$(WIRELESS_MENU) TITLE:=Intersil Prism54 support - DEPENDS:=@PCI_SUPPORT +@DRIVER_WEXT_SUPPORT +prism54-firmware + DEPENDS:=@PCI_SUPPORT +@DRIVER_WEXT_SUPPORT +prism54-firmware @KERNEL_WIRELESS_EXT KCONFIG:=CONFIG_PRISM54 FILES:= \ $(LINUX_DIR)/drivers/net/wireless/prism54/prism54.ko@lt4.5 \ @@ -28,7 +28,7 @@ $(eval $(call KernelPackage,net-prism54)) define KernelPackage/net-rtl8192su SUBMENU:=$(WIRELESS_MENU) TITLE:=RTL8192SU support (staging) - DEPENDS:=@USB_SUPPORT +@DRIVER_WEXT_SUPPORT +kmod-usb-core +rtl8192su-firmware + DEPENDS:=@USB_SUPPORT +@DRIVER_WEXT_SUPPORT +kmod-usb-core +rtl8192su-firmware @KERNEL_WIRELESS_EXT KCONFIG:=\ CONFIG_STAGING=y \ CONFIG_R8712U diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile index 7e9b5ad618..7cb8db32a1 100644 --- a/package/kernel/mac80211/Makefile +++ b/package/kernel/mac80211/Makefile @@ -73,6 +73,7 @@ PKG_CONFIG_DEPENDS:= \ CONFIG_ATH9K_SUPPORT_PCOEM \ CONFIG_ATH9K_TX99 \ CONFIG_ATH_USER_REGD \ + CONFIG_KERNEL_WIRELESS_EXT \ include $(INCLUDE_DIR)/package.mk @@ -150,7 +151,7 @@ endef define KernelPackage/airo $(call KernelPackage/mac80211/Default) TITLE:=Cisco Aironet driver - DEPENDS+=@PCI_SUPPORT +@DRIVER_WEXT_SUPPORT +kmod-cfg80211 @TARGET_x86 + DEPENDS+=@PCI_SUPPORT +@DRIVER_WEXT_SUPPORT +kmod-cfg80211 @TARGET_x86 @KERNEL_WIRELESS_EXT FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/cisco/airo.ko AUTOLOAD:=$(call AutoProbe,airo) endef @@ -782,7 +783,7 @@ endef define KernelPackage/hermes $(call KernelPackage/mac80211/Default) TITLE:=Hermes 802.11b chipset support - DEPENDS:=@PCI_SUPPORT||PCMCIA_SUPPORT +kmod-cfg80211 +@DRIVER_WEXT_SUPPORT +kmod-crypto-michael-mic + DEPENDS:=@PCI_SUPPORT||PCMCIA_SUPPORT +kmod-cfg80211 +@DRIVER_WEXT_SUPPORT +kmod-crypto-michael-mic @KERNEL_WIRELESS_EXT FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/orinoco/orinoco.ko AUTOLOAD:=$(call AutoProbe,orinoco) endef @@ -966,7 +967,7 @@ endef define KernelPackage/libipw $(call KernelPackage/mac80211/Default) TITLE:=libipw for ipw2100 and ipw2200 - DEPENDS:=@PCI_SUPPORT +kmod-crypto-michael-mic +kmod-crypto-ecb +kmod-lib80211 +kmod-cfg80211 +@DRIVER_WEXT_SUPPORT @!BIG_ENDIAN @!LINUX_3_18 + DEPENDS:=@PCI_SUPPORT +kmod-crypto-michael-mic +kmod-crypto-ecb +kmod-lib80211 +kmod-cfg80211 +@DRIVER_WEXT_SUPPORT @!BIG_ENDIAN @!LINUX_3_18 @KERNEL_WIRELESS_EXT FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intel/ipw2x00/libipw.ko AUTOLOAD:=$(call AutoProbe,libipw) endef @@ -1026,7 +1027,7 @@ endef define KernelPackage/libertas-usb $(call KernelPackage/mac80211/Default) - DEPENDS+= @USB_SUPPORT +kmod-cfg80211 +kmod-usb-core +kmod-lib80211 +@DRIVER_WEXT_SUPPORT +libertas-usb-firmware @!LINUX_3_18 + DEPENDS+= @USB_SUPPORT +kmod-cfg80211 +kmod-usb-core +kmod-lib80211 +@DRIVER_WEXT_SUPPORT +libertas-usb-firmware @!LINUX_3_18 @KERNEL_WIRELESS_EXT TITLE:=Marvell 88W8015 Wireless Driver FILES:= \ $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/libertas/libertas.ko \ @@ -1036,7 +1037,7 @@ endef define KernelPackage/libertas-sdio $(call KernelPackage/mac80211/Default) - DEPENDS+= +kmod-cfg80211 +kmod-lib80211 +kmod-mmc +@DRIVER_WEXT_SUPPORT @!TARGET_uml +libertas-sdio-firmware @!LINUX_3_18 + DEPENDS+= +kmod-cfg80211 +kmod-lib80211 +kmod-mmc +@DRIVER_WEXT_SUPPORT @!TARGET_uml +libertas-sdio-firmware @!LINUX_3_18 @KERNEL_WIRELESS_EXT TITLE:=Marvell 88W8686 Wireless Driver FILES:= \ $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/libertas/libertas.ko \ @@ -1047,7 +1048,7 @@ endef define KernelPackage/libertas-spi $(call KernelPackage/mac80211/Default) SUBMENU:=Wireless Drivers - DEPENDS+= +kmod-cfg80211 +kmod-lib80211 +@DRIVER_WEXT_SUPPORT @!TARGET_uml +libertas-spi-firmware @!LINUX_3_18 + DEPENDS+= +kmod-cfg80211 +kmod-lib80211 +@DRIVER_WEXT_SUPPORT @!TARGET_uml +libertas-spi-firmware @!LINUX_3_18 @KERNEL_WIRELESS_EXT KCONFIG := \ CONFIG_SPI=y \ CONFIG_SPI_MASTER=y @@ -1515,7 +1516,6 @@ config_package=$(if $(CONFIG_PACKAGE_kmod-$(1)),m) config-y:= \ WLAN \ NL80211_TESTMODE \ - CFG80211_WEXT \ CFG80211_INTERNAL_REGDB \ CFG80211_CERTIFICATION_ONUS \ MAC80211_RC_MINSTREL \ @@ -1538,6 +1538,8 @@ config-y:= \ WLAN_VENDOR_TI \ WLAN_VENDOR_ZYDAS \ +config-$(KERNEL_WIRELESS_EXT) += CFG80211_WEXT + config-$(call config_package,cfg80211) += CFG80211 config-$(call config_package,mac80211) += MAC80211 diff --git a/target/linux/generic/config-3.18 b/target/linux/generic/config-3.18 index 1e3f0b5abe..33d59e12d2 100644 --- a/target/linux/generic/config-3.18 +++ b/target/linux/generic/config-3.18 @@ -4579,10 +4579,10 @@ CONFIG_WATCHDOG=y # CONFIG_WATCHDOG_NOWAYOUT is not set # CONFIG_WD80x3 is not set # CONFIG_WDTPCI is not set -CONFIG_WEXT_CORE=y -CONFIG_WEXT_PRIV=y -CONFIG_WEXT_PROC=y -CONFIG_WEXT_SPY=y +# CONFIG_WEXT_CORE is not set +# CONFIG_WEXT_PRIV is not set +# CONFIG_WEXT_PROC is not set +# CONFIG_WEXT_SPY is not set CONFIG_WILINK_PLATFORM_DATA=y # CONFIG_WIMAX is not set # CONFIG_WIMAX_GDM72XX is not set diff --git a/target/linux/generic/config-4.4 b/target/linux/generic/config-4.4 index 1c0af9597f..b02d38a28e 100644 --- a/target/linux/generic/config-4.4 +++ b/target/linux/generic/config-4.4 @@ -4781,10 +4781,10 @@ CONFIG_WATCHDOG=y # CONFIG_WATCHDOG_NOWAYOUT is not set # CONFIG_WD80x3 is not set # CONFIG_WDTPCI is not set -CONFIG_WEXT_CORE=y -CONFIG_WEXT_PRIV=y -CONFIG_WEXT_PROC=y -CONFIG_WEXT_SPY=y +# CONFIG_WEXT_CORE is not set +# CONFIG_WEXT_PRIV is not set +# CONFIG_WEXT_PROC is not set +# CONFIG_WEXT_SPY is not set CONFIG_WILINK_PLATFORM_DATA=y # CONFIG_WIMAX is not set # CONFIG_WIMAX_GDM72XX is not set diff --git a/target/linux/generic/config-4.9 b/target/linux/generic/config-4.9 index 4d2c911b7c..b25880fc15 100644 --- a/target/linux/generic/config-4.9 +++ b/target/linux/generic/config-4.9 @@ -5212,10 +5212,10 @@ CONFIG_WATCHDOG=y # CONFIG_WD80x3 is not set # CONFIG_WDAT_WDT is not set # CONFIG_WDTPCI is not set -CONFIG_WEXT_CORE=y -CONFIG_WEXT_PRIV=y -CONFIG_WEXT_PROC=y -CONFIG_WEXT_SPY=y +# CONFIG_WEXT_CORE is not set +# CONFIG_WEXT_PRIV is not set +# CONFIG_WEXT_PROC is not set +# CONFIG_WEXT_SPY is not set CONFIG_WILINK_PLATFORM_DATA=y # CONFIG_WIMAX is not set # CONFIG_WIMAX_GDM72XX is not set -- 2.30.2