1. 27 12月, 2017 2 次提交
  2. 14 12月, 2017 4 次提交
  3. 07 12月, 2017 1 次提交
  4. 13 10月, 2017 1 次提交
  5. 08 8月, 2017 1 次提交
  6. 03 8月, 2017 2 次提交
  7. 06 7月, 2017 1 次提交
  8. 16 6月, 2017 1 次提交
  9. 04 5月, 2017 1 次提交
  10. 05 4月, 2017 1 次提交
  11. 16 3月, 2017 1 次提交
    • T
      ath10k: update available channel list for 5G radio · 523f6701
      Tamizh chelvam 提交于
      If a 5 GHz radio is calibrated for operation in both
      the low band (channels 36 to 64) and high band(channels 100 to 169),
      hardware allows operations in all the listed channels. However,
      if the chip has been calibrated only for the low/high band and
      a high/low band channel is configured, due to lack of calibration
      there will be potentially invalid signal on those non calibrated channels.
      To avoid this problem this patch sets IEEE80211_CHAN_DISABLED flag for
      those non calibrated channels by using low_5ghz_chan and high_5ghz_chan
      values which we get from target through wmi service ready event.
      
      Driver initialized flags are getting re initialized in handle_channel
      in cfg80211. So calling the function to disable the non supported channel
      from reg_notifier().
      Signed-off-by: NTamizh chelvam <c_traja@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      523f6701
  12. 02 3月, 2017 1 次提交
    • W
      ath10k: search SMBIOS for OEM board file extension · 1657b8f8
      Waldemar Rymarkiewicz 提交于
      Board Data File (BDF) is loaded upon driver boot-up procedure. The right
      board data file is identified, among others, by device and sybsystem ids.
      
      The problem, however, can occur when the (default) board data file cannot
      fulfill with the vendor requirements and it is necessary to use a different
      board data file.
      
      To solve the issue QCA uses SMBIOS type 0xF8 to store Board Data File Name
      Extension to specify the extension/variant name. The driver will take the
      extension suffix into consideration and will load the right (non-default)
      board data file if necessary.
      
      If it is unnecessary to use extension board data file, please leave the
      SMBIOS field blank and default configuration will be used.
      
      Example:
      If a default board data file for a specific board is identified by a string
            "bus=pci,vendor=168c,device=003e,subsystem-vendor=1028,
             subsystem-device=0310"
      then the OEM specific data file, if used, could be identified by variant
      suffix:
            "bus=pci,vendor=168c,device=003e,subsystem-vendor=1028,
             subsystem-device=0310,variant=DE_1AB"
      
      If board data file name extension is set but board-2.bin does not contain
      board data file for the variant, the driver will fallback to the default
      board data file not to break backward compatibility.
      
      This was first applied in commit f2593cb1 ("ath10k: Search SMBIOS for OEM
      board file extension") but later reverted in commit 005c3490 ("Revert
      "ath10k: Search SMBIOS for OEM board file extension"". This patch is now
      otherwise the same as commit f2593cb1 except the regression fixed.
      Signed-off-by: NWaldemar Rymarkiewicz <ext.waldemar.rymarkiewicz@tieto.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      1657b8f8
  13. 22 2月, 2017 1 次提交
  14. 28 1月, 2017 1 次提交
    • W
      ath10k: Search SMBIOS for OEM board file extension · f2593cb1
      Waldemar Rymarkiewicz 提交于
      Board Data File (BDF) is loaded upon driver boot-up procedure. The right
      board data file is identified, among others, by device and sybsystem ids.
      
      The problem, however, can occur when the (default) board data file cannot
      fulfill with the vendor requirements and it is necessary to use a different
      board data file.
      
      To solve the issue QCA uses SMBIOS type 0xF8 to store Board Data File Name
      Extension to specify the extension/variant name. The driver will take the
      extension suffix into consideration and will load the right (non-default)
      board data file if necessary.
      
      If it is unnecessary to use extension board data file, please leave the
      SMBIOS field blank and default configuration will be used.
      
      Example:
      If a default board data file for a specific board is identified by a string
            "bus=pci,vendor=168c,device=003e,subsystem-vendor=1028,
             subsystem-device=0310"
      then the OEM specific data file, if used, could be identified by variant
      suffix:
            "bus=pci,vendor=168c,device=003e,subsystem-vendor=1028,
             subsystem-device=0310,variant=DE_1AB"
      Signed-off-by: NWaldemar Rymarkiewicz <ext.waldemar.rymarkiewicz@tieto.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      f2593cb1
  15. 19 1月, 2017 2 次提交
    • M
      ath10k: dump Copy Engine registers during firmware crash · c75c398b
      Mohammed Shafi Shajakhan 提交于
      Dump Copy Engine source and destination ring addresses.
      This is useful information to debug firmware crashes, assertes or hangs over long run
      assessing the Copy Engine Register status. This also enables dumping CE
      register status in debugfs Crash Dump file.
      
      Screenshot:
      
      ath10k_pci 0000:02:00.0: simulating hard firmware crash
      ath10k_pci 0000:02:00.0: firmware crashed! (uuid 84901ff5-d33c-456e-93ee-0165dea643cf)
      ath10k_pci 0000:02:00.0: qca988x hw2.0 target 0x4100016c chip_id 0x043202ff 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 10.2.4.70.59-2 api 5 features no-p2p,raw-mode,mfp,allows-mesh-bcast crc32 4159f498
      ath10k_pci 0000:02:00.0: board_file api 1 bmi_id N/A crc32 bebc7c08
      ath10k_pci 0000:02:00.0: htt-ver 2.1 wmi-op 5 htt-op 2 cal otp max-sta 128 raw 0 hwcrypto 1
      ath10k_pci 0000:02:00.0: firmware register dump:
      ath10k_pci 0000:02:00.0: [00]: 0x4100016C 0x00000000 0x009A0F2A 0x00000000
      ath10k_pci 0000:02:00.0: [04]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [08]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [12]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [16]: 0x00000000 0x00000000 0x00000000 0x009A0F2A
      ath10k_pci 0000:02:00.0: [20]: 0x00000000 0x00401930 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [24]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [28]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [32]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [36]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [40]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [44]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [48]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [52]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: [56]: 0x00000000 0x00000000 0x00000000 0x00000000
      ath10k_pci 0000:02:00.0: Copy Engine register dump:
      ath10k_pci 0000:02:00.0: [00]: 0x00057400   7   7   3   3
      ath10k_pci 0000:02:00.0: [01]: 0x00057800  18  18  85  86
      ath10k_pci 0000:02:00.0: [02]: 0x00057c00  49  49  48  49
      ath10k_pci 0000:02:00.0: [03]: 0x00058000  16  16  17  16
      ath10k_pci 0000:02:00.0: [04]: 0x00058400   4   4  44   4
      ath10k_pci 0000:02:00.0: [05]: 0x00058800  12  12  11  12
      ath10k_pci 0000:02:00.0: [06]: 0x00058c00   3   3   3   3
      ath10k_pci 0000:02:00.0: [07]: 0x00059000   0   0   0   0
      ieee80211 phy0: Hardware restart was requested
      ath10k_pci 0000:02:00.0: device successfully recovered
      Signed-off-by: NMohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
      [kvalo@qca.qualcomm.com: simplify the implementation]
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      c75c398b
    • M
      ath10k: prevent sta pointer rcu violation · 0a744d92
      Michal Kazior 提交于
      Station pointers are RCU protected so driver must
      be extra careful if it tries to store them
      internally for later use outside of the RCU
      section it obtained it in.
      
      It was possible for station teardown to race with
      some htt events. The possible outcome could be a
      use-after-free and a crash.
      
      Only peer-flow-control capable firmware was
      affected (so hardware-wise qca99x0 and qca4019).
      
      This could be done in sta_state() itself via
      explicit synchronize_net() call but there's
      already a convenient sta_pre_rcu_remove() op that
      can be hooked up to avoid extra rcu stall.
      
      The peer->sta pointer itself can't be set to
      NULL/ERR_PTR because it is later used in
      sta_state() for extra sanity checks.
      Signed-off-by: NMichal Kazior <michal.kazior@tieto.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      0a744d92
  16. 30 12月, 2016 1 次提交
  17. 24 11月, 2016 2 次提交
  18. 15 11月, 2016 1 次提交
  19. 13 10月, 2016 1 次提交
    • M
      ath10k: cache calibration data when the core is stopped · f67b107d
      Marty Faltesek 提交于
      Commit 0b8e3c4c ("ath10k: move cal data len to hw_params") broke retrieving
      the calibration data from cal_data debugfs file. The length of file was always
      zero. The reason is:
      
          static ssize_t ath10k_debug_cal_data_read(struct file *file,
                                                char __user *user_buf,
                                                size_t count, loff_t *ppos)
          {
              struct ath10k *ar = file->private_data;
              void *buf = file->private_data;
      
      This is obviously bogus, private_data cannot contain both struct ath10k and the
      buffer. Fix it by caching calibration data to ar->debug.cal_data. This also
      allows it to be accessed when the device is not active (interface is down).
      
      The cal_data buffer is fixed size because during the first firmware probe we
      don't yet know what will be the lenght of the calibration data. It was simplest
      just to use a fixed length. There's a WARN_ON() in
      ath10k_debug_cal_data_fetch() if the buffer is too small.
      
      Tested with qca988x and firmware 10.2.4.70.56.
      Reported-by: NNikolay Martynov <mar.kolya@gmail.com>
      Fixes: 0b8e3c4c ("ath10k: move cal data len to hw_params")
      Cc: stable@vger.kernel.org # 4.7+
      Signed-off-by: NMarty Faltesek <mfaltesek@google.com>
      [kvalo@qca.qualcomm.com: improve commit log and minor other changes]
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      f67b107d
  20. 04 10月, 2016 2 次提交
    • B
      ath10k: allow setting coverage class · ebee76f7
      Benjamin Berg 提交于
      Unfortunately ath10k does not generally allow modifying the coverage class
      with the stock firmware and Qualcomm has so far refused to implement this
      feature so that it can be properly supported in ath10k. If we however know
      the registers that need to be modified for proper operation with a higher
      coverage class, then we can do these modifications from the driver.
      
      This is a hack and might cause subtle problems but as it's not enabled by
      default (only when user space changes the coverage class explicitly) it should
      not cause new problems for existing setups. But still this should be considered
      as an experimental feature and used with caution.
      
      This patch implements the support for first generation cards (QCA9880, QCA9887
      and so on) which are based on a core that is similar to ath9k. The registers
      are modified in place and need to be re-written every time the firmware sets
      them. To achieve this the register status is verified after certain WMI events
      from the firmware.
      
      The coverage class may not be modified temporarily right after the card
      re-initializes the registers. This is for example the case during scanning.
      
      Thanks to Sebastian Gottschall <s.gottschall@dd-wrt.com> for initially
      working on a userspace support for this. This patch wouldn't have been
      possible without this documentation.
      Signed-off-by: NBenjamin Berg <benjamin@sipsolutions.net>
      Signed-off-by: NSimon Wunderlich <sw@simonwunderlich.de>
      Signed-off-by: NMathias Kretschmer <mathias.kretschmer@fit.fraunhofer.de>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      ebee76f7
    • B
      ath10k: add platform regulatory domain support · 209b2a68
      Bartosz Markowski 提交于
      This overrides whatever regulatory the device
      EEPROM contains and uses what the platform says
      instead - in this implementation the ACPI driver.
      
      In case the hint is not programmed or corrupted (0xffff)
      the device falls back to the eeprom programmed settings.
      Signed-off-by: NBartosz Markowski <bartosz.markowski@tieto.com>
      [kvalo@qca.qualcomm.com: remove ifdef, change error handling, change info messages to dbg]
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      209b2a68
  21. 27 9月, 2016 1 次提交
  22. 13 9月, 2016 1 次提交
  23. 09 9月, 2016 1 次提交
    • R
      ath10k: implement NAPI support · 3c97f5de
      Rajkumar Manoharan 提交于
      Add NAPI support for rx and tx completion. NAPI poll is scheduled
      from interrupt handler. The design is as below
      
       - on interrupt
           - schedule napi and mask interrupts
       - on poll
         - process all pipes (no actual Tx/Rx)
         - process Rx within budget
         - if quota exceeds budget reschedule napi poll by returning budget
         - process Tx completions and update budget if necessary
         - process Tx fetch indications (pull-push)
         - push any other pending Tx (if possible)
         - before resched or napi completion replenish htt rx ring buffer
         - if work done < budget, complete napi poll and unmask interrupts
      
      This change also get rid of two tasklets (intr_tq and txrx_compl_task).
      
      Measured peak throughput with NAPI on IPQ4019 platform in controlled
      environment. No noticeable reduction in throughput is seen and also
      observed improvements in CPU usage. Approx. 15% CPU usage got reduced
      in UDP uplink case.
      
      DL: AP DUT Tx
      UL: AP DUT Rx
      
      IPQ4019 (avg. cpu usage %)
      
      ========
                      TOT              +NAPI
                    ===========      =============
      TCP DL       644 Mbps (42%)    645 Mbps (36%)
      TCP UL       673 Mbps (30%)    675 Mbps (26%)
      UDP DL       682 Mbps (49%)    680 Mbps (49%)
      UDP UL       720 Mbps (28%)    717 Mbps (11%)
      Signed-off-by: NRajkumar Manoharan <rmanohar@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      3c97f5de
  24. 02 9月, 2016 3 次提交
  25. 31 8月, 2016 2 次提交
  26. 19 7月, 2016 1 次提交
  27. 08 7月, 2016 1 次提交
    • M
      ath10k: fix 10.4 extended peer stats update · 4a49ae94
      Mohammed Shafi Shajakhan 提交于
      10.4 'extended peer stats' will be not be appended with normal peer stats
      data and they shall be coming in separate chunks. Fix this by maintaining
      a separate linked list 'extender peer stats' for 10.4 and update
      rx_duration for per station statistics. Also parse through beacon filter
      (if enabled), to make sure we parse the extended peer stats properly.
      This issue was exposed when more than one client is connected and
      extended peer stats for 10.4 is enabled
      
      The order for the stats is as below
      S - standard peer stats, E- extended peer stats, B - beacon filter stats
      
      {S1, S2, S3..} -> {B1, B2, B3..}(if available) -> {E1, E2, E3..}
      
      Fixes: f9575793 ("ath10k: enable parsing per station rx duration for 10.4")
      Signed-off-by: NMohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      4a49ae94
  28. 14 6月, 2016 2 次提交
    • V
      ath10k: define an enum to enable cycle counter wraparound logic · 26c19760
      Vasanthakumar Thiagarajan 提交于
      QCA988X hw implements a different cycle counter wraparound
      behaviour when compared to QCA4019. To properly handle different
      wraparound logic for these chipsets replace already available
      bool hw_params member, has_shifted_cc_wraparound, with an
      enum which could be extended to handle different wraparound
      behaviour. This patch keeps the existing logic functionally
      same and a prepares cycle counter wraparound handling to
      extend for other chips.
      Signed-off-by: NVasanthakumar Thiagarajan <vthiagar@qti.qualcomm.com>
      [kvalo@qca.qualcomm.com: change also QCA9887 wrap type]
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      26c19760
    • M
      ath10k: fix CCK h/w rates for QCA99X0 and newer chipsets · 5269c659
      Mohammed Shafi Shajakhan 提交于
      CCK hardware table mapping from QCA99X0 onwards got revised.
      The CCK hardware rate values are in a proper order wrt. to
      rate and preamble as below
      
      ATH10K_HW_RATE_REV2_CCK_LP_1M = 1,
      ATH10K_HW_RATE_REV2_CCK_LP_2M = 2,
      ATH10K_HW_RATE_REV2_CCK_LP_5_5M = 3,
      ATH10K_HW_RATE_REV2_CCK_LP_11M = 4,
      ATH10K_HW_RATE_REV2_CCK_SP_2M = 5,
      ATH10K_HW_RATE_REV2_CCK_SP_5_5M = 6,
      ATH10K_HW_RATE_REV2_CCK_SP_11M = 7,
      
      This results in reporting of rx frames (with CCK rates)
      totally wrong for QCA99X0, QCA4019. Fix this by having
      separate CCK rate table for these chipsets with rev2 suffix
      and registering the correct rate mapping to mac80211 based on
      the new hw_param (introduced) 'cck_rate_map_rev2' which shall
      be true for any newchipsets from QCA99X0 onwards
      Signed-off-by: NMohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      5269c659