1. 21 4月, 2016 4 次提交
  2. 19 4月, 2016 1 次提交
    • R
      ath10k: add dynamic tx mode switch config support for qca4019 · 7e247a9e
      Raja Mani 提交于
      push-pull mode needs certain amount the host driver involvement for
      managing queues in the host memory and packet delivery to firmware.
      qca4019 wifi firmware has an option to stay in push mode for less
      number of active traffic flow and then switch to push-pull mode when
      the active traffic flow goes beyond the certain limit.
      
      The advantage of staying in push mode for less active traffic is, the
      host cpu consumption is reduced. qca4019 firmware supports this
      flexibility of the mode switch. It takes the host driver interest
      (LOW_PERF/HIGH_PERF) via WMI_EXT_RESOURCE_CFG_CMDID,
      
       LOW_PERF  - fw would stay in push mode and switch to push-pull
                     based on demand.
       HIGH_PERF - fw would stay in push-pull mode from the boot.
      
      To make this configuration generic, new WMI services
      WMI_SERVICE_TX_MODE_PUSH_ONLY, WMI_SERVICE_TX_MODE_PUSH_PULL,
      WMI_SERVICE_TX_MODE_DYNAMIC are introduced to take dynamic tx mode
      switch support availability in firmware.
      Based on WMI_SERVICE_TX_MODE_DYNAMIC, LOW_PERF or HIGHT_PERF is
      configured to the firmware.
      Signed-off-by: NRaja Mani <rmani@qti.qualcomm.com>
      Signed-off-by: NTamizh chelvam <c_traja@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      7e247a9e
  3. 04 4月, 2016 1 次提交
  4. 23 3月, 2016 4 次提交
    • M
      ath10k: enable debugfs provision to enable Peer Stats feature · cc61a1bb
      Mohammed Shafi Shajakhan 提交于
      Provide a debugfs entry to enable/ disable Peer Stats feature.
      Peer Stats feature is for developers/users who are more interested
      in studying in Rx/Tx stats with multiple clients connected, hence
      disable this by default. Enabling this feature by default results
      in unneccessary processing of Peer Stats event for every 500ms
      and updating peer_stats list (allocating memory) and cleaning it up
      ifexceeds the higher limit and this can be an unnecessary overhead
      during long run stress testing.
      Signed-off-by: NMohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      cc61a1bb
    • R
      ath10k: incorporate qca4019 cal data download sequence · 3d9195ea
      Raja Mani 提交于
      qca4019 calibration data is stored in the host memory and it's mandatory
      to download it even before reading board id and chip id from the target.
      Also, there is a need to execute otp (download and run) twice, one after
      cal data download and another one after board data download.
      
      Existing cal data file name 'cal-<bus>-<id>.bin' and device tree entry
      'qcom,ath10k-calibration-data' used in ath10k has assumption that it
      carries other data (like board data) also along with the calibration data.
      But, qca4019 cal data contains pure calibration data (doesn't include
      any other info). So, using existing same cal file name and DT entry
      in qca4019 case would alter the purpose of it. To avoid this, new cal
      file name 'pre-cal-<bus>-<id>.bin' and new device tree entry name
      'qcom,ath10k-pre-calibration-data are introduced.
      
      Overall qca4019's firmware download sequence would look like,
      
         1) Download cal data (either from a file or device tree entry)
            at the address specified by target in the host interest area
            member "hi_board_data".
      
         2) Download otp and run with 0x10 (PARAM_GET_EEPROM_BOARD_ID)
            as a argument.
      
            At this point, otp will take back up of downloaded cal data
            content in another location in the target and return valid
            board id and chip id to the host.
      
         3) Download board data at the address specified by target
            in host interest area member "hi_board_data".
      
         4) Download otp and run with 0x10000 (PARAM_FLASH_SECTION_ALL) as
            a argument.
      
            Now otp will apply cal data content from it's backup on top
            of board data download in step 3 and prepare final data base.
      
         5) Download code swap and athwlan binary content.
      
      Above sequences are implemented (step 1 to step 4) in the name of
      pre calibration configuration.
      Signed-off-by: NRaja Mani <rmani@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      3d9195ea
    • R
      ath10k: move cal data len to hw_params · 0b8e3c4c
      Raja Mani 提交于
      ath10k_download_cal_dt() compares obtained cal data content length
      against QCA988X_CAL_DATA_LEN (2116 bytes). It was written by keeping
      qca988x in mind. In fact, cal data length is more chip specific.
      To make ath10k_download_cal_dt() more generic and reusable for other
      chipsets (like qca4019), cal data length is moved to hw_params.
      Signed-off-by: NRaja Mani <rmani@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      0b8e3c4c
    • R
      ath10k: pass cal data location as an argument to ath10k_download_cal_{file|dt} · f454add4
      Raja Mani 提交于
      Both ath10k_download_cal_file() and ath10k_download_cal_dt() uses
      hard coded file pointer (ar->cal_file) and device tree entry
      (qcom,ath10k-calibration-data) respectively to get calibration
      data content.
      
      There is a need to use those two functions in qca4019 calibration
      download sequence with different file pointer and device tree entry name.
      Modify those two functions to take cal data location as an argument.
      So that it can serve the purpose for other file pointer and device
      tree entry.
      
      This is just preparation before adding actual qca4019 calibration
      download sequence. No functional changes.
      Signed-off-by: NRaja Mani <rmani@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      f454add4
  5. 18 3月, 2016 1 次提交
  6. 06 3月, 2016 2 次提交
  7. 04 3月, 2016 1 次提交
    • A
      ath10k: reduce number of peers to support peer stats feature · af9a6a3a
      Anilkumar Kolli 提交于
      To enable per peer stats feature we are reducing the number of peers.
      Firmware has introduced tx stats feature. We have memory limitation in
      firmware to add these additional bytes.
      
      These are the new variables introduced in the firmware.
      ========		=======================
      Variable	      	Bytes required/per rate
      ========		=======================
      TX success packets 	1
      TX failed packets	1
      Retry packets		1
      Success bytes		2
      TX failed bytes		2
      Retry bytes		2
      Tx duration		4
      Rate			1
      Bw and AMPDU flags	1
      Total			16 (because of allocation in word pattern)
      
      Firmware sends these tx_stats in pktlog.
      If we consider 4 feedbacks at a time, Frimware need about ~1K memory for coding
      and 8192 bytes required / per rate [ 4*16*128(peers)].
      To accommodate this firmware needs to reduce 10 peers.
      
      This fixes a firmware crash with firmware-5.bin_10.2.4.70.22-2.
      Signed-off-by: NAnilkumar Kolli <akolli@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      af9a6a3a
  8. 02 2月, 2016 2 次提交
  9. 28 1月, 2016 2 次提交
  10. 30 11月, 2015 3 次提交
  11. 23 11月, 2015 1 次提交
  12. 13 11月, 2015 4 次提交
  13. 05 11月, 2015 1 次提交
  14. 29 10月, 2015 3 次提交
  15. 14 10月, 2015 2 次提交
    • M
      ath10k: select board data based on BMI chip id and board id · db0984e5
      Manikanta Pubbisetty 提交于
      QCA99X0 uses radio specific board names based on chip id and
      board id combinations. We get these IDs from the target using BMI after otp.bin
      has been started.
      
      This patch reorders the call to the function ath10k_core_fetch_board_file
      so that we have OTP binary before requesting for boardid-chipid. We get this
      OTP data after parsing firmware-N.bin.
      
      [kvalo@qca.qualcomm.com: try BMI_PARAM_GET_EEPROM_BOARD_ID with
       all boards and detect if command is not supported]
      Signed-off-by: NManikanta Pubbisetty <c_mpubbi@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      db0984e5
    • M
      ath10k: add board 2 API support · 0a51b343
      Manikanta Pubbisetty 提交于
      QCA6174 needs different board files based on board type. To make it easier to
      distribute multiple board files and automatically choose correct board file
      create a simple TLV file format following the same principles as with FW IEs.
      The file is named board-2.bin and contain multiple board files. Each board file
      then can have multiple names.
      
      ath10k searches for file board-N.bin (where N is the interface version number
      for the board file, just like we for firmware files) in /lib/firmware/*, for
      example for qca99x0 it will try to find it here:
      
      /lib/firmware/ath10k/QCA99X0/hw2.0/board-2.bin
      
      If ath10k doesn't find board-2.bin then it will fallback to the old board.bin file.
      
      This patch adds a simple name scheme using pci device id which for now will be
      used by qca6174:
      
      bus=%s,vendor=%04x,device=%04x,subsystem-vendor=%04x,subsystem-device=%04x
      
      This removes the old method of having subsystem ids in ar->spec_board_id and
      using that in the board file name.
      Signed-off-by: NManikanta Pubbisetty <c_mpubbi@qti.qualcomm.com>
      [kvalo@qca.qualcomm.com: simplified the file format, rewrote commit log, other smaller changes]
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      0a51b343
  16. 06 10月, 2015 3 次提交
    • K
      ath10k: fix whitespace usage · 9a14969f
      Kalle Valo 提交于
      checkpatch found:
      
      drivers/net/wireless/ath/ath10k/core.c:574: Blank lines aren't necessary before a close brace '}'
      drivers/net/wireless/ath/ath10k/mac.c:4067: Missing a blank line after declarations
      drivers/net/wireless/ath/ath10k/mac.c:4083: Missing a blank line after declarations
      drivers/net/wireless/ath/ath10k/mac.c:4084: spaces required around that '>>=' (ctx:WxV)
      drivers/net/wireless/ath/ath10k/pci.c:1507: Missing a blank line after declarations
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      9a14969f
    • K
      ath10k: indentation fixes · 617b0f4d
      Kalle Valo 提交于
      checkpatch found:
      
      drivers/net/wireless/ath/ath10k/core.c:513: Alignment should match open parenthesis
      drivers/net/wireless/ath/ath10k/core.c:1266: code indent should use tabs where possible
      drivers/net/wireless/ath/ath10k/core.c:1267: code indent should use tabs where possible
      drivers/net/wireless/ath/ath10k/core.c:1268: code indent should use tabs where possible
      drivers/net/wireless/ath/ath10k/core.c:1269: code indent should use tabs where possible
      drivers/net/wireless/ath/ath10k/mac.c:4659: Alignment should match open parenthesis
      drivers/net/wireless/ath/ath10k/mac.c:6271: Alignment should match open parenthesis
      drivers/net/wireless/ath/ath10k/pci.c:2260: Alignment should match open parenthesis
      drivers/net/wireless/ath/ath10k/wmi.c:3510: Alignment should match open parenthesis
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      617b0f4d
    • K
      ath10k: fix checkpatch warning about logical continuations · be62e92a
      Kalle Valo 提交于
      checkpatch found:
      
      drivers/net/wireless/ath/ath9k/core.c:490: Logical continuations should be on the previous line
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      be62e92a
  17. 17 9月, 2015 2 次提交
    • K
      ath10k: add ATH10K_FW_FEATURE_RAW_MODE_SUPPORT to ath10k_core_fw_feature_str[] · 5af82fa6
      Kalle Valo 提交于
      This was missed in the original commit adding the flag and ath10k only printed "bit10":
      
      ath10k_pci 0000:02:00.0: qca988x hw2.0 (0x4100016c, 0x043202ff) fw 10.2.4.70.6-2 api 3
      htt-ver 2.1 wmi-op 5 htt-op 2 cal otp max-sta 128 raw 0 hwcrypto 1 features no-p2p,bit10
      
      Also add a build test to avoid this happening again.
      
      Fixes: ccec9038 ("ath10k: enable raw encap mode and software crypto engine")
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      5af82fa6
    • B
      ath10k: implement mesh support · b6c7bafa
      Bob Copeland 提交于
      Add support for mesh to ath10k.  We simply use an AP virtual interface
      in the firmware in order to enable beaconing without TSF adoption, and
      use the raw (802.11) transmit mode.
      
      Due to firmware limitations, the firmware must operate in raw
      (non-native 802.11) mode.  As this is configured at firmware init time,
      a new "rawmode" modparam is added, and mesh interfaces are available
      only if rawmode=true.  The firmware must advertise support for rawmode;
      tested successfully with firmware 10.2.4.70.6-2.
      
      When the module is loaded with (newly implemented) modparam rawmode=1, it
      will enable operating an open mesh STA via something like the following:
      
          ip link set wlan0 down
          iw dev wlan0 set type mp
          ip link set wlan0 up
          iw dev wlan0 set freq 5745 80 5775
          iw dev wlan0 mesh join mesh-vht
      Signed-off-by: NBob Copeland <me@bobcopeland.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      b6c7bafa
  18. 09 9月, 2015 2 次提交
    • V
      ath10k: drop probe responses when too many are queued · 7b7da0a0
      Vivek Natarajan 提交于
      In a noisy environment, when multiple interfaces are created,
      the management tx descriptors are fully occupied by the probe
      responses from all the interfaces. This prevents a new station
      from a successful association.
      
      Fix this by limiting the probe responses when the specified
      threshold limit is reached.
      Signed-off-by: NVivek Natarajan <nataraja@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      7b7da0a0
    • V
      ath10k: fix DMA alloc failure for target requested memory chunks · a925a376
      Vasanthakumar Thiagarajan 提交于
      During long hours of stress testing like AP interface up/down along
      with continuous ping flood from a station doing connect/disconnect,
      it is observed that the system is not able to allocate DMA consistent
      memory of size > 512KB chunks as requested by firmware in WMI_SERVICE_EVENTID.
      With the system memory getting fragmented during the run based on the
      size of the memory requested, the failure to return physically continguous
      memory of high order can happen. Once the system gets to this situation,
      bringing up the wifi interface will fail and a system reboot may be needed
      to make it work again. This problem is obseved with QCA99X0.
      
      To fix this issue, allocate the DMA memory requested by firmware during
      device probe time and keep it during the life time of the device. WMI service
      ready event handler is changed to allocate the memory chunks if it is
      not already allocated or if the memory allocated for the previous ready
      event is not same as the current requested ones. After this patch the
      memory usage when wifi is inactive will be inceased by few 100KB to
      3MB based on the target type.
      
      Failure happens with the following stack trace
      
      [29557.488773] kworker/u4:1: page allocation failure: order:8, mode:0xd0
      [29557.494297] CPU: 0 PID: 8402 Comm: kworker/u4:1 Not tainted 3.14.43 #7
      [29557.500793] Workqueue: ath10k_aux_wq ath10k_wmi_event_service_ready_work [ath10k_core]
      [29557.508602] [<c021e9b0>] (unwind_backtrace) from [<c021ba90>] (show_stack+0x10/0x14)
      [29557.516580] [<c021ba90>] (show_stack) from [<c03bdddc>] (dump_stack+0x88/0xcc)
      [29557.523612] [<c03bdddc>] (dump_stack) from [<c0290e34>] (warn_alloc_failed+0xdc/0x108)
      [29557.531515] [<c0290e34>] (warn_alloc_failed) from [<c0292d88>] (__alloc_pages_nodemask+0x4f0/0x654)
      [29557.540485] [<c0292d88>] (__alloc_pages_nodemask) from [<c0222b48>] (__dma_alloc_buffer.isra.20+0x2c/0x104)
      [29557.550260] [<c0222b48>] (__dma_alloc_buffer.isra.20) from [<c0222c34>] (__alloc_remap_buffer.isra.23+0x14/0xb8)
      [29557.560413] [<c0222c34>] (__alloc_remap_buffer.isra.23) from [<c022305c>] (__dma_alloc+0x224/0x2b8)
      [29557.569490] [<c022305c>] (__dma_alloc) from [<c0223208>] (arm_dma_alloc+0x84/0x90)
      [29557.577010] [<c0223208>] (arm_dma_alloc) from [<bf5159d0>] (ath10k_wmi_event_service_ready_work+0x2f8/0x420 [ath10k_core])
      [29557.588055] [<bf5159d0>] (ath10k_wmi_event_service_ready_work [ath10k_core]) from [<c024260c>] (process_one_work+0x20c/0x328)
      [29557.599305] [<c024260c>] (process_one_work) from [<c02432d0>] (worker_thread+0x228/0x360)
      [29557.607470] [<c02432d0>] (worker_thread) from [<c0247f88>] (kthread+0xd8/0xec)
      [29557.614750] [<c0247f88>] (kthread) from [<c0208d18>] (ret_from_fork+0x14/0x3c)
      [29557.712751] Normal: 696*4kB (UEMR) 512*8kB (UEMR) 367*16kB (UEMR) 404*32kB (UEMR) 455*64kB (UEMR) 424*128kB (UEMR) 379*256kB (UMR) 327*512kB (UMR) 1*1024kB (R) 0*2048kB 0*4096kB = 374544kB
      Signed-off-by: NVasanthakumar Thiagarajan <vthiagar@qti.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      a925a376
  19. 26 8月, 2015 1 次提交
    • M
      ath10k: add qca6164 support · 36582e5d
      Michal Kazior 提交于
      This adds additional 0x0041 PCI Device ID
      definition to ath10k for QCA6164 which is a 1
      spatial stream sibling of the QCA6174 (which is 2
      spatial stream chip).
      
      The QCA6164 needs a dedicated board.bin file which
      is different than the one used for QCA6174. If the
      board.bin is wrong the device will crash early
      while trying to boot firmware. The register dump
      will look like this:
      
       ath10k_pci 0000:02:00.0: firmware register dump:
       ath10k_pci 0000:02:00.0: [00]: 0x05010000 0x000015B3 0x000A012D 0x00955B31
       ...
      
      Note the value 0x000A012D.
      
      Special credit goes to Alan Liu
      <alanliu@qca.qualcomm.com> for providing support
      help which enabled me to come up with this patch.
      Signed-off-by: NMichal Kazior <michal.kazior@tieto.com>
      Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
      36582e5d