All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Fabio M. De Francesco" <fmdefrancesco@gmail.com>
To: Dan Carpenter <dan.carpenter@oracle.com>
Cc: Larry Finger <Larry.Finger@lwfinger.net>,
	Phillip Potter <phil@philpotter.co.uk>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org,
	Michael Straube <straube.linux@gmail.com>,
	Pavel Skripkin <paskripkin@gmail.com>
Subject: Re: [PATCH v4 17/18] staging: r8188eu: Shorten calls chain of rtw_read8/16/32()
Date: Tue, 14 Sep 2021 14:55:45 +0200	[thread overview]
Message-ID: <5747368.884CoaO9ss@localhost.localdomain> (raw)
In-Reply-To: <20210914093258.GC2088@kadam>

On Tuesday, September 14, 2021 11:32:58 AM CEST Dan Carpenter wrote:
> On Mon, Sep 13, 2021 at 08:10:01PM +0200, Fabio M. De Francesco wrote:
> > diff --git a/drivers/staging/r8188eu/hal/usb_ops_linux.c b/drivers/
staging/r8188eu/hal/usb_ops_linux.c
> > index 04402bab805e..75475b0083db 100644
> > --- a/drivers/staging/r8188eu/hal/usb_ops_linux.c
> > +++ b/drivers/staging/r8188eu/hal/usb_ops_linux.c
> > @@ -89,6 +89,56 @@ static int usbctrl_vendorreq(struct intf_hdl *intfhdl, 
u16 value, void *data, u1
> >  	return status;
> >  }
> >  
> > +static int usb_read(struct intf_hdl *intfhdl, u16 addr, void *data, u8 
size)
> > +{
> > +	int status;
> > +	u8 *io_buf; /* pointer to I/O buffer */
> > +	struct adapter *adapt = intfhdl->padapter;
> > +	struct dvobj_priv *dvobjpriv = adapter_to_dvobj(adapt);
> > +	struct usb_device *udev = dvobjpriv->pusbdev;
> > +
> > +	if (adapt->bSurpriseRemoved || adapt->pwrctrlpriv.pnp_bstop_trx) 
{
> > +		status = -EPERM;
> > +		goto exit;
> > +	}
> 
> Just return directly.
> 
> 	if (adapt->bSurpriseRemoved || adapt->pwrctrlpriv.pnp_bstop_trx)
> 		return -EPERM;

Dear Dan,

I agree with you, I'll return it directly in v5.

> > +
> > +	mutex_lock(&dvobjpriv->usb_vendor_req_mutex);
> > +
> > +	io_buf = dvobjpriv->usb_vendor_req_buf;
> > +
> > +	status = usb_control_msg_recv(udev, 0, REALTEK_USB_VENQT_CMD_REQ,
> > +				      REALTEK_USB_VENQT_READ, 
addr,
> > +				      REALTEK_USB_VENQT_CMD_IDX, 
io_buf,
> > +				      size, 
RTW_USB_CONTROL_MSG_TIMEOUT,
> > +				      GFP_KERNEL);
> > +	if (!status) {
> > +		/*  Success this control transfer. */
> 
> It's always better to do error handling instead of success handling.

Yes, you're right again. I blindly followed the style that was in the parts 
of the code of usbctrl_vendorreq() that I'm reusing here.
 
> 	if (status) {
> 
> Remove the comment because now it's in the standard format.

OK, those comments are not necessary: I'll remove them.

> > +		rtw_reset_continual_urb_error(dvobjpriv);
> > +		memcpy(data, io_buf, size);
> > +		goto mutex_unlock;
> > +	}
> > +	/*  error cases */
> > +	if (status == (-ESHUTDOWN || -ENODEV || -ENOENT)) {
> 
> 	if (status == -ESHUTDOWN ||
> 	    status == -ENODEV ||
> 	    status == -ENOENT) {

This is a stupid mistake and Pavel soon noticed it. Yesterday I sent a 
message to ask reviewers for disregarding v4 and wait for v5 with the fix of 
this test. :(

However, I noticed that usb_control_msg_recv() might return in "status" some 
recoverable errors (like -ENOMEM and others); so I guess that the code must 
retry in a while loop (exactly as it did with usb_control_msg() in 
usbctrl_vendorreq()). 

Actually I'm not 100% sure that the "while" loop is needed. What I know is 
that I've been using this version (with _no_ loop) for about a week, not less 
than 12 hours a day and I didn't notice any problem...

Can you please tell if a loop for retries is *really* necessary?

> 
> > +		/*
> > +		 * device or controller has been disabled due to
> > +		 * some problem that could not be worked around,
> > +		 * device or bus doesn’t exist, endpoint does not
> > +		 * exist or is not enabled.
> > +		 */
> > +		adapt->bSurpriseRemoved = true;
> > +			goto mutex_unlock;
> 
> Indented wrong.

Yes, it must be fixed.

Regards,

Fabio

> 
> > +	}
> > +	GET_HAL_DATA(adapt)->srestpriv.wifi_error_status = 
USB_VEN_REQ_CMD_FAIL;
> > +	if (rtw_inc_and_chk_continual_urb_error(dvobjpriv)) {
> > +		adapt->bSurpriseRemoved = true;
> > +		goto mutex_unlock;
> > +	}
> > +mutex_unlock:
> > +	mutex_unlock(&dvobjpriv->usb_vendor_req_mutex);
> > +exit:
> > +	return status;
> > +}
> 
> regards,
> dan carpenter
>



  reply	other threads:[~2021-09-14 12:55 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-13 18:09 [PATCH v4 00/18] staging: r8188eu: Shorten and simplify calls chain Fabio M. De Francesco
2021-09-13 18:09 ` [PATCH v4 01/18] staging: r8188eu: remove usb_{read,write}_mem Fabio M. De Francesco
2021-09-13 18:09 ` [PATCH v4 02/18] staging: r8188eu: remove the helpers of rtw_read8() Fabio M. De Francesco
2021-09-13 18:09 ` [PATCH v4 03/18] staging: r8188eu: remove the helpers of rtw_read16() Fabio M. De Francesco
2021-09-13 18:09 ` [PATCH v4 04/18] staging: r8188eu: remove the helpers of rtw_read32() Fabio M. De Francesco
2021-09-13 18:09 ` [PATCH v4 05/18] staging: r8188eu: remove the helpers of usb_write8 Fabio M. De Francesco
2021-09-13 18:09 ` [PATCH v4 06/18] staging: r8188eu: remove the helpers of usb_write16() Fabio M. De Francesco
2021-09-13 18:09 ` [PATCH v4 07/18] staging: r8188eu: remove the helpers of usb_write32() Fabio M. De Francesco
2021-09-13 18:09 ` [PATCH v4 08/18] staging: r8188eu: remove the helpers of usb_writeN() Fabio M. De Francesco
2021-09-13 18:09 ` [PATCH v4 09/18] staging: r8188eu: remove the helpers of rtw_read_port() Fabio M. De Francesco
2021-09-13 18:09 ` [PATCH v4 10/18] staging: r8188eu: remove the helpers of rtw_write_port() Fabio M. De Francesco
2021-09-13 18:09 ` [PATCH v4 11/18] staging: r8188eu: remove the helpers of usb_read_port_cancel() Fabio M. De Francesco
2021-09-13 18:09 ` [PATCH v4 12/18] staging: r8188eu: remove the helpers of rtw_write_port_cancel() Fabio M. De Francesco
2021-09-13 18:09 ` [PATCH v4 13/18] staging: r8188eu: remove core/rtw_io.c Fabio M. De Francesco
2021-09-13 18:09 ` [PATCH v4 14/18] staging: remove struct _io_ops Fabio M. De Francesco
2021-09-13 18:09 ` [PATCH v4 15/18] staging: r8188eu: hal: Clean up usbctrl_vendorreq() Fabio M. De Francesco
2021-09-14  9:24   ` Dan Carpenter
2021-09-14 11:18     ` Fabio M. De Francesco
2021-09-14 12:20       ` Dan Carpenter
2021-09-14 13:24     ` Fabio M. De Francesco
2021-09-14 13:30       ` Dan Carpenter
2021-09-14 14:05         ` Fabio M. De Francesco
2021-09-13 18:10 ` [PATCH v4 16/18] staging: r8188eu: hal: Clean up rtw_read*() and rtw_write*() Fabio M. De Francesco
2021-09-14 14:33   ` David Laight
2021-09-13 18:10 ` [PATCH v4 17/18] staging: r8188eu: Shorten calls chain of rtw_read8/16/32() Fabio M. De Francesco
2021-09-13 20:19   ` Pavel Skripkin
2021-09-14  9:32   ` Dan Carpenter
2021-09-14 12:55     ` Fabio M. De Francesco [this message]
2021-09-14 13:01       ` Dan Carpenter
2021-09-13 18:10 ` [PATCH v4 18/18] staging: r8188eu: Shorten calls chain of rtw_write8/16/32/N() Fabio M. De Francesco
2021-09-13 20:35 ` [PATCH v4 00/18] staging: r8188eu: Shorten and simplify calls chain Fabio M. De Francesco

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5747368.884CoaO9ss@localhost.localdomain \
    --to=fmdefrancesco@gmail.com \
    --cc=Larry.Finger@lwfinger.net \
    --cc=dan.carpenter@oracle.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-staging@lists.linux.dev \
    --cc=paskripkin@gmail.com \
    --cc=phil@philpotter.co.uk \
    --cc=straube.linux@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.