1. 15 1月, 2015 2 次提交
    • V
      wil6210: simple ADDBA on originator (Tx) side · 3a124ed6
      Vladimir Kondratiev 提交于
      Upon Tx vring creation, initiate BACK establishment
      with maximum possible window size.
      
      When establishing secure connection, there is EAPOL data exchange
      between connection itself and "data port open", where security
      is done and non-EAPOL data may be transferred. It is better to
      send EAPOL frames using normal ACK because of firmware considerations.
      
      send ADDBA only is 2 conditions met:
      - data port open for the corresponded STA
      - vring created
      Signed-off-by: NVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
      Signed-off-by: NKalle Valo <kvalo@codeaurora.org>
      3a124ed6
    • 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. 02 12月, 2014 1 次提交
  3. 31 10月, 2014 2 次提交
  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 7 次提交
  6. 26 8月, 2014 6 次提交
  7. 19 7月, 2014 2 次提交
  8. 20 6月, 2014 4 次提交
  9. 31 5月, 2014 1 次提交
  10. 30 5月, 2014 1 次提交
  11. 23 4月, 2014 2 次提交
  12. 18 3月, 2014 2 次提交
    • V
      wil6210: fix race between disconnect and Tx NAPI · 097638a0
      Vladimir Kondratiev 提交于
      When disconnecting some CID, corresponded Tx vring get released. During vring
      release, all descriptors get freed. It is possible that Tx NAPI working on the same
      vring simultaneously. If it happens, descriptor may be double freed.
      
      To protect from the race above, make sure NAPI won't process the same vring.
      Introduce 'enabled' flag in the struct vring_tx_data. Proceed with Tx NAPI only if
      'enabled' flag set. Prior to Tx vring release, clear this flag and make sure NAPI
      get synchronized.
      
      NAPI enablement status protected by wil->mutex, add protection where it was
      missing and check for it.
      
      During reset, disconnect all peers first, then proceed with the Rx vring. It allows for
      the disconnect flow to observe proper 'wil->status' and correctly notify cfg80211 about
      connection status change
      Signed-off-by: NVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      097638a0
    • V
      wil6210: Block data till "data port open" reported · e58c9f70
      Vladimir Kondratiev 提交于
      When connection established, as reported by WMI_CONNECT_EVENTID,
      4-way handshaking required for the secure connection is not done
      yet. It is indicated by another WMI event. Wait for it and only then
      allow data traffic. In case of non-secure connection, FW reports
      "data port open" immediately after connection.
      Signed-off-by: NVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      e58c9f70
  13. 01 3月, 2014 7 次提交
  14. 23 8月, 2013 1 次提交
  15. 23 7月, 2013 1 次提交