From aca1223f069750c1d9cca4ec952fae3e338dc590 Mon Sep 17 00:00:00 2001 From: Adrian Schmutzler Date: Mon, 30 Mar 2020 18:35:51 +0200 Subject: [PATCH] bsp: use mainline/QCA driver and firmware for ath10k WiFi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit OpenWrt offers two variants of ath10k driver and firmware, the "normal" mainline/QCA variant and the "CT" variant [1] developed as fork by Candela Technologies. Both deviate from each other with respect to their feature set, level of support and system impact (i.e. memory consumption). Since the 19.07 release, OpenWrt has made the "CT" variant its default for supporting (almost) all ath10k chips. [2] However, for this firmware the CT driver/firmware introduces a number of (potential) drawbacks: - CT memory consumption seems to be higher. (This still needs to be verified for the new kmod-ath10k-ct-smallbuffers variant.) This is particularly a problem on several ath10k devices with 64 MB RAM, where the devices run into OOM regularly (i.e. C60 v1/v2). [3] - Though CT has active support, it is still just a fork effectively maintained by one person. - With CT driver/firmware there are frequent reports that the combination of AP and 802.11s is not working. [4] While this issue couldn't be reproduced in recent tests, it still is explicitly not supported, and there is no interest to change that at the moment. [5] Due to these reasons, it seems more appropriate for us to use the mainline/QCA variant of ath10k driver and firmwares. This patch applies that to all affected devices. Note that currently the mainline driver also benefits from a local patch in OpenWrt that reduces the memory footprint. This patch has been removed in master, so we will need to keep it locally when using a 20.xx OpenWrt release. [6] [1] https://github.com/greearb/ath10k-ct.git [2] https://github.com/openwrt/openwrt/commit/61b5b4971e7d6aab6b0695997c3b5aaf73c53b5f [3] https://github.com/openwrt/openwrt/commit/1ac627024de916eb157659caf49f93fa89d3b19a [4] https://github.com/freifunk-berlin/firmware/issues/696 https://forum.openwrt.org/t/ath10k-ct-and-802-11s-mesh-not-working-on-archer-c7/13877 [5] https://github.com/openwrt/openwrt/pull/2341#issuecomment-580904873 [6] https://github.com/openwrt/openwrt/commit/1e27befe63ff4c69f110c7310316f4af75ee63e9 Signed-off-by: Adrian Schmutzler Reviewed-by: Fabian Bläse Tested-by: Fabian Bläse --- bsp/ar71xx/.config | 20 ++++++++++++++------ bsp/ipq806x/.config | 6 +++++- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/bsp/ar71xx/.config b/bsp/ar71xx/.config index 0b9a367..61aaa60 100644 --- a/bsp/ar71xx/.config +++ b/bsp/ar71xx/.config @@ -5,15 +5,15 @@ CONFIG_TARGET_ar71xx=y CONFIG_TARGET_ar71xx_tiny=y CONFIG_TARGET_MULTI_PROFILE=y CONFIG_TARGET_DEVICE_ar71xx_tiny_DEVICE_archer-c25-v1=y -CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_tiny_DEVICE_archer-c25-v1="" +CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_tiny_DEVICE_archer-c25-v1="-kmod-ath10k-ct kmod-ath10k -ath10k-firmware-qca9887-ct ath10k-firmware-qca9887" CONFIG_TARGET_DEVICE_ar71xx_tiny_DEVICE_archer-c60-v1=y -CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_tiny_DEVICE_archer-c60-v1="" +CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_tiny_DEVICE_archer-c60-v1="-kmod-ath10k-ct kmod-ath10k -ath10k-firmware-qca9888-ct ath10k-firmware-qca9888" CONFIG_TARGET_DEVICE_ar71xx_tiny_DEVICE_archer-c60-v2=y -CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_tiny_DEVICE_archer-c60-v2="" +CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_tiny_DEVICE_archer-c60-v2="-kmod-ath10k-ct kmod-ath10k -ath10k-firmware-qca9888-ct ath10k-firmware-qca9888" CONFIG_TARGET_DEVICE_ar71xx_tiny_DEVICE_archer-c7-v2=y -CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_tiny_DEVICE_archer-c7-v2="" +CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_tiny_DEVICE_archer-c7-v2="-kmod-ath10k-ct kmod-ath10k -ath10k-firmware-qca988x-ct ath10k-firmware-qca988x" CONFIG_TARGET_DEVICE_ar71xx_tiny_DEVICE_archer-c7-v5=y -CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_tiny_DEVICE_archer-c7-v5="" +CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_tiny_DEVICE_archer-c7-v5="-kmod-ath10k-ct kmod-ath10k -ath10k-firmware-qca988x-ct ath10k-firmware-qca988x" CONFIG_TARGET_DEVICE_ar71xx_tiny_DEVICE_cpe210-220-v1=y CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_tiny_DEVICE_cpe210-220-v1="-rssileds" CONFIG_TARGET_DEVICE_ar71xx_tiny_DEVICE_cpe210-v2=y @@ -79,7 +79,7 @@ CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_tiny_DEVICE_ubnt-nano-m="-rssileds" CONFIG_TARGET_DEVICE_ar71xx_tiny_DEVICE_ubnt-unifi=y CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_tiny_DEVICE_ubnt-unifi="" CONFIG_TARGET_DEVICE_ar71xx_tiny_DEVICE_ubnt-unifiac-lite=y -CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_tiny_DEVICE_ubnt-unifiac-lite="" +CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_tiny_DEVICE_ubnt-unifiac-lite="-kmod-ath10k-ct kmod-ath10k -ath10k-firmware-qca988x-ct ath10k-firmware-qca988x" CONFIG_BUSYBOX_CUSTOM=y CONFIG_TARGET_PER_DEVICE_ROOTFS=y # CONFIG_BUSYBOX_CONFIG_BRCTL is not set @@ -103,4 +103,12 @@ CONFIG_PACKAGE_iwinfo=m CONFIG_PACKAGE_libiwinfo=m CONFIG_PACKAGE_opkg=m CONFIG_PACKAGE_wpad-mini=m +CONFIG_PACKAGE_ath10k-firmware-qca9887=m +CONFIG_PACKAGE_ath10k-firmware-qca9888=m +CONFIG_PACKAGE_ath10k-firmware-qca988x=m +CONFIG_PACKAGE_kmod-ath10k=m +CONFIG_PACKAGE_ath10k-firmware-qca9887-ct=m +CONFIG_PACKAGE_ath10k-firmware-qca9888-ct=m +CONFIG_PACKAGE_ath10k-firmware-qca988x-ct=m +CONFIG_PACKAGE_kmod-ath10k-ct=m CONFIG_STRIP_KERNEL_EXPORTS=y diff --git a/bsp/ipq806x/.config b/bsp/ipq806x/.config index cb8074e..a02f76f 100644 --- a/bsp/ipq806x/.config +++ b/bsp/ipq806x/.config @@ -5,10 +5,14 @@ CONFIG_TARGET_ipq806x=y CONFIG_TARGET_ipq806x_generic=y CONFIG_TARGET_MULTI_PROFILE=y CONFIG_TARGET_DEVICE_ipq806x_generic_DEVICE_tplink_c2600=y -CONFIG_TARGET_DEVICE_PACKAGES_ipq806x_generic_DEVICE_tplink_c2600="" +CONFIG_TARGET_DEVICE_PACKAGES_ipq806x_generic_DEVICE_tplink_c2600="-ath10k-firmware-qca99x0-ct ath10k-firmware-qca99x0" CONFIG_TARGET_PER_DEVICE_ROOTFS=y CONFIG_BUSYBOX_CUSTOM=y CONFIG_CLEAN_IPKG=y CONFIG_PACKAGE_kmod-hwmon-core=m CONFIG_PACKAGE_opkg=m +CONFIG_PACKAGE_ath10k-firmware-qca99x0=m +CONFIG_PACKAGE_kmod-ath10k=y +CONFIG_PACKAGE_ath10k-firmware-qca99x0-ct=m +CONFIG_PACKAGE_kmod-ath10k-ct=m CONFIG_STRIP_KERNEL_EXPORTS=y