diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c index 2dadfa961898b..b43700587c881 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c @@ -895,13 +895,14 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget, rxd->rxd2 = RX_DMA_PLEN0(ring->buf_size); ring->calc_idx = idx; - /* make sure that all changes to the dma ring are flushed before - * we continue - */ - wmb(); - mtk_w32(eth, ring->calc_idx, MTK_PRX_CRX_IDX0); + done++; } + /* make sure that all changes to the dma ring are flushed before + * we continue + */ + wmb(); + mtk_w32(eth, ring->calc_idx, MTK_PRX_CRX_IDX0); if (done < budget) mtk_w32(eth, MTK_RX_DONE_INT, MTK_PDMA_INT_STATUS);