From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony Liguori Subject: Re: [PATCH] uhci: Change default transaction lifetime to 32 frames Date: Thu, 11 Sep 2008 15:59:34 -0500 Message-ID: <48C986B6.9050506@codemonkey.ws> References: <1220679623-7934-1-git-send-email-maxk@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: aurelien@aurel32.net, qemu-devel@nongnu.org, kvm@vger.kernel.org To: Max Krasnyansky Return-path: Received: from mail-gx0-f16.google.com ([209.85.217.16]:61752 "EHLO mail-gx0-f16.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753135AbYIKVA1 (ORCPT ); Thu, 11 Sep 2008 17:00:27 -0400 Received: by gxk9 with SMTP id 9so17556672gxk.13 for ; Thu, 11 Sep 2008 14:00:26 -0700 (PDT) In-Reply-To: <1220679623-7934-1-git-send-email-maxk@kernel.org> Sender: kvm-owner@vger.kernel.org List-ID: Max Krasnyansky wrote: > 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. > Applied. Thanks. Regards, Anthony Liguori > 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; >