linux-stable/drivers
inaky@linux.intel.com 88fafff9d7 usb hub: fix root hub code so it takes more than 15 devices per root hub
Wireless USB Host Controllers accept a large number of devices per
host, which shows up as a large number of ports in its root hub.

When the number of ports in a hub device goes over 16, the activation
of the hub fails with the cryptic message in klogd.

hub 2-0:1.0: activate --> -22

Following this further, it was seen that:

hub_probe()
  hub_configure()
    generates pipe number

    pseudo allocates buffer 'maxp' bytes in size using usb_maxpacket()

      The endpoint descriptor for a root hub interrupt endpoint is
      declared in
      drivers/usb/core/hcd.c:hs_rh_config_descriptor and declares it
      to be size two (supporting 15 devices max).

    hub_activate()
      usb_hcd_submit_urb()
        rh_urb_enqueue()
          urb->pipe is neither int nor ctl, so it errors out
            rh_queue_status()
              Returns -EINVAL because the buffer length is smaller
              than the minimum needed to report all the hub port
              bits as in accordance with USB2.0[11.12.3]. There has
              to be trunc((PORTS + 1 + 7) / 8) bytes of space at
              least.

Alan Stern confirmed that the reason for reading maxpktsize and not
the right amount is because some hubs are known to return more data
and thus cause overflow. 

So this patch simply changes the code to make the interrupt endpoint's
max packet size be at least the minimum required by USB_MAXCHILDREN
(instead of a fixed magic number) and add documentation for that. This
way we are always ahead of the limit.

Signed-off-by: Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2006-12-01 14:23:26 -08:00
..
acorn
acpi [PATCH] Correct bound checking from the value returned from _PPC method. 2006-11-23 09:18:55 -08:00
amba
ata [PATCH] libata: Fixup ata_sas_queuecmd to handle __ata_scsi_queuecmd failure 2006-11-28 03:51:55 -05:00
atm
base [PATCH] Fix device_attribute memory leak in device_del 2006-11-25 13:28:33 -08:00
block aoe: Add forgotten NULL at end of attribute list in aoeblk.c 2006-11-16 14:30:26 -08:00
bluetooth
cdrom
char [PATCH] tlclk: fix platform_device_register_simple() error check 2006-11-25 13:28:34 -08:00
clocksource
connector
cpufreq [PATCH] Fix CPU_FREQ_GOV_ONDEMAND=y compile error 2006-11-21 14:07:15 -08:00
crypto
dio
dma
edac [PATCH] edac_mc: fix error handling 2006-11-03 12:27:57 -08:00
eisa
fc4
firmware [PATCH] dell_rbu: fix error check 2006-11-16 11:43:38 -08:00
hwmon
i2c [PATCH] Fix i2c-ixp4xx compile (missing brace) 2006-11-23 09:27:49 -08:00
ide [PATCH] sgiioc4: Disable module unload 2006-11-25 13:28:34 -08:00
ieee1394
infiniband IB/ipath: Depend on CONFIG_NET 2006-11-20 13:06:19 -08:00
input lkkbd: Remove my old snail-mail address 2006-11-17 10:32:04 +01:00
isdn [PATCH] fix build error for HISAX_NETJET 2006-11-20 09:42:05 -08:00
leds
macintosh [PATCH] powerpc: windfarm shall request it's sub modules 2006-11-15 19:57:12 -08:00
mca
md [PATCH] md: do not freeze md threads for suspend 2006-11-08 18:29:24 -08:00
media V4L/DVB (4874): Fix oops on symbol rate==0 2006-11-26 11:02:43 -02:00
message
mfd
misc [PATCH] Fix for LKDTM MEM_SWAPOUT crashpoint 2006-11-06 01:46:23 -08:00
mmc MMC: Do not set unsupported bits in OCR response 2006-11-09 07:23:54 +01:00
mtd [PATCH] Fix Intel/Sharp command set erase suspend bug 2006-11-28 17:26:50 -08:00
net [PATCH] r8169: Fix iteration variable sign 2006-11-29 13:45:07 -08:00
nubus
oprofile
parisc
parport [PATCH] parport: fix compilation failure 2006-11-16 11:43:37 -08:00
pci [PATCH] revert "PCI: quirk for IBM Dock II cardbus controllers" 2006-11-14 09:09:27 -08:00
pcmcia [PATCH] fix "pcmcia: fix 'rmmod pcmcia' with unbound devices" 2006-11-25 13:28:33 -08:00
pnp
rapidio
rtc [PATCH] drivers/rtc/rtc-rs5c372.c: fix a NULL dereference 2006-11-25 13:28:33 -08:00
s390
sbus
scsi Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 2006-11-16 11:48:01 -08:00
serial [POWERPC] CPM_UART: Fix non-console initialisation 2006-11-10 21:35:36 +11:00
sh
sn
spi [PATCH] spi section fix 2006-11-03 12:27:58 -08:00
tc
telephony [PATCH] drivers/telephony/ixj: fix an array overrun 2006-11-08 18:29:23 -08:00
usb usb hub: fix root hub code so it takes more than 15 devices per root hub 2006-12-01 14:23:26 -08:00
video Fix generic fb_ddc i2c edid probe msg 2006-11-16 22:18:28 -08:00
w1 W1: ioremap balanced with iounmap 2006-11-16 14:30:26 -08:00
zorro
Kconfig
Makefile