]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
USB: xHCI: Fix interrupt moderation.
authorSarah Sharp <sarah.a.sharp@linux.intel.com>
Thu, 14 May 2009 18:44:26 +0000 (11:44 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 16 Jun 2009 04:44:51 +0000 (21:44 -0700)
Mask off the lower 16 bits of the interrupt control register, instead of
masking off the upper 16 bits.  The interrupt moderation interval field is
the lower 16 bytes, and is set to 0x4000 (1ms) by default.  The previous
code was adding 40 us to the default value, instead of setting it to 40
us.  This makes performance really bad.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/host/xhci-hcd.c

index 59ee61d2a1980e03081fcbb8045441316c6dab6b..489657c853e7f202e1a7d51aa8be546d257d7f4f 100644 (file)
@@ -384,7 +384,7 @@ int xhci_run(struct usb_hcd *hcd)
 
        xhci_dbg(xhci, "// Set the interrupt modulation register\n");
        temp = xhci_readl(xhci, &xhci->ir_set->irq_control);
-       temp &= 0xffff;
+       temp &= ~ER_IRQ_INTERVAL_MASK;
        temp |= (u32) 160;
        xhci_writel(xhci, temp, &xhci->ir_set->irq_control);