1. 05 5月, 2019 1 次提交
  2. 31 7月, 2018 3 次提交
    • S
      ath10k: prevent active scans on potential unusable channels · 3f259111
      Sven Eckelmann 提交于
      The QCA4019 hw1.0 firmware 10.4-3.2.1-00050 and 10.4-3.5.3-00053 (and most
      likely all other) seem to ignore the WMI_CHAN_FLAG_DFS flag during the
      scan. This results in transmission (probe requests) on channels which are
      not "available" for transmissions.
      
      Since the firmware is closed source and nothing can be done from our side
      to fix the problem in it, the driver has to work around this problem. The
      WMI_CHAN_FLAG_PASSIVE seems to be interpreted by the firmware to not
      scan actively on a channel unless an AP was detected on it. Simple probe
      requests will then be transmitted by the STA on the channel.
      
      ath10k must therefore also use this flag when it queues a radar channel for
      scanning. This should reduce the chance of an active scan when the channel
      might be "unusable" for transmissions.
      
      Fixes: e8a50f8b ("ath10k: introduce DFS implementation")
      Signed-off-by: NSven Eckelmann <sven.eckelmann@openmesh.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      3f259111
    • K
      ath10k: fix parenthesis alignment · ebfac1d0
      Kalle Valo 提交于
      These were recently introduced and found by checkpatch:
      
      drivers/net/wireless/ath/ath10k/mac.c:6118: Alignment should match open parenthesis
      drivers/net/wireless/ath/ath10k/mac.c:6121: Alignment should match open parenthesis
      drivers/net/wireless/ath/ath10k/mac.c:6124: Alignment should match open parenthesis
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      ebfac1d0
    • P
      ath10k: support for multicast rate control · cd93b83a
      Pradeep Kumar Chitrapu 提交于
      Issues a wmi command to firmware when multicast rate change is received with the
      new BSS_CHANGED_MCAST_RATE flag.  Also fixes the incorrect fixed_rate setting
      for CCK rates which got introduced with addition of ath10k_rates_rev2 enum.
      
      Tested on QCA9984 with firmware ver 10.4-3.6-00104
      Signed-off-by: NPradeep Kumar Chitrapu <pradeepc@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      cd93b83a
  3. 28 6月, 2018 4 次提交
    • E
      ath10k: replace hardcoded constant with define · e4568eac
      Erik Stromdahl 提交于
      The hardcoded values used in ath10k_mac_tx_push_pending and
      ath10k_mac_op_wake_tx_queue set an upper limit of how many packets that
      can be consumed from the TX queue.
      
      HTC_HOST_MAX_MSG_PER_TX_BUNDLE is a proper name for this constant, as
      the value effectively limits the number of messages that can be consumed
      in one step. Thus, the value is an upper limit of the number of messages
      that can be added to a TX message bundle.
      Signed-off-by: NErik Stromdahl <erik.stromdahl@gmail.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      e4568eac
    • N
      ath10k: transmit queued frames after processing rx packets · 3f04950f
      Niklas Cassel 提交于
      When running iperf on ath10k SDIO, TX can stop working:
      
      iperf -c 192.168.1.1 -i 1 -t 20 -w 10K
      [  3]  0.0- 1.0 sec  2.00 MBytes  16.8 Mbits/sec
      [  3]  1.0- 2.0 sec  3.12 MBytes  26.2 Mbits/sec
      [  3]  2.0- 3.0 sec  3.25 MBytes  27.3 Mbits/sec
      [  3]  3.0- 4.0 sec   655 KBytes  5.36 Mbits/sec
      [  3]  4.0- 5.0 sec  0.00 Bytes  0.00 bits/sec
      [  3]  5.0- 6.0 sec  0.00 Bytes  0.00 bits/sec
      [  3]  6.0- 7.0 sec  0.00 Bytes  0.00 bits/sec
      [  3]  7.0- 8.0 sec  0.00 Bytes  0.00 bits/sec
      [  3]  8.0- 9.0 sec  0.00 Bytes  0.00 bits/sec
      [  3]  9.0-10.0 sec  0.00 Bytes  0.00 bits/sec
      [  3]  0.0-10.3 sec  9.01 MBytes  7.32 Mbits/sec
      
      There are frames in the ieee80211_txq and there are frames that have
      been removed from from this queue, but haven't yet been sent on the wire
      (num_pending_tx).
      
      When num_pending_tx reaches max_num_pending_tx, we will stop the queues
      by calling ieee80211_stop_queues().
      
      As frames that have previously been sent for transmission
      (num_pending_tx) are completed, we will decrease num_pending_tx and wake
      the queues by calling ieee80211_wake_queue(). ieee80211_wake_queue()
      does not call wake_tx_queue, so we might still have frames in the
      queue at this point.
      
      While the queues were stopped, the socket buffer might have filled up,
      and in order for user space to write more, we need to free the frames
      in the queue, since they are accounted to the socket. In order to free
      them, we first need to transmit them.
      
      This problem cannot be reproduced on low-latency devices, e.g. pci,
      since they call ath10k_mac_tx_push_pending() from
      ath10k_htt_txrx_compl_task(). ath10k_htt_txrx_compl_task() is not called
      on high-latency devices.
      Fix the problem by calling ath10k_mac_tx_push_pending(), after
      processing rx packets, just like for low-latency devices, also in the
      SDIO case. Since we are calling ath10k_mac_tx_push_pending() directly,
      we also need to export it.
      Signed-off-by: NNiklas Cassel <niklas.cassel@linaro.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      3f04950f
    • R
      ath10k: update the phymode along with bandwidth change request · 9191fc2a
      Ryan Hsu 提交于
      In the case of Station connects to AP with narrower bandwidth at beginning.
      And later the AP changes the bandwidth to winder bandwidth, the AP will
      beacon with wider bandwidth IE, eg VHT20->VHT40->VHT80 or VHT40->VHT80.
      
      Since the supported BANDWIDTH will be limited by the PHYMODE, so while
      Station receives the bandwidth change request, it will also need to
      reconfigure the PHYMODE setting to firmware instead of just configuring
      the BANDWIDTH info, otherwise it'll trigger a firmware crash with
      non-support bandwidth.
      
      The issue was observed in WLAN.RM.4.4.1-00051-QCARMSWP-1, QCA6174 with
      below scenario:
      
      AP xxx changed bandwidth, new config is 5200 MHz, width 2 (5190/0 MHz)
      disconnect from AP xxx for new auth to yyy
      RX ReassocResp from xxx (capab=0x1111 status=0 aid=102)
      associated
      
      ....
      
      AP xxx changed bandwidth, new config is 5200 MHz, width 2 (5190/0 MHz)
      AP xxx changed bandwidth, new config is 5200 MHz, width 3 (5210/0 MHz)
      
      ....
      
      firmware register dump:
      [00]: 0x05030000 0x000015B3 0x00987291 0x00955B31
      [04]: 0x00987291 0x00060730 0x00000004 0x00000001
      [08]: 0x004089F0 0x00955A00 0x000A0B00 0x00400000
      [12]: 0x00000009 0x00000000 0x00952CD0 0x00952CE6
      [16]: 0x00952CC4 0x0098E25F 0x00000000 0x0091080D
      [20]: 0x40987291 0x0040E7A8 0x00000000 0x0041EE3C
      [24]: 0x809ABF05 0x0040E808 0x00000000 0xC0987291
      [28]: 0x809A650C 0x0040E948 0x0041FE40 0x004345C4
      [32]: 0x809A5C63 0x0040E988 0x0040E9AC 0x0042D1A8
      [36]: 0x8091D252 0x0040E9A8 0x00000002 0x00000001
      [40]: 0x809FDA9D 0x0040EA58 0x0043D554 0x0042D554
      [44]: 0x809F8B22 0x0040EA78 0x0043D554 0x00000001
      [48]: 0x80911210 0x0040EAC8 0x00000010 0x004041D0
      [52]: 0x80911154 0x0040EB28 0x00400000 0x00000000
      [56]: 0x8091122D 0x0040EB48 0x00000000 0x00400600
      Reported-by: NRouven Czerwinski <rouven@czerwinskis.de>
      Tested-by: NTimur Kristóf <timur.kristof@gmail.com>
      Signed-off-by: NRyan Hsu <ryanhsu@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      9191fc2a
    • O
      wireless-drivers: use BIT_ULL for NL80211_STA_INFO_ attribute types · 22d0d2fa
      Omer Efrat 提交于
      The BIT macro uses unsigned long which some architectures handle as 32 bit
      and therefore might cause macro's shift to overflow when used on a value
      equals or larger than 32 (NL80211_STA_INFO_RX_DURATION and afterwards).
      
      Since 'filled' member in station_info changed to u64, BIT_ULL macro
      should be used with all NL80211_STA_INFO_* attribute types instead of BIT
      to prevent future possible bugs when one will use BIT macro for higher
      attributes by mistake.
      
      This commit cleans up all usages of BIT macro with the above field
      in wireless-drivers by changing it to BIT_ULL instead. In addition, there are
      some places which don't use BIT nor BIT_ULL macros so align those as well.
      Signed-off-by: NOmer Efrat <omer.efrat@tandemg.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      22d0d2fa
  4. 14 6月, 2018 1 次提交
  5. 25 5月, 2018 2 次提交
    • S
      ath10k: DFS Host Confirmation · 6f6eb1bc
      Sriram R 提交于
      In the 10.4-3.6 firmware branch there's a new DFS Host confirmation
      feature which is advertised using WMI_SERVICE_HOST_DFS_CHECK_SUPPORT flag.
      
      This new features enables the ath10k host to send information to the
      firmware on the specifications of detected radar type. This allows the
      firmware to validate if the host's radar pattern detector unit is
      operational and check if the radar information shared by host matches
      the radar pulses sent as phy error events from firmware. If the check
      fails the firmware won't allow use of DFS channels on AP mode when using
      FCC regulatory region.
      
      Hence this patch is mandatory when using a firmware from 10.4-3.6 branch.
      Else, DFS channels on FCC regions cannot be used.
      
      Supported Chipsets : QCA9984/QCA9888/QCA4019
      Firmware Version : 10.4-3.6-00104
      Signed-off-by: NSriram R <srirrama@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      6f6eb1bc
    • P
      ath10k: add support to configure channel dwell time · be8cce96
      Pradeep Kumar Chitrapu 提交于
      Configure channel dwell time from duration of the scan request
      received from mac80211 when the duration is non-zero. When the
      scan request does not have duration value, use the default ones,
      the current implementation.
      
      Corresponding flag NL80211_EXT_FEATURE_SET_SCAN_DWELL is
      advertized.
      
      Supported Chipsets:
       -QCA988X/QCA9887 PCI
       -QCA99X0/QCA9984/QCA9888/QCA4019 PCI
       -QCA6174/QCA9377 PCI/USB/SDIO
       -WCN3990 SNOC
      
      Tested on QCA9984 with firmware ver 10.4-3.6-0010
      Signed-off-by: NPradeep Kumar Chitrapu <pradeepc@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      be8cce96
  6. 12 5月, 2018 1 次提交
    • E
      ath10k: fix return value check in wake_tx_q op · e3148cc5
      Erik Stromdahl 提交于
      ath10k_mac_tx_push_txq returns either a postive integer (length) on
      success or a negative error code on error.
      
      The "if (ret) break;" statement will thus always break out of the loop
      immediately after ath10k_mac_tx_push_txq has returned (making the loop
      pointless).
      
      A side effect of this fix is that we will iterate the queue until
      ath10k_mac_tx_push_txq returns -ENOENT. This will make sure the queue is
      not added back to ar->txqs when it is empty. This could potentially
      improve performance somewhat (I have seen a small improvement with SDIO
      devices).
      Signed-off-by: NErik Stromdahl <erik.stromdahl@gmail.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      e3148cc5
  7. 24 4月, 2018 2 次提交
  8. 20 4月, 2018 1 次提交
  9. 29 3月, 2018 5 次提交
    • A
      ath10k: advertize beacon_int_min_gcd · 8ebee73b
      Anilkumar Kolli 提交于
      This patch fixes regression caused by 0c317a02
      ("cfg80211: support virtual interfaces with different beacon intervals"),
      with this change cfg80211 expects the driver to advertize
      'beacon_int_min_gcd' to support different beacon intervals in multivap
      scenario. This support is added for, QCA988X/QCA99X0/QCA9984/QCA4019.
      
      Verifed AP + mesh bring up on QCA9984 with beacon interval 100msec and
      1000msec respectively.
      Frimware: firmware-5.bin_10.4-3.5.3-00053
      
      Fixes: 0c317a02 ("cfg80211: support virtual interfaces with different beacon intervals")
      Signed-off-by: NAnilkumar Kolli <akolli@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      8ebee73b
    • Y
      ath10k: fix TDLS peer TX data failure issue on encryped AP · 9cdd0057
      Yingying Tang 提交于
      For WPA encryption, QCA6174 firmware(version: WLAN.RM.4.4) will unblock
      data when M4 was sent successfully. For other encryption which didn't need
      4-way handshake firmware will unblock the data when peer authorized. Since
      TDLS is 3-way handshake host need send authorize cmd to firmware to unblock
      data.
      Signed-off-by: NYingying Tang <yintang@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      9cdd0057
    • Y
      ath10k: avoid to set WEP key for TDLS peer · c3816c9e
      Yingying Tang 提交于
      TDLS peer do not need WEP key. Setting WEP key will lead
      to TDLS setup failure. Add fix to avoid setting WEP key
      for TDLS peer.
      Signed-off-by: NYingying Tang <yintang@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      c3816c9e
    • Y
      ath10k: enable TDLS peer buffer STA feature · 802ca335
      Yingying Tang 提交于
      Enable TDLS peer buffer STA feature.
      QCA6174 firmware(version: WLAN.RM.4.4) support TDLS peer buffer STA,
      it reports this capability through wmi service map in wmi service ready
      event. Set related parameter in TDLS WMI command to enable this feature.
      Signed-off-by: NYingying Tang <yintang@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      802ca335
    • K
      Revert "ath10k: send (re)assoc peer command when NSS changed" · 55cc11da
      Karthikeyan Periyasamy 提交于
      This reverts commit 55884c04.
      
      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: NKarthikeyan Periyasamy <periyasa@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      55cc11da
  10. 26 3月, 2018 1 次提交
    • K
      ath10k: Fix kernel panic while using worker (ath10k_sta_rc_update_wk) · 8b2d93dd
      Karthikeyan Periyasamy 提交于
      When attempt to run worker (ath10k_sta_rc_update_wk) after the station object
      (ieee80211_sta) delete will trigger the kernel panic.
      
      This problem arise in AP + Mesh configuration, Where the current node AP VAP
      and neighbor node mesh VAP MAC address are same. When the current mesh node
      try to establish the mesh link with neighbor node, driver peer creation for
      the neighbor mesh node fails due to duplication MAC address. Already the AP
      VAP created with same MAC address.
      
      It is caused by the following scenario steps.
      
      Steps:
      1. In above condition, ath10k driver sta_state callback (ath10k_sta_state)
         fails to do the state change for a station from IEEE80211_STA_NOTEXIST
         to IEEE80211_STA_NONE due to peer creation fails. Sta_state callback is
         called from ieee80211_add_station() to handle the new station
         (neighbor mesh node) request from the wpa_supplicant.
      2. Concurrently ath10k receive the sta_rc_update callback notification from
         the mesh_neighbour_update() to handle the beacon frames of the above
         neighbor mesh node. since its atomic callback, ath10k driver queue the
         work (ath10k_sta_rc_update_wk) to handle rc update.
      3. Due to driver sta_state callback fails (step 1), mac80211 free the station
         object.
      4. When the worker (ath10k_sta_rc_update_wk) scheduled to run, it will access
         the station object which is already deleted. so it will trigger kernel
         panic.
      
      Added the peer exist check in sta_rc_update callback before queue the work.
      
      Kernel Panic log:
      
      Unable to handle kernel NULL pointer dereference at virtual address 00000000
      pgd = c0204000
      [00000000] *pgd=00000000
      Internal error: Oops: 17 [#1] PREEMPT SMP ARM
      CPU: 1 PID: 1833 Comm: kworker/u4:2 Not tainted 3.14.77 #1
      task: dcef0000 ti: d72b6000 task.ti: d72b6000
      PC is at pwq_activate_delayed_work+0x10/0x40
      LR is at pwq_activate_delayed_work+0xc/0x40
      pc : [<c023f988>]    lr : [<c023f984>]    psr: 40000193
      sp : d72b7f18  ip : 0000007a  fp : d72b6000
      r10: 00000000  r9 : dd404414  r8 : d8c31998
      r7 : d72b6038  r6 : 00000004  r5 : d4907ec8  r4 : dcee1300
      r3 : ffffffe0  r2 : 00000000  r1 : 00000001  r0 : 00000000
      Flags: nZcv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
      Control: 10c5787d  Table: 595bc06a  DAC: 00000015
      ...
      Process kworker/u4:2 (pid: 1833, stack limit = 0xd72b6238)
      Stack: (0xd72b7f18 to 0xd72b8000)
      7f00:                                                       00000001 dcee1300
      7f20: 00000001 c02410dc d8c31980 dd404400 dd404400 c0242790 d8c31980 00000089
      7f40: 00000000 d93e1340 00000000 d8c31980 c0242568 00000000 00000000 00000000
      7f60: 00000000 c02474dc 00000000 00000000 000000f8 d8c31980 00000000 00000000
      7f80: d72b7f80 d72b7f80 00000000 00000000 d72b7f90 d72b7f90 d72b7fac d93e1340
      7fa0: c0247404 00000000 00000000 c0208d20 00000000 00000000 00000000 00000000
      7fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
      7fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
      [<c023f988>] (pwq_activate_delayed_work) from [<c02410dc>] (pwq_dec_nr_in_flight+0x58/0xc4)
      [<c02410dc>] (pwq_dec_nr_in_flight) from [<c0242790>] (worker_thread+0x228/0x360)
      [<c0242790>] (worker_thread) from [<c02474dc>] (kthread+0xd8/0xec)
      [<c02474dc>] (kthread) from [<c0208d20>] (ret_from_fork+0x14/0x34)
      Code: e92d4038 e1a05000 ebffffbc[69210.619376] SMP: failed to stop secondary CPUs
      Rebooting in 3 seconds..
      Signed-off-by: NKarthikeyan Periyasamy <periyasa@codeaurora.org>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      8b2d93dd
  11. 14 3月, 2018 1 次提交
    • 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
  12. 27 12月, 2017 3 次提交
  13. 19 12月, 2017 1 次提交
  14. 14 12月, 2017 4 次提交
    • R
      ath10k: wmi: modify svc bitmap parsing for wcn3990 · 229329ff
      Rakesh Pillai 提交于
      Due to the limitation of wmi tlv parsing logic, if there are
      two parameters in a wmi event with same tlv tag, we can get only
      the last value, as it overwrites the prev value of the same tlv tag.
      
      The service ready event in wcn3990 contains two parameters of the
      same tag UINT32, due to which the svc bitmap is overwritten with the
      DBS support parameter.
      
      Refactor the service ready event parsing to allow parsing two tlv
      of the same tag UINT32 for wcn3990.
      Signed-off-by: NRakesh Pillai <pillair@qti.qualcomm.com>
      Signed-off-by: NGovind Singh <govinds@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      229329ff
    • A
      ath10k: add per peer tx stats support for 10.2.4 · e8123bb7
      Anilkumar Kolli 提交于
      10.2.4 firmware branch (used in QCA988X) does not support
      HTT_10_4_T2H_MSG_TYPE_PEER_STATS and that's why ath10k does not provide
      tranmission rate statistics to user space, instead it just shows
      hardcoded 6 Mbit/s. But pktlog firmware facility provides per peer tx
      statistics. The firmware sends one pktlog event for every four
      PPDUs per peer, which include:
      
      * successful number of packets and bytes transmitted
      * number of packets and bytes dropped
      * retried number of packets and bytes
      * rate info per ppdu
      
      Firmware supports WMI_SERVICE_PEER_STATS, pktlog is enabled through
      ATH10K_FLAG_PEER_STATS, which is nowadays enabled by default in ath10k.
      
      This patch does not impact throughput.
      
      Tested on QCA9880 with firmware version 10.2.4.70.48. This should also
      work with firmware branch 10.2.4-1.0-00029
      
      Parse peer stats from pktlog packets and update the tx rate information
      per STA. This way user space can query about transmit rate with iw:
      
      $iw wlan0 station dump
      Station 3c:a9:f4:72:bb:a4 (on wlan1)
              inactive time:  8210 ms
              rx bytes:       9166
              rx packets:     44
              tx bytes:       1105
              tx packets:     9
              tx retries:     0
              tx failed:      1
              rx drop misc:   3
              signal:         -75 [-75, -87, -88] dBm
              signal avg:     -75 [-75, -85, -88] dBm
              tx bitrate:     39.0 MBit/s MCS 10
              rx bitrate:     26.0 MBit/s MCS 3
              rx duration:    23250 us
              authorized:     yes
              authenticated:  yes
              associated:     yes
              preamble:       short
              WMM/WME:        yes
              MFP:            no
              TDLS peer:      no
              DTIM period:    2
              beacon interval:100
              short preamble: yes
              short slot time:yes
              connected time: 22 seconds
      Signed-off-by: NAnilkumar Kolli <akolli@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      e8123bb7
    • A
      ath10k: remove MAC80211_DEBUGFS dependency on ath10k_sta_statistics · 6a7f8911
      Anilkumar Kolli 提交于
      Remove CONFIG_MAC80211_DEBUGFS dependency on ath10k_sta_statistics().
      ath10k_sta_statistics() has per sta tx/rx stats and this should not
      be dependent on MAC80211_DEBUGFS.
      
      No changes in functionality.
      Signed-off-by: NAnilkumar Kolli <akolli@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      6a7f8911
    • B
      ath10k: handling qos at STA side based on AP WMM enable/disable · 07ffb449
      Balaji Pothunoori 提交于
      Data packets are not sent by STA in case of STA joined to
      non QOS AP (WMM disabled AP). This is happening because of STA
      is sending data packets to firmware from host with qos enabled
      along with non qos queue value(TID = 16).
      Due to qos enabled, firmware is discarding the packet.
      
      This patch fixes this issue by updating the qos based on station
      WME capability field if WMM is disabled in AP.
      
      This patch is required by 10.4 family chipsets like
      QCA4019/QCA9888/QCA9884/QCA99X0.
      Firmware Versoin : 10.4-3.5.1-00018.
      
      For 10.2.4 family chipsets QCA988X/QCA9887 and QCA6174 this patch
      has no effect.
      Signed-off-by: NBalaji Pothunoori <bpothuno@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      07ffb449
  15. 11 12月, 2017 1 次提交
    • T
      mac80211: Add TXQ scheduling API · e937b8da
      Toke Høiland-Jørgensen 提交于
      This adds an API to mac80211 to handle scheduling of TXQs and changes the
      interface between driver and mac80211 for TXQ handling as follows:
      
      - The wake_tx_queue callback interface no longer includes the TXQ. Instead,
        the driver is expected to retrieve that from ieee80211_next_txq()
      
      - Two new mac80211 functions are added: ieee80211_next_txq() and
        ieee80211_schedule_txq(). The former returns the next TXQ that should be
        scheduled, and is how the driver gets a queue to pull packets from. The
        latter is called internally by mac80211 to start scheduling a queue, and
        the driver is supposed to call it to re-schedule the TXQ after it is
        finished pulling packets from it (unless the queue emptied).
      
      The ath9k and ath10k drivers are changed to use the new API.
      Signed-off-by: NToke Høiland-Jørgensen <toke@toke.dk>
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      e937b8da
  16. 02 12月, 2017 2 次提交
  17. 27 10月, 2017 2 次提交
  18. 13 10月, 2017 2 次提交
  19. 01 9月, 2017 1 次提交
  20. 03 8月, 2017 1 次提交
  21. 29 6月, 2017 1 次提交