lkml.org 
[lkml]   [2021]   [Jun]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH net] net: lantiq: disable interrupt before sheduling NAPI
    From
    Date
    On 6/8/21 11:21 PM, Aleksander Jan Bajkowski wrote:
    > This patch fixes TX hangs with threaded NAPI enabled. The scheduled
    > NAPI seems to be executed in parallel with the interrupt on second
    > thread. Sometimes it happens that ltq_dma_disable_irq() is executed
    > after xrx200_tx_housekeeping(). The symptom is that TX interrupts
    > are disabled in the DMA controller. As a result, the TX hangs after
    > a few seconds of the iperf test. Scheduling NAPI after disabling
    > interrupts fixes this issue.
    >
    > Tested on Lantiq xRX200 (BT Home Hub 5A).
    >
    > Fixes: 9423361da523 ("net: lantiq: Disable IRQs only if NAPI gets scheduled ")
    > Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>

    Acked-by: Hauke Mehrtens <hauke@hauke-m.de>

    > ---
    > drivers/net/ethernet/lantiq_xrx200.c | 2 +-
    > 1 file changed, 1 insertion(+), 1 deletion(-)
    >
    > diff --git a/drivers/net/ethernet/lantiq_xrx200.c b/drivers/net/ethernet/lantiq_xrx200.c
    > index 36dc3e5f6218..0e10d8aeffe1 100644
    > --- a/drivers/net/ethernet/lantiq_xrx200.c
    > +++ b/drivers/net/ethernet/lantiq_xrx200.c
    > @@ -352,8 +352,8 @@ static irqreturn_t xrx200_dma_irq(int irq, void *ptr)
    > struct xrx200_chan *ch = ptr;
    >
    > if (napi_schedule_prep(&ch->napi)) {
    > - __napi_schedule(&ch->napi);
    > ltq_dma_disable_irq(&ch->dma);
    > + __napi_schedule(&ch->napi);
    > }
    >
    > ltq_dma_ack_irq(&ch->dma);
    >

    \
     
     \ /
      Last update: 2021-06-08 23:34    [W:2.198 / U:0.116 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site