In am65_cpsw_nuss_rx_poll() there is a possibility that irq_disabled flag is cleared but the IRQ is not enabled. This patch fixes by that by clearing irq_disabled flag right when enabling the irq. Fixes: da70d184a8c3 ("net: ethernet: ti: am65-cpsw: Introduce multi queue Rx") Signed-off-by: Roger Quadros --- drivers/net/ethernet/ti/am65-cpsw-nuss.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/drivers/net/ethernet/ti/am65-cpsw-nuss.c b/drivers/net/ethernet/ti/am65-cpsw-nuss.c index 9d1048eea7e4734873676026906e07babf0345f5..c0f891a91d7471364bd4c8b7d82da9967f1753b8 100644 --- a/drivers/net/ethernet/ti/am65-cpsw-nuss.c +++ b/drivers/net/ethernet/ti/am65-cpsw-nuss.c @@ -1778,15 +1778,13 @@ static int am65_cpsw_nuss_rx_poll(struct napi_struct *napi_rx, int budget) dev_dbg(common->dev, "%s num_rx:%d %d\n", __func__, num_rx, budget); if (num_rx < budget && napi_complete_done(napi_rx, num_rx)) { - if (flow->irq_disabled) { + if (unlikely(flow->rx_pace_timeout)) { + hrtimer_start(&flow->rx_hrtimer, + ns_to_ktime(flow->rx_pace_timeout), + HRTIMER_MODE_REL_PINNED); + } else if (flow->irq_disabled) { flow->irq_disabled = false; - if (unlikely(flow->rx_pace_timeout)) { - hrtimer_start(&flow->rx_hrtimer, - ns_to_ktime(flow->rx_pace_timeout), - HRTIMER_MODE_REL_PINNED); - } else { - enable_irq(flow->irq); - } + enable_irq(flow->irq); } } -- 2.34.1