lkml.org 
[lkml]   [2018]   [Apr]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 26/74] Revert "ath10k: send (re)assoc peer command when NSS changed"
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Karthikeyan Periyasamy <periyasa@codeaurora.org>

    commit 55cc11da69895a680940c1733caabc37be685f5e upstream.

    This reverts commit 55884c045d31a29cf69db8332d1064a1b61dd159.

    When Ath10k is in AP mode and an unassociated STA sends a VHT action frame
    (Operating Mode Notification for the NSS change) periodically to AP this causes
    ath10k to call ath10k_station_assoc() which sends WMI_PEER_ASSOC_CMDID during
    NSS update. Over the time (with a certain client it can happen within 15 mins
    when there are over 500 of these VHT action frames) continuous calls of
    WMI_PEER_ASSOC_CMDID cause firmware to assert due to resource exhaust.

    To my knowledge setting WMI_PEER_NSS peer param itself enough to handle NSS
    updates and no need to call ath10k_station_assoc(). So revert the original
    commit from 2014 as it's unclear why the change was really needed.
    Now the firmware assert doesn't happen anymore.

    Issue observed in QCA9984 platform with firmware version:10.4-3.5.3-00053.
    This Change tested in QCA9984 with firmware version: 10.4-3.5.3-00053 and
    QCA988x platform with firmware version: 10.2.4-1.0-00036.

    Firmware Assert log:

    ath10k_pci 0002:01:00.0: firmware crashed! (guid e61f1274-9acd-4c5b-bcca-e032ea6e723c)
    ath10k_pci 0002:01:00.0: qca9984/qca9994 hw1.0 target 0x01000000 chip_id 0x00000000 sub 168c:cafe
    ath10k_pci 0002:01:00.0: kconfig debug 1 debugfs 1 tracing 0 dfs 1 testmode 1
    ath10k_pci 0002:01:00.0: firmware ver 10.4-3.5.3-00053 api 5 features no-p2p,mfp,peer-flow-ctrl,btcoex-param,allows-mesh-bcast crc32 4c56a386
    ath10k_pci 0002:01:00.0: board_file api 2 bmi_id 0:4 crc32 c2271344
    ath10k_pci 0002:01:00.0: htt-ver 2.2 wmi-op 6 htt-op 4 cal otp max-sta 512 raw 0 hwcrypto 1
    ath10k_pci 0002:01:00.0: firmware register dump:
    ath10k_pci 0002:01:00.0: [00]: 0x0000000A 0x000015B3 0x00981E5F 0x00975B31
    ath10k_pci 0002:01:00.0: [04]: 0x00981E5F 0x00060530 0x00000011 0x00446C60
    ath10k_pci 0002:01:00.0: [08]: 0x0042F1FC 0x00458080 0x00000017 0x00000000
    ath10k_pci 0002:01:00.0: [12]: 0x00000009 0x00000000 0x00973ABC 0x00973AD2
    ath10k_pci 0002:01:00.0: [16]: 0x00973AB0 0x00960E62 0x009606CA 0x00000000
    ath10k_pci 0002:01:00.0: [20]: 0x40981E5F 0x004066DC 0x00400000 0x00981E34
    ath10k_pci 0002:01:00.0: [24]: 0x80983B48 0x0040673C 0x000000C0 0xC0981E5F
    ath10k_pci 0002:01:00.0: [28]: 0x80993DEB 0x0040676C 0x00431AB8 0x0045D0C4
    ath10k_pci 0002:01:00.0: [32]: 0x80993E5C 0x004067AC 0x004303C0 0x0045D0C4
    ath10k_pci 0002:01:00.0: [36]: 0x80994AAB 0x004067DC 0x00000000 0x0045D0C4
    ath10k_pci 0002:01:00.0: [40]: 0x809971A0 0x0040681C 0x004303C0 0x00441B00
    ath10k_pci 0002:01:00.0: [44]: 0x80991904 0x0040688C 0x004303C0 0x0045D0C4
    ath10k_pci 0002:01:00.0: [48]: 0x80963AD3 0x00406A7C 0x004303C0 0x009918FC
    ath10k_pci 0002:01:00.0: [52]: 0x80960E80 0x00406A9C 0x0000001F 0x00400000
    ath10k_pci 0002:01:00.0: [56]: 0x80960E51 0x00406ACC 0x00400000 0x00000000
    ath10k_pci 0002:01:00.0: Copy Engine register dump:
    ath10k_pci 0002:01:00.0: index: addr: sr_wr_idx: sr_r_idx: dst_wr_idx: dst_r_idx:
    ath10k_pci 0002:01:00.0: [00]: 0x0004a000 15 15 3 3
    ath10k_pci 0002:01:00.0: [01]: 0x0004a400 17 17 212 213
    ath10k_pci 0002:01:00.0: [02]: 0x0004a800 21 21 20 21
    ath10k_pci 0002:01:00.0: [03]: 0x0004ac00 25 25 27 25
    ath10k_pci 0002:01:00.0: [04]: 0x0004b000 515 515 144 104
    ath10k_pci 0002:01:00.0: [05]: 0x0004b400 28 28 155 156
    ath10k_pci 0002:01:00.0: [06]: 0x0004b800 12 12 12 12
    ath10k_pci 0002:01:00.0: [07]: 0x0004bc00 1 1 1 1
    ath10k_pci 0002:01:00.0: [08]: 0x0004c000 0 0 127 0
    ath10k_pci 0002:01:00.0: [09]: 0x0004c400 1 1 1 1
    ath10k_pci 0002:01:00.0: [10]: 0x0004c800 0 0 0 0
    ath10k_pci 0002:01:00.0: [11]: 0x0004cc00 0 0 0 0
    ath10k_pci 0002:01:00.0: CE[1] write_index 212 sw_index 213 hw_index 0 nentries_mask 0x000001ff
    ath10k_pci 0002:01:00.0: CE[2] write_index 20 sw_index 21 hw_index 0 nentries_mask 0x0000007f
    ath10k_pci 0002:01:00.0: CE[5] write_index 155 sw_index 156 hw_index 0 nentries_mask 0x000001ff
    ath10k_pci 0002:01:00.0: DMA addr: nbytes: meta data: byte swap: gather:
    ath10k_pci 0002:01:00.0: [455]: 0x580c0042 0 0 0 0
    ath10k_pci 0002:01:00.0: [456]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [457]: 0x580c0042 0 0 0 0
    ath10k_pci 0002:01:00.0: [458]: 0x594a0038 0 0 0 1
    ath10k_pci 0002:01:00.0: [459]: 0x580c0a42 0 0 0 0
    ath10k_pci 0002:01:00.0: [460]: 0x594a0060 0 0 0 1
    ath10k_pci 0002:01:00.0: [461]: 0x580c0c42 0 0 0 0
    ath10k_pci 0002:01:00.0: [462]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [463]: 0x580c0c42 0 0 0 0
    ath10k_pci 0002:01:00.0: [464]: 0x594a0038 0 0 0 1
    ath10k_pci 0002:01:00.0: [465]: 0x580c0a42 0 0 0 0
    ath10k_pci 0002:01:00.0: [466]: 0x594a0060 0 0 0 1
    ath10k_pci 0002:01:00.0: [467]: 0x580c0042 0 0 0 0
    ath10k_pci 0002:01:00.0: [468]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [469]: 0x580c1c42 0 0 0 0
    ath10k_pci 0002:01:00.0: [470]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [471]: 0x580c1c42 0 0 0 0
    ath10k_pci 0002:01:00.0: [472]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [473]: 0x580c1c42 0 0 0 0
    ath10k_pci 0002:01:00.0: [474]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [475]: 0x580c0642 0 0 0 0
    ath10k_pci 0002:01:00.0: [476]: 0x594a0038 0 0 0 1
    ath10k_pci 0002:01:00.0: [477]: 0x580c0842 0 0 0 0
    ath10k_pci 0002:01:00.0: [478]: 0x594a0060 0 0 0 1
    ath10k_pci 0002:01:00.0: [479]: 0x580c0042 0 0 0 0
    ath10k_pci 0002:01:00.0: [480]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [481]: 0x580c0042 0 0 0 0
    ath10k_pci 0002:01:00.0: [482]: 0x594a0038 0 0 0 1
    ath10k_pci 0002:01:00.0: [483]: 0x580c0842 0 0 0 0
    ath10k_pci 0002:01:00.0: [484]: 0x594a0060 0 0 0 1
    ath10k_pci 0002:01:00.0: [485]: 0x580c0642 0 0 0 0
    ath10k_pci 0002:01:00.0: [486]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [487]: 0x580c0642 0 0 0 0
    ath10k_pci 0002:01:00.0: [488]: 0x594a0038 0 0 0 1
    ath10k_pci 0002:01:00.0: [489]: 0x580c0842 0 0 0 0
    ath10k_pci 0002:01:00.0: [490]: 0x594a0060 0 0 0 1
    ath10k_pci 0002:01:00.0: [491]: 0x580c0042 0 0 0 0
    ath10k_pci 0002:01:00.0: [492]: 0x58174040 0 1 0 0
    ath10k_pci 0002:01:00.0: [493]: 0x5a946040 0 1 0 0
    ath10k_pci 0002:01:00.0: [494]: 0x59909040 0 1 0 0
    ath10k_pci 0002:01:00.0: [495]: 0x5ae5a040 0 1 0 0
    ath10k_pci 0002:01:00.0: [496]: 0x58096040 0 1 0 0
    ath10k_pci 0002:01:00.0: [497]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [498]: 0x580c0642 0 0 0 0
    ath10k_pci 0002:01:00.0: [499]: 0x5c1e0040 0 1 0 0
    ath10k_pci 0002:01:00.0: [500]: 0x58153040 0 1 0 0
    ath10k_pci 0002:01:00.0: [501]: 0x58129040 0 1 0 0
    ath10k_pci 0002:01:00.0: [502]: 0x5952f040 0 1 0 0
    ath10k_pci 0002:01:00.0: [503]: 0x59535040 0 1 0 0
    ath10k_pci 0002:01:00.0: [504]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [505]: 0x580c0042 0 0 0 0
    ath10k_pci 0002:01:00.0: [506]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [507]: 0x580c0042 0 0 0 0
    ath10k_pci 0002:01:00.0: [508]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [509]: 0x580c0042 0 0 0 0
    ath10k_pci 0002:01:00.0: [510]: 0x594a0010 0 0 0 1
    ath10k_pci 0002:01:00.0: [511]: 0x580c0042 0 0 0 0
    ath10k_pci 0002:01:00.0: [512]: 0x5adcc040 0 1 0 0
    ath10k_pci 0002:01:00.0: [513]: 0x5cf3d040 0 1 0 0
    ath10k_pci 0002:01:00.0: [514]: 0x5c1e9040 64 1 0 0
    ath10k_pci 0002:01:00.0: [515]: 0x00000000 0 0 0 0

    Signed-off-by: Karthikeyan Periyasamy <periyasa@codeaurora.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Cc: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/net/wireless/ath/ath10k/mac.c | 5 ++---
    1 file changed, 2 insertions(+), 3 deletions(-)

    --- a/drivers/net/wireless/ath/ath10k/mac.c
    +++ b/drivers/net/wireless/ath/ath10k/mac.c
    @@ -5819,9 +5819,8 @@ static void ath10k_sta_rc_update_wk(stru
    sta->addr, smps, err);
    }

    - if (changed & IEEE80211_RC_SUPP_RATES_CHANGED ||
    - changed & IEEE80211_RC_NSS_CHANGED) {
    - ath10k_dbg(ar, ATH10K_DBG_MAC, "mac update sta %pM supp rates/nss\n",
    + if (changed & IEEE80211_RC_SUPP_RATES_CHANGED) {
    + ath10k_dbg(ar, ATH10K_DBG_MAC, "mac update sta %pM supp rates\n",
    sta->addr);

    err = ath10k_station_assoc(ar, arvif->vif, sta, true);

    \
     
     \ /
      Last update: 2018-04-27 17:16    [W:2.348 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site