1. 26 6月, 2012 4 次提交
    • G
      uas: keep track of command state, finish scsi cmd when really done. · b1d67693
      Gerd Hoffmann 提交于
      Set state bits after submitting data urbs & command urbs, so we know
      what is in flight.  Clear data bits when the data urb is finished, clear
      command bit when we see the status urb for the command.  Finish the scsi
      command after running both status and data completion handlers for the
      command.
      
      Add a cmd status logging function for debugging purposes.  Hook it into
      the error handler, so we see in the log what status a command is in
      which the scsi layer wants cancel.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b1d67693
    • G
      uas: fix sense urb handling · e9bd7e1a
      Gerd Hoffmann 提交于
      Stop reusing sense urbs, just allocate a fresh one each time and free it
      when done.
      
      Stop storing a sense urb pointer in the scsi request, all you can do
      with it is misusing.  For example requeuing the sense urb, then f*ck it
      up by picking the wrong one in case tagged requests don't finish in the
      same order you've submitted them.  Also note that (not-yet supported)
      task management ops don't have a scsi request in the first place.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e9bd7e1a
    • G
      Revert "usb/uas: one only one status URB/host on stream-less connection" · db32de11
      Gerd Hoffmann 提交于
      This reverts commit ceb3f91f.
      
      IMO the real bug is assigning status urbs to scsi requests.  First there
      is no such link in the non-stream case.  Also there isn't nessesarely a
      scsi request in the first place, for example when submitting task
      management requests.
      
      This patch just papers over the real bug and introduces different status
      urb handling in the stream/non-stream case for no good reason.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      db32de11
    • G
      Revert "usb/uas: make sure data urb is gone if we receive status before that" · c621a81e
      Gerd Hoffmann 提交于
      This reverts commit e4d8318a.
      
      This patch makes uas.c call usb_unlink_urb on data urbs.  The data urbs
      get freed in the completion callback.  This is illegal according to the
      usb_unlink_urb documentation.
      
      This patch also makes the code expect the data completion callback
      being called before the status completion callback.  This isn't
      guaranteed to be the case, even though the actual data transfer should
      be finished by the time the status is received.
      
      Background:  The ehci irq handler for example only know that there are
      finished transfers, it then has go check the QHs & TDs to see which
      transfers did actually finish.  It has no way to figure in which order
      the transfers did complete.  The xhci driver can call the callbacks in
      completion order thanks to the event queue.  This does nicely explain
      why the driver is solid on a (usb2) xhci port whereas it goes crazy on
      ehci in my testing.
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c621a81e
  2. 25 6月, 2012 1 次提交
  3. 21 6月, 2012 8 次提交
  4. 20 6月, 2012 1 次提交
  5. 19 6月, 2012 3 次提交
  6. 18 6月, 2012 14 次提交
  7. 17 6月, 2012 1 次提交
  8. 16 6月, 2012 8 次提交