diff options
| author | Johannes Erdfelt <johannes@erdfelt.com> | 2002-05-11 07:16:49 -0700 |
|---|---|---|
| committer | Greg Kroah-Hartman <greg@kroah.com> | 2002-05-11 07:16:49 -0700 |
| commit | ea3aba357a4669d94aefd52bccde40700c86c812 (patch) | |
| tree | 2990aec609ebcf74e8eb79efec6b6f71dbd438be /drivers/usb/storage | |
| parent | c37126dd6c986b2c5bd59218ad918c1c7778a03b (diff) | |
[PATCH] uhci.c FSBR timeout
There was a discussion a long time ago about how safe the bit operations
were as well as recently.
set_bit/clear_bit are not safe on x86 UP, nor are they safe on other
architectures. It's also unclear from the UHCI spec if the HC's are safe
with respect to atomic updates to the status field.
This patch ditches all of the uses of set_bit and clear_bit and changes
the algorithm that depended on it.
The FSBR timeout algorithm would reenable FSBR for transfers when they
started making progress again. So instead of trying for this best case,
we convert the transfer over to depth first from the standard breadth
first. To make sure the transfer doesn't hog all of the bandwidth, every
5th TD is left in breadth first mode. This will ensure other transfers
get some bandwidth.
It's not perfect, but I think it's a good compromise.
Note: td->info is read only by the HC, so we can touch it whenever we
want.
Diffstat (limited to 'drivers/usb/storage')
0 files changed, 0 insertions, 0 deletions
