This patch merely cleans up the code a little and doesn't fix any bugs. It makes a couple of code paths a bit easier to understand, removes an unused variable (uhci_list) and some procfs variables when not using procfs.
Greg, please apply to 2.4 and 2.5. JE --- linux-2.4.19-pre6.orig/drivers/usb/uhci.c Sun Apr 7 16:29:57 2002 +++ linux-2.4.19-pre6/drivers/usb/uhci.c Sun Apr 7 16:22:49 2002 @@ -1622,8 +1622,7 @@ if (urb->status != -EINPROGRESS) { info("uhci_transfer_result: called for URB %p not in flight?", urb); - spin_unlock_irqrestore(&urb->lock, flags); - return; + goto out; } switch (usb_pipetype(urb->pipe)) { @@ -1643,10 +1642,8 @@ urbp->status = ret; - if (ret == -EINPROGRESS) { - spin_unlock_irqrestore(&urb->lock, flags); - return; - } + if (ret == -EINPROGRESS) + goto out; switch (usb_pipetype(urb->pipe)) { case PIPE_CONTROL: @@ -1660,11 +1657,8 @@ break; case PIPE_INTERRUPT: /* Interrupts are an exception */ - if (urb->interval) { - uhci_add_complete(urb); - spin_unlock_irqrestore(&urb->lock, flags); - return; /* <-- note return */ - } + if (urb->interval) + goto out_complete; /* Release bandwidth for Interrupt or Isoc. transfers */ /* Spinlock needed ? */ @@ -1680,8 +1674,10 @@ /* Remove it from uhci->urb_list */ list_del_init(&urb->urb_list); +out_complete: uhci_add_complete(urb); +out: spin_unlock_irqrestore(&urb->lock, flags); } @@ -2710,6 +2706,7 @@ } uhci->dev = dev; + uhci->irq = dev->irq; uhci->io_addr = io_addr; uhci->io_size = io_size; pci_set_drvdata(dev, uhci); @@ -2922,8 +2919,6 @@ if (request_irq(dev->irq, uhci_interrupt, SA_SHIRQ, "usb-uhci", uhci)) goto err_request_irq; - - uhci->irq = dev->irq; /* disable legacy emulation */ pci_write_config_word(uhci->dev, USBLEGSUP, USBLEGSUP_DEFAULT); --- linux-2.4.19-pre6.orig/drivers/usb/uhci.h Sun Apr 7 13:22:10 2002 +++ linux-2.4.19-pre6/drivers/usb/uhci.h Sun Apr 7 16:16:55 2002 @@ -287,16 +287,16 @@ struct uhci { struct pci_dev *dev; +#ifdef CONFIG_PROC_FS /* procfs */ int num; struct proc_dir_entry *proc_entry; +#endif /* Grabbed from PCI */ int irq; unsigned int io_addr; unsigned int io_size; - - struct list_head uhci_list; struct pci_pool *qh_pool; struct pci_pool *td_pool; _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel