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

From: Simon Horman
Date: Thu Jun 15 2023 - 03:54:00 EST


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 <stefan.wahren@xxxxxxxxxxxxxx>
> > > 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);
> > >
> >