1. 15 1月, 2015 4 次提交
    • 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
  2. 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
  3. 02 12月, 2014 1 次提交
  4. 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
  5. 12 9月, 2014 3 次提交
  6. 26 8月, 2014 4 次提交
  7. 19 7月, 2014 4 次提交
  8. 21 6月, 2014 1 次提交
  9. 20 6月, 2014 12 次提交
  10. 30 5月, 2014 1 次提交
  11. 18 3月, 2014 2 次提交
  12. 04 3月, 2014 1 次提交
  13. 01 3月, 2014 4 次提交
  14. 23 7月, 2013 1 次提交