Subject: Re: [PATCH net resend] net: qca_spi: Avoid high load if QCA7000 is not available

From: Simon Horman <[email-masked]>
Date: Thu, 15 Jun 2023 09:53:16 +0200

On Wed, Jun 14, 2023 at 10:40:57PM +0200, Stefan Wahren wrote:
> Hi Simon,
> 
> Am 14.06.23 um 18:58 schrieb Simon Horman:
> > On Wed, Jun 14, 2023 at 01:17:14PM +0200, Stefan Wahren wrote:
> > > In case the QCA7000 is not available via SPI (e.g. in reset),
> > > the driver will cause a high load. The reason for this is
> > > that the synchronization is never finished and schedule()
> > > is never called. Since the synchronization is not timing
> > > critical, it's safe to drop this from the scheduling condition.
> > > 
> > > Signed-off-by: Stefan Wahren <[email-masked]>
> > > Fixes: 291ab06ecf67 ("net: qualcomm: new Ethernet over SPI driver for
> > >   QCA7000")
> > 
> > Hi Stefan,
> > 
> > the Fixes should be on a single line.
> > 
> > Fixes: 291ab06ecf67 ("net: qualcomm: new Ethernet over SPI driver for QCA7000")
> 
> thanks for pointing out. Unfortunately this comes from the mail server,
> which line warp here. I will try to use a different account. Sorry about
> this mess :-(

Thanks Stefan,

I thought it might be something annoying like that.

I see v2 and it seems clean wrt the issues I've raised here :)

> 
> > 
> > > ---
> > >   drivers/net/ethernet/qualcomm/qca_spi.c | 3 +--
> > >   1 file changed, 1 insertion(+), 2 deletions(-)
> > > 
> > > diff --git a/drivers/net/ethernet/qualcomm/qca_spi.c
> > >   b/drivers/net/ethernet/qualcomm/qca_spi.c
> > 
> > Likewise, the above two lines should be a single line.
> > Unfortunately it seems that because it is not git doesn't apply
> > this patch, which creates problems for automation linked to patchwork.
> > 
> > I think it would be best to repost after resolving these minor issues.
> > 
> > > index bba1947792ea16..90f18ea4c28ba1 100644
> > > --- a/drivers/net/ethernet/qualcomm/qca_spi.c
> > > +++ b/drivers/net/ethernet/qualcomm/qca_spi.c
> > > @@ -582,8 +582,7 @@ qcaspi_spi_thread(void *data)
> > >   	while (!kthread_should_stop()) {
> > >   		set_current_state(TASK_INTERRUPTIBLE);
> > >   		if ((qca->intr_req == qca->intr_svc) &&
> > > -		    (qca->txr.skb[qca->txr.head] == NULL) &&
> > > -		    (qca->sync == QCASPI_SYNC_READY))
> > > +		    !qca->txr.skb[qca->txr.head])
> > >   			schedule();
> > >   		set_current_state(TASK_RUNNING);
> > > 
> >