Message ID | 1271438702.30561.122.camel@emiko |
---|---|
State | Accepted |
Delegated to: | Andy Whitcroft |
Headers | show |
On Fri, Apr 16, 2010 at 10:25:02AM -0700, Leann Ogasawara wrote: > >From 840aaea048c018cae6211588292d228d186fa2ab Mon Sep 17 00:00:00 2001 > From: Bernd Porr <BerndPorr@f2s.com> > Date: Mon, 16 Nov 2009 01:12:02 +0000 > Subject: [PATCH 1/3] Staging: comedi: fix usbdux timeout bug > > BugLink: http://bugs.launchpad.net/bugs/483343 > > I've fixed a bug in the USBDUX driver which caused timeouts while > sending commands to the boards. This was mainly because of one bulk > transfer which had a timeout of 1ms (!). I've now set all timeouts to > 1000ms. > > From: Bernd Porr <BerndPorr@f2s.com> > Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> > > (cherry picked from commit ea25371a78c33e276527361d3ab19393d558b2fd upstream) > > Signed-off-by: Leann Ogasawara <leann.ogasawara@canonical.com> > --- > drivers/staging/comedi/drivers/usbdux.c | 17 +++++++++-------- > 1 files changed, 9 insertions(+), 8 deletions(-) > > diff --git a/drivers/staging/comedi/drivers/usbdux.c b/drivers/staging/comedi/drivers/usbdux.c > index cca4e86..a4a65b0 100644 > --- a/drivers/staging/comedi/drivers/usbdux.c > +++ b/drivers/staging/comedi/drivers/usbdux.c > @@ -1,4 +1,4 @@ > -#define DRIVER_VERSION "v2.2" > +#define DRIVER_VERSION "v2.3" > #define DRIVER_AUTHOR "Bernd Porr, BerndPorr@f2s.com" > #define DRIVER_DESC "Stirling/ITL USB-DUX -- Bernd.Porr@f2s.com" > /* > @@ -80,6 +80,7 @@ sampling rate. If you sample two channels you get 4kHz and so on. > * 2.0: PWM seems to be stable and is not interfering with the other functions > * 2.1: changed PWM API > * 2.2: added firmware kernel request to fix an udev problem > + * 2.3: corrected a bug in bulk timeouts which were far too short > * > */ > > @@ -101,8 +102,8 @@ sampling rate. If you sample two channels you get 4kHz and so on. > > #define BOARDNAME "usbdux" > > -/* timeout for the USB-transfer */ > -#define EZTIMEOUT 30 > +/* timeout for the USB-transfer in ms*/ > +#define BULK_TIMEOUT 1000 > > /* constants for "firmware" upload and download */ > #define USBDUXSUB_FIRMWARE 0xA0 > @@ -750,7 +751,7 @@ static int usbduxsub_start(struct usbduxsub *usbduxsub) > /* Length */ > 1, > /* Timeout */ > - EZTIMEOUT); > + BULK_TIMEOUT); > if (errcode < 0) { > dev_err(&usbduxsub->interface->dev, > "comedi_: control msg failed (start)\n"); > @@ -780,7 +781,7 @@ static int usbduxsub_stop(struct usbduxsub *usbduxsub) > /* Length */ > 1, > /* Timeout */ > - EZTIMEOUT); > + BULK_TIMEOUT); > if (errcode < 0) { > dev_err(&usbduxsub->interface->dev, > "comedi_: control msg failed (stop)\n"); > @@ -810,7 +811,7 @@ static int usbduxsub_upload(struct usbduxsub *usbduxsub, > /* length */ > len, > /* timeout */ > - EZTIMEOUT); > + BULK_TIMEOUT); > dev_dbg(&usbduxsub->interface->dev, "comedi_: result=%d\n", errcode); > if (errcode < 0) { > dev_err(&usbduxsub->interface->dev, "comedi_: upload failed\n"); > @@ -1110,7 +1111,7 @@ static int send_dux_commands(struct usbduxsub *this_usbduxsub, int cmd_type) > usb_sndbulkpipe(this_usbduxsub->usbdev, > COMMAND_OUT_EP), > this_usbduxsub->dux_commands, SIZEOFDUXBUFFER, > - &nsent, 10); > + &nsent, BULK_TIMEOUT); > if (result < 0) > dev_err(&this_usbduxsub->interface->dev, "comedi%d: " > "could not transmit dux_command to the usb-device, " > @@ -1130,7 +1131,7 @@ static int receive_dux_commands(struct usbduxsub *this_usbduxsub, int command) > usb_rcvbulkpipe(this_usbduxsub->usbdev, > COMMAND_IN_EP), > this_usbduxsub->insnBuffer, SIZEINSNBUF, > - &nrec, 1); > + &nrec, BULK_TIMEOUT); > if (result < 0) { > dev_err(&this_usbduxsub->interface->dev, "comedi%d: " > "insn: USB error %d while receiving DUX command" > -- Looks possible. Acked-by: Andy Whitcroft <apw@canonical.com> -apw
On Fri, 2010-04-16 at 10:25 -0700, Leann Ogasawara wrote: > >From 840aaea048c018cae6211588292d228d186fa2ab Mon Sep 17 00:00:00 2001 > From: Bernd Porr <BerndPorr@f2s.com> > Date: Mon, 16 Nov 2009 01:12:02 +0000 > Subject: [PATCH 1/3] Staging: comedi: fix usbdux timeout bug > > BugLink: http://bugs.launchpad.net/bugs/483343 > > I've fixed a bug in the USBDUX driver which caused timeouts while > sending commands to the boards. This was mainly because of one bulk > transfer which had a timeout of 1ms (!). I've now set all timeouts to > 1000ms. > > From: Bernd Porr <BerndPorr@f2s.com> > Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> > > (cherry picked from commit ea25371a78c33e276527361d3ab19393d558b2fd upstream) > > Signed-off-by: Leann Ogasawara <leann.ogasawara@canonical.com> > --- > drivers/staging/comedi/drivers/usbdux.c | 17 +++++++++-------- > 1 files changed, 9 insertions(+), 8 deletions(-) > > diff --git a/drivers/staging/comedi/drivers/usbdux.c b/drivers/staging/comedi/drivers/usbdux.c > index cca4e86..a4a65b0 100644 > --- a/drivers/staging/comedi/drivers/usbdux.c > +++ b/drivers/staging/comedi/drivers/usbdux.c > @@ -1,4 +1,4 @@ > -#define DRIVER_VERSION "v2.2" > +#define DRIVER_VERSION "v2.3" > #define DRIVER_AUTHOR "Bernd Porr, BerndPorr@f2s.com" > #define DRIVER_DESC "Stirling/ITL USB-DUX -- Bernd.Porr@f2s.com" > /* > @@ -80,6 +80,7 @@ sampling rate. If you sample two channels you get 4kHz and so on. > * 2.0: PWM seems to be stable and is not interfering with the other functions > * 2.1: changed PWM API > * 2.2: added firmware kernel request to fix an udev problem > + * 2.3: corrected a bug in bulk timeouts which were far too short > * > */ > > @@ -101,8 +102,8 @@ sampling rate. If you sample two channels you get 4kHz and so on. > > #define BOARDNAME "usbdux" > > -/* timeout for the USB-transfer */ > -#define EZTIMEOUT 30 > +/* timeout for the USB-transfer in ms*/ > +#define BULK_TIMEOUT 1000 > > /* constants for "firmware" upload and download */ > #define USBDUXSUB_FIRMWARE 0xA0 > @@ -750,7 +751,7 @@ static int usbduxsub_start(struct usbduxsub *usbduxsub) > /* Length */ > 1, > /* Timeout */ > - EZTIMEOUT); > + BULK_TIMEOUT); > if (errcode < 0) { > dev_err(&usbduxsub->interface->dev, > "comedi_: control msg failed (start)\n"); > @@ -780,7 +781,7 @@ static int usbduxsub_stop(struct usbduxsub *usbduxsub) > /* Length */ > 1, > /* Timeout */ > - EZTIMEOUT); > + BULK_TIMEOUT); > if (errcode < 0) { > dev_err(&usbduxsub->interface->dev, > "comedi_: control msg failed (stop)\n"); > @@ -810,7 +811,7 @@ static int usbduxsub_upload(struct usbduxsub *usbduxsub, > /* length */ > len, > /* timeout */ > - EZTIMEOUT); > + BULK_TIMEOUT); > dev_dbg(&usbduxsub->interface->dev, "comedi_: result=%d\n", errcode); > if (errcode < 0) { > dev_err(&usbduxsub->interface->dev, "comedi_: upload failed\n"); > @@ -1110,7 +1111,7 @@ static int send_dux_commands(struct usbduxsub *this_usbduxsub, int cmd_type) > usb_sndbulkpipe(this_usbduxsub->usbdev, > COMMAND_OUT_EP), > this_usbduxsub->dux_commands, SIZEOFDUXBUFFER, > - &nsent, 10); > + &nsent, BULK_TIMEOUT); > if (result < 0) > dev_err(&this_usbduxsub->interface->dev, "comedi%d: " > "could not transmit dux_command to the usb-device, " > @@ -1130,7 +1131,7 @@ static int receive_dux_commands(struct usbduxsub *this_usbduxsub, int command) > usb_rcvbulkpipe(this_usbduxsub->usbdev, > COMMAND_IN_EP), > this_usbduxsub->insnBuffer, SIZEINSNBUF, > - &nrec, 1); > + &nrec, BULK_TIMEOUT); > if (result < 0) { > dev_err(&this_usbduxsub->interface->dev, "comedi%d: " > "insn: USB error %d while receiving DUX command" > -- > 1.7.0 > Basically increases timeouts - looks sane. Acked-by: Colin King <colin.king@canonical.com>
diff --git a/drivers/staging/comedi/drivers/usbdux.c b/drivers/staging/comedi/drivers/usbdux.c index cca4e86..a4a65b0 100644 --- a/drivers/staging/comedi/drivers/usbdux.c +++ b/drivers/staging/comedi/drivers/usbdux.c @@ -1,4 +1,4 @@ -#define DRIVER_VERSION "v2.2" +#define DRIVER_VERSION "v2.3" #define DRIVER_AUTHOR "Bernd Porr, BerndPorr@f2s.com" #define DRIVER_DESC "Stirling/ITL USB-DUX -- Bernd.Porr@f2s.com" /* @@ -80,6 +80,7 @@ sampling rate. If you sample two channels you get 4kHz and so on. * 2.0: PWM seems to be stable and is not interfering with the other functions * 2.1: changed PWM API * 2.2: added firmware kernel request to fix an udev problem + * 2.3: corrected a bug in bulk timeouts which were far too short * */ @@ -101,8 +102,8 @@ sampling rate. If you sample two channels you get 4kHz and so on. #define BOARDNAME "usbdux" -/* timeout for the USB-transfer */ -#define EZTIMEOUT 30 +/* timeout for the USB-transfer in ms*/ +#define BULK_TIMEOUT 1000 /* constants for "firmware" upload and download */ #define USBDUXSUB_FIRMWARE 0xA0 @@ -750,7 +751,7 @@ static int usbduxsub_start(struct usbduxsub *usbduxsub) /* Length */ 1, /* Timeout */ - EZTIMEOUT); + BULK_TIMEOUT); if (errcode < 0) { dev_err(&usbduxsub->interface->dev, "comedi_: control msg failed (start)\n"); @@ -780,7 +781,7 @@ static int usbduxsub_stop(struct usbduxsub *usbduxsub) /* Length */ 1, /* Timeout */ - EZTIMEOUT); + BULK_TIMEOUT); if (errcode < 0) { dev_err(&usbduxsub->interface->dev, "comedi_: control msg failed (stop)\n"); @@ -810,7 +811,7 @@ static int usbduxsub_upload(struct usbduxsub *usbduxsub, /* length */ len, /* timeout */ - EZTIMEOUT); + BULK_TIMEOUT); dev_dbg(&usbduxsub->interface->dev, "comedi_: result=%d\n", errcode); if (errcode < 0) { dev_err(&usbduxsub->interface->dev, "comedi_: upload failed\n"); @@ -1110,7 +1111,7 @@ static int send_dux_commands(struct usbduxsub *this_usbduxsub, int cmd_type) usb_sndbulkpipe(this_usbduxsub->usbdev, COMMAND_OUT_EP), this_usbduxsub->dux_commands, SIZEOFDUXBUFFER, - &nsent, 10); + &nsent, BULK_TIMEOUT); if (result < 0) dev_err(&this_usbduxsub->interface->dev, "comedi%d: " "could not transmit dux_command to the usb-device, " @@ -1130,7 +1131,7 @@ static int receive_dux_commands(struct usbduxsub *this_usbduxsub, int command) usb_rcvbulkpipe(this_usbduxsub->usbdev, COMMAND_IN_EP), this_usbduxsub->insnBuffer, SIZEINSNBUF, - &nrec, 1); + &nrec, BULK_TIMEOUT); if (result < 0) { dev_err(&this_usbduxsub->interface->dev, "comedi%d: " "insn: USB error %d while receiving DUX command"