[PATCH linux dev-4.10 v3 06/31] drivers: fsi: sbefifo: remove redundant function

Andrew Jeffery andrew at aj.id.au
Fri Oct 6 13:04:32 AEDT 2017


On Thu, 2017-10-05 at 21:03 -0500, Eddie James wrote:
> 
> On 10/05/2017 04:48 PM, Andrew Jeffery wrote:
> > On Thu, 2017-10-05 at 14:23 -0500, Eddie James wrote:
> > > > > > From: "Edward A. James" <eajames at us.ibm.com>
> > >   
> > > sbefifo_client_next_xfr function just does what list_first_entry_or_null
> > > does.
> > 
> > Any reason you didn't implement sbefifo_client_next_xfr() in terms of
> > list_first_entry_or_null() rather than open-code it?
> 
> I prefer simplicity of using the kernel helper. With a custom function, 
> it's not clear if it's doing some additional work unless you go look at 
> it. With the list function, it's clear it's just returning the top entry.

Sure. I'm not terribly fussed either way, was just interested.

Reviewed-by: Andrew Jeffery <andrew at aj.id.au>

> 
> Thanks for the review!
> Eddie
> 
> > 
> > >   
> > > > > > Signed-off-by: Edward A. James <eajames at us.ibm.com>
> > > ---
> > >   drivers/fsi/fsi-sbefifo.c | 28 +++++++++++++++-------------
> > >   1 file changed, 15 insertions(+), 13 deletions(-)
> > >   
> > > diff --git a/drivers/fsi/fsi-sbefifo.c b/drivers/fsi/fsi-sbefifo.c
> > > index dbac0c3..173cd03 100644
> > > --- a/drivers/fsi/fsi-sbefifo.c
> > > +++ b/drivers/fsi/fsi-sbefifo.c
> > > @@ -279,20 +279,12 @@ static struct sbefifo_xfr *sbefifo_enq_xfr(struct sbefifo_client *client)
> > > > > >   	return xfr;
> > >   }
> > >   
> > > -static struct sbefifo_xfr *sbefifo_client_next_xfr(
> > > > > > -		struct sbefifo_client *client)
> > > -{
> > > > > > -	if (list_empty(&client->xfrs))
> > > > > > -		return NULL;
> > > -
> > > > > > -	return container_of(client->xfrs.next, struct sbefifo_xfr, client);
> > > -}
> > > -
> > >   static bool sbefifo_xfr_rsp_pending(struct sbefifo_client *client)
> > >   {
> > > > > > -	struct sbefifo_xfr *xfr;
> > > > > > +	struct sbefifo_xfr *xfr = list_first_entry_or_null(&client->xfrs,
> > > > > > +							   struct sbefifo_xfr,
> > > > > > +							   client);
> > >   
> > > > > > -	xfr = sbefifo_client_next_xfr(client);
> > > > > >   	if (xfr && test_bit(SBEFIFO_XFR_RESP_PENDING, &xfr->flags))
> > > > > >   		return true;
> > >   
> > > @@ -595,7 +587,15 @@ static ssize_t sbefifo_read_common(struct sbefifo_client *client,
> > > > > >   	}
> > >   
> > > > > >   	if (sbefifo_buf_readnb(&client->rbuf, n)) {
> > > > > > -		xfr = sbefifo_client_next_xfr(client);
> > > > > > +		xfr = list_first_entry_or_null(&client->xfrs,
> > > > > > +					       struct sbefifo_xfr, client);
> > > > > > +		if (!xfr) {
> > > > > > +			/* should be impossible to not have an xfr here */
> > > > > > +			WARN_ONCE(1, "no xfr in queue");
> > > > > > +			sbefifo_put_client(client);
> > > > > > +			return -EPROTO;
> > > > > > +		}
> > > +
> > > > > >   		if (!test_bit(SBEFIFO_XFR_COMPLETE, &xfr->flags)) {
> > > > > >   			/*
> > > > > >   			 * Fill the read buffer back up.
> > > @@ -632,7 +632,9 @@ static bool sbefifo_write_ready(struct sbefifo *sbefifo,
> > > > > >   				struct sbefifo_xfr *xfr,
> > > > > >   				struct sbefifo_client *client, size_t *n)
> > >   {
> > > > > > -	struct sbefifo_xfr *next = sbefifo_client_next_xfr(client);
> > > > > > +	struct sbefifo_xfr *next = list_first_entry_or_null(&client->xfrs,
> > > > > > +							    struct sbefifo_xfr,
> > > > > > +							    client);
> > >   
> > > > > >   	*n = sbefifo_buf_nbwriteable(&client->wbuf);
> > >   	return READ_ONCE(sbefifo->rc) || (next == xfr && *n);
> 
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: This is a digitally signed message part
URL: <http://lists.ozlabs.org/pipermail/openbmc/attachments/20171006/ce688280/attachment.sig>


More information about the openbmc mailing list