From 4274d84ce801b763615152b276e2a341a30c3a82 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jean-Fran=C3=A7ois=20Moine?= Date: Wed, 10 Aug 2011 07:40:47 -0300 Subject: [PATCH] [media] gspca - main: Handle the xHCI error on usb_set_interface() MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This patch is adapted from a patch from Sarah Sharp (2010/05/03). The xHCD handler checks the USB bandwidth on usb_set_interface() instead of on usb_submit_urb(). Now, the same treatment is applied in case of error of both functions. Signed-off-by: Jean-François Moine Signed-off-by: Mauro Carvalho Chehab --- drivers/media/video/gspca/gspca.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/media/video/gspca/gspca.c b/drivers/media/video/gspca/gspca.c index ee9544894e8b..e41dfe254803 100644 --- a/drivers/media/video/gspca/gspca.c +++ b/drivers/media/video/gspca/gspca.c @@ -887,6 +887,8 @@ static int gspca_init_transfer(struct gspca_dev *gspca_dev) gspca_dev->iface, alt); if (ret < 0) { + if (ret == -ENOSPC) + goto retry; /*fixme: ugly*/ pr_err("set alt %d err %d\n", alt, ret); goto out; } @@ -942,6 +944,7 @@ static int gspca_init_transfer(struct gspca_dev *gspca_dev) /* the bandwidth is not wide enough * negotiate or try a lower alternate setting */ +retry: PDEBUG(D_ERR|D_STREAM, "alt %d - bandwidth not wide enough - trying again", alt); -- 2.34.1