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>
This commit is contained in:
Родитель
236742de5b
Коммит
107f04bbce
|
@ -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:
|
||||
|
|
Загрузка…
Ссылка в новой задаче