From cc189c0b7fa015978b04bb663a75b1da726376b5 Mon Sep 17 00:00:00 2001 From: Christian Lamparter Date: Mon, 14 Nov 2016 04:57:38 +0100 Subject: [PATCH] mac80211: enable ath10k AHB support for QCA4019 This patch enables the ATH10K_AHB support for the QCA4019 devices on the AHB bus. This patch also removes 936-ath10k_skip_otp_check.patch because it breaks the AHB device identification. "Patch is wrong. I find it frustrating OpenWRT/LEDE doesn't try to work with upstream on ixing these things right." [1] It also limits ath10k memory hunger (This is a problem with 128MiB RAM) Signed-off-by: Christian Lamparter --- package/kernel/mac80211/Makefile | 1 + .../patches/936-ath10k_skip_otp_check.patch | 51 ------------------- ...0-0010-ath10k-limit-htt-rx-ring-size.patch | 11 ++++ ...60-0011-ath10k-limit-pci-buffer-size.patch | 38 ++++++++++++++ 4 files changed, 50 insertions(+), 51 deletions(-) delete mode 100644 package/kernel/mac80211/patches/936-ath10k_skip_otp_check.patch create mode 100644 package/kernel/mac80211/patches/960-0010-ath10k-limit-htt-rx-ring-size.patch create mode 100644 package/kernel/mac80211/patches/960-0011-ath10k-limit-pci-buffer-size.patch diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile index 7d7065d4ecaa..679ea183d1d2 100644 --- a/package/kernel/mac80211/Makefile +++ b/package/kernel/mac80211/Makefile @@ -1519,6 +1519,7 @@ config-$(CONFIG_PACKAGE_ATH_DFS) += ATH9K_DFS_CERTIFIED ATH10K_DFS_CERTIFIED config-$(call config_package,ath9k) += ATH9K config-$(call config_package,ath9k-common) += ATH9K_COMMON config-$(CONFIG_TARGET_ar71xx) += ATH9K_AHB +config-$(CONFIG_TARGET_ipq806x) += ATH10K_AHB config-$(CONFIG_PCI) += ATH9K_PCI config-$(CONFIG_ATH_USER_REGD) += ATH_USER_REGD config-$(CONFIG_ATH9K_SUPPORT_PCOEM) += ATH9K_PCOEM diff --git a/package/kernel/mac80211/patches/936-ath10k_skip_otp_check.patch b/package/kernel/mac80211/patches/936-ath10k_skip_otp_check.patch deleted file mode 100644 index 057995c55acf..000000000000 --- a/package/kernel/mac80211/patches/936-ath10k_skip_otp_check.patch +++ /dev/null @@ -1,51 +0,0 @@ ---- a/drivers/net/wireless/ath/ath10k/core.c -+++ b/drivers/net/wireless/ath/ath10k/core.c -@@ -1362,9 +1362,6 @@ static int ath10k_core_fetch_firmware_fi - { - int ret; - -- /* calibration file is optional, don't check for any errors */ -- ath10k_fetch_cal_file(ar); -- - ar->fw_api = 5; - ath10k_dbg(ar, ATH10K_DBG_BOOT, "trying fw api %d\n", ar->fw_api); - -@@ -2149,7 +2146,7 @@ EXPORT_SYMBOL(ath10k_core_stop); - static int ath10k_core_probe_fw(struct ath10k *ar) - { - struct bmi_target_info target_info; -- int ret = 0; -+ int calret, ret = 0; - - ret = ath10k_hif_power_up(ar); - if (ret) { -@@ -2173,6 +2170,9 @@ static int ath10k_core_probe_fw(struct a - goto err_power_down; - } - -+ /* calibration file is optional, don't check for any errors */ -+ calret = ath10k_fetch_cal_file(ar); -+ - ret = ath10k_core_fetch_firmware_files(ar); - if (ret) { - ath10k_err(ar, "could not fetch firmware files (%d)\n", ret); -@@ -2195,11 +2195,14 @@ static int ath10k_core_probe_fw(struct a - "could not load pre cal data: %d\n", ret); - } - -- ret = ath10k_core_get_board_id_from_otp(ar); -- if (ret && ret != -EOPNOTSUPP) { -- ath10k_err(ar, "failed to get board id from otp: %d\n", -- ret); -- goto err_free_firmware_files; -+ /* otp and board file not needed if calibration data is present */ -+ if (calret) { -+ ret = ath10k_core_get_board_id_from_otp(ar); -+ if (ret && ret != -EOPNOTSUPP) { -+ ath10k_err(ar, "failed to get board id from otp: %d\n", -+ ret); -+ goto err_free_firmware_files; -+ } - } - - ret = ath10k_core_check_smbios(ar); diff --git a/package/kernel/mac80211/patches/960-0010-ath10k-limit-htt-rx-ring-size.patch b/package/kernel/mac80211/patches/960-0010-ath10k-limit-htt-rx-ring-size.patch new file mode 100644 index 000000000000..e36f13b19525 --- /dev/null +++ b/package/kernel/mac80211/patches/960-0010-ath10k-limit-htt-rx-ring-size.patch @@ -0,0 +1,11 @@ +--- a/drivers/net/wireless/ath/ath10k/htt.h 2016-12-12 16:03:58.491019030 +0100 ++++ b/drivers/net/wireless/ath/ath10k/htt.h 2016-12-12 15:39:45.242298155 +0100 +@@ -199,7 +199,7 @@ enum htt_rx_ring_flags { + }; + + #define HTT_RX_RING_SIZE_MIN 128 ++#define HTT_RX_RING_SIZE_MAX 512 +-#define HTT_RX_RING_SIZE_MAX 2048 + + struct htt_rx_ring_setup_ring { + __le32 fw_idx_shadow_reg_paddr; diff --git a/package/kernel/mac80211/patches/960-0011-ath10k-limit-pci-buffer-size.patch b/package/kernel/mac80211/patches/960-0011-ath10k-limit-pci-buffer-size.patch new file mode 100644 index 000000000000..0bdddaeef82d --- /dev/null +++ b/package/kernel/mac80211/patches/960-0011-ath10k-limit-pci-buffer-size.patch @@ -0,0 +1,38 @@ +--- a/drivers/net/wireless/ath/ath10k/pci.c 2016-12-12 16:29:42.310053558 +0100 ++++ b/drivers/net/wireless/ath/ath10k/pci.c 2016-12-12 16:34:46.667203800 +0100 +@@ -127,7 +127,7 @@ static struct ce_attr host_ce_config_wla + .flags = CE_ATTR_FLAGS, + .src_nentries = 0, + .src_sz_max = 2048, +- .dest_nentries = 512, ++ .dest_nentries = 128, + .recv_cb = ath10k_pci_htt_htc_rx_cb, + }, + +@@ -136,7 +136,7 @@ static struct ce_attr host_ce_config_wla + .flags = CE_ATTR_FLAGS, + .src_nentries = 0, + .src_sz_max = 2048, +- .dest_nentries = 128, ++ .dest_nentries = 64, + .recv_cb = ath10k_pci_htc_rx_cb, + }, + +@@ -163,7 +163,7 @@ static struct ce_attr host_ce_config_wla + .flags = CE_ATTR_FLAGS, + .src_nentries = 0, + .src_sz_max = 512, +- .dest_nentries = 512, ++ .dest_nentries = 128, + .recv_cb = ath10k_pci_htt_rx_cb, + }, + +@@ -188,7 +188,7 @@ static struct ce_attr host_ce_config_wla + .flags = CE_ATTR_FLAGS, + .src_nentries = 0, + .src_sz_max = 2048, +- .dest_nentries = 128, ++ .dest_nentries = 96, + .recv_cb = ath10k_pci_pktlog_rx_cb, + }, + -- 2.30.2