Re: [PATCH v5 5/5] Add ioctls to enable and disable local controls on an instrument

Dave Penkler
2015-11-22T08:52:08Z

On Wed, Nov 18, 2015 at 11:41:30AM +0200, Andy Shevchenko wrote:
> On Wed, Nov 18, 2015 at 10:38 AM, Dave Penkler <dpenkler@gmail.com> wrote:
> > These ioctls provide support for the USBTMC-USB488 control requests
> > for REN_CONTROL, GO_TO_LOCAL and LOCAL_LOCKOUT
>
> Couple of comments below.
>
> > diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c
> > index 2358991..d416a5f 100644
> > --- a/drivers/usb/class/usbtmc.c
> > +++ b/drivers/usb/class/usbtmc.c
> > @@ -476,6 +476,62 @@ static int usbtmc488_ioctl_read_stb(struct usbtmc_device_data *data,

snip

>
> > + if (rv < 0) {
> > + dev_err(dev, "simple usb_control_msg failed %d\n", rv);
> > + goto exit;
> > + } else if (rv != 1) {
> > + dev_warn(dev, "simple usb_control_msg returned %d\n", rv);
>
> Actually here what king of results could be? 0? 2+? In all cases of
> error you have to provide an error code.
>

We seem to be going round in circles here, last time you suggested to
propagate the return value. The non-negative return is the number of bytes
transferred which should be 1 unless there is some usb implementation
flakiness happening. So I will go back to returning -EIO.

> > + goto exit;
> > + }
> > +
> > + if (buffer[0] != USBTMC_STATUS_SUCCESS) {
> > + dev_err(dev, "simple control status returned %x\n", buffer[0]);
> > + rv = -EIO;
> > + goto exit;
> > + }
> > + rv = 0;
> > +
> > + exit:
> > + kfree(buffer);
> > + return rv;
> > +}
> > +
>
> --
> With Best Regards,
> Andy Shevchenko
cheers,
-Dave