diff options
author | navin patidar <navinp@cdac.in> | 2012-09-06 16:49:50 +0530 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-09-06 09:31:54 -0700 |
commit | 107f04bbce331bf622b901ccec34a124e6b78584 (patch) | |
tree | f5f0edba40490e5ef2107957f48d2d832cf87fcb /drivers/staging | |
parent | 236742de5bfd2af772004ec829518856ff12b469 (diff) |
staging: usbip: vhci_hcd: fixed suspend-resume loop
USB autosuspend suspends vhci_hcd. In this process hcd_bus_suspend gets
executed which puts vhci_hcd in suspend state and calls vhci_hub_status.
vhci_hub_status function checks hub state and if it is in suspend state,
usb_hcd_resume_root_hub gets executed which resumes hub and if hub is
idle, again autosuspend puts it in suspend state and this goes on.
vhci_hub_status should resume hub only when hub port is in suspend state
and hub port status has changed.
Signed-off-by: navin patidar <navinp@cdac.in>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging')
-rw-r--r-- | drivers/staging/usbip/vhci_hcd.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/staging/usbip/vhci_hcd.c b/drivers/staging/usbip/vhci_hcd.c index fd2b21a6c20..bd79d1884c4 100644 --- a/drivers/staging/usbip/vhci_hcd.c +++ b/drivers/staging/usbip/vhci_hcd.c @@ -220,7 +220,7 @@ static int vhci_hub_status(struct usb_hcd *hcd, char *buf) pr_info("changed %d\n", changed); - if (hcd->state == HC_STATE_SUSPENDED) + if ((hcd->state == HC_STATE_SUSPENDED) && (changed == 1)) usb_hcd_resume_root_hub(hcd); done: |