Skip to content
Snippets Groups Projects
  1. Sep 11, 2012
  2. Jul 17, 2012
  3. Jul 11, 2011
    • Daniel Drake's avatar
      libertas: fix handling of command timeout, completion and interruption · df90d843
      Daniel Drake authored
      
      When commands time out, corruption ensues. As lbs_complete_command()
      is called without locking, the command node is mistakenly freed twice.
      Also fixed up locking here in a few other places.
      
      The nature of command timeout may be that the card didn't even
      acknowledge receipt of the request. Detect this case and reset dnld_sent
      so that other commands don't hang forever.
      
      When cmdnodes are moved between the free list and the pending list,
      their list heads should be reinitialized. Fixed this.
      
      Sometimes commands are completed without actually submitting them or
      removing them from cmdpendingq. We must remember to remove them from
      cmdpendingq in these cases, so handle this in lbs_complete_command().
      
      Harmless signals generated during suspend/resume were interrupting
      lbs_cmd. Convert to an uninterruptible sleep to avoid this.
      
      lbs_thread must be woken up every time there is some new work to do.
      I found that when 2 commands are queued, ther completion of the first
      command would not wake up lbs_thread to submit the second. Poke lbs_thread
      at the end of lbs_complete_command() to fix this.
      
      Signed-off-by: default avatarDaniel Drake <dsd@laptop.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      df90d843
  4. Jul 27, 2010
  5. Jul 12, 2010
  6. Dec 22, 2009
  7. Oct 27, 2009
  8. Nov 21, 2008
  9. Sep 30, 2008
  10. Sep 15, 2008
  11. Sep 11, 2008
  12. Aug 29, 2008
  13. Jun 03, 2008
  14. May 22, 2008
  15. May 14, 2008
  16. May 07, 2008
  17. Mar 25, 2008
  18. Mar 06, 2008
  19. Jan 28, 2008
Loading