From b6721577b9080f0bb3b624ac6452505d4795908c Mon Sep 17 00:00:00 2001 From: coolsnowwolf Date: Thu, 21 Mar 2019 14:14:39 +0800 Subject: [PATCH] ath10k-ct: update version --- package/kernel/ath10k-ct/Makefile | 8 +- .../081-ath10k-calibration-variant.patch | 6 +- .../ath10k-ct/patches/100-kernel_compat.patch | 4 +- ...-IEs-for-variant-before-falling-back.patch | 16 ++-- ...rt-for-configuring-management-packet.patch | 89 +++++++++++++++++++ ...ble-out-of-bound-access-of-ath10k_ra.patch | 66 ++++++++++++++ ...rect-multicast-broadcast-rate-settin.patch | 43 +++++++++ ...64-ath10k-commit-rates-from-mac80211.patch | 37 ++++++++ ...rolling-support-for-various-chipsets.patch | 50 +++++------ ...h10k-4.16-use-tpt-trigger-by-default.patch | 8 +- ...ilable-channels-via-DT-ieee80211-fre.patch | 39 ++++++++ 11 files changed, 320 insertions(+), 46 deletions(-) create mode 100644 package/kernel/ath10k-ct/patches/161-ath10k-add-support-for-configuring-management-packet.patch create mode 100644 package/kernel/ath10k-ct/patches/162-ath10k-fix-possible-out-of-bound-access-of-ath10k_ra.patch create mode 100644 package/kernel/ath10k-ct/patches/163-ath10k-fix-incorrect-multicast-broadcast-rate-settin.patch create mode 100644 package/kernel/ath10k-ct/patches/164-ath10k-commit-rates-from-mac80211.patch create mode 100644 package/kernel/ath10k-ct/patches/203-ath10k-Limit-available-channels-via-DT-ieee80211-fre.patch diff --git a/package/kernel/ath10k-ct/Makefile b/package/kernel/ath10k-ct/Makefile index 67e2a5a2e..0f8b9a6bd 100644 --- a/package/kernel/ath10k-ct/Makefile +++ b/package/kernel/ath10k-ct/Makefile @@ -1,16 +1,16 @@ include $(TOPDIR)/rules.mk PKG_NAME:=ath10k-ct -PKG_RELEASE=1 +PKG_RELEASE=3 PKG_LICENSE:=GPLv2 PKG_LICENSE_FILES:= PKG_SOURCE_URL:=https://github.com/greearb/ath10k-ct.git PKG_SOURCE_PROTO:=git -PKG_SOURCE_DATE:=2018-12-20 -PKG_SOURCE_VERSION:=118e16da8e82f2e028654f86e47f4c8e5bddccc8 -PKG_MIRROR_HASH:=f84616d5c6c3f6c0aded40b821d9b54fd88b78737f534b37a6ed0c51db16ed06 +PKG_SOURCE_DATE:=2019-02-28 +PKG_SOURCE_VERSION:=9360f389234a58f742c6cb3f8eea5a419c7523f6 +PKG_MIRROR_HASH:=7fa9ec0e298767b6dfaa9486e5f316cd03af82fc9d45066dbd80fca32a06b41f # 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 diff --git a/package/kernel/ath10k-ct/patches/081-ath10k-calibration-variant.patch b/package/kernel/ath10k-ct/patches/081-ath10k-calibration-variant.patch index 1752bf8c9..987a7d79e 100644 --- a/package/kernel/ath10k-ct/patches/081-ath10k-calibration-variant.patch +++ b/package/kernel/ath10k-ct/patches/081-ath10k-calibration-variant.patch @@ -43,7 +43,7 @@ Origin: upstream, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux --- a/ath10k-4.13/core.c +++ b/ath10k-4.13/core.c -@@ -891,6 +891,28 @@ static int ath10k_core_check_smbios(stru +@@ -893,6 +893,28 @@ static int ath10k_core_check_smbios(stru return 0; } @@ -72,7 +72,7 @@ Origin: upstream, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux static int ath10k_download_and_run_otp(struct ath10k *ar) { u32 result, address = ar->hw_params.patch_load_addr; -@@ -1530,19 +1552,19 @@ static int ath10k_core_create_board_name +@@ -1532,19 +1554,19 @@ static int ath10k_core_create_board_name /* strlen(',variant=') + strlen(ar->id.bdf_ext) */ char variant[9 + ATH10K_SMBIOS_BDF_EXT_STR_LENGTH] = { 0 }; @@ -98,7 +98,7 @@ Origin: upstream, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux scnprintf(name, name_len, "bus=%s,vendor=%04x,device=%04x,subsystem-vendor=%04x,subsystem-device=%04x%s", ath10k_bus_str(ar->hif.bus), -@@ -2975,7 +2997,11 @@ static int ath10k_core_probe_fw(struct a +@@ -2977,7 +2999,11 @@ static int ath10k_core_probe_fw(struct a ret = ath10k_core_check_smbios(ar); if (ret) diff --git a/package/kernel/ath10k-ct/patches/100-kernel_compat.patch b/package/kernel/ath10k-ct/patches/100-kernel_compat.patch index 594a63e36..6de451d95 100644 --- a/package/kernel/ath10k-ct/patches/100-kernel_compat.patch +++ b/package/kernel/ath10k-ct/patches/100-kernel_compat.patch @@ -97,7 +97,7 @@ ATH10K_DFS_STAT_INC(ar, pulses_total); --- a/ath10k-4.13/wmi.c +++ b/ath10k-4.13/wmi.c -@@ -4031,7 +4031,7 @@ static void ath10k_dfs_radar_report(stru +@@ -4030,7 +4030,7 @@ static void ath10k_dfs_radar_report(stru ATH10K_DFS_STAT_INC(ar, pulses_detected); @@ -108,7 +108,7 @@ return; --- a/ath10k-4.16/wmi.c +++ b/ath10k-4.16/wmi.c -@@ -4065,7 +4065,7 @@ static void ath10k_dfs_radar_report(stru +@@ -4064,7 +4064,7 @@ static void ath10k_dfs_radar_report(stru ATH10K_DFS_STAT_INC(ar, pulses_detected); diff --git a/package/kernel/ath10k-ct/patches/160-ath10k-search-all-IEs-for-variant-before-falling-back.patch b/package/kernel/ath10k-ct/patches/160-ath10k-search-all-IEs-for-variant-before-falling-back.patch index cb7aec06f..880d6626e 100644 --- a/package/kernel/ath10k-ct/patches/160-ath10k-search-all-IEs-for-variant-before-falling-back.patch +++ b/package/kernel/ath10k-ct/patches/160-ath10k-search-all-IEs-for-variant-before-falling-back.patch @@ -50,7 +50,7 @@ Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux --- a/ath10k-4.13/core.c +++ b/ath10k-4.13/core.c -@@ -1427,14 +1427,61 @@ out: +@@ -1429,14 +1429,61 @@ out: return ret; } @@ -115,7 +115,7 @@ Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux ar->normal_mode_fw.board = ath10k_fetch_fw_file(ar, ar->hw_params.fw.dir, -@@ -1472,73 +1519,28 @@ static int ath10k_core_fetch_board_data_ +@@ -1474,73 +1521,28 @@ static int ath10k_core_fetch_board_data_ data += magic_len; len -= magic_len; @@ -198,7 +198,7 @@ Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux return 0; err: -@@ -1547,12 +1549,12 @@ err: +@@ -1549,12 +1551,12 @@ err: } static int ath10k_core_create_board_name(struct ath10k *ar, char *name, @@ -213,7 +213,7 @@ Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux scnprintf(variant, sizeof(variant), ",variant=%s", ar->id.bdf_ext); -@@ -1578,21 +1580,31 @@ out: +@@ -1580,21 +1582,31 @@ out: static int ath10k_core_fetch_board_file(struct ath10k *ar) { @@ -249,7 +249,7 @@ Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux goto success; --- a/ath10k-4.16/core.c +++ b/ath10k-4.16/core.c -@@ -1560,14 +1560,61 @@ out: +@@ -1561,14 +1561,61 @@ out: return ret; } @@ -314,7 +314,7 @@ Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux ar->normal_mode_fw.board = ath10k_fetch_fw_file(ar, ar->hw_params.fw.dir, -@@ -1605,73 +1652,28 @@ static int ath10k_core_fetch_board_data_ +@@ -1606,73 +1653,28 @@ static int ath10k_core_fetch_board_data_ data += magic_len; len -= magic_len; @@ -397,7 +397,7 @@ Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux return 0; err: -@@ -1680,12 +1682,12 @@ err: +@@ -1681,12 +1683,12 @@ err: } static int ath10k_core_create_board_name(struct ath10k *ar, char *name, @@ -412,7 +412,7 @@ Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux scnprintf(variant, sizeof(variant), ",variant=%s", ar->id.bdf_ext); -@@ -1711,21 +1713,31 @@ out: +@@ -1712,21 +1714,31 @@ out: static int ath10k_core_fetch_board_file(struct ath10k *ar) { diff --git a/package/kernel/ath10k-ct/patches/161-ath10k-add-support-for-configuring-management-packet.patch b/package/kernel/ath10k-ct/patches/161-ath10k-add-support-for-configuring-management-packet.patch new file mode 100644 index 000000000..7c59d14ff --- /dev/null +++ b/package/kernel/ath10k-ct/patches/161-ath10k-add-support-for-configuring-management-packet.patch @@ -0,0 +1,89 @@ +From: Sriram R +Date: Mon, 10 Sep 2018 11:09:40 +0530 +Subject: [PATCH] ath10k: add support for configuring management packet rate + +By default the firmware uses 1Mbps and 6Mbps rate for management packets +in 2G and 5G bands respectively. But when the user selects different +basic rates from the userspace, we need to send the management +packets at the lowest basic rate selected by the user. + +This change makes use of WMI_VDEV_PARAM_MGMT_RATE param for configuring the +management packets rate to the firmware. + +Chipsets Tested : QCA988X, QCA9887, QCA9984 +FW Tested : 10.2.4-1.0-41, 10.4-3.6.104 + +Signed-off-by: Sriram R +Signed-off-by: Kalle Valo + +Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f279294e9ee22a8f306fdc8e4181cf555e6f0f70 +--- +--- a/ath10k-4.19/mac.c ++++ b/ath10k-4.19/mac.c +@@ -157,6 +157,22 @@ u8 ath10k_mac_bitrate_to_idx(const struc + return 0; + } + ++static int ath10k_mac_get_rate_hw_value(int bitrate) ++{ ++ int i; ++ u8 hw_value_prefix = 0; ++ ++ if (ath10k_mac_bitrate_is_cck(bitrate)) ++ hw_value_prefix = WMI_RATE_PREAMBLE_CCK << 6; ++ ++ for (i = 0; i < sizeof(ath10k_rates); i++) { ++ if (ath10k_rates[i].bitrate == bitrate) ++ return hw_value_prefix | ath10k_rates[i].hw_value; ++ } ++ ++ return -EINVAL; ++} ++ + static int ath10k_mac_get_max_vht_mcs_map(u16 mcs_map, int nss) + { + switch ((mcs_map >> (2 * nss)) & 0x3) { +@@ -6262,9 +6278,10 @@ static void ath10k_bss_info_changed(stru + struct cfg80211_chan_def def; + u32 vdev_param, pdev_param, slottime, preamble; + u16 bitrate, hw_value; +- u8 rate; +- int rateidx, ret = 0; ++ u8 rate, basic_rate_idx; ++ int rateidx, ret = 0, hw_rate_code; + enum nl80211_band band; ++ const struct ieee80211_supported_band *sband; + + mutex_lock(&ar->conf_mutex); + +@@ -6470,6 +6487,30 @@ static void ath10k_bss_info_changed(stru + arvif->vdev_id, ret); + } + ++ if (changed & BSS_CHANGED_BASIC_RATES) { ++ if (WARN_ON(ath10k_mac_vif_chan(vif, &def))) { ++ mutex_unlock(&ar->conf_mutex); ++ return; ++ } ++ ++ sband = ar->hw->wiphy->bands[def.chan->band]; ++ basic_rate_idx = ffs(vif->bss_conf.basic_rates) - 1; ++ bitrate = sband->bitrates[basic_rate_idx].bitrate; ++ ++ hw_rate_code = ath10k_mac_get_rate_hw_value(bitrate); ++ if (hw_rate_code < 0) { ++ ath10k_warn(ar, "bitrate not supported %d\n", bitrate); ++ mutex_unlock(&ar->conf_mutex); ++ return; ++ } ++ ++ vdev_param = ar->wmi.vdev_param->mgmt_rate; ++ ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, ++ hw_rate_code); ++ if (ret) ++ ath10k_warn(ar, "failed to set mgmt tx rate %d\n", ret); ++ } ++ + mutex_unlock(&ar->conf_mutex); + } + diff --git a/package/kernel/ath10k-ct/patches/162-ath10k-fix-possible-out-of-bound-access-of-ath10k_ra.patch b/package/kernel/ath10k-ct/patches/162-ath10k-fix-possible-out-of-bound-access-of-ath10k_ra.patch new file mode 100644 index 000000000..5eba4f354 --- /dev/null +++ b/package/kernel/ath10k-ct/patches/162-ath10k-fix-possible-out-of-bound-access-of-ath10k_ra.patch @@ -0,0 +1,66 @@ +From: Sriram R +Date: Wed, 3 Oct 2018 08:43:50 +0530 +Subject: [PATCH] ath10k: fix possible out of bound access of ath10k_rates array + +While using 'ath10k_mac_get_rate_hw_value()' to obtain the hw value +from the passed bitrate, there is a chance of out of bound array access +when wrong bitrate is passed. This is fixed by comparing the bitrates +within the correct size of the ath10k_rates array. + +Fixes commit f279294e9ee2 ("ath10k: add support for configuring management +packet rate"). Also correction made to some indents used in the above commit. + +Signed-off-by: Sriram R +Signed-off-by: Kalle Valo + +Origin: backport, https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=34e141eea7dd8525dd1ef7a925459e455b4d307f +--- +--- a/ath10k-4.19/mac.c ++++ b/ath10k-4.19/mac.c +@@ -165,7 +165,7 @@ static int ath10k_mac_get_rate_hw_value( + if (ath10k_mac_bitrate_is_cck(bitrate)) + hw_value_prefix = WMI_RATE_PREAMBLE_CCK << 6; + +- for (i = 0; i < sizeof(ath10k_rates); i++) { ++ for (i = 0; i < ARRAY_SIZE(ath10k_rates); i++) { + if (ath10k_rates[i].bitrate == bitrate) + return hw_value_prefix | ath10k_rates[i].hw_value; + } +@@ -6493,22 +6493,22 @@ static void ath10k_bss_info_changed(stru + return; + } + +- sband = ar->hw->wiphy->bands[def.chan->band]; +- basic_rate_idx = ffs(vif->bss_conf.basic_rates) - 1; +- bitrate = sband->bitrates[basic_rate_idx].bitrate; +- +- hw_rate_code = ath10k_mac_get_rate_hw_value(bitrate); +- if (hw_rate_code < 0) { +- ath10k_warn(ar, "bitrate not supported %d\n", bitrate); +- mutex_unlock(&ar->conf_mutex); +- return; +- } ++ sband = ar->hw->wiphy->bands[def.chan->band]; ++ basic_rate_idx = ffs(vif->bss_conf.basic_rates) - 1; ++ bitrate = sband->bitrates[basic_rate_idx].bitrate; ++ ++ hw_rate_code = ath10k_mac_get_rate_hw_value(bitrate); ++ if (hw_rate_code < 0) { ++ ath10k_warn(ar, "bitrate not supported %d\n", bitrate); ++ mutex_unlock(&ar->conf_mutex); ++ return; ++ } + +- vdev_param = ar->wmi.vdev_param->mgmt_rate; +- ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, +- hw_rate_code); +- if (ret) +- ath10k_warn(ar, "failed to set mgmt tx rate %d\n", ret); ++ vdev_param = ar->wmi.vdev_param->mgmt_rate; ++ ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, ++ hw_rate_code); ++ if (ret) ++ ath10k_warn(ar, "failed to set mgmt tx rate %d\n", ret); + } + + mutex_unlock(&ar->conf_mutex); diff --git a/package/kernel/ath10k-ct/patches/163-ath10k-fix-incorrect-multicast-broadcast-rate-settin.patch b/package/kernel/ath10k-ct/patches/163-ath10k-fix-incorrect-multicast-broadcast-rate-settin.patch new file mode 100644 index 000000000..ade1eb2d7 --- /dev/null +++ b/package/kernel/ath10k-ct/patches/163-ath10k-fix-incorrect-multicast-broadcast-rate-settin.patch @@ -0,0 +1,43 @@ +From: Pradeep kumar Chitrapu +Date: Mon, 10 Dec 2018 20:56:11 -0800 +Subject: ath10k: fix incorrect multicast/broadcast rate setting + +Invalid rate code is sent to firmware when multicast rate value of 0 is +sent to driver indicating disabled case, causing broken mesh path. +so fix that. + +Tested on QCA9984 with firmware 10.4-3.6.1-00827 + +Fixes: cd93b83ad92 ("ath10k: support for multicast rate control") +Co-developed-by: Zhi Chen +Signed-off-by: Zhi Chen +Signed-off-by: Pradeep Kumar Chitrapu + +Origin: other, https://patchwork.kernel.org/patch/10723033/ + +--- a/ath10k-4.19/mac.c ++++ b/ath10k-4.19/mac.c +@@ -6278,8 +6278,8 @@ static void ath10k_bss_info_changed(stru + struct cfg80211_chan_def def; + u32 vdev_param, pdev_param, slottime, preamble; + u16 bitrate, hw_value; +- u8 rate, basic_rate_idx; +- int rateidx, ret = 0, hw_rate_code; ++ u8 rate, basic_rate_idx, rateidx; ++ int ret = 0, hw_rate_code, mcast_rate; + enum nl80211_band band; + const struct ieee80211_supported_band *sband; + +@@ -6452,7 +6452,11 @@ static void ath10k_bss_info_changed(stru + if (changed & BSS_CHANGED_MCAST_RATE && + !WARN_ON(ath10k_mac_vif_chan(arvif->vif, &def))) { + band = def.chan->band; +- rateidx = vif->bss_conf.mcast_rate[band] - 1; ++ mcast_rate = vif->bss_conf.mcast_rate[band]; ++ if (mcast_rate > 0) ++ rateidx = mcast_rate - 1; ++ else ++ rateidx = ffs(vif->bss_conf.basic_rates) - 1; + + if (ar->phy_capability & WHAL_WLAN_11A_CAPABILITY) + rateidx += ATH10K_MAC_FIRST_OFDM_RATE_IDX; diff --git a/package/kernel/ath10k-ct/patches/164-ath10k-commit-rates-from-mac80211.patch b/package/kernel/ath10k-ct/patches/164-ath10k-commit-rates-from-mac80211.patch new file mode 100644 index 000000000..43f5591bb --- /dev/null +++ b/package/kernel/ath10k-ct/patches/164-ath10k-commit-rates-from-mac80211.patch @@ -0,0 +1,37 @@ +From: Sven Eckelmann +Date: Tue, 26 Feb 2019 08:06:35 +0100 +Subject: ath10k-ct: apply mac80211 rates to ath10k-ct rate state + +The rates from mac80211 have to be copied to the state of ath10k-ct or +otherwise the ath10k_check_apply_special_rates function overwrites +them again with some default values. This breaks for example the +mcast_rate set for a wifi-iface. + +Signed-off-by: Sven Eckelmann + +--- a/ath10k-4.19/mac.c ++++ b/ath10k-4.19/mac.c +@@ -6474,6 +6474,7 @@ static void ath10k_bss_info_changed(stru + "mac vdev %d mcast_rate %x\n", + arvif->vdev_id, rate); + ++ arvif->mcast_rate[band] = rate; + vdev_param = ar->wmi.vdev_param->mcast_data_rate; + ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, + vdev_param, rate); +@@ -6482,6 +6483,7 @@ static void ath10k_bss_info_changed(stru + "failed to set mcast rate on vdev %i: %d\n", + arvif->vdev_id, ret); + ++ arvif->bcast_rate[band] = rate; + vdev_param = ar->wmi.vdev_param->bcast_data_rate; + ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, + vdev_param, rate); +@@ -6508,6 +6510,7 @@ static void ath10k_bss_info_changed(stru + return; + } + ++ arvif->mgt_rate[def.chan->band] = hw_rate_code; + vdev_param = ar->wmi.vdev_param->mgmt_rate; + ret = ath10k_wmi_vdev_set_param(ar, arvif->vdev_id, vdev_param, + hw_rate_code); diff --git a/package/kernel/ath10k-ct/patches/201-ath10k-4.16_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch b/package/kernel/ath10k-ct/patches/201-ath10k-4.16_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch index 0be3ffdcf..06444f09c 100644 --- a/package/kernel/ath10k-ct/patches/201-ath10k-4.16_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch +++ b/package/kernel/ath10k-ct/patches/201-ath10k-4.16_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch @@ -161,7 +161,7 @@ v13: .patch_load_addr = QCA9888_HW_2_0_PATCH_LOAD_ADDR, .uart_pin = 7, .cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH, -@@ -3040,6 +3046,10 @@ int ath10k_core_start(struct ath10k *ar, +@@ -3041,6 +3047,10 @@ int ath10k_core_start(struct ath10k *ar, ar->eeprom_overrides.rc_txbf_probe); } @@ -172,7 +172,7 @@ v13: return 0; err_hif_stop: -@@ -3286,9 +3296,18 @@ static void ath10k_core_register_work(st +@@ -3287,9 +3297,18 @@ static void ath10k_core_register_work(st goto err_spectral_destroy; } @@ -191,7 +191,7 @@ v13: err_spectral_destroy: ath10k_spectral_destroy(ar); err_debug_destroy: -@@ -3346,6 +3365,8 @@ void ath10k_core_unregister(struct ath10 +@@ -3347,6 +3366,8 @@ void ath10k_core_unregister(struct ath10 if (!test_bit(ATH10K_FLAG_CORE_REGISTERED, &ar->dev_flags)) return; @@ -210,7 +210,7 @@ v13: #include "htt.h" #include "htc.h" -@@ -1245,6 +1246,13 @@ struct ath10k { +@@ -1251,6 +1252,13 @@ struct ath10k { } testmode; struct { @@ -406,7 +406,7 @@ v13: }; int ath10k_wmi_cmd_send(struct ath10k *ar, struct sk_buff *skb, u32 cmd_id); -@@ -975,6 +978,35 @@ ath10k_wmi_force_fw_hang(struct ath10k * +@@ -983,6 +986,35 @@ ath10k_wmi_force_fw_hang(struct ath10k * return ath10k_wmi_cmd_send(ar, skb, ar->wmi.cmd->force_fw_hang_cmdid); } @@ -455,7 +455,7 @@ v13: static const struct wmi_peer_flags_map wmi_tlv_peer_flags_map = { --- a/ath10k-4.16/wmi.c +++ b/ath10k-4.16/wmi.c -@@ -7325,6 +7325,49 @@ ath10k_wmi_op_gen_peer_set_param(struct +@@ -7362,6 +7362,49 @@ ath10k_wmi_op_gen_peer_set_param(struct return skb; } @@ -505,7 +505,7 @@ v13: static struct sk_buff * ath10k_wmi_op_gen_set_psmode(struct ath10k *ar, u32 vdev_id, enum wmi_sta_ps_mode psmode) -@@ -8940,6 +8983,9 @@ static const struct wmi_ops wmi_ops = { +@@ -8977,6 +9020,9 @@ static const struct wmi_ops wmi_ops = { .fw_stats_fill = ath10k_wmi_main_op_fw_stats_fill, .get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype, .gen_echo = ath10k_wmi_op_gen_echo, @@ -515,7 +515,7 @@ v13: /* .gen_bcn_tmpl not implemented */ /* .gen_prb_tmpl not implemented */ /* .gen_p2p_go_bcn_ie not implemented */ -@@ -9010,6 +9056,8 @@ static const struct wmi_ops wmi_10_1_ops +@@ -9047,6 +9093,8 @@ static const struct wmi_ops wmi_10_1_ops .fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill, .get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype, .gen_echo = ath10k_wmi_op_gen_echo, @@ -524,7 +524,7 @@ v13: /* .gen_bcn_tmpl not implemented */ /* .gen_prb_tmpl not implemented */ /* .gen_p2p_go_bcn_ie not implemented */ -@@ -9087,6 +9135,8 @@ static const struct wmi_ops wmi_10_2_ops +@@ -9124,6 +9172,8 @@ static const struct wmi_ops wmi_10_2_ops .gen_delba_send = ath10k_wmi_op_gen_delba_send, .fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill, .get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype, @@ -533,7 +533,7 @@ v13: /* .gen_pdev_enable_adaptive_cca not implemented */ }; -@@ -9157,6 +9207,8 @@ static const struct wmi_ops wmi_10_2_4_o +@@ -9194,6 +9244,8 @@ static const struct wmi_ops wmi_10_2_4_o .gen_pdev_enable_adaptive_cca = ath10k_wmi_op_gen_pdev_enable_adaptive_cca, .get_vdev_subtype = ath10k_wmi_10_2_4_op_get_vdev_subtype, @@ -542,7 +542,7 @@ v13: /* .gen_bcn_tmpl not implemented */ /* .gen_prb_tmpl not implemented */ /* .gen_p2p_go_bcn_ie not implemented */ -@@ -9233,6 +9285,8 @@ static const struct wmi_ops wmi_10_4_ops +@@ -9270,6 +9322,8 @@ static const struct wmi_ops wmi_10_4_ops .gen_pdev_bss_chan_info_req = ath10k_wmi_10_2_op_gen_pdev_bss_chan_info, .gen_echo = ath10k_wmi_op_gen_echo, .gen_pdev_get_tpc_config = ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config, @@ -553,7 +553,7 @@ v13: int ath10k_wmi_attach(struct ath10k *ar) --- a/ath10k-4.16/wmi.h +++ b/ath10k-4.16/wmi.h -@@ -3000,6 +3000,41 @@ enum wmi_10_4_feature_mask { +@@ -3004,6 +3004,41 @@ enum wmi_10_4_feature_mask { }; @@ -674,7 +674,7 @@ v13: .patch_load_addr = QCA9888_HW_2_0_PATCH_LOAD_ADDR, .uart_pin = 7, .cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH, -@@ -3102,6 +3108,10 @@ int ath10k_core_start(struct ath10k *ar, +@@ -3103,6 +3109,10 @@ int ath10k_core_start(struct ath10k *ar, ar->eeprom_overrides.rc_txbf_probe); } @@ -685,7 +685,7 @@ v13: return 0; err_hif_stop: -@@ -3356,9 +3366,18 @@ static void ath10k_core_register_work(st +@@ -3357,9 +3367,18 @@ static void ath10k_core_register_work(st goto err_spectral_destroy; } @@ -704,7 +704,7 @@ v13: err_spectral_destroy: ath10k_spectral_destroy(ar); err_debug_destroy: -@@ -3416,6 +3435,8 @@ void ath10k_core_unregister(struct ath10 +@@ -3417,6 +3436,8 @@ void ath10k_core_unregister(struct ath10 if (!test_bit(ATH10K_FLAG_CORE_REGISTERED, &ar->dev_flags)) return; @@ -723,7 +723,7 @@ v13: #include "htt.h" #include "htc.h" -@@ -1106,7 +1107,6 @@ struct ath10k { +@@ -1113,7 +1114,6 @@ struct ath10k { u32 low_5ghz_chan; u32 high_5ghz_chan; bool ani_enabled; @@ -731,7 +731,7 @@ v13: bool p2p; bool ct_all_pkts_htt; /* CT firmware only: native-wifi for all pkts */ -@@ -1355,6 +1355,13 @@ struct ath10k { +@@ -1362,6 +1362,13 @@ struct ath10k { } testmode; struct { @@ -928,7 +928,7 @@ v13: }; int ath10k_wmi_cmd_send(struct ath10k *ar, struct sk_buff *skb, u32 cmd_id); -@@ -1071,6 +1074,35 @@ ath10k_wmi_force_fw_hang(struct ath10k * +@@ -1079,6 +1082,35 @@ ath10k_wmi_force_fw_hang(struct ath10k * return ath10k_wmi_cmd_send(ar, skb, ar->wmi.cmd->force_fw_hang_cmdid); } @@ -977,7 +977,7 @@ v13: static const struct wmi_peer_flags_map wmi_tlv_peer_flags_map = { --- a/ath10k-4.19/wmi.c +++ b/ath10k-4.19/wmi.c -@@ -7844,6 +7844,49 @@ ath10k_wmi_op_gen_peer_set_param(struct +@@ -7881,6 +7881,49 @@ ath10k_wmi_op_gen_peer_set_param(struct return skb; } @@ -1027,7 +1027,7 @@ v13: static struct sk_buff * ath10k_wmi_op_gen_set_psmode(struct ath10k *ar, u32 vdev_id, enum wmi_sta_ps_mode psmode) -@@ -9568,6 +9611,9 @@ static const struct wmi_ops wmi_ops = { +@@ -9605,6 +9648,9 @@ static const struct wmi_ops wmi_ops = { .fw_stats_fill = ath10k_wmi_main_op_fw_stats_fill, .get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype, .gen_echo = ath10k_wmi_op_gen_echo, @@ -1037,7 +1037,7 @@ v13: /* .gen_bcn_tmpl not implemented */ /* .gen_prb_tmpl not implemented */ /* .gen_p2p_go_bcn_ie not implemented */ -@@ -9638,6 +9684,8 @@ static const struct wmi_ops wmi_10_1_ops +@@ -9675,6 +9721,8 @@ static const struct wmi_ops wmi_10_1_ops .fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill, .get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype, .gen_echo = ath10k_wmi_op_gen_echo, @@ -1046,7 +1046,7 @@ v13: /* .gen_bcn_tmpl not implemented */ /* .gen_prb_tmpl not implemented */ /* .gen_p2p_go_bcn_ie not implemented */ -@@ -9715,6 +9763,8 @@ static const struct wmi_ops wmi_10_2_ops +@@ -9752,6 +9800,8 @@ static const struct wmi_ops wmi_10_2_ops .gen_delba_send = ath10k_wmi_op_gen_delba_send, .fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill, .get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype, @@ -1055,7 +1055,7 @@ v13: /* .gen_pdev_enable_adaptive_cca not implemented */ }; -@@ -9785,6 +9835,8 @@ static const struct wmi_ops wmi_10_2_4_o +@@ -9822,6 +9872,8 @@ static const struct wmi_ops wmi_10_2_4_o .gen_pdev_enable_adaptive_cca = ath10k_wmi_op_gen_pdev_enable_adaptive_cca, .get_vdev_subtype = ath10k_wmi_10_2_4_op_get_vdev_subtype, @@ -1064,7 +1064,7 @@ v13: /* .gen_bcn_tmpl not implemented */ /* .gen_prb_tmpl not implemented */ /* .gen_p2p_go_bcn_ie not implemented */ -@@ -9865,6 +9917,8 @@ static const struct wmi_ops wmi_10_4_ops +@@ -9902,6 +9954,8 @@ static const struct wmi_ops wmi_10_4_ops .gen_pdev_bss_chan_info_req = ath10k_wmi_10_2_op_gen_pdev_bss_chan_info, .gen_echo = ath10k_wmi_op_gen_echo, .gen_pdev_get_tpc_config = ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config, @@ -1075,7 +1075,7 @@ v13: int ath10k_wmi_attach(struct ath10k *ar) --- a/ath10k-4.19/wmi.h +++ b/ath10k-4.19/wmi.h -@@ -3038,6 +3038,41 @@ enum wmi_10_4_feature_mask { +@@ -3040,6 +3040,41 @@ enum wmi_10_4_feature_mask { }; diff --git a/package/kernel/ath10k-ct/patches/202-ath10k-4.16-use-tpt-trigger-by-default.patch b/package/kernel/ath10k-ct/patches/202-ath10k-4.16-use-tpt-trigger-by-default.patch index 81e0844c6..2549c71d8 100644 --- a/package/kernel/ath10k-ct/patches/202-ath10k-4.16-use-tpt-trigger-by-default.patch +++ b/package/kernel/ath10k-ct/patches/202-ath10k-4.16-use-tpt-trigger-by-default.patch @@ -16,7 +16,7 @@ Signed-off-by: Mathias Kresin --- a/ath10k-4.16/core.h +++ b/ath10k-4.16/core.h -@@ -1336,6 +1336,10 @@ struct ath10k { +@@ -1342,6 +1342,10 @@ struct ath10k { u8 csi_data[4096]; u16 csi_data_len; @@ -42,7 +42,7 @@ Signed-off-by: Mathias Kresin if (ret) --- a/ath10k-4.16/mac.c +++ b/ath10k-4.16/mac.c -@@ -9624,7 +9624,7 @@ int ath10k_mac_register(struct ath10k *a +@@ -9638,7 +9638,7 @@ int ath10k_mac_register(struct ath10k *a wiphy_ext_feature_set(ar->hw->wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST); #ifdef CPTCFG_MAC80211_LEDS @@ -53,7 +53,7 @@ Signed-off-by: Mathias Kresin #endif --- a/ath10k-4.19/core.h +++ b/ath10k-4.19/core.h -@@ -1452,6 +1452,10 @@ struct ath10k { +@@ -1459,6 +1459,10 @@ struct ath10k { u8 csi_data[4096]; u16 csi_data_len; @@ -79,7 +79,7 @@ Signed-off-by: Mathias Kresin if (ret) --- a/ath10k-4.19/mac.c +++ b/ath10k-4.19/mac.c -@@ -9775,7 +9775,7 @@ int ath10k_mac_register(struct ath10k *a +@@ -9837,7 +9837,7 @@ int ath10k_mac_register(struct ath10k *a wiphy_ext_feature_set(ar->hw->wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST); #ifdef CPTCFG_MAC80211_LEDS diff --git a/package/kernel/ath10k-ct/patches/203-ath10k-Limit-available-channels-via-DT-ieee80211-fre.patch b/package/kernel/ath10k-ct/patches/203-ath10k-Limit-available-channels-via-DT-ieee80211-fre.patch new file mode 100644 index 000000000..de4f98549 --- /dev/null +++ b/package/kernel/ath10k-ct/patches/203-ath10k-Limit-available-channels-via-DT-ieee80211-fre.patch @@ -0,0 +1,39 @@ +From bbf0a8af2261bc7ae39b227ff6a1e9f45a008c27 Mon Sep 17 00:00:00 2001 +From: Sven Eckelmann +Date: Mon, 30 Jul 2018 17:31:41 +0200 +Subject: [PATCH] ath10k: Limit available channels via DT ieee80211-freq-limit + +Tri-band devices (1x 2.4GHz + 2x 5GHz) often incorporate special filters in +the RX and TX path. These filtered channel can in theory still be used by +the hardware but the signal strength is reduced so much that it makes no +sense. + +There is already a DT property to limit the available channels but ath10k +has to manually call this functionality to limit the currrently set wiphy +channels further. + +Signed-off-by: Sven Eckelmann + +Forwarded: https://patchwork.kernel.org/patch/10549245/ +--- + drivers/net/wireless/ath/ath10k/mac.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/ath10k-4.19/mac.c ++++ b/ath10k-4.19/mac.c +@@ -18,6 +18,7 @@ + + #include "mac.h" + ++#include + #include + #include + #include +@@ -8390,6 +8391,7 @@ int ath10k_mac_register(struct ath10k *a + ar->hw->wiphy->bands[NL80211_BAND_5GHZ] = band; + } + ++ wiphy_read_of_freq_limits(ar->hw->wiphy); + ath10k_mac_setup_ht_vht_cap(ar); + + ar->hw->wiphy->interface_modes =