An error occurred fetching the project authors.
  1. 04 Aug, 2015 3 commits
  2. 26 Jun, 2015 1 commit
  3. 03 Jun, 2015 1 commit
    • Sara Sharon's avatar
      iwlwifi: pcie: New RBD allocation model · 5f175703
      Sara Sharon authored
      As a preperation for multiple RX queues change the RBD
      allocation model.
      
      The new model includes a background allocator. The allocator is
      called by the interrupt handler when there are two released
      buffers by the queue, and the allocator starts allocating eight
      pages per request.
      When the queue has released 8 pages it tries claiming the
      request. If the pages are not ready - it keeps claiming.
      This new model should make sure that RBDs are always available
      across the multiple queues.
      
      The RBDs are transferred between the allocator and the queue.
      The queue moves the free RBDs upon freeing them to the allocator.
      The allocator moves them back to the queue's possession when the
      request is claimed.
      The allocator has an initial pool to make sure there are always RBDs
      available for the request completion.
      Release of the buffers at exit is done per pools - the allocator
      frees its own initial pool and the queue frees its own pool.
      
      Existing code refactor -
      -Queue's initial pool is the size of the queue only as the allocation
      of the new buffers no longer uses this pool.
      -Removal of replenish background work, and replenish calls in the
      interrupt handler and restock().
      -The replenish() and the rxq used_list are used only during
      initialization.
      -Moved page allocation to a new function for code reuse.
      
      New code -
      Allocator code - new structure and functions.
      Interrupt handler uses the allocator functions for replenishing buffers.
      Reuse of the restock() method.
      Signed-off-by: default avatarSara Sharon <sara.sharon@intel.com>
      Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      5f175703
  4. 28 May, 2015 1 commit
    • Ilan Peer's avatar
      iwlwifi: pcie: fix tracking of cmd_in_flight · fc8a350d
      Ilan Peer authored
      The cmd_in_flight tracking was introduced to workaround faulty
      power management hardware, by having the driver keep the NIC
      awake as long as there are commands in flight. However, some of
      the code handling this workaround was unconditionally executed,
      which resulted with an inconsistent state where the driver assumed
      that the NIC was awake although it wasn't.
      
      Fix this by renaming 'cmd_in_flight' to 'cmd_hold_nic_awake' and
      handling the NIC requested awake state only for hardwares for
      which the workaround is needed.
      Signed-off-by: default avatarIlan Peer <ilan.peer@intel.com>
      Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      fc8a350d
  5. 12 Mar, 2015 1 commit
    • Emmanuel Grumbach's avatar
      iwlwifi: pcie: allow the op_mode to freeze the stuck queue timer · e0b8d405
      Emmanuel Grumbach authored
      This allows the op_mode to let the transport know that a
      queue is currently frozen and that its timer should be
      stopped.
      When the queue is unfrozen, its timer should be set to
      expire after the remainder of the timeout has elapsed.
      This can be used when stations go to sleep. When a station
      goes to sleep, the op_mode can freeze the timer so that the
      queue will never be considered as stuck. When the station
      wakes up, the queue will be unfrozen.
      This is meant to avoid false positives that would happen if
      a buggy station goes to sleep for a very long time. In case
      we have a dedicated queue for this station (BA agreement)
      and it goes to sleep for a very long time, the queue would
      rightfully be stopped during all that time. In this case,
      the stuck queue timer could fire and that would be a false
      positive.
      Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      e0b8d405
  6. 01 Feb, 2015 1 commit
  7. 28 Dec, 2014 1 commit
  8. 14 Sep, 2014 1 commit
  9. 03 Sep, 2014 3 commits
  10. 24 Jun, 2014 1 commit
  11. 06 May, 2014 2 commits
  12. 13 Apr, 2014 4 commits
  13. 09 Mar, 2014 1 commit
  14. 13 Feb, 2014 1 commit
  15. 31 Dec, 2013 2 commits
  16. 21 Dec, 2013 1 commit
  17. 17 Dec, 2013 4 commits
  18. 25 Nov, 2013 1 commit
  19. 16 Jul, 2013 1 commit
  20. 13 Jun, 2013 1 commit
  21. 28 Feb, 2013 1 commit
    • Johannes Berg's avatar
      iwlwifi: use coherent DMA memory for command header · 38c0f334
      Johannes Berg authored
      Recently in commit 8a964f44
      ("iwlwifi: always copy first 16 bytes of commands") we fixed
      the problem that the hardware writes back to the command and
      that could overwrite parts of the data that was still needed
      and would thus be corrupted.
      
      Investigating this problem more closely we found that this
      write-back isn't really ordered very well with respect to
      other DMA traffic. Therefore, it sometimes happened that the
      write-back occurred after unmapping the command again which
      is clearly an issue and could corrupt the next allocation
      that goes to that spot, or (better) cause IOMMU faults.
      
      To fix this, allocate coherent memory for the first 16 bytes
      of each command, containing the write-back part, and use it
      for all queues. All the dynamic DMA mappings only need to be
      TO_DEVICE then. This ensures that even when the write-back
      happens "too late" it can't hit memory that has been freed
      or a mapping that doesn't exist any more.
      
      Since now the actual command is no longer modified, we can
      also remove CMD_WANT_HCMD and get rid of the DMA sync that
      was necessary to update the scratch pointer.
      Reviewed-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      38c0f334
  22. 26 Feb, 2013 1 commit
    • Johannes Berg's avatar
      iwlwifi: always copy first 16 bytes of commands · 8a964f44
      Johannes Berg authored
      The FH hardware will always write back to the scratch field
      in commands, even host commands not just TX commands, which
      can overwrite parts of the command. This is problematic if
      the command is re-used (with IWL_HCMD_DFL_NOCOPY) and can
      cause calibration issues.
      
      Address this problem by always putting at least the first
      16 bytes into the buffer we also use for the command header
      and therefore make the DMA engine write back into this.
      
      For commands that are smaller than 16 bytes also always map
      enough memory for the DMA engine to write back to.
      
      Cc: stable@vger.kernel.org
      Reviewed-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      8a964f44
  23. 05 Feb, 2013 1 commit
    • Johannes Berg's avatar
      iwlwifi: use threaded interrupt handler · 2bfb5092
      Johannes Berg authored
      With new transports coming up, move to threaded
      interrupt handling now. This has the advantage
      that we can use the same locking scheme with all
      different transports we may need to implement.
      
      Note that the TX path obviously still runs in a
      tasklet, so some spin_lock() calls need to change
      to spin_lock_bh() calls to properly lock out the
      TX path.
      
      In my test on a Calpella platform this has no
      impact on throughput or latency.
      
      Also add lockdep annotations to avoid lockups due
      to catch sending synchronous commands or using
      locks that connect with them from the irq thread.
      Reviewed-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      2bfb5092
  24. 01 Feb, 2013 1 commit
  25. 24 Jan, 2013 1 commit
  26. 16 Jan, 2013 1 commit
  27. 03 Jan, 2013 2 commits