1. 23 10月, 2012 9 次提交
  2. 22 10月, 2012 3 次提交
    • A
      EHCI: replace mult/div with bit-mask operation · 72675479
      Alan Stern 提交于
      This patch (as1610) replaces multiplication and divison operations in
      ehci-hcd's isochronous scheduling code with a bit-mask operation,
      taking advantage of the fact that isochronous periods are always
      powers of 2.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      72675479
    • A
      EHCI: use the isochronous scheduling threshold · 98cae42d
      Alan Stern 提交于
      This patch (as1609) changes the way ehci-hcd uses the "Isochronous
      Scheduling Threshold" in its calculations.  Until now the code has
      ignored the threshold except for certain Intel PCI-based controllers.
      This violates the EHCI spec.
      
      The new code takes the threshold into account always, removing the
      need for the fs_i_thresh quirk flag.  In addition it implements the
      "full frame cache" setting more efficiently, moving forward only as
      far as the next frame boundary instead of always moving forward 8
      microframes.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      98cae42d
    • A
      EHCI: improved logic for isochronous scheduling · c3ee9b76
      Alan Stern 提交于
      This patch (as1608) reworks the logic used by ehci-hcd for scheduling
      isochronous transfers.  Now the modular calculations are all based on
      a window that starts at the last frame scanned for isochronous
      completions.  No transfer descriptors for any earlier frames can
      possibly remain on the schedule, so there can be no confusion from
      schedule wrap-around.  This removes the need for a "slop" region of
      arbitrary size.
      
      There's no need to check for URBs that are longer than the schedule
      length.  With the old code they could throw things off by wrapping
      around and appearing to end in the near future rather than the distant
      future.  Now such confusion isn't possible, and the existing test for
      submissions that extend too far into the future will also catch those
      that exceed the schedule length.  (But there still has to be an
      initial test to handle the case where the schedule already extends as
      far into the future as possible.)
      
      Delays caused by IRQ latency won't confuse the algorithm unless they
      are ridiculously long (over 250 ms); they will merely reduce how far
      into the future new transfers can be scheduled.  A few people have
      reported problems caused by delays of 50 ms or so.  Now instead of
      failing completely, isochronous transfers will experience a brief
      glitch and then continue normally.
      
      (Whether this is truly a good thing is debatable.  A latency as large
      as 50 ms generally indicates a bug is present, and complete failure of
      audio or video transfers draws people's attention pretty vividly.
      Making the transfers more robust also makes it easier for such bugs to
      remain undetected.)
      
      Finally, ehci->next_frame is renamed to ehci->last_iso_frame, because
      that better describes what it is: the last frame to have been scanned
      for isochronous completions.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c3ee9b76
  3. 21 10月, 2012 2 次提交
  4. 20 10月, 2012 26 次提交