1. 26 Jan, 2020 11 commits
    • Arnd Bergmann's avatar
      ath11k: fix debugfs build failure · a45ceea5
      Arnd Bergmann authored
      When CONFIG_ATH11K_DEBUGFS is disabled, but CONFIG_MAC80211_DEBUGFS
      is turned on, the driver fails to build:
      
      drivers/net/wireless/ath/ath11k/debugfs_sta.c: In function 'ath11k_dbg_sta_open_htt_peer_stats':
      drivers/net/wireless/ath/ath11k/debugfs_sta.c:416:4: error: 'struct ath11k' has no member named 'debug'
        ar->debug.htt_stats.stats_req = stats_req;
          ^~
      
      It appears that just using the former symbol is sufficient here,
      adding a Kconfig dependency takes care of the corner cases.
      
      Fixes: d5c65159 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      a45ceea5
    • Govind Singh's avatar
      ath10k: Don't call SCM interface for statically mapped msa region · ab000ea6
      Govind Singh authored
      For some targets ex: QCS404, SCM permissions for MSA region is
      statically configured in TrustZone fw. Add SCM call disable option
      for such targets to avoid duplicate permissions.
      
      Testing: Tested on WCN3990 HW
      Tested FW: WLAN.HL.3.1-01040-QCAHLSWMTPLZ-1
      Signed-off-by: default avatarGovind Singh <govinds@codeaurora.org>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      ab000ea6
    • Govind Singh's avatar
      dt: bindings: add dt entry flag to skip SCM call for msa region · 6ca71a10
      Govind Singh authored
      Add boolean context flag to disable SCM call for statically
      mapped msa region.
      Signed-off-by: default avatarGovind Singh <govinds@codeaurora.org>
      Acked-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      6ca71a10
    • Zhi Chen's avatar
      Revert "ath10k: fix DMA related firmware crashes on multiple devices" · a1769bb6
      Zhi Chen authored
      This reverts commit 76d164f5.
      PCIe hung issue was observed on multiple platforms. The issue was reproduced
      when DUT was configured as AP and associated with 50+ STAs.
      
      For QCA9984/QCA9888, the DMA_BURST_SIZE register controls the AXI burst size
      of the RD/WR access to the HOST MEM.
      0 - No split , RAW read/write transfer size from MAC is put out on bus
          as burst length
      1 - Split at 256 byte boundary
      2,3 - Reserved
      
      With PCIe protocol analyzer, we can see DMA Read crossing 4KB boundary when
      issue happened. It broke PCIe spec and caused PCIe stuck. So revert
      the default value from 0 to 1.
      
      Tested:  IPQ8064 + QCA9984 with firmware 10.4-3.10-00047
               QCS404 + QCA9984 with firmware 10.4-3.9.0.2--00044
               Synaptics AS370 + QCA9888  with firmware 10.4-3.9.0.2--00040
      Signed-off-by: default avatarZhi Chen <zhichen@codeaurora.org>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      a1769bb6
    • Wen Gong's avatar
      ath10k: drop RX skb with invalid length for sdio · 218f646d
      Wen Gong authored
      When simulate random transfer fail for sdio write and read, it crash
      sometimes.
      
      Test steps:
      1. Add config and update kernel:
      CONFIG_FAIL_MMC_REQUEST=y
      CONFIG_FAULT_INJECTION=y
      CONFIG_FAULT_INJECTION_DEBUG_FS=y
      
      2. run simulate fail:
      cd /sys/kernel/debug/mmc1/fail_mmc_request
      echo 10 > probability
      echo 10 > times # repeat until hitting issues
      
      3. it crash, the act len of ath10k_htc_hdr is higher than allocate len, it cause panic:
      [   99.723482] skbuff: skb_over_panic: text:00000000caa0f780 len:57013 put:57013 head:000000004116f24a data:0000000019ecb4dc tail:0xdef5 end:0x640 dev:<NULL>
      [   99.737697] ------------[ cut here ]------------
      [   99.742327] kernel BUG at /mnt/host/source/src/third_party/kernel/v4.19/net/core/skbuff.c:104!
      [   99.750937] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
      [   99.831154] Process kworker/0:2 (pid: 151, stack limit = 0x00000000728010bf)
      [   99.838200] CPU: 0 PID: 151 Comm: kworker/0:2 Tainted: G W 4.19.85 #48
      [   99.846022] Hardware name: MediaTek krane sku0 board (DT)
      [   99.851429] Workqueue: events sdio_irq_work
      [   99.855614] pstate: 60000005 (nZCv daif -PAN -UAO)
      [   99.860402] pc : skb_panic+0x64/0x68
      [   99.863974] lr : skb_panic+0x64/0x68
      [   99.867542] sp : ffffff8008833a90
      [   99.870850] x29: ffffff8008833ac0 x28: ffffffe52e337370
      [   99.876159] x27: ffffffe52e328a90 x26: 000000000000e0d0
      [   99.881469] x25: ffffffe52e336b60 x24: 000000000000deb5
      [   99.886779] x23: ffffffe52e340680 x22: ffffffe4efd47e00
      [   99.892088] x21: 000000000000deb5 x20: ffffffa516d85b4c
      [   99.897397] x19: ffffffa526928037 x18: 0000000000000000
      [   99.902706] x17: 000000000000003c x16: ffffffa5265b6c80
      [   99.908015] x15: 0000000000000006 x14: 3a76656420303436
      [   99.913325] x13: 0000000000029bf0 x12: 0000000000000000
      [   99.918634] x11: 0000000000000000 x10: 0000000000000000
      [   99.923943] x9 : a3b907e4b2783000 x8 : a3b907e4b2783000
      [   99.929253] x7 : 0000000000000000 x6 : ffffffa526f66d76
      [   99.934563] x5 : 0000000000000000 x4 : 0000000000000000
      [   99.939872] x3 : 000000000002a5ab x2 : ffffffe53feed918
      [   99.945182] x1 : ffffffe53fee4a08 x0 : 000000000000008e
      [   99.950491] Call trace:
      [   99.952937]  skb_panic+0x64/0x68
      [   99.956165]  skb_put+0x7c/0x84
      [   99.959224]  ath10k_sdio_irq_handler+0x740/0xbb8 [ath10k_sdio]
      [   99.965055]  process_sdio_pending_irqs+0x58/0x1a4
      [   99.969758]  sdio_run_irqs+0x34/0x60
      [   99.973329]  sdio_irq_work+0x1c/0x28
      [   99.974930] cros-ec-spi spi2.0: SPI transfer timed out
      [   99.976904]  process_one_work+0x210/0x410
      [   99.976911]  worker_thread+0x234/0x3dc
      [   99.976923]  kthread+0x120/0x130
      [   99.982090] cros-ec-spi spi2.0: spi transfer failed: -110
      [   99.986054]  ret_from_fork+0x10/0x18
      [   99.986063] Code: aa1403e2 2a1503e4 a90023e9 97e37d1a (d4210000)
      [   99.986068] ---[ end trace cb6d948c5a0fd6c7 ]---
      [  100.017250] Kernel panic - not syncing: Fatal exception
      [  100.018879] cros-ec-spi spi2.0: Command xfer error (err:-110)
      [  100.023659] SMP: stopping secondary CPUs
      [  100.023703] Kernel Offset: 0x251dc00000 from 0xffffff8008000000
      [  100.023707] CPU features: 0x0,2188200c
      [  100.023709] Memory Limit: none
      
      The simulate fail of sdio is not a real sdio transter fail, it only
      set an error status in mmc_should_fail_request after the transfer end,
      actually the transfer is success, then sdio_io_rw_ext_helper will
      return error status and stop transfer the left data. For example,
      the really RX len is 286 bytes, then it will split to 2 blocks in
      sdio_io_rw_ext_helper, one is 256 bytes, left is 30 bytes, if the
      first 256 bytes get an error status by mmc_should_fail_request,then
      the left 30 bytes will not read in this RX operation. Then when the
      next RX arrive, the left 30 bytes will be considered as the header
      of the read, the top 8 bytes will be considered as ath10k_htc_hdr,
      but actually the 8 bytes is not the ath10k_htc_hdr, so the act_len
      from this ath10k_htc_hdr is not correct, if it is a big value, such
      as 57013, it will trigger skb_panic.
      
      Drop the skb with invalid length will be reasonable.
      
      This patch only effect sdio chips.
      
      Tested with QCA6174 SDIO with firmware WLAN.RMH.4.4.1-00029.
      Signed-off-by: default avatarWen Gong <wgong@codeaurora.org>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      218f646d
    • zhengbin's avatar
      ath10k: use true,false for bool variable · 0f7ab288
      zhengbin authored
      Fixes coccicheck warning:
      
      drivers/net/wireless/ath/ath10k/htt_rx.c:2143:2-31: WARNING: Assignment of 0/1 to bool variable
      Reported-by: default avatarHulk Robot <hulkci@huawei.com>
      Signed-off-by: default avatarzhengbin <zhengbin13@huawei.com>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      0f7ab288
    • Bjorn Andersson's avatar
      ath10k: Add optional qdss clk · 57a3b60d
      Bjorn Andersson authored
      The WiFi firmware found on sm8150 requires that the QDSS clock is
      ticking in order to operate, so add an optional clock to the binding to
      allow this to be specified in the sm8150 dts and add the clock to the
      list of clocks in the driver.
      Signed-off-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
      Acked-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      57a3b60d
    • Bryan O'Donoghue's avatar
      ath10k: pci: Fix comment on ath10k_pci_dump_memory_sram · 63ec5cbc
      Bryan O'Donoghue authored
      The description of ath10k_pci_dump_memory_sram() is inaccurate, an error
      can never be returned, it is always the length. Update the comment to
      reflect.
      
      Fixes: 219cc084 ("ath10k: add memory dump support QCA9984")
      Signed-off-by: default avatarBryan O'Donoghue <bryan.odonoghue@linaro.org>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      63ec5cbc
    • Bryan O'Donoghue's avatar
      ath10k: pci: Only dump ATH10K_MEM_REGION_TYPE_IOREG when safe · d2393801
      Bryan O'Donoghue authored
      ath10k_pci_dump_memory_reg() will try to access memory of type
      ATH10K_MEM_REGION_TYPE_IOREG however, if a hardware restart is in progress
      this can crash a system.
      
      Individual ioread32() time has been observed to jump from 15-20 ticks to >
      80k ticks followed by a secure-watchdog bite and a system reset.
      
      Work around this corner case by only issuing the read transaction when the
      driver state is ATH10K_STATE_ON.
      
      Tested-on: QCA9988 PCI 10.4-3.9.0.2-00044
      
      Fixes: 219cc084 ("ath10k: add memory dump support QCA9984")
      Signed-off-by: default avatarBryan O'Donoghue <bryan.odonoghue@linaro.org>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      d2393801
    • zhengbin's avatar
      wil6210: use true,false for bool variable · f89ee992
      zhengbin authored
      Fixes coccicheck warning:
      
      drivers/net/wireless/ath/wil6210/main.c:765:1-14: WARNING: Assignment of 0/1 to bool variable
      drivers/net/wireless/ath/wil6210/txrx.c:1143:1-19: WARNING: Assignment of 0/1 to bool variable
      drivers/net/wireless/ath/wil6210/wmi.c:1516:4-23: WARNING: Assignment of 0/1 to bool variable
      drivers/net/wireless/ath/wil6210/wmi.c:1523:4-23: WARNING: Assignment of 0/1 to bool variable
      drivers/net/wireless/ath/wil6210/wmi.c:1538:4-30: WARNING: Assignment of 0/1 to bool variable
      drivers/net/wireless/ath/wil6210/wmi.c:1545:4-30: WARNING: Assignment of 0/1 to bool variable
      Reported-by: default avatarHulk Robot <hulkci@huawei.com>
      Signed-off-by: default avatarzhengbin <zhengbin13@huawei.com>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      f89ee992
    • zhengbin's avatar
      ath9k: use true,false for bool variable · d27c768f
      zhengbin authored
      Fixes coccicheck warning:
      
      drivers/net/wireless/ath/ath9k/ar9003_aic.c:409:2-12: WARNING: Assignment of 0/1 to bool variable
      Reported-by: default avatarHulk Robot <hulkci@huawei.com>
      Signed-off-by: default avatarzhengbin <zhengbin13@huawei.com>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      d27c768f
  2. 13 Jan, 2020 2 commits
  3. 12 Jan, 2020 11 commits
  4. 11 Jan, 2020 16 commits