[LEDE-DEV] Using stable wireless/kernel but trunk userspace/kernel
Christian Lamparter
chunkeey at googlemail.com
Wed Apr 5 03:33:59 PDT 2017
Hello,
On Tuesday, April 4, 2017 8:14:58 PM CEST Daniel Dickinson wrote:
> I'm wondering if there is an easy way to use trunk userspace with the stable
> release's wireless (and if necessary the rest of the kernel).
At the end of last year, I had issues with getting ath10k to work with
the new IPQ4019. And I wanted to know if the was due to LEDE's patched
mac80211 or if this was problem in the mainline as well.
The attached patch allowed me to use the ath10k from the kernel
source to boot up the ath10k device. But as you can see, there
were quite a few things that needed to be modified in order to
do it this way (Is there a better one?).
In any case, If you want to adapt it, I think you would have to
add a kmod-net-ath9k package (see mac80211-package's kmod-ath9k)
to it and do a few modifications to the AR71XX kernel config.
Have Fun!
(I hope patchwork doesn't pick this up. If it does, please delete it there.)
---
diff --git a/package/kernel/linux/modules/wireless.mk b/package/kernel/linux/modules/wireless.mk
index 7b1c663567..826b027134 100644
--- a/package/kernel/linux/modules/wireless.mk
+++ b/package/kernel/linux/modules/wireless.mk
@@ -62,3 +62,88 @@ define KernelPackage/owl-loader/description
endef
$(eval $(call KernelPackage,owl-loader))
+
+define KernelPackage/net-mac80211/Default
+ SUBMENU:=$(WIRELESS_MENU)
+ URL:=https://wireless.wiki.kernel.org/
+endef
+
+define KernelPackage/net-cfg80211
+ $(call KernelPackage/net-mac80211/Default)
+ TITLE:=cfg80211 - wireless configuration API
+ DEPENDS+= +iw
+ FILES:= $(LINUX_DIR)/net/wireless/cfg80211.ko
+ KCONFIG:=CONFIG_CFG80211 \
+ CONFIG_CFG80211_INTERNAL_REGDB=y \
+ CONFIG_NL80211_TESTMODE=y \
+ CONFIG_CFG80211_DEBUGFS=y \
+ CONFIG_CFG80211_CRDA_SUPPORT=y
+endef
+
+define KernelPackage/net-cfg80211/description
+cfg80211 is the Linux wireless LAN (802.11) configuration API.
+endef
+
+$(eval $(call KernelPackage,net-cfg80211))
+
+define KernelPackage/net-mac80211
+ $(call KernelPackage/net-mac80211/Default)
+ TITLE:=Linux 802.11 Wireless Networking Stack
+ DEPENDS+= +kmod-net-cfg80211 +hostapd-common +kmod-crypto-aead
+ FILES:= $(LINUX_DIR)/net/mac80211/mac80211.ko
+ MENU:=1
+ KCONFIG:=CONFIG_MAC80211 \
+ CONFIG_MAC80211_RC_MINSTREL=y \
+ CONFIG_MAC80211_RC_MINSTREL_HT=y \
+ CONFIG_MAC80211_RC_MINSTREL_VHT=y \
+ CONFIG_MAC80211_MESH=y \
+ CONFIG_MAC80211_LEDS=y \
+ CONFIG_MAC80211_DEBUGFS=y
+endef
+
+define KernelPackage/net-mac80211/description
+Generic IEEE 802.11 Networking Stack (mac80211)
+endef
+
+$(eval $(call KernelPackage,net-mac80211))
+
+define KernelPackage/net-ath
+ $(call KernelPackage/net-mac80211/Default)
+ TITLE:=Atheros common driver part
+ DEPENDS+= @PCI_SUPPORT||USB_SUPPORT||TARGET_ipq40xx +kmod-net-mac80211
+ FILES:=$(LINUX_DIR)/drivers/net/wireless/ath/ath.ko
+ KCONFIG:=CONFIG_ATH_COMMON
+ MENU:=1
+endef
+
+define KernelPackage/net-ath/description
+ This module contains some common parts needed by Atheros Wireless drivers.
+endef
+
+$(eval $(call KernelPackage,net-ath))
+
+define KernelPackage/net-ath10k
+ $(call KernelPackage/net-mac80211/Default)
+ TITLE:=Atheros 802.11ac wireless cards support
+ URL:=https://wireless.wiki.kernel.org/en/users/Drivers/ath10k
+ KCONFIG:=CONFIG_ATH10K \
+ CONFIG_ATH10K_PCI \
+ CONFIG_ATH10K_AHB=y \
+ CONFIG_ATH10K_DEBUG=y \
+ CONFIG_ATH10K_DEBUGFS=y \
+ CONFIG_ATH10K_TRACING=y
+ DEPENDS+= @PCI_SUPPORT +kmod-net-ath + at DRIVER_11N_SUPPORT + at DRIVER_11W_SUPPORT + at KERNEL_RELAY
+ FILES:= \
+ $(LINUX_DIR)/drivers/net/wireless/ath/ath10k/ath10k_core.ko \
+ $(LINUX_DIR)/drivers/net/wireless/ath/ath10k/ath10k_pci.ko
+ AUTOLOAD:=$(call AutoLoad,55,ath10k_core ath10k_pci)
+endef
+
+define KernelPackage/net-ath10k/description
+This module adds support for wireless adapters based on
+Atheros IEEE 802.11ac family of chipsets. For now only
+PCI is supported.
+endef
+
+$(eval $(call KernelPackage,net-ath10k))
+
diff --git a/package/network/services/hostapd/Makefile b/package/network/services/hostapd/Makefile
index 9570b2a8f5..b228a91950 100644
--- a/package/network/services/hostapd/Makefile
+++ b/package/network/services/hostapd/Makefile
@@ -25,8 +25,8 @@ PKG_BUILD_PARALLEL:=1
PKG_CONFIG_DEPENDS:= \
CONFIG_WPA_SUPPLICANT_NO_TIMESTAMP_CHECK \
- CONFIG_PACKAGE_kmod-ath9k \
- CONFIG_PACKAGE_kmod-cfg80211 \
+ CONFIG_PACKAGE_kmod-net-ath9k \
+ CONFIG_PACKAGE_kmod-net-cfg80211 \
CONFIG_PACKAGE_hostapd \
CONFIG_PACKAGE_hostapd-mini \
CONFIG_WPA_RFKILL_SUPPORT \
@@ -63,8 +63,8 @@ ifneq ($(CONFIG_DRIVER_11N_SUPPORT),)
endif
DRIVER_MAKEOPTS= \
- CONFIG_ACS=$(CONFIG_PACKAGE_kmod-cfg80211) \
- CONFIG_DRIVER_NL80211=$(CONFIG_PACKAGE_kmod-cfg80211) \
+ CONFIG_ACS=$(CONFIG_PACKAGE_kmod-net-cfg80211) \
+ CONFIG_DRIVER_NL80211=$(CONFIG_PACKAGE_kmod-net-cfg80211) \
CONFIG_IEEE80211N=$(HOSTAPD_IEEE80211N) \
CONFIG_DRIVER_WEXT=$(CONFIG_DRIVER_WEXT_SUPPORT) \
@@ -98,7 +98,7 @@ ifdef CONFIG_USE_GLIBC
TARGET_LDFLAGS_C += -lrt
endif
-DRV_DEPENDS:=+PACKAGE_kmod-cfg80211:libnl-tiny
+DRV_DEPENDS:=+PACKAGE_kmod-net-cfg80211:libnl-tiny
define Package/hostapd/Default
SECTION:=net
@@ -175,7 +175,7 @@ endef
define Package/wpad-mesh
$(call Package/wpad/Default)
TITLE+= (with 802.11s mesh and SAE support)
- DEPENDS:=$(DRV_DEPENDS) +libubus +PACKAGE_wpad-mesh:libopenssl @PACKAGE_kmod-cfg80211 @(!TARGET_uml||BROKEN)
+ DEPENDS:=$(DRV_DEPENDS) +libubus +PACKAGE_wpad-mesh:libopenssl @PACKAGE_kmod-net-cfg80211 @(!TARGET_uml||BROKEN)
VARIANT:=wpad-mesh
endef
@@ -204,7 +204,7 @@ endef
define Package/wpa-supplicant-p2p
$(Package/wpa-supplicant)
TITLE:=WPA Supplicant (with Wi-Fi P2P support)
- DEPENDS:=$(DRV_DEPENDS) @PACKAGE_kmod-cfg80211
+ DEPENDS:=$(DRV_DEPENDS) @PACKAGE_kmod-net-cfg80211
CONFLICTS:=wpad wpad-mini wpad-mesh
VARIANT:=supplicant-p2p
endef
@@ -216,7 +216,7 @@ endef
define Package/wpa-supplicant-mesh
$(Package/wpa-supplicant)
TITLE:=WPA Supplicant (with 802.11s and SAE)
- DEPENDS:=$(DRV_DEPENDS) +PACKAGE_wpa-supplicant-mesh:libopenssl @PACKAGE_kmod-cfg80211 @(!TARGET_uml||BROKEN)
+ DEPENDS:=$(DRV_DEPENDS) +PACKAGE_wpa-supplicant-mesh:libopenssl @PACKAGE_kmod-net-cfg80211 @(!TARGET_uml||BROKEN)
CONFLICTS:=wpad wpad-mesh wpad-mesh
VARIANT:=supplicant-mesh
endef
@@ -295,7 +295,7 @@ ifeq ($(findstring supplicant,$(BUILD_VARIANT)),)
TARGET_LDFLAGS += -lubox -lubus
endif
-ifdef CONFIG_PACKAGE_kmod-cfg80211
+ifdef CONFIG_PACKAGE_kmod-net-cfg80211
TARGET_LDFLAGS += -lm -lnl-tiny
endif
diff --git a/target/linux/ipq40xx/Makefile b/target/linux/ipq40xx/Makefile
index eb6b402dd9..259f3d566b 100644
--- a/target/linux/ipq40xx/Makefile
+++ b/target/linux/ipq40xx/Makefile
@@ -19,6 +19,6 @@ DEFAULT_PACKAGES += \
kmod-leds-gpio kmod-gpio-button-hotplug swconfig kmod-crypto-hw-qce \
kmod-usb-core kmod-usb3 kmod-usb-dwc3 kmod-usb-dwc3-of-simple \
kmod-usb-phy-qcom-ipq4019 kmod-usb-ledtrig-usbport \
- kmod-ath10k ath10k-firmware-qca4019 wpad-mini uboot-envtools block-mount
+ kmod-net-ath10k ath10k-firmware-qca4019 wpad-mini uboot-envtools block-mount
$(eval $(call BuildTarget))
diff --git a/target/linux/ipq40xx/config-4.8 b/target/linux/ipq40xx/config-4.8
index 6834d144bc..76605a4e2e 100644
--- a/target/linux/ipq40xx/config-4.8
+++ b/target/linux/ipq40xx/config-4.8
@@ -64,6 +64,9 @@ CONFIG_AUTO_ZRELADDR=y
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
# CONFIG_CACHE_L2X0 is not set
CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
+# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
+# CONFIG_CFG80211_DEFAULT_PS is not set
+# CONFIG_CFG80211_WEXT is not set
CONFIG_CLKDEV_LOOKUP=y
CONFIG_CLKSRC_OF=y
CONFIG_CLKSRC_PROBE=y
@@ -117,6 +120,8 @@ CONFIG_CRYPTO_WORKQUEUE=y
CONFIG_CRYPTO_XZ=y
# CONFIG_CXL_AFU_DRIVER_OPS is not set
CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_DEBUG_DEVRES=y
+CONFIG_DEBUG_DRIVER=y
CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
# CONFIG_DEBUG_UART_8250 is not set
# CONFIG_DEBUG_USER is not set
@@ -245,6 +250,7 @@ CONFIG_IRQ_DOMAIN_HIERARCHY=y
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_IRQ_WORK=y
# CONFIG_ISA_BUS_API is not set
+# CONFIG_IWL4965 is not set
# CONFIG_KS7010 is not set
# CONFIG_LEDS_IS31FL32XX is not set
CONFIG_LEDS_TRIGGER_MTD=y
@@ -254,6 +260,8 @@ CONFIG_LOCKUP_DETECTOR=y
CONFIG_LOCK_SPIN_ON_OWNER=y
CONFIG_LZO_COMPRESS=y
CONFIG_LZO_DECOMPRESS=y
+# CONFIG_MAC80211_HWSIM is not set
+# CONFIG_MAC80211_DEBUG_MENU is not set
CONFIG_MAY_USE_DEVLINK=y
CONFIG_MDIO_BITBANG=y
CONFIG_MDIO_BOARDINFO=y
@@ -284,6 +292,7 @@ CONFIG_MSM_GCC_8974=y
CONFIG_MSM_MMCC_8960=y
CONFIG_MSM_MMCC_8974=y
# CONFIG_MSM_MMCC_8996 is not set
+# CONFIG_MT7601U is not set
CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_M25P80=y
# CONFIG_MTD_MT81xx_NOR is not set
@@ -304,6 +313,7 @@ CONFIG_MTD_UBI_GLUEBI=y
CONFIG_MTD_UBI_WL_THRESHOLD=4096
CONFIG_MULTI_IRQ_HANDLER=y
CONFIG_MUTEX_SPIN_ON_OWNER=y
+# CONFIG_MWIFIEX is not set
# CONFIG_MVNETA_BM is not set
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEON=y
@@ -423,6 +433,8 @@ CONFIG_RTC_CLASS=y
# CONFIG_RTC_DRV_RX6110 is not set
# CONFIG_RTC_DRV_RX8010 is not set
CONFIG_RTC_I2C_AND_SPI=y
+# CONFIG_RTL8XXXU is not set
+# CONFIG_RSI_91X is not set
CONFIG_RWSEM_SPIN_ON_OWNER=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_SCHED_HRTICK=y
@@ -494,7 +506,14 @@ CONFIG_VIRTIO=y
# CONFIG_VIRTIO_CONSOLE is not set
# CONFIG_VIRTIO_NET is not set
CONFIG_VIRTUALIZATION=y
+# CONFIG_WIRELESS_EXT is not set
+# CONFIG_WEXT_SPY is not set
+# CONFIG_WEXT_PRIV is not set
CONFIG_WATCHDOG_CORE=y
+# CONFIG_WCN36XX is not set
+# CONFIG_WIL6210 is not set
+# CONFIG_WILC1000_SDIO is not set
+# CONFIG_WILC1000_SPI is not set
CONFIG_XPS=y
CONFIG_XZ_DEC_ARM=y
CONFIG_XZ_DEC_BCJ=y
More information about the Lede-dev
mailing list