1. 23 Nov, 2016 8 commits
    • Miaoqing Pan's avatar
      ath9k: fix NULL pointer dereference · 40bea976
      Miaoqing Pan authored
      relay_open() may return NULL, check the return value to avoid the crash.
      
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000040
      IP: [<ffffffffa01a95c5>] ath_cmn_process_fft+0xd5/0x700 [ath9k_common]
      PGD 41cf28067 PUD 41be92067 PMD 0
      Oops: 0000 [#1] SMP
      CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.8.6+ #35
      Hardware name: Hewlett-Packard h8-1080t/2A86, BIOS 6.15    07/04/2011
      task: ffffffff81e0c4c0 task.stack: ffffffff81e00000
      RIP: 0010:[<ffffffffa01a95c5>] [<ffffffffa01a95c5>] ath_cmn_process_fft+0xd5/0x700 [ath9k_common]
      RSP: 0018:ffff88041f203ca0 EFLAGS: 00010293
      RAX: 0000000000000000 RBX: 000000000000059f RCX: 0000000000000000
      RDX: 0000000000000000 RSI: 0000000000000040 RDI: ffffffff81f0ca98
      RBP: ffff88041f203dc8 R08: ffffffffffffffff R09: 00000000000000ff
      R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
      R13: ffffffff81f0ca98 R14: 0000000000000000 R15: 0000000000000000
      FS:  0000000000000000(0000) GS:ffff88041f200000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000040 CR3: 000000041b6ec000 CR4: 00000000000006f0
      Stack:
      0000000000000363 00000000000003f3 00000000000003f3 00000000000001f9
      000000000000049a 0000000001252c04 ffff88041f203e44 ffff880417b4bfd0
      0000000000000008 ffff88041785b9c0 0000000000000002 ffff88041613dc60
      
      Call Trace:
      <IRQ>
      [<ffffffffa01b6441>] ath9k_tasklet+0x1b1/0x220 [ath9k]
      [<ffffffff8105d8dd>] tasklet_action+0x4d/0xf0
      [<ffffffff8105dde2>] __do_softirq+0x92/0x2a0
      Reported-by: default avatarDevin Tuchsen <devin.tuchsen@gmail.com>
      Tested-by: default avatarDevin Tuchsen <devin.tuchsen@gmail.com>
      Signed-off-by: default avatarMiaoqing Pan <miaoqing@codeaurora.org>
      Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      40bea976
    • Matthias Schiffer's avatar
      ath9k: fix ath9k_hw_gpio_get() to return 0 or 1 on success · 91851cc7
      Matthias Schiffer authored
      Commit b2d70d49 ("ath9k: make GPIO API to support both of WMAC and
      SOC") refactored ath9k_hw_gpio_get() to support both WMAC and SOC GPIOs,
      changing the return on success from 1 to BIT(gpio). This broke some callers
      like ath_is_rfkill_set(). This doesn't fix any known bug in mainline at the
      moment, but should be fixed anyway.
      
      Instead of fixing all callers, change ath9k_hw_gpio_get() back to only
      return 0 or 1.
      
      Fixes: b2d70d49 ("ath9k: make GPIO API to support both of WMAC and SOC")
      Cc: <stable@vger.kernel.org> # v4.7+
      Signed-off-by: default avatarMatthias Schiffer <mschiffer@universe-factory.net>
      [kvalo@qca.qualcomm.com: mention that doesn't fix any known bug]
      Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      91851cc7
    • Michal Kazior's avatar
      ath10k: add spectral scan support to wmi-tlv · 5a401f36
      Michal Kazior authored
      Command structure and event flow doesn't seem to
      be any different compared to existing
      implementation for other firmware branches.
      
      This patch effectively adds in-driver support for
      spectral scanning on QCA61x4 and QCA9377.
      
      Tested QCA9377 w/ WLAN.TF.1.0-00267-1.
      Signed-off-by: default avatarMichal Kazior <michal.kazior@tieto.com>
      Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      5a401f36
    • Michal Kazior's avatar
      ath10k: fix null deref on wmi-tlv when trying spectral scan · 18ae68ff
      Michal Kazior authored
      WMI ops wrappers did not properly check for null
      function pointers for spectral scan. This caused
      null dereference crash with WMI-TLV based firmware
      which doesn't implement spectral scan.
      
      The crash could be triggered with:
      
        ip link set dev wlan0 up
        echo background > /sys/kernel/debug/ieee80211/phy0/ath10k/spectral_scan_ctl
      
      The crash looked like this:
      
        [  168.031989] BUG: unable to handle kernel NULL pointer dereference at           (null)
        [  168.037406] IP: [<          (null)>]           (null)
        [  168.040395] PGD cdd4067 PUD fa0f067 PMD 0
        [  168.043303] Oops: 0010 [#1] SMP
        [  168.045377] Modules linked in: ath10k_pci(O) ath10k_core(O) ath mac80211 cfg80211 [last unloaded: cfg80211]
        [  168.051560] CPU: 1 PID: 1380 Comm: bash Tainted: G        W  O    4.8.0 #78
        [  168.054336] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.7.5-20140531_083030-gandalf 04/01/2014
        [  168.059183] task: ffff88000c460c00 task.stack: ffff88000d4bc000
        [  168.061736] RIP: 0010:[<0000000000000000>]  [<          (null)>]           (null)
        ...
        [  168.100620] Call Trace:
        [  168.101910]  [<ffffffffa03b9566>] ? ath10k_spectral_scan_config+0x96/0x200 [ath10k_core]
        [  168.104871]  [<ffffffff811386e2>] ? filemap_fault+0xb2/0x4a0
        [  168.106696]  [<ffffffffa03b97e6>] write_file_spec_scan_ctl+0x116/0x280 [ath10k_core]
        [  168.109618]  [<ffffffff812da3a1>] full_proxy_write+0x51/0x80
        [  168.111443]  [<ffffffff811957b8>] __vfs_write+0x28/0x120
        [  168.113090]  [<ffffffff812f1a2d>] ? security_file_permission+0x3d/0xc0
        [  168.114932]  [<ffffffff8109b912>] ? percpu_down_read+0x12/0x60
        [  168.116680]  [<ffffffff811965f8>] vfs_write+0xb8/0x1a0
        [  168.118293]  [<ffffffff81197966>] SyS_write+0x46/0xa0
        [  168.119912]  [<ffffffff818f2972>] entry_SYSCALL_64_fastpath+0x1a/0xa4
        [  168.121737] Code:  Bad RIP value.
        [  168.123318] RIP  [<          (null)>]           (null)
      Signed-off-by: default avatarMichal Kazior <michal.kazior@tieto.com>
      Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      18ae68ff
    • Pedersen, Thomas's avatar
      ath10k: remove set/get_tsf ieee80211_ops · f6f64cfb
      Pedersen, Thomas authored
      Neither of these did the right thing:
      
      - get_tsf just returned 0
      - set_tsf assumed a simple offset was applied against
        get_tsf(), which works, except in the case of
        calculating TSF from rx_mactime (actual TSF).
      
      Just remove them for now. We can reimplement set_tsf in
      terms of TSF increment/decrement in the future if get_tsf
      is ever supported by FW.
      Signed-off-by: default avatarThomas Pedersen <twp@qca.qualcomm.com>
      Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      f6f64cfb
    • Pedersen, Thomas's avatar
      ath10k: implement offset_tsf ieee80211_op · 973324ff
      Pedersen, Thomas authored
      Current set_tsf is implemented in terms of TSF_INCREMENT
      only. Instead support new WMI command TSF_DECREMENT and
      export these through offset_tsf. Advantage is we get
      more accurate TSF adjustments, and don't calculate wrong
      offset in case absolute TSF was calculated from rx_mactime
      (actual TSF).
      
      The new WMI command is available in firmware
      10.4-3.2.1-00033 for QCA4019 chips. Old drivers on new
      firmware or vice versa shouldn't  be a problem since
      get/set tsf logic was already broken.
      Signed-off-by: default avatarThomas Pedersen <twp@qca.qualcomm.com>
      Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      973324ff
    • Rajkumar Manoharan's avatar
      ath10k: advertize hardware packet loss mechanism · ff32eeb8
      Rajkumar Manoharan authored
      Indicate hardware (or firmware) supports that CQM packet-loss report
      will be generated based on station kickout algorithm. As of now mac80211
      tracks connection loss by missing msdu counts (50) whereas ath10k
      firmware tracks them by missing ppdus (+ BAR tries). While firmware is
      trying to adapt its rate table, mac80211 might send out low_ack event to
      hostapd. This is causing frequent connect and disconnect iteration under
      noisy environment or when station is roaming around.
      Signed-off-by: default avatarRajkumar Manoharan <rmanohar@qti.qualcomm.com>
      Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
      ff32eeb8
    • Kalle Valo's avatar
      Merge ath-next from git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git · e644b88e
      Kalle Valo authored
      ath.git patches for 4.10. Major changes:
      
      ath9k
      
      * add device tree bindings
      * switch to use mac80211 intermediate software queues to reduce
        latency and fix bufferbloat
      e644b88e
  2. 19 Nov, 2016 15 commits
  3. 18 Nov, 2016 3 commits
  4. 17 Nov, 2016 14 commits