Commit 43705251 authored by inaky@linux.intel.com's avatar inaky@linux.intel.com Committed by Greg Kroah-Hartman

usb/hub: allow hubs up to 31 children

Current Wireless USB host hardware (Intel i1480 for example) allows up
to 22 devices to connect, thus bringing up the max number of children
in the WUSB Host Controller to 22 'fake' ports. Upcoming hardware
might raise that limit.

Makes almost no difference to go to 31, as the bit arrays are
byte-aligned (plus an extra bit in general), so 22 bits fit in 4 bytes
as 31 do.

As well, the only other array that depends on USB_MAXCHILDREN is
'struct usb_hub->indicator'. By declaring it 'u8' instead of 'enum
hub_led_mode', we reduce the size of each entry from 4 bytes (in i386)
to 1, which will add as we when are doubling USB_MAXCHILDREN
(with 16 the size of that array is 64 bytes, with 31 would be 128; by
using u8 that goes down to 31 bytes).
Signed-off-by: default avatarInaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 0215ffb0
...@@ -229,7 +229,7 @@ struct usb_hub { ...@@ -229,7 +229,7 @@ struct usb_hub {
unsigned resume_root_hub:1; unsigned resume_root_hub:1;
unsigned has_indicators:1; unsigned has_indicators:1;
enum hub_led_mode indicator[USB_MAXCHILDREN]; u8 indicator[USB_MAXCHILDREN];
struct work_struct leds; struct work_struct leds;
}; };
......
...@@ -313,8 +313,13 @@ struct usb_bus { ...@@ -313,8 +313,13 @@ struct usb_bus {
/* This is arbitrary. /* This is arbitrary.
* From USB 2.0 spec Table 11-13, offset 7, a hub can * From USB 2.0 spec Table 11-13, offset 7, a hub can
* have up to 255 ports. The most yet reported is 10. * have up to 255 ports. The most yet reported is 10.
*
* Current Wireless USB host hardware (Intel i1480 for example) allows
* up to 22 devices to connect. Upcoming hardware might raise that
* limit. Because the arrays need to add a bit for hub status data, we
* do 31, so plus one evens out to four bytes.
*/ */
#define USB_MAXCHILDREN (16) #define USB_MAXCHILDREN (31)
struct usb_tt; struct usb_tt;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment