1. 26 3月, 2018 2 次提交
    • M
      ath10k: debugfs support to get final TPC stats for 10.4 variants · bc64d052
      Maharaja Kennadyrajan 提交于
      Export the final Transmit Power Control (TPC) value, which is the
      minimum of control power and existing TPC value to user space via
      a new debugfs file "tpc_stats_final" to help with debugging.
      It works with the new wmi cmd and event introduced in 10.4 firmware
      branch.
      
      WMI command ID: WMI_PDEV_GET_TPC_TABLE_CMDID
      WMI event ID: WMI_PDEV_TPC_TABLE_EVENTID
      
      cat /sys/kernel/debug/ieee80211/phyX/ath10k/tpc_stats_final
      
      $ cat /sys/kernel/debug/ieee80211/phyX/ath10k/tpc_stats_final
      
      TPC config for channel 5180 mode 10
      
      CTL             =  0x 0 Reg. Domain             = 58
      Antenna Gain    =  0 Reg. Max Antenna Gain      =   0
      Power Limit     = 60 Reg. Max Power             = 60
      Num tx chains   =  2 Num supported rates        = 109
      
      ******************* CDD POWER TABLE ****************
      
      No.  Preamble Rate_code tpc_value1 tpc_value2 tpc_value3
      0    CCK      0x40        0          0
      1    CCK      0x41        0          0
      [...]
      107  HTCUP    0x 0       46          46
      108  HTCUP    0x 0       46          46
      
      ******************* STBC POWER TABLE ****************
      
      No.  Preamble Rate_code tpc_value1 tpc_value2 tpc_value3
      0    CCK      0x40        0          0
      1    CCK      0x41        0          0
      [...]
      107  HTCUP    0x 0        46         46
      108  HTCUP    0x 0        46         46
      
      ***********************************
      TXBF not supported
      **********************************
      
      The existing tpc_stats debugfs file provides the dump
      which is minimum of target power and regulatory domain.
      
      cat /sys/kernel/debug/ieee80211/phyX/ath10k/tpc_stats
      
      Hardware_used: QCA4019
      Firmware version: firmware-5.bin_10.4-3.0-00209
      Signed-off-by: NMaharaja Kennadyrajan <mkenna@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      bc64d052
    • V
      ath10k: add sta rx packet stats per tid · caee728a
      Vasanthakumar Thiagarajan 提交于
      Added per tid sta counters for the following
      
      - Total number MSDUs received from firmware
      - Number of MSDUs received with errors like decryption, crc, mic ,etc.
      - Number of MSDUs dropped in the driver
      - A-MPDU/A-MSDU subframe stats
      - Number of MSDUS passed to mac80211
      
      All stats other than A-MPDU stats are only for received data frames.
      A-MPDU stats might have stats for management frames when monitor
      interface is active where management frames are notified both in wmi
      and HTT interfaces.
      
      These per tid stats can be enabled with tid bitmask through a debugfs
      like below
      
       echo <tid_bitmask> > /sys/kernel/debug/ieee80211/phyX/ath10k/sta_tid_stats_mask
      
       tid 16 (tid_bitmask 0x10000) is used for non-qos data/management frames
      
      The stats are read from
      /sys/kernel/debug/ieee80211/phyX/netdev\:wlanX/stations/<sta_mac>/dump_tid_stats
      
      Sample output:
      
       To enable rx stats for tid 0, 5 and 6,
      
       echo 0x00000061 > /sys/kernel/debug/ieee80211/phy0/ath10k/sta_tid_stats_mask
      
      cat /sys/kernel/debug/ieee80211/phy0/netdev\:wlan15/stations/8c\:fd\:f0\:0a\:8e\:df/dump_tid_stats
      
        		Driver Rx pkt stats per tid, ([tid] count)
                      ------------------------------------------
      MSDUs from FW                   [00] 2567        [05] 3178        [06] 1089
      MSDUs unchained                 [00] 0           [05] 0           [06] 0
      MSDUs locally dropped:chained   [00] 0           [05] 0           [06] 0
      MSDUs locally dropped:filtered  [00] 0           [05] 0           [06] 0
      MSDUs queued for mac80211       [00] 2567        [05] 3178        [06] 1089
      MSDUs with error:fcs_err        [00] 0           [05] 0           [06] 2
      MSDUs with error:tkip_err       [00] 0           [05] 0           [06] 0
      MSDUs with error:crypt_err      [00] 0           [05] 0           [06] 0
      MSDUs with error:peer_idx_inval [00] 0           [05] 0           [06] 0
      
      A-MPDU num subframes upto 10    [00] 2567        [05] 3178        [06] 1087
      A-MPDU num subframes 11-20      [00] 0           [05] 0           [06] 0
      A-MPDU num subframes 21-30      [00] 0           [05] 0           [06] 0
      A-MPDU num subframes 31-40      [00] 0           [05] 0           [06] 0
      A-MPDU num subframes 41-50      [00] 0           [05] 0           [06] 0
      A-MPDU num subframes 51-60      [00] 0           [05] 0           [06] 0
      A-MPDU num subframes >60        [00] 0           [05] 0           [06] 0
      
      A-MSDU num subframes 1          [00] 2567        [05] 3178        [06] 1089
      A-MSDU num subframes 2          [00] 0           [05] 0           [06] 0
      A-MSDU num subframes 3          [00] 0           [05] 0           [06] 0
      A-MSDU num subframes 4          [00] 0           [05] 0           [06] 0
      A-MSDU num subframes >4         [00] 0           [05] 0           [06] 0
      Signed-off-by: NVasanthakumar Thiagarajan <vthiagar@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      caee728a
  2. 14 3月, 2018 2 次提交
    • T
      ath9k: Protect queue draining by rcu_read_lock() · 182b1917
      Toke Høiland-Jørgensen 提交于
      When ath9k was switched over to use the mac80211 intermediate queues,
      node cleanup now drains the mac80211 queues. However, this call path is
      not protected by rcu_read_lock() as it was previously entirely internal
      to the driver which uses its own locking.
      
      This leads to a possible rcu_dereference() without holding
      rcu_read_lock(); but only if a station is cleaned up while having
      packets queued on the TXQ. Fix this by adding the rcu_read_lock() to the
      caller in ath9k.
      
      Fixes: 50f08edf ("ath9k: Switch to using mac80211 intermediate software queues.")
      Cc: stable@vger.kernel.org
      Reported-by: NBen Greear <greearb@candelatech.com>
      Signed-off-by: NToke Høiland-Jørgensen <toke@toke.dk>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      182b1917
    • R
      ath10k: dma unmap mgmt tx buffer if wmi cmd send fails · 38a1390e
      Rakesh Pillai 提交于
      WCN3990 sends mgmt frames by reference via WMI.
      The host dma maps the mgmt frame and sends the physical
      address to the firmware in the wmi command. Since the
      dma mapping is done in the gen_mgmt_tx and if the wmi
      command send fails, the corresponding mgmt frame is
      not being dma unmapped.
      
      Fix the missing dma unmapping of mgmt tx frame when
      wmi command sending fails for mgmt tx by reference
      via WMI. The already exisiting mgmt tx using copy by
      value does not need such dma unmapping.
      Add a separate wmi-tlv op for mgmt tx via ref, which
      takes care of unmapping the dma address, in case of
      wmi command sending failure.
      Signed-off-by: NRakesh Pillai <pillair@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      38a1390e
  3. 28 2月, 2018 14 次提交
  4. 26 2月, 2018 2 次提交
  5. 19 2月, 2018 2 次提交
  6. 12 2月, 2018 1 次提交
    • L
      vfs: do bulk POLL* -> EPOLL* replacement · a9a08845
      Linus Torvalds 提交于
      This is the mindless scripted replacement of kernel use of POLL*
      variables as described by Al, done by this script:
      
          for V in IN OUT PRI ERR RDNORM RDBAND WRNORM WRBAND HUP RDHUP NVAL MSG; do
              L=`git grep -l -w POLL$V | grep -v '^t' | grep -v /um/ | grep -v '^sa' | grep -v '/poll.h$'|grep -v '^D'`
              for f in $L; do sed -i "-es/^\([^\"]*\)\(\<POLL$V\>\)/\\1E\\2/" $f; done
          done
      
      with de-mangling cleanups yet to come.
      
      NOTE! On almost all architectures, the EPOLL* constants have the same
      values as the POLL* constants do.  But they keyword here is "almost".
      For various bad reasons they aren't the same, and epoll() doesn't
      actually work quite correctly in some cases due to this on Sparc et al.
      
      The next patch from Al will sort out the final differences, and we
      should be all done.
      Scripted-by: NAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a9a08845
  7. 08 2月, 2018 1 次提交
    • R
      Revert "ath10k: add sanity check to ie_len before parsing fw/board ie" · 9ce8b24a
      Ryan Hsu 提交于
      This reverts commit 9ed4f916.
      
      The commit introduced a regression that over read the ie with
      the padding.
      
      - the expected IE information
      
      ath10k_pci 0000:03:00.0: found firmware features ie (1 B)
      ath10k_pci 0000:03:00.0: Enabling feature bit: 6
      ath10k_pci 0000:03:00.0: Enabling feature bit: 7
      ath10k_pci 0000:03:00.0: features
      ath10k_pci 0000:03:00.0: 00000000: c0 00 00 00 00 00 00 00
      
      - the wrong IE with padding is read (0x77)
      
      ath10k_pci 0000:03:00.0: found firmware features ie (4 B)
      ath10k_pci 0000:03:00.0: Enabling feature bit: 6
      ath10k_pci 0000:03:00.0: Enabling feature bit: 7
      ath10k_pci 0000:03:00.0: Enabling feature bit: 8
      ath10k_pci 0000:03:00.0: Enabling feature bit: 9
      ath10k_pci 0000:03:00.0: Enabling feature bit: 10
      ath10k_pci 0000:03:00.0: Enabling feature bit: 12
      ath10k_pci 0000:03:00.0: Enabling feature bit: 13
      ath10k_pci 0000:03:00.0: Enabling feature bit: 14
      ath10k_pci 0000:03:00.0: Enabling feature bit: 16
      ath10k_pci 0000:03:00.0: Enabling feature bit: 17
      ath10k_pci 0000:03:00.0: Enabling feature bit: 18
      ath10k_pci 0000:03:00.0: features
      ath10k_pci 0000:03:00.0: 00000000: c0 77 07 00 00 00 00 00
      Tested-by: NMike Lothian <mike@fireburn.co.uk>
      Signed-off-by: NRyan Hsu <ryanhsu@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      9ce8b24a
  8. 07 2月, 2018 6 次提交
    • O
    • Y
      ath10k: fix kernel panic issue during pci probe · 50e79e25
      Yu Wang 提交于
      If device gone during chip reset, ar->normal_mode_fw.board is not
      initialized, but ath10k_debug_print_hwfw_info() will try to access its
      member, which will cause 'kernel NULL pointer' issue. This was found
      using a faulty device (pci link went down sometimes) in a random
      insmod/rmmod/other-op test.
      To fix it, check ar->normal_mode_fw.board before accessing the member.
      
      pci 0000:02:00.0: BAR 0: assigned [mem 0xf7400000-0xf75fffff 64bit]
      ath10k_pci 0000:02:00.0: enabling device (0000 -> 0002)
      ath10k_pci 0000:02:00.0: pci irq msi oper_irq_mode 2 irq_mode 0 reset_mode 0
      ath10k_pci 0000:02:00.0: failed to read device register, device is gone
      ath10k_pci 0000:02:00.0: failed to wait for target init: -5
      ath10k_pci 0000:02:00.0: failed to warm reset: -5
      ath10k_pci 0000:02:00.0: firmware crashed during chip reset
      ath10k_pci 0000:02:00.0: firmware crashed! (uuid 5d018951-b8e1-404a-8fde-923078b4423a)
      ath10k_pci 0000:02:00.0: (null) target 0x00000000 chip_id 0x00340aff sub 0000:0000
      ath10k_pci 0000:02:00.0: kconfig debug 1 debugfs 1 tracing 1 dfs 1 testmode 1
      ath10k_pci 0000:02:00.0: firmware ver  api 0 features  crc32 00000000
      ...
      BUG: unable to handle kernel NULL pointer dereference at 00000004
      ...
      Call Trace:
       [<fb4e7882>] ath10k_print_driver_info+0x12/0x20 [ath10k_core]
       [<fb62b7dd>] ath10k_pci_fw_crashed_dump+0x6d/0x4d0 [ath10k_pci]
       [<fb629f07>] ? ath10k_pci_sleep.part.19+0x57/0xc0 [ath10k_pci]
       [<fb62c8ee>] ath10k_pci_hif_power_up+0x14e/0x1b0 [ath10k_pci]
       [<c10477fb>] ? do_page_fault+0xb/0x10
       [<fb4eb934>] ath10k_core_register_work+0x24/0x840 [ath10k_core]
       [<c18a00d8>] ? netlbl_unlhsh_remove+0x178/0x410
       [<c10477f0>] ? __do_page_fault+0x480/0x480
       [<c1068e44>] process_one_work+0x114/0x3e0
       [<c1069d07>] worker_thread+0x37/0x4a0
       [<c106e294>] kthread+0xa4/0xc0
       [<c1069cd0>] ? create_worker+0x180/0x180
       [<c106e1f0>] ? kthread_park+0x50/0x50
       [<c18ab4f7>] ret_from_fork+0x1b/0x28
       Code: 78 80 b8 50 09 00 00 00 75 5d 8d 75 94 c7 44 24 08 aa d7 52 fb c7 44 24 04 64 00 00 00
       89 34 24 e8 82 52 e2 c5 8b 83 dc 08 00 00 <8b> 50 04 8b 08 31 c0 e8 20 57 e3 c5 89 44 24 10 8b 83 58 09 00
       EIP: [<fb4e7754>]-
       ath10k_debug_print_board_info+0x34/0xb0 [ath10k_core]
       SS:ESP 0068:f4921d90
       CR2: 0000000000000004
      Signed-off-by: NYu Wang <yyuwang@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      50e79e25
    • W
      ath9k: Fix get channel default noise floor · b9607de6
      Wojciech Dubowik 提交于
      Commit 8da58553 ("ath9k: Use calibrated noise floor value
      when available") introduced regression in ath9k_hw_getchan_noise
      where per chain nominal noise floor has been taken instead default
      for channel.
      Revert to original default channel noise floor.
      
      Fixes: 8da58553 ("ath9k: Use calibrated noise floor value when available")
      Reported-by: NSebastian Gottschall <s.gottschall@dd-wrt.com>
      Signed-off-by: NWojciech Dubowik <Wojciech.Dubowik@neratec.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      b9607de6
    • T
      ath10k: add support for Ubiquiti rebranded QCA988X v2 · 34f1cb33
      Tobias Schramm 提交于
      Some modern Ubiquiti devices contain a rebranded QCA988X rev2 with
      a custom Ubiquiti vendor and device id. This patch adds support for
      those devices, treating them as a QCA988X v2.
      Signed-off-by: NTobias Schramm <tobleminer@gmail.com>
      [kvalo@codeaurora.org: rebase, add missing fields in hw_params, fix a long line in pci.c:61]
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      34f1cb33
    • Y
      ath10k: correct the length of DRAM dump for QCA6174 hw3.x/QCA9377 hw1.1 · 0a7fe718
      Yu Wang 提交于
      The length of DRAM dump for QCA6174 hw3.0/hw3.2 and QCA9377 hw1.1
      are less than the actual value, some coredump contents are missed.
      To fix it, change the length from 0x90000 to 0xa8000.
      
      Fixes: 703f261d ("ath10k: add memory dump support for QCA6174/QCA9377")
      Signed-off-by: NYu Wang <yyuwang@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      0a7fe718
    • L
      rtlwifi: rtl8821ae: Fix connection lost problem correctly · c713fb07
      Larry Finger 提交于
      There has been a coding error in rtl8821ae since it was first introduced,
      namely that an 8-bit register was read using a 16-bit read in
      _rtl8821ae_dbi_read(). This error was fixed with commit 40b368af
      ("rtlwifi: Fix alignment issues"); however, this change led to
      instability in the connection. To restore stability, this change
      was reverted in commit b8b8b163 ("rtlwifi: rtl8821ae: Fix connection
      lost problem").
      
      Unfortunately, the unaligned access causes machine checks in ARM
      architecture, and we were finally forced to find the actual cause of the
      problem on x86 platforms. Following a suggestion from Pkshih
      <pkshih@realtek.com>, it was found that increasing the ASPM L1
      latency from 0 to 7 fixed the instability. This parameter was varied to
      see if a smaller value would work; however, it appears that 7 is the
      safest value. A new symbol is defined for this quantity, thus it can be
      easily changed if necessary.
      
      Fixes: b8b8b163 ("rtlwifi: rtl8821ae: Fix connection lost problem")
      Cc: Stable <stable@vger.kernel.org> # 4.14+
      Fix-suggested-by: NPkshih <pkshih@realtek.com>
      Signed-off-by: NLarry Finger <Larry.Finger@lwfinger.net>
      Tested-by: James Cameron <quozl@laptop.org>  # x86_64 OLPC NL3
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      c713fb07
  9. 01 2月, 2018 4 次提交
  10. 31 1月, 2018 3 次提交
  11. 26 1月, 2018 3 次提交