Skip to content

Commit

Permalink
ath10k-ct: update to HEAD of 2019-08-14 - 9e5ab2
Browse files Browse the repository at this point in the history
Update ath10k-ct to commit 9e5ab25027e0971fa24ccf93373324c08c4e992d

git log --pretty=oneline --abbrev-commit f0aa8130..9e5ab250

9e5ab25 ath10k-ct:  Update to latest 5.2 upstream, support bigger mtu, 160Mhz

Created with the help of the make-package-update-commit.sh script
and refresh patches.

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
  • Loading branch information
chunkeey committed Aug 24, 2019
1 parent ac2f341 commit e9d875a
Show file tree
Hide file tree
Showing 7 changed files with 96 additions and 41 deletions.
6 changes: 3 additions & 3 deletions package/kernel/ath10k-ct/Makefile
Expand Up @@ -8,9 +8,9 @@ PKG_LICENSE_FILES:=

PKG_SOURCE_URL:=https://github.com/greearb/ath10k-ct.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_DATE:=2019-06-13
PKG_SOURCE_VERSION:=f0aa81302b2286715fa2fa5a2f4ebe2faf17694c
PKG_MIRROR_HASH:=a6d418dfec02842529a53b3c48236e7a375a654a03e199fbc5178bdb269b7d64
PKG_SOURCE_DATE:=2019-08-14
PKG_SOURCE_VERSION:=9e5ab25027e0971fa24ccf93373324c08c4e992d
PKG_MIRROR_HASH:=95dc42a5615f80528223859b4f9618feafb5a0a29a9eb4c4bc983f76c74fb535

# Build the 5.2 ath10k-ct driver version. Other option is "-4.19".
# Probably this should match as closely as
Expand Down
Expand Up @@ -41,29 +41,3 @@ Origin: other, https://patchwork.kernel.org/patch/10723033/

if (ar->phy_capability & WHAL_WLAN_11A_CAPABILITY)
rateidx += ATH10K_MAC_FIRST_OFDM_RATE_IDX;
--- a/ath10k-5.2/mac.c
+++ b/ath10k-5.2/mac.c
@@ -6518,8 +6518,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;

@@ -6706,7 +6706,11 @@ static void ath10k_bss_info_changed(stru
if (changed & BSS_CHANGED_MCAST_RATE &&
!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;
Expand Up @@ -37,23 +37,23 @@ Signed-off-by: Sven Eckelmann <sven@narfation.org>
hw_rate_code);
--- a/ath10k-5.2/mac.c
+++ b/ath10k-5.2/mac.c
@@ -6728,6 +6728,7 @@ static void ath10k_bss_info_changed(stru
@@ -6732,6 +6732,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);
@@ -6736,6 +6737,7 @@ static void ath10k_bss_info_changed(stru
@@ -6740,6 +6741,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);
@@ -6762,6 +6764,7 @@ static void ath10k_bss_info_changed(stru
@@ -6766,6 +6768,7 @@ static void ath10k_bss_info_changed(stru
return;
}

Expand Down
Expand Up @@ -683,7 +683,7 @@ v13:
.patch_load_addr = QCA9888_HW_2_0_PATCH_LOAD_ADDR,
.uart_pin = 7,
.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
@@ -3446,6 +3452,10 @@ int ath10k_core_start(struct ath10k *ar,
@@ -3452,6 +3458,10 @@ int ath10k_core_start(struct ath10k *ar,
ath10k_wmi_check_apply_board_power_ctl_table(ar);
}

Expand All @@ -694,7 +694,7 @@ v13:
return 0;

err_hif_stop:
@@ -3702,9 +3712,18 @@ static void ath10k_core_register_work(st
@@ -3708,9 +3718,18 @@ static void ath10k_core_register_work(st
goto err_spectral_destroy;
}

Expand All @@ -713,7 +713,7 @@ v13:
err_spectral_destroy:
ath10k_spectral_destroy(ar);
err_debug_destroy:
@@ -3764,6 +3783,8 @@ void ath10k_core_unregister(struct ath10
@@ -3770,6 +3789,8 @@ void ath10k_core_unregister(struct ath10
if (!test_bit(ATH10K_FLAG_CORE_REGISTERED, &ar->dev_flags))
return;

Expand All @@ -732,7 +732,7 @@ v13:

#include "htt.h"
#include "htc.h"
@@ -1436,6 +1437,13 @@ struct ath10k {
@@ -1441,6 +1442,13 @@ struct ath10k {
} testmode;

struct {
Expand Down Expand Up @@ -967,7 +967,7 @@ v13:
{
--- a/ath10k-5.2/wmi-tlv.c
+++ b/ath10k-5.2/wmi-tlv.c
@@ -4309,6 +4309,8 @@ static const struct wmi_ops wmi_tlv_ops
@@ -4311,6 +4311,8 @@ static const struct wmi_ops wmi_tlv_ops
.gen_echo = ath10k_wmi_tlv_op_gen_echo,
.gen_vdev_spectral_conf = ath10k_wmi_tlv_op_gen_vdev_spectral_conf,
.gen_vdev_spectral_enable = ath10k_wmi_tlv_op_gen_vdev_spectral_enable,
Expand Down
Expand Up @@ -42,7 +42,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
if (ret)
--- a/ath10k-4.19/mac.c
+++ b/ath10k-4.19/mac.c
@@ -9963,7 +9963,7 @@ int ath10k_mac_register(struct ath10k *a
@@ -9965,7 +9965,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
Expand All @@ -53,7 +53,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
#endif
--- a/ath10k-5.2/core.h
+++ b/ath10k-5.2/core.h
@@ -1538,6 +1538,10 @@ struct ath10k {
@@ -1543,6 +1543,10 @@ struct ath10k {
u8 csi_data[4096];
u16 csi_data_len;

Expand All @@ -79,7 +79,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
if (ret)
--- a/ath10k-5.2/mac.c
+++ b/ath10k-5.2/mac.c
@@ -10163,7 +10163,7 @@ int ath10k_mac_register(struct ath10k *a
@@ -10178,7 +10178,7 @@ int ath10k_mac_register(struct ath10k *a
ar->hw->weight_multiplier = ATH10K_AIRTIME_WEIGHT_MULTIPLIER;

#ifdef CPTCFG_MAC80211_LEDS
Expand Down
Expand Up @@ -29,7 +29,7 @@ Forwarded: https://patchwork.kernel.org/patch/10549245/
#include <net/mac80211.h>
#include <linux/etherdevice.h>
#include <linux/acpi.h>
@@ -9687,6 +9688,7 @@ int ath10k_mac_register(struct ath10k *a
@@ -9689,6 +9690,7 @@ int ath10k_mac_register(struct ath10k *a
ar->hw->wiphy->bands[NL80211_BAND_5GHZ] = band;
}

Expand Down
@@ -0,0 +1,81 @@
From cc8ec75f5ad4acf9babe5e26a10c9bca10624593 Mon Sep 17 00:00:00 2001
From: Hauke Mehrtens <hauke@hauke-m.de>
Date: Sun, 18 Aug 2019 15:33:51 +0200
Subject: [PATCH] ath10k: Check if station exists before forwarding tx airtime
report

It looks like the FW on QCA9984 already reports the tx airtimes before
the station is added to the peer entry. The peer entry is created in
ath10k_peer_map_event() just with the vdev_id and the ethaddr, but
not with a station entry, this is added later in ath10k_peer_create() in
callbacks from mac80211.

When there is no sta added to the peer entry, this function fails
because it calls ieee80211_sta_register_airtime() with NULL.

This was reported in OpenWrt some time ago:
https://bugs.openwrt.org/index.php?do=details&task_id=2414

This commit should fix this crash:
[ 75.991714] Unable to handle kernel paging request at virtual address fffff9e8
[ 75.991756] pgd = c0204000
[ 75.997955] [fffff9e8] *pgd=5fdfd861, *pte=00000000, *ppte=00000000
[ 76.000537] Internal error: Oops: 37 [#1] SMP ARM
[ 76.006686] Modules linked in: pppoe ppp_async ath10k_pci ath10k_core ath pptp pppox ppp_mppe ppp_generic mac80211 iptable_nat ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_tcpmss xt_statistic xt_state xt_recent xt_nat xt_multiport xt_mark xt_mac xt_limit xt_length xt_hl xt_helper xt_esp xt_ecn xt_dscp xt_conntrack xt_connmark xt_connlimit xt_connbytes xt_comment xt_TCPMSS xt_REDIRECT xt_LOG xt_HL xt_FLOWOFFLOAD xt_DSCP xt_CT xt_CLASSIFY usbserial slhc nf_reject_ipv4 nf_nat_redirect nf_nat_masquerade_ipv4 nf_conntrack_ipv4 nf_nat_ipv4 nf_log_ipv4 nf_flow_table_hw nf_flow_table nf_defrag_ipv4 nf_conntrack_rtcache nf_conntrack_netlink iptable_raw iptable_mangle iptable_filter ipt_ah ipt_ECN ip_tables crc_ccitt compat chaoskey fuse sch_cake sch_tbf sch_ingress sch_htb sch_hfsc em_u32 cls_u32
[ 76.059974] cls_tcindex cls_route cls_matchall cls_fw cls_flow cls_basic act_skbedit act_mirred ledtrig_usbport xt_set ip_set_list_set ip_set_hash_netportnet ip_set_hash_netport ip_set_hash_netnet ip_set_hash_netiface ip_set_hash_net ip_set_hash_mac ip_set_hash_ipportnet ip_set_hash_ipportip ip_set_hash_ipport ip_set_hash_ipmark ip_set_hash_ip ip_set_bitmap_port ip_set_bitmap_ipmac ip_set_bitmap_ip ip_set nfnetlink ip6table_nat nf_conntrack_ipv6 nf_defrag_ipv6 nf_nat_ipv6 ip6t_NPT ip6t_MASQUERADE nf_nat_masquerade_ipv6 nf_nat nf_conntrack nf_log_ipv6 nf_log_common ip6table_mangle ip6table_filter ip6_tables ip6t_REJECT x_tables nf_reject_ipv6 msdos ip_gre gre ifb sit tunnel4 ip_tunnel tun vfat fat hfsplus cifs nls_utf8 nls_iso8859_15 nls_iso8859_1 nls_cp850 nls_cp437 nls_cp1250 sha1_generic md5 md4
[ 76.130634] usb_storage leds_gpio xhci_plat_hcd xhci_pci xhci_hcd dwc3 dwc3_of_simple ohci_platform ohci_hcd phy_qcom_dwc3 ahci ehci_platform sd_mod ahci_platform libahci_platform libahci libata scsi_mod ehci_hcd gpio_button_hotplug ext4 mbcache jbd2 exfat crc32c_generic
[ 76.154772] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.14.132 #0
[ 76.177001] Hardware name: Generic DT based system
[ 76.182990] task: c0b06d80 task.stack: c0b00000
[ 76.187832] PC is at ieee80211_sta_register_airtime+0x24/0x148 [mac80211]
[ 76.192211] LR is at ath10k_htt_t2h_msg_handler+0x678/0x10f4 [ath10k_core]
[ 76.199052] pc : [<bf75bfac>] lr : [<bf83e8b0>] psr: a0000113
[ 76.205820] sp : c0b01d54 ip : 00000002 fp : bf869c0c
[ 76.211981] r10: 0000003c r9 : dbdca138 r8 : 00060002
[ 76.217192] r7 : 00000000 r6 : dabe1150 r5 : 00000000 r4 : dbdc95c0
[ 76.222401] r3 : 00000000 r2 : 00060002 r1 : 00000000 r0 : 00000000
[ 76.229003] Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none
[ 76.235509] Control: 10c5787d Table: 5c94006a DAC: 00000051
[ 76.242716] Process swapper/0 (pid: 0, stack limit = 0xc0b00210)
[ 76.248446] Stack: (0xc0b01d54 to 0xc0b02000)
[ 76.254532] 1d40: dbdc95c0 00000000 dabe1150
[ 76.258808] 1d60: 00000001 dabe1150 dbdca138 0000003c bf869c0c bf83e8b0 00000002 c0314b10
[ 76.266969] 1d80: dbdc9c70 00000001 00000001 dabe114c 00010000 00000000 dbdcd724 bf88f3d8
[ 76.275126] 1da0: c0310d28 db393c00 dbdc95c0 00000000 c0b01dd0 c07fb4c4 dbdcd724 00000001
[ 76.283286] 1dc0: 00000022 bf88b09c db393c00 00000022 c0b01dd0 c0b01dd0 00000000 dbdcc5c0
[ 76.291445] 1de0: bf88f04c dbdcd654 dbdcd71c dbdc95c0 00000014 dbdcd724 dbdcc5c0 00000005
[ 76.299605] 1e00: 0004b400 bf85c360 00000000 bf87101c c0b01e24 00000006 00000000 dbdc95c0
[ 76.307764] 1e20: 00000001 00000040 0000012c c0b01e80 1cf51000 bf85c448 dbdcd440 dbdc95c0
[ 76.315925] 1e40: dbdca440 ffffa880 00000040 bf88cb68 dbdcd440 00000001 00000040 ffffa880
[ 76.324084] 1e60: c0b02d00 c06d72e0 dd990080 c0a3f080 c0b255dc c0b047e4 c090afac c090e80c
[ 76.332244] 1e80: c0b01e80 c0b01e80 c0b01e88 c0b01e88 dd4cc200 00000000 00000003 c0b0208c
[ 76.340405] 1ea0: c0b02080 40000003 ffffe000 00000100 c0b02080 c03015c8 00000000 00000001
[ 76.348564] 1ec0: dd408000 c0a38210 c0b2c7c0 0000000a ffffa880 c0b02d00 c07fb764 00200102
[ 76.356723] 1ee0: dd4cc268 c0a3e414 00000000 00000000 00000001 dd408000 de803000 00000000
[ 76.364883] 1f00: 00000000 c03247cc c0a3e414 c0368f1c c0b03f60 c0b153cc de80200c de802000
[ 76.373042] 1f20: c0b01f48 c0301488 c0308630 60000013 ffffffff c0b01f7c 00000000 c0b00000
[ 76.381204] 1f40: 00000000 c030c08c 00000001 00000000 00000000 c0315180 ffffe000 c0b03cc0
[ 76.389363] 1f60: c0b03c70 00000000 00000000 c0a2da28 00000000 00000000 c0b01f90 c0b01f98
[ 76.397522] 1f80: c030862c c0308630 60000013 ffffffff 00000051 00000000 ffffe000 c035dd18
[ 76.405681] 1fa0: 000000bf c0b03c40 00000000 c0b2c000 dddfce80 c035e060 c0b2c040 c0a00cf4
[ 76.413842] 1fc0: ffffffff ffffffff 00000000 c0a0067c c0a2da28 00000000 00000000 c0b2c1d4
[ 76.422001] 1fe0: c0b03c5c c0a2da24 c0b07ee0 4220406a 512f04d0 4220807c 00000000 00000000
[ 76.430335] [<bf75bfac>] (ieee80211_sta_register_airtime [mac80211]) from [<00000002>] (0x2)
[ 76.438314] Code: e1cd81f0 e1a08002 e1cda1f8 e58de020 (e5102618)
[ 76.446965] ---[ end trace 227a38ade964d642 ]---

Fixes: bb31b7cb106c ("ath10k: report tx airtime provided by fw")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
---

--- a/ath10k-5.2/htt_rx.c
+++ b/ath10k-5.2/htt_rx.c
@@ -2497,7 +2497,7 @@ do_generic:
spin_lock_bh(&ar->data_lock);

peer = ath10k_peer_find_by_id(ar, peer_id);
- if (!peer) {
+ if (!peer || !peer->sta) {
spin_unlock_bh(&ar->data_lock);
rcu_read_unlock();
continue;

9 comments on commit e9d875a

@swg0101
Copy link
Contributor

@swg0101 swg0101 commented on e9d875a Sep 8, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After updating to this commit, my Intel AC9560 will no longer connect on 160Mhz. The system will say connected, but will not receive any packets. Forcing the adapter to 20Mhz will allow it to connect again. Reverting this commit will also allow 160Mhz to work again.

@greearb
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe try reverting this patch in ath10k-ct and see if that helps?

@@ -9525,6 +9542,8 @@ ieee80211_iface_combination ath10k_10_4_bcn_int_if_comb[] = {
.radar_detect_widths = BIT(NL80211_CHAN_WIDTH_20_NOHT) |
BIT(NL80211_CHAN_WIDTH_20) |
BIT(NL80211_CHAN_WIDTH_40) |

  •                                   BIT(NL80211_CHAN_WIDTH_80P80) | /* TODO:  Verify --Ben */
    
  •                                   BIT(NL80211_CHAN_WIDTH_160) | /* TODO:  Verify --Ben */
                                      BIT(NL80211_CHAN_WIDTH_80),
    

#endif
},

If so, maybe the issue is that 160Mhz never worked on swg0101's system, but that patch finally made 160Mhz enabled and then there is breakage.

@greearb
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, github screwed with my patch. To revert, remove the two lines with 'TODO' in them.

@greearb
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you should probably disable 160Mhz on your setup then. It is rarely useful to run beyond 80Mhz anyway.

@swg0101
Copy link
Contributor

@swg0101 swg0101 commented on e9d875a Sep 14, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry - it looks like I was a bit too quick on judgement. I didn't realize there was a different package that was tied to the firmware. The offending commit appears to be bd926fd#diff-83f97eaa41a9f91a20b3483ef4fa1545 - after reverting that commit everything works correctly with everything else being on master. Thanks!

@greearb
Copy link
Contributor

@greearb greearb commented on e9d875a Sep 14, 2019 via email

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@swg0101
Copy link
Contributor

@swg0101 swg0101 commented on e9d875a Sep 14, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just went back one commit on the firmware - i.e. 7c640c2 and that worked perfectly. bd926fd being the latest is the one that does not connect properly. Radio is on QCA9984.

@greearb
Copy link
Contributor

@greearb greearb commented on e9d875a Sep 14, 2019 via email

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@swg0101
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok thanks!

Please sign in to comment.