From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KbqXj-0005X7-Eu for qemu-devel@nongnu.org; Sat, 06 Sep 2008 01:41:07 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KbqXg-0005U6-1E for qemu-devel@nongnu.org; Sat, 06 Sep 2008 01:41:06 -0400 Received: from [199.232.76.173] (port=44141 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KbqXf-0005Ty-Lp for qemu-devel@nongnu.org; Sat, 06 Sep 2008 01:41:03 -0400 Received: from hera.kernel.org ([140.211.167.34]:39031) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1KbqXf-0004Gw-6Z for qemu-devel@nongnu.org; Sat, 06 Sep 2008 01:41:03 -0400 From: Max Krasnyansky Date: Sat, 6 Sep 2008 05:40:23 +0000 Message-Id: <1220679623-7934-1-git-send-email-maxk@kernel.org> Subject: [Qemu-devel] [PATCH] uhci: Change default transaction lifetime to 32 frames Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: anthony@codemonkey.ws, aurelien@aurel32.net, qemu-devel@nongnu.org Cc: kvm@vger.kernel.org, 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. 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. Signed-off-by: Max Krasnyansky --- hw/usb-uhci.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/hw/usb-uhci.c b/hw/usb-uhci.c index 62c743d..b90cf78 100644 --- a/hw/usb-uhci.c +++ b/hw/usb-uhci.c @@ -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; -- 1.5.5.1