Răsfoiți Sursa

staging: rtl8712: Improve suspend/resume functionality.

Fix a driver hang caused by earlier suspend/resume cycles. By handling a
ENODEV error during suspend as a real error we eventually end up stopping
the whole driver.

Fix this by handling the ENODEV error (during suspend) essentially by
retrying.

Signed-off-by: Hemmo Nieminen <hemmo.nieminen@iki.fi>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Hemmo Nieminen 9 ani în urmă
părinte
comite
b900d57937
1 a modificat fișierele cu 6 adăugiri și 4 ștergeri
  1. 6 4
      drivers/staging/rtl8712/usb_ops_linux.c

+ 6 - 4
drivers/staging/rtl8712/usb_ops_linux.c

@@ -228,16 +228,18 @@ static void r8712_usb_read_port_complete(struct urb *purb)
 		}
 	} else {
 		switch (purb->status) {
-		case -ENOENT:
-			if (padapter->bSuspended)
-				break;
-			/* Fall through. */
 		case -EINVAL:
 		case -EPIPE:
 		case -ENODEV:
 		case -ESHUTDOWN:
 			padapter->bDriverStopped = true;
 			break;
+		case -ENOENT:
+			if (!padapter->bSuspended) {
+				padapter->bDriverStopped = true;
+				break;
+			}
+			/* Fall through. */
 		case -EPROTO:
 			precvbuf->reuse = true;
 			r8712_read_port(padapter, precvpriv->ff_hwaddr, 0,