uhci: Change default transaction lifetime to 32 frames
PATCH 1/1 uhci: Change default transaction lifetime to 32 frames
Transaction lifetime was originally set to 10 frames. That was an arbitrary number I picked without much thinking :).
I'm changing that to 32 frames because things like interrupt transfers and such are scheduled at that rate. It seems like 1/32 is accepted as lowest supported rate. OHCI, for example, defines exactly 32 interrupt heads.
While testing USB webcam under XP I noticed that interrupt transactions were being canceled and then resubmitted on a regular basis, which works but is a waste of CPU cycles. This change fixes that.
All other devices I have are not affected.
--- hw/usb-uhci.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
hw/usb-uhci.c +1 -1
@@ -781,7 +781,7 @@ static int uhci_handle_td(UHCIState *s, uint32_t addr, UHCI_TD *td, uint32_t *in async =uhci_async_find_td (s, addr, td->token);if (async) {/* Already submitted */ - async->valid =10 ; + async->valid =32 ;if (!async->done)return 1 ;
Signature · 1 line
1.5.5.1
Anthony Liguori
AppliedQuoted 7 lines · Max Krasnyansky
Transaction lifetime was originally set to 10 frames. That was an arbitrary number I picked without much thinking :).
I'm changing that to 32 frames because things like interrupt transfers and such are scheduled at that rate. It seems like 1/32 is accepted as lowest supported rate. OHCI, for example, defines exactly 32 interrupt heads.
Quoted 5 lines
While testing USB webcam under XP I noticed that interrupt transactions were being canceled and then resubmitted on a regular basis, which works but is a waste of CPU cycles. This change fixes that.
All other devices I have are not affected.
Applied. Thanks.
Regards,
Anthony Liguori
Quoted 19 lines
Signed-off-by Max Krasnyansky <[email protected]>--- hw/usb-uhci.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)hw/usb-uhci.c +1
-1@@ -781,7 +781,7 @@ static int uhci_handle_td(UHCIState *s, uint32_t addr, UHCI_TD *td, uint32_t *in async =uhci_async_find_td (s, addr, td->token);if (async) {/* Already submitted */ - async->valid =10 ; + async->valid =32 ;if (!async->done)return 1 ;