Re: [PATCH 01/11] usb: phy: return error on failure

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, May 27, 2015 at 12:31:28AM +0000, Kaukab, Yousaf wrote:
> > -----Original Message-----
> > From: Felipe Balbi [mailto:balbi@xxxxxx]
> > Sent: Tuesday, May 26, 2015 11:17 PM
> > To: Kaukab, Yousaf
> > Cc: linux-usb@xxxxxxxxxxxxxxx; balbi@xxxxxx
> > Subject: Re: [PATCH 01/11] usb: phy: return error on failure
> > 
> > On Tue, May 05, 2015 at 04:14:35PM +0200, Mian Yousaf Kaukab wrote:
> > > If the requested phy operation can't be done, return error instead of
> > > success to let the caller know.
> > >
> > > Signed-off-by: Mian Yousaf Kaukab <yousaf.kaukab@xxxxxxxxx>
> > > ---
> > >  include/linux/usb/phy.h | 10 +++++-----
> > >  1 file changed, 5 insertions(+), 5 deletions(-)
> > >
> > > diff --git a/include/linux/usb/phy.h b/include/linux/usb/phy.h index
> > > bc91b5d..d2b03db 100644
> > > --- a/include/linux/usb/phy.h
> > > +++ b/include/linux/usb/phy.h
> > > @@ -262,7 +262,7 @@ usb_phy_set_power(struct usb_phy *x, unsigned mA)
> > > {
> > >  	if (x && x->set_power)
> > >  		return x->set_power(x, mA);
> > > -	return 0;
> > > +	return -EOPNOTSUPP;
> > 
> > the idea is that these operations are actually optional, so it's ok to return 0.
> 
> Caller can ignore the error if its optional for it. There are others

ok, I have to spell it out.

It's not optional for the *caller*, it's optional for the PHY driver to
implement it.

> who have put the similar validity checks  before usb phy api calls
> because they want to return error in case the call fails. We can
> remove such checks by returning the error here.

no... what we're doing here is:

if the phy driver implements this call, then let's call that callback
and pass along any error it might return, otherwise we just return
success because that means this phy doesn't really implement this call.

This is done is many other subsystems where some function pointers might
be optional to be implemented. Just think about the error handling. When
we return 0:

ret = usb_phy_set_power(x, 100);
if (ret < 0)
	bail();

/* continue */

if we return EOPNOTSUPP:

ret = usb_phy_set_power(x, 100);
if (ret < 0 && ret != -EOPNOTSUPP)
	bail();

/* continue */

cheers

-- 
balbi

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux