1. 04 1月, 2016 1 次提交
  2. 09 10月, 2015 1 次提交
  3. 11 9月, 2015 1 次提交
  4. 06 8月, 2015 4 次提交
  5. 09 6月, 2015 1 次提交
  6. 05 5月, 2015 2 次提交
  7. 20 3月, 2015 1 次提交
  8. 13 3月, 2015 1 次提交
  9. 03 3月, 2015 1 次提交
  10. 27 2月, 2015 4 次提交
  11. 15 1月, 2015 9 次提交
    • V
      wil6210: relax spinlocks in rx reorder · bd33273b
      Vladimir Kondratiev 提交于
      In the Rx reorder mechanism, nothing is done in the interrupt
      context, so there is no need to use 'irq' flavors of spinlock.
      Rx done in NAPI context (tasklet), other manipulations - in the
      thread context.
      
      Having interrupts enabled makes it better for the OS in general.
      Besides, if enslaved under bonding, bridge or team driver, Rx
      won't work with interrupts disabled.
      Signed-off-by: NVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      bd33273b
    • V
      wil6210: add advanced interrupt moderation · 78366f69
      Vladimir Kondratiev 提交于
      Add advanced interrupt moderation support available since "Sparrow B0".
      Legacy interrupt moderation used only one counter to moderate tx, rx,
      and misc interrupts.
      Advanced interrupt moderation bypasses misc, and handles separately tx
      and rx interrupts. In addition it has two timers for each interrupt type.
      Max burst duration timer which defines how long to postpone interrupt after
      first event (receive event for rx and tx complete event for tx), and
      interframe timeout which defines how to determine the end of the burst and
      issue interrupt even if the first timer still pending.
      Capabilities flags in wil_priv is set on initialization according to
      HW. The rest of the code checks for advanced interrupt capability bit
      in capabilities flags field.
      Debugfs is split accordingly: "legacy" interrupt moderation remains
      unchanged, new debugs files added for advanced interrupt moderation
      support.
      Module params are aligned to support advanced interrupt moderation
      (tx & rx). When not available (for legacy interrupt moderation) will
      use only rx configuration; Tx configuration will be ignored in this
      case.
      Signed-off-by: NVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      78366f69
    • V
      wil6210: rework debugfs for BACK · 49cb5dfb
      Vladimir Kondratiev 提交于
      Enable more flexible control over block ack:
      - allow addba for any Tx vring
      - allow to specify block ack timeout
      - allow to delba for Tx or Rx side of any agreement; with reason
      
      Renamed "addba" entry to "back"; it prints short help when read;
      write:
       - "add <ringid> <agg_size> <timeout>" to trigger ADDBA
      If missing, <timeout> defaults to 0
       - "del_tx <ringid> <reason>" to trigger DELBA for Tx side
       - "del_rx <CID> <TID> <reason>" to trigger DELBA for Rx side
      If missing, <reason> set to "STA_LEAVING" (36)
      Signed-off-by: NVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      49cb5dfb
    • V
      wil6210: use bitmap API for "status" · 9419b6a2
      Vladimir Kondratiev 提交于
      wil->status used as bitmap; use DECLARE_BITMAP for it.
      Signed-off-by: NVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      9419b6a2
    • V
      wil6210: delba for responder · 26a359d9
      Vladimir Kondratiev 提交于
      Implement delba flow for the responder (Rx) side
      Signed-off-by: NVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      26a359d9
    • V
      wil6210: control AMSDU on Tx side of Block Ack · cbcf5866
      Vladimir Kondratiev 提交于
      When establishing Block Ack as originator (Tx), control
      AMSDU flag when sending ADDBA and update status upon
      establishment flow completion. To be used in AMSDU flows
      Signed-off-by: NVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      cbcf5866
    • V
      wil6210: improve debugfs for VRING · 995cdd0e
      Vladimir Kondratiev 提交于
      When printing VRING on debugfs (file "vrings"),
      software head & tail indexes were printed in decimal format
      while hardware tail in hexadecimal only.
      
      It is not comfortable to compare indexes in different formats;
      on the other hand, hexadecimal output useful to see hardware
      glitches.
      
      To serve all purposes, print hardware tail in both decimal and
      hexadecimal formats.
      Signed-off-by: NVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      995cdd0e
    • V
      wil6210: improve debugfs for reorder buffer · 56637e7b
      Vladimir Kondratiev 提交于
      When printing debugfs for the reorder buffer, include BACK
      parameters: window size and timeout
      Signed-off-by: NVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      56637e7b
    • V
      wil6210: ADDBA/DELBA flows · 3277213f
      Vladimir Kondratiev 提交于
      Introduce BACK establishment procedures; decision logic is not implemented
      yet; debugfs entry 'addba' used to manually trigger addba/delba for ringid 0.
      
      debugfs usage:
      to establish BACK with agg_wsize 16:
        echo 16 > /sys/kernel/debug/ieee80211/phy0/wil6210/addba
      to delete BACK:
        echo 0 > /sys/kernel/debug/ieee80211/phy0/wil6210/addba
      to change agg_wsize, one need to delete BACK and establish it anew
      
      ADDBA flow for:
      
      - originator
      
      Tx side (initiator) sends WMI_VRING_BA_EN_CMDID providing
      agg_wsize and timeout parameters.
      Eventually, it gets event confirming BACK agreement - WMI_BA_STATUS_EVENTID
      with negotiated parameters. On this event, update Tx vring data
      (struct vring_tx_data) and display BACK parameters on debugfs
      
      - recipient
      
      Rx side (recipient) firmware informs driver about ADDBA with
      WMI_RCP_ADDBA_REQ_EVENTID, driver process it in service work
      queue wq_service. It adjusts parameters and sends response
      with WMI_RCP_ADDBA_RESP_CMDID, and final confirmation provided
      by firmware with WMI_ADDBA_RESP_SENT_EVENTID. In case of success,
      driver updates Rx BACK reorder buffer.
      
      policy for BACK parameters:
      - aggregation size (agg_wsize * MPDUsize)) to not exceed 64Kbytes
      
      DELBA flow for:
      
      - originator
      
      driver decides to terminate BACK, it sends WMI_VRING_BA_DIS_CMDID
      and updates struct vring_tx_data associated with vring; ignore
      WMI_DELBA_EVENTID.
      
      - recipient
      
      firmware informs driver with WMI_DELBA_EVENTID,
      driver deletes correspondent reorder buffer
      
      ADDBA request processing requires sending WMI command, therefore
      it is processed in work queue context. Same work queue used as for
      connect, it get renamed to wq_service
      Signed-off-by: NVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      3277213f
  12. 07 1月, 2015 1 次提交
    • C
      wil6210: use 'uint64_t' instead of 'cycles_t' to avoid warnings · c20e7789
      Chen Gang 提交于
      do_div() checks the type strictly. 'cycles_t' may be 32-bit under quite
      a few architectures (parisc, arm, avr32 ...). So use 'uint64_t' instead
      of, the related warning (with allmodconfig under parisc):
      
          CC [M]  drivers/net/wireless/ath/wil6210/debugfs.o
        In file included from arch/parisc/include/generated/asm/div64.h:1:0,
                         from include/linux/kernel.h:124,
                         from include/linux/list.h:8,
                         from include/linux/module.h:9,
                         from drivers/net/wireless/ath/wil6210/debugfs.c:17:
        drivers/net/wireless/ath/wil6210/debugfs.c: In function ‘wil_vring_debugfs_show’:
        include/asm-generic/div64.h:43:28: warning: comparison of distinct pointer types lacks a cast
          (void)(((typeof((n)) *)0) == ((uint64_t *)0)); \
                                    ^
        drivers/net/wireless/ath/wil6210/debugfs.c:107:4: note: in expansion of macro ‘do_div’
            do_div(idle, total);
            ^
        In file included from include/uapi/linux/stddef.h:1:0,
                         from include/linux/stddef.h:4,
                         from ./include/uapi/linux/posix_types.h:4,
                         from include/uapi/linux/types.h:13,
                         from include/linux/types.h:5,
                         from include/linux/list.h:4,
                         from include/linux/module.h:9,
                         from drivers/net/wireless/ath/wil6210/debugfs.c:17:
        include/asm-generic/div64.h:44:18: warning: right shift count >= width of type [-Wshift-count-overflow]
          if (likely(((n) >> 32) == 0)) {   \
                          ^
        include/linux/compiler.h:159:40: note: in definition of macro ‘likely’
         # define likely(x) __builtin_expect(!!(x), 1)
                                                ^
        drivers/net/wireless/ath/wil6210/debugfs.c:107:4: note: in expansion of macro ‘do_div’
            do_div(idle, total);
            ^
        In file included from arch/parisc/include/generated/asm/div64.h:1:0,
                         from include/linux/kernel.h:124,
                         from include/linux/list.h:8,
                         from include/linux/module.h:9,
                         from drivers/net/wireless/ath/wil6210/debugfs.c:17:
        include/asm-generic/div64.h:48:22: warning: passing argument 1 of ‘__div64_32’ from incompatible pointer type [-Wincompatible-pointer-types]
           __rem = __div64_32(&(n), __base); \
                              ^
        drivers/net/wireless/ath/wil6210/debugfs.c:107:4: note: in expansion of macro ‘do_div’
            do_div(idle, total);
            ^
        include/asm-generic/div64.h:35:17: note: expected ‘uint64_t * {aka long long unsigned int *}’ but argument is of type ‘cycles_t * {aka long unsigned int *}’
         extern uint32_t __div64_32(uint64_t *dividend, uint32_t divisor);
                         ^
      Signed-off-by: NChen Gang <gang.chen.5i5j@gmail.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      c20e7789
  13. 02 12月, 2014 1 次提交
  14. 03 10月, 2014 1 次提交
    • V
      wil6210: manual FW error recovery mode · c33407a8
      Vladimir Kondratiev 提交于
      Introduce manual FW recovery mode. It is activated if module parameter
      @no_fw_recovery set to true. May be changed at runtime.
      
      Recovery information provided by new "recovery" debugfs file. It prints:
      
      mode = [auto|manual]
      state = [idle|pending|running]
      
      In manual mode, after FW error, recovery won't start automatically. Instead,
      after notification to user space, recovery waits in "pending" state, as indicated by the
      "recovery" debugfs file. User space tools may perform data collection and allow to
      continue recovery by writing "run" to the "recovery" debugfs file.
      Alternatively, recovery pending may be canceled by stopping network interface
      i.e. 'ifconfig wlan0 down'
      Signed-off-by: NVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      c33407a8
  15. 12 9月, 2014 3 次提交
  16. 26 8月, 2014 4 次提交
  17. 19 7月, 2014 4 次提交