-struct usb_hub {
- struct usb_interface *intf; /* the "real" device */
- struct urb *urb; /* for interrupt polling pipe */
- struct completion *urb_complete; /* wait for urb to end */
- unsigned int urb_active:1;
-
- /* buffer for urb ... 1 bit each for hub and children, rounded up */
- char (*buffer)[(USB_MAXCHILDREN + 1 + 7) / 8];
- dma_addr_t buffer_dma; /* DMA address for buffer */
- union {
- struct usb_hub_status hub;
- struct usb_port_status port;
- } *status; /* buffer for status reports */
-
- int error; /* last reported error */
- int nerrors; /* track consecutive errors */
-
- struct list_head hub_list; /* all hubs */
- struct list_head event_list; /* hubs w/data or errs ready */
-
- struct usb_hub_descriptor *descriptor; /* class descriptor */
- struct semaphore khubd_sem;
- struct usb_tt tt; /* Transaction Translator */
-
- unsigned has_indicators:1;
- enum hub_led_mode indicator[USB_MAXCHILDREN];
- struct work_struct leds;
-};
-