mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 23:42:43 +00:00
450b306e54
According to many bugreports [0][1][2] the default ath10k-ct kernel
module is unusable on devices with just 64 MiB RAM or with 128 MiB and
dual ath10k cards. The target boards boot but eventually oom-killer
starts to interfere with normal operation, so the current state is
effectively broken.
Since the two patches in question have a performance impact (and
possibly some other unexpected side-effects) a dedicated build variant
is added so that users of the low RAM devices can still benefit from all
the ath10k-ct advantages.
According to testing [3] results, the issue can be experienced even with
"a 256MB device with three radios". Measured performance impact of
implementing small buffers was lowering "the maximum 5 GHz throughput on
an IPQ40xx device without RPS/XPS optimizations from 494/432 Mbit/s for
TCP transfers (download/upload) to 438/343 Mbit/s"
The patches were apparently inspired by QSDK tweaks used by ODMs for the
affected devices.
[0] http://lists.infradead.org/pipermail/openwrt-devel/2019-December/020573.html
[1] https://github.com/openwrt/openwrt/pull/1077
[2] https://bugs.openwrt.org/index.php?do=details&task_id=2664
[3] https://github.com/freifunk-gluon/gluon/pull/1440#issue-195607701
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
[Remove double CONFIG_ATH10K-CT_LEDS entry]
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 1ac627024d
)
122 lines
3.4 KiB
Makefile
122 lines
3.4 KiB
Makefile
include $(TOPDIR)/rules.mk
|
|
|
|
PKG_NAME:=ath10k-ct
|
|
PKG_RELEASE=1
|
|
|
|
PKG_LICENSE:=GPLv2
|
|
PKG_LICENSE_FILES:=
|
|
|
|
PKG_SOURCE_URL:=https://github.com/greearb/ath10k-ct.git
|
|
PKG_SOURCE_PROTO:=git
|
|
PKG_SOURCE_DATE:=2019-09-09
|
|
PKG_SOURCE_VERSION:=5e8cd86f90dac966d12df6ece84ac41458d0e95f
|
|
PKG_MIRROR_HASH:=dc1097f3a7b4b7e346918f206746d00a0b7df07ae3be9b89be55dfaef3cbbe45
|
|
|
|
# Build the 4.19 ath10k-ct driver version. Other options are "-4.16", or
|
|
# leave un-defined for 4.7 kernel. Probably this should match as closely as
|
|
# possible to whatever mac80211 backports version is being used.
|
|
CT_KVER="-4.19"
|
|
|
|
PKG_MAINTAINER:=Ben Greear <greearb@candelatech.com>
|
|
PKG_BUILD_PARALLEL:=1
|
|
PKG_EXTMOD_SUBDIRS:=ath10k$(CT_KVER)
|
|
|
|
STAMP_CONFIGURED_DEPENDS := $(STAGING_DIR)/usr/include/mac80211-backport/backport/autoconf.h
|
|
|
|
include $(INCLUDE_DIR)/kernel.mk
|
|
include $(INCLUDE_DIR)/package.mk
|
|
|
|
define KernelPackage/ath10k-ct
|
|
SUBMENU:=Wireless Drivers
|
|
TITLE:=ath10k-ct driver optimized for CT ath10k firmware
|
|
DEPENDS:=+kmod-mac80211 +kmod-ath +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT +@DRIVER_11W_SUPPORT @PCI_SUPPORT +kmod-hwmon-core
|
|
FILES:=\
|
|
$(PKG_BUILD_DIR)/ath10k$(CT_KVER)/ath10k_pci.ko \
|
|
$(PKG_BUILD_DIR)/ath10k$(CT_KVER)/ath10k_core.ko
|
|
AUTOLOAD:=$(call AutoProbe,ath10k_pci)
|
|
PROVIDES:=kmod-ath10k
|
|
VARIANT:=regular
|
|
endef
|
|
|
|
define KernelPackage/ath10k-ct/config
|
|
|
|
config ATH10K-CT_LEDS
|
|
bool "Enable LED support"
|
|
default y
|
|
depends on PACKAGE_kmod-ath10k-ct || PACKAGE_kmod-ath10k-ct-smallbuffers
|
|
endef
|
|
|
|
define KernelPackage/ath10k-ct-smallbuffers
|
|
$(call KernelPackage/ath10k-ct)
|
|
TITLE+= (small buffers for low-RAM devices)
|
|
VARIANT:=smallbuffers
|
|
endef
|
|
|
|
NOSTDINC_FLAGS = \
|
|
-I$(PKG_BUILD_DIR) \
|
|
-I$(STAGING_DIR)/usr/include/mac80211-backport/uapi \
|
|
-I$(STAGING_DIR)/usr/include/mac80211-backport \
|
|
-I$(STAGING_DIR)/usr/include/mac80211/uapi \
|
|
-I$(STAGING_DIR)/usr/include/mac80211 \
|
|
-include backport/autoconf.h \
|
|
-include backport/backport.h
|
|
|
|
ifdef CONFIG_PACKAGE_MAC80211_MESH
|
|
NOSTDINC_FLAGS += -DCONFIG_MAC80211_MESH
|
|
endif
|
|
|
|
CT_MAKEDEFS += CONFIG_ATH10K=m CONFIG_ATH10K_PCI=m CONFIG_ATH10K_CE=y
|
|
|
|
# This AHB logic is needed for IPQ4019 radios
|
|
CT_MAKEDEFS += CONFIG_ATH10K_AHB=m
|
|
NOSTDINC_FLAGS += -DCONFIG_ATH10K_AHB
|
|
|
|
NOSTDINC_FLAGS += -DSTANDALONE_CT
|
|
|
|
ifdef CONFIG_PACKAGE_MAC80211_DEBUGFS
|
|
CT_MAKEDEFS += CONFIG_ATH10K_DEBUGFS=y CONFIG_MAC80211_DEBUGFS=y
|
|
NOSTDINC_FLAGS += -DCONFIG_MAC80211_DEBUGFS
|
|
NOSTDINC_FLAGS += -DCONFIG_ATH10K_DEBUGFS
|
|
endif
|
|
|
|
ifdef CONFIG_PACKAGE_ATH_DEBUG
|
|
NOSTDINC_FLAGS += -DCONFIG_ATH10K_DEBUG
|
|
endif
|
|
|
|
ifdef CONFIG_PACKAGE_ATH_DFS
|
|
NOSTDINC_FLAGS += -DCONFIG_ATH10K_DFS_CERTIFIED
|
|
endif
|
|
|
|
ifdef CONFIG_PACKAGE_ATH_SPECTRAL
|
|
CT_MAKEDEFS += CONFIG_ATH10K_SPECTRAL=y
|
|
NOSTDINC_FLAGS += -DCONFIG_ATH10K_SPECTRAL
|
|
endif
|
|
|
|
ifeq ($(CONFIG_ATH10K-CT_LEDS),y)
|
|
CT_MAKEDEFS += CONFIG_ATH10K_LEDS=y
|
|
NOSTDINC_FLAGS += -DCONFIG_ATH10K_LEDS
|
|
endif
|
|
|
|
ifeq ($(BUILD_VARIANT),smallbuffers)
|
|
NOSTDINC_FLAGS += -DCONFIG_ATH10K_SMALLBUFFERS
|
|
endif
|
|
|
|
define Build/Configure
|
|
cp $(STAGING_DIR)/usr/include/mac80211/ath/*.h $(PKG_BUILD_DIR)
|
|
endef
|
|
|
|
ifneq ($(findstring c,$(OPENWRT_VERBOSE)),)
|
|
CT_MAKEDEFS += V=1
|
|
endif
|
|
|
|
define Build/Compile
|
|
+$(MAKE) $(CT_MAKEDEFS) $(PKG_JOBS) -C "$(LINUX_DIR)" \
|
|
$(KERNEL_MAKE_FLAGS) \
|
|
SUBDIRS="$(PKG_BUILD_DIR)/ath10k$(CT_KVER)" \
|
|
NOSTDINC_FLAGS="$(NOSTDINC_FLAGS)" \
|
|
modules
|
|
endef
|
|
|
|
$(eval $(call KernelPackage,ath10k-ct))
|
|
$(eval $(call KernelPackage,ath10k-ct-smallbuffers))
|