summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorAlan Stern <stern@rowland.harvard.edu>2006-11-22 22:55:54 +0100
committerGreg Kroah-Hartman <gregkh@suse.de>2006-12-01 23:25:52 +0100
commitee49fb5dc89d34f1794ac9362fa97c1a640f7ddd (patch)
tree310d11b695b631c091c9f442d566400ba9a86de9 /include
parentUSB hub: simplify remote-wakeup handling (diff)
downloadlinux-ee49fb5dc89d34f1794ac9362fa97c1a640f7ddd.tar.xz
linux-ee49fb5dc89d34f1794ac9362fa97c1a640f7ddd.zip
USB: keep count of unsuspended children
This patch (as818b) simplifies autosuspend processing by keeping track of the number of unsuspended children of each USB hub. This will permit us to avoid a good deal of unnecessary work all the time; we will no longer have to create a bunch of workqueue entries to carry out autosuspend requests, only to have them fail because one of the hub's children isn't suspended. The basic idea is simple. There already is a usage counter in the usb_device structure for preventing autosuspends. The patch just increments that counter for every unsuspended child. There's only one tricky part: When a device disconnects we need to remember whether it was suspended at the time (leave the counter alone) or not (decrement the counter). Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'include')
-rw-r--r--include/linux/usb.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/usb.h b/include/linux/usb.h
index 5634a2d91ec0..0cd73edeef13 100644
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
@@ -362,6 +362,7 @@ struct usb_device {
u8 portnum; /* Parent port number (origin 1) */
u8 level; /* Number of USB hub ancestors */
+ unsigned discon_suspended:1; /* Disconnected while suspended */
unsigned have_langid:1; /* whether string_langid is valid */
int string_langid; /* language ID for strings */