lkml.org 
[lkml]   [2019]   [Jul]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.2 031/413] net: stmmac: Prevent missing interrupts when running NAPI
    Date
    [ Upstream commit a976ca79e23f13bff79c14e7266cea4a0ea51e67 ]

    When we trigger NAPI we are disabling interrupts but in case we receive
    or send a packet in the meantime, as interrupts are disabled, we will
    miss this event.

    Trigger both NAPI instances (RX and TX) when at least one event happens
    so that we don't miss any interrupts.

    Signed-off-by: Jose Abreu <joabreu@synopsys.com>
    Cc: Joao Pinto <jpinto@synopsys.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
    Cc: Alexandre Torgue <alexandre.torgue@st.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 3 +++
    1 file changed, 3 insertions(+)

    diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
    index 06358fe5b245..dbee9b0113e3 100644
    --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
    +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
    @@ -2048,6 +2048,9 @@ static int stmmac_napi_check(struct stmmac_priv *priv, u32 chan)
    &priv->xstats, chan);
    struct stmmac_channel *ch = &priv->channel[chan];

    + if (status)
    + status |= handle_rx | handle_tx;
    +
    if ((status & handle_rx) && (chan < priv->plat->rx_queues_to_use)) {
    stmmac_disable_dma_irq(priv, priv->ioaddr, chan);
    napi_schedule_irqoff(&ch->rx_napi);
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-07-24 23:09    [W:4.040 / U:0.512 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site