EHCI periodic processing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dave:

In ehci-hcd's scan-periodic() routine, you loop through all the frames 
in the schedule since the last time the routine was called, processing 
all the isochronous TDs and interrupt QHs associated with each frame.

That's fine for the isochronous transfers, but it seems wasteful (and
possibly flat-out wrong in the presence of frame-list wraparound) for
interrupt transfers.  For example, if an interrupt endpoint has a
period of 16 ms and there's no IRQ for 512 ms, you end up pointlessly
calling qh_completions() 32 times for the same endpoint queue when the
IRQ occurs.

Wouldn't it make more sense to have scan_periodic() terminate its inner
loop whenever it encounters a Q_TYPE_QH entry?  And then do a separate
pass over all the interrupt QHs, much like scan_async() does a pass
over all the QHs in the async ring?

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux