1. 26 Jan, 2020 17 commits
    • John Crispin's avatar
      ath11k: make sure to also report the RX bandwidth inside radiotap · 93634c61
      John Crispin authored
      Add IEEE80211_RADIOTAP_HE_DATA1_BW_RU_ALLOC_KNOWN to the list of known
      fields. Not doing so will result in wireshark not calculating the
      bitrate correctly.
      Signed-off-by: default avatarJohn Crispin <john@phrozen.org>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      93634c61
    • Colin Ian King's avatar
      ath11k: avoid null pointer dereference when pointer band is null · 3b451683
      Colin Ian King authored
      In the unlikely event that cap->supported_bands has neither
      WMI_HOST_WLAN_2G_CAP set or WMI_HOST_WLAN_5G_CAP set then pointer
      band is null and a null dereference occurs when assigning
      band->n_iftype_data.  Move the assignment to the if blocks to
      avoid this.  Cleans up static analysis warnings.
      
      Addresses-Coverity: ("Explicit null dereference")
      Fixes: 9f056ed8 ("ath11k: add HE support")
      Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      3b451683
    • Bhagavathi Perumal S's avatar
      ath11k: Add missing pdev rx rate stats · 875603b3
      Bhagavathi Perumal S authored
      This adds missing rx rate info stats like pilot evm,
      per chain rssi, per user ul ppdu and mpdu counts and
      ul ofdma rate info etc.
      
      And add null checks for memory alloc failures.
      Signed-off-by: default avatarBhagavathi Perumal S <bperumal@codeaurora.org>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      875603b3
    • Colin Ian King's avatar
      ath11k: ensure ts.flags is initialized before bit-wise or'ing in values · eefca584
      Colin Ian King authored
      Currently the structure ts is not inititalized and ts.flags contains
      garbage values from the stack.  This is being passed into function
      ath11k_dp_tx_status_parse that bit-wise or'ing in settings into the
      ts.flags field.  To avoid flags (and other fields) from containing
      garbage, initialize the structure to zero before use.
      
      Addresses-Coverity: ("Uninitialized scalar variable)"
      Fixes: d5c65159 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")
      Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      eefca584
    • Bhagavathi Perumal S's avatar
      ath11k: set TxBf parameters after vdev start · 5815719d
      Bhagavathi Perumal S authored
      The channel info parameters are required by the firmware to process TxBf
      parameters. Currently TxBf is passed prior to the channel info. This patch
      moves TxBf setup after the channel setup.
      Signed-off-by: default avatarJohn Crispin <john@phrozen.org>
      Signed-off-by: default avatarBhagavathi Perumal S <bperumal@codeaurora.org>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      5815719d
    • Anilkumar Kolli's avatar
      ath11k: enable HE tlvs in ppdu stats for pktlog lite · 1e93a781
      Anilkumar Kolli authored
      This patch enables HE tlvs in ppdu stats for pktlog lite mode.
      Signed-off-by: default avatarJohn Crispin <john@phrozen.org>
      Signed-off-by: default avatarAnilkumar Kolli <akolli@codeaurora.org>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      1e93a781
    • 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 10 commits