Skip to content

Commit

Permalink
USB: don't lose disconnections during suspend
Browse files Browse the repository at this point in the history
This patch (as1111) fixes a bug in the hub driver.  When a hub
resumes, disconnections that occurred while the hub was suspended are
lost.

A completely different fix for this problem has already been accepted
for 2.6.27; however the problem still needs to be handled in 2.6.26.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Tested-by: Lukas Hejtmanek <xhejtman@ics.muni.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Alan Stern authored and Greg Kroah-Hartman committed Jul 4, 2008
1 parent de85422 commit 1236edf
Showing 1 changed file with 4 additions and 11 deletions.
15 changes: 4 additions & 11 deletions drivers/usb/core/hub.c
Original file line number Diff line number Diff line change
Expand Up @@ -713,18 +713,11 @@ static void hub_restart(struct usb_hub *hub, int type)
}

/* Was the power session lost while we were suspended? */
switch (type) {
case HUB_RESET_RESUME:
portstatus = 0;
portchange = USB_PORT_STAT_C_CONNECTION;
break;
status = hub_port_status(hub, port1, &portstatus, &portchange);

case HUB_RESET:
case HUB_RESUME:
status = hub_port_status(hub, port1,
&portstatus, &portchange);
break;
}
/* If the device is gone, khubd will handle it later */
if (status == 0 && !(portstatus & USB_PORT_STAT_CONNECTION))
continue;

/* For "USB_PERSIST"-enabled children we must
* mark the child device for reset-resume and
Expand Down

0 comments on commit 1236edf

Please sign in to comment.