--- a/drivers/net/can/c_can/c_can.c
+++ b/drivers/net/can/c_can/c_can.c
-@@ -1070,7 +1070,7 @@ static int c_can_poll(struct napi_struct
+@@ -1105,7 +1105,7 @@ static int c_can_poll(struct napi_struct
end:
if (work_done < quota) {
flexcan_write(priv->reg_ctrl_default, ®s->ctrl);
--- a/drivers/net/can/ifi_canfd/ifi_canfd.c
+++ b/drivers/net/can/ifi_canfd/ifi_canfd.c
-@@ -578,7 +578,7 @@ static int ifi_canfd_poll(struct napi_st
+@@ -589,7 +589,7 @@ static int ifi_canfd_poll(struct napi_st
work_done += ifi_canfd_do_rx_poll(ndev, quota - work_done);
if (work_done < quota) {
--- a/drivers/net/can/rcar/rcar_can.c
+++ b/drivers/net/can/rcar/rcar_can.c
-@@ -695,7 +695,7 @@ static int rcar_can_rx_poll(struct napi_
+@@ -698,7 +698,7 @@ static int rcar_can_rx_poll(struct napi_
}
/* All packets processed */
if (num_pkts < quota) {
RCANFD_RFCC_RFIE);
--- a/drivers/net/can/xilinx_can.c
+++ b/drivers/net/can/xilinx_can.c
-@@ -726,7 +726,7 @@ static int xcan_rx_poll(struct napi_stru
- can_led_event(ndev, CAN_LED_EVENT_RX);
+@@ -838,7 +838,7 @@ static int xcan_rx_poll(struct napi_stru
+ }
if (work_done < quota) {
- napi_complete(napi);
+ napi_complete_done(napi, work_done);
ier = priv->read_reg(priv, XCAN_IER_OFFSET);
- ier |= (XCAN_IXR_RXOK_MASK | XCAN_IXR_RXNEMP_MASK);
+ ier |= XCAN_IXR_RXNEMP_MASK;
priv->write_reg(priv, XCAN_IER_OFFSET, ier);
--- a/drivers/net/ethernet/3com/typhoon.c
+++ b/drivers/net/ethernet/3com/typhoon.c
"NAPI Complete, did %d packets with budget %d\n",
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
-@@ -651,7 +651,7 @@ static int xgene_enet_napi(struct napi_s
+@@ -655,7 +655,7 @@ static int xgene_enet_napi(struct napi_s
processed = xgene_enet_process_ring(ring, budget);
if (processed != budget) {
--- a/drivers/net/ethernet/arc/emac_main.c
+++ b/drivers/net/ethernet/arc/emac_main.c
-@@ -275,7 +275,7 @@ static int arc_emac_poll(struct napi_str
+@@ -284,7 +284,7 @@ static int arc_emac_poll(struct napi_str
work_done = arc_emac_rx(ndev, budget);
if (work_done < budget) {
if (alx->flags & ALX_FLAG_USING_MSIX) {
--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-@@ -1885,7 +1885,7 @@ static int atl1c_clean(struct napi_struc
+@@ -1886,7 +1886,7 @@ static int atl1c_clean(struct napi_struc
if (work_done < budget) {
quit_polling:
}
--- a/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
+++ b/drivers/net/ethernet/atheros/atl1e/atl1e_main.c
-@@ -1532,7 +1532,7 @@ static int atl1e_clean(struct napi_struc
+@@ -1534,7 +1534,7 @@ static int atl1e_clean(struct napi_struc
/* If no Tx and not enough Rx work done, exit the polling mode */
if (work_done < budget) {
quit_polling:
enet_dmac_writel(priv, priv->dma_chan_int_mask,
--- a/drivers/net/ethernet/broadcom/bgmac.c
+++ b/drivers/net/ethernet/broadcom/bgmac.c
-@@ -1145,7 +1145,7 @@ static int bgmac_poll(struct napi_struct
+@@ -1146,7 +1146,7 @@ static int bgmac_poll(struct napi_struct
return weight;
if (handled < weight) {
BNX2_PCICFG_INT_ACK_CMD_INDEX_VALID |
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
-@@ -3229,7 +3229,7 @@ static int bnx2x_poll(struct napi_struct
+@@ -3240,7 +3240,7 @@ static int bnx2x_poll(struct napi_struct
* has been updated when NAPI was scheduled.
*/
if (IS_FCOE_FP(fp)) {
/* bnx2x_has_rx_work() reads the status block,
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
-@@ -1774,7 +1774,7 @@ static int bnxt_poll_nitroa0(struct napi
+@@ -1799,7 +1799,7 @@ static int bnxt_poll_nitroa0(struct napi
}
if (!bnxt_has_work(bp, cpr) && rx_pkts < budget) {
octeon_mgmt_update_rx_stats(netdev);
--- a/drivers/net/ethernet/cavium/thunder/nicvf_main.c
+++ b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
-@@ -737,7 +737,7 @@ static int nicvf_poll(struct napi_struct
+@@ -748,7 +748,7 @@ static int nicvf_poll(struct napi_struct
if (work_done < budget) {
/* Slow packet rate, exit polling */
return received;
--- a/drivers/net/ethernet/freescale/gianfar.c
+++ b/drivers/net/ethernet/freescale/gianfar.c
-@@ -3186,7 +3186,7 @@ static int gfar_poll_rx_sq(struct napi_s
+@@ -3197,7 +3197,7 @@ static int gfar_poll_rx_sq(struct napi_s
if (work_done < budget) {
u32 imask;
/* Clear the halt bit in RSTAT */
gfar_write(®s->rstat, gfargrp->rstat);
-@@ -3275,7 +3275,7 @@ static int gfar_poll_rx(struct napi_stru
+@@ -3286,7 +3286,7 @@ static int gfar_poll_rx(struct napi_stru
if (!num_act_queues) {
u32 imask;
--- a/drivers/net/ethernet/hisilicon/hip04_eth.c
+++ b/drivers/net/ethernet/hisilicon/hip04_eth.c
-@@ -555,7 +555,7 @@ refill:
+@@ -561,7 +561,7 @@ refill:
priv->reg_inten |= RCV_INT;
writel_relaxed(priv->reg_inten, priv->base + PPE_INTEN);
}
- napi_complete(napi);
+ napi_complete_done(napi, rx);
done:
- /* clean up tx descriptors and start a new timer if necessary */
- tx_remaining = hip04_tx_reclaim(ndev, false);
+ /* start a new timer if necessary */
+ if (rx < budget && tx_remaining)
--- a/drivers/net/ethernet/hisilicon/hisi_femac.c
+++ b/drivers/net/ethernet/hisilicon/hisi_femac.c
@@ -330,7 +330,7 @@ static int hisi_femac_poll(struct napi_s
--- a/drivers/net/ethernet/ibm/ibmveth.c
+++ b/drivers/net/ethernet/ibm/ibmveth.c
-@@ -1320,7 +1320,7 @@ restart_poll:
+@@ -1323,7 +1323,7 @@ static int ibmveth_poll(struct napi_stru
ibmveth_replenish_task(adapter);
if (frames_processed < budget) {
* then check once more to make sure we are done.
--- a/drivers/net/ethernet/ibm/ibmvnic.c
+++ b/drivers/net/ethernet/ibm/ibmvnic.c
-@@ -1009,7 +1009,7 @@ restart_poll:
+@@ -1028,7 +1028,7 @@ restart_poll:
if (frames_processed < budget) {
enable_scrq_irq(adapter, adapter->rx_scrq[scrq_num]);
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
-@@ -2701,11 +2701,9 @@ static int mvneta_poll(struct napi_struc
+@@ -2702,11 +2702,9 @@ static int mvneta_poll(struct napi_struc
rx_done = mvneta_rx_swbm(pp, budget, &pp->rxqs[rx_queue]);
}
writel(irq->mask, adpt->base + EMAC_INT_MASK);
--- a/drivers/net/ethernet/realtek/r8169.c
+++ b/drivers/net/ethernet/realtek/r8169.c
-@@ -7579,7 +7579,7 @@ static int rtl8169_poll(struct napi_stru
+@@ -7578,7 +7578,7 @@ static int rtl8169_poll(struct napi_stru
}
if (work_done < budget) {
dma_intr_ena = smsc9420_reg_read(pd, DMAC_INTR_ENA);
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
-@@ -2684,7 +2684,7 @@ static int stmmac_poll(struct napi_struc
+@@ -2700,7 +2700,7 @@ static int stmmac_poll(struct napi_struc
work_done = stmmac_rx(priv, budget);
if (work_done < budget) {
return work_done;
--- a/drivers/net/ethernet/sun/niu.c
+++ b/drivers/net/ethernet/sun/niu.c
-@@ -3786,7 +3786,7 @@ static int niu_poll(struct napi_struct *
+@@ -3785,7 +3785,7 @@ static int niu_poll(struct napi_struct *
work_done = niu_poll_core(np, lp, budget);
if (work_done < budget) {
return work_done;
--- a/drivers/net/ethernet/sun/sungem.c
+++ b/drivers/net/ethernet/sun/sungem.c
-@@ -922,7 +922,7 @@ static int gem_poll(struct napi_struct *
+@@ -924,7 +924,7 @@ static int gem_poll(struct napi_struct *
gp->status = readl(gp->regs + GREG_STAT);
} while (gp->status & GREG_STAT_NAPI);
return work_done;
--- a/drivers/net/ethernet/ti/cpsw.c
+++ b/drivers/net/ethernet/ti/cpsw.c
-@@ -839,7 +839,7 @@ static int cpsw_rx_poll(struct napi_stru
+@@ -844,7 +844,7 @@ static int cpsw_rx_poll(struct napi_stru
}
if (num_rx < budget) {
}
--- a/drivers/net/ethernet/toshiba/tc35815.c
+++ b/drivers/net/ethernet/toshiba/tc35815.c
-@@ -1639,7 +1639,7 @@ static int tc35815_poll(struct napi_stru
+@@ -1641,7 +1641,7 @@ static int tc35815_poll(struct napi_stru
spin_unlock(&lp->rx_lock);
if (received < budget) {
}
--- a/drivers/net/ethernet/tundra/tsi108_eth.c
+++ b/drivers/net/ethernet/tundra/tsi108_eth.c
-@@ -887,7 +887,7 @@ static int tsi108_poll(struct napi_struc
+@@ -888,7 +888,7 @@ static int tsi108_poll(struct napi_struc
if (num_received < budget) {
data->rxpending = 0;
adapter->rx_last_jiffies = jiffies;
--- a/drivers/net/vmxnet3/vmxnet3_drv.c
+++ b/drivers/net/vmxnet3/vmxnet3_drv.c
-@@ -1851,7 +1851,7 @@ vmxnet3_poll(struct napi_struct *napi, i
+@@ -1873,7 +1873,7 @@ vmxnet3_poll(struct napi_struct *napi, i
rxd_done = vmxnet3_do_poll(rx_queue->adapter, budget);
if (rxd_done < budget) {
vmxnet3_enable_all_intrs(rx_queue->adapter);
}
return rxd_done;
-@@ -1882,7 +1882,7 @@ vmxnet3_poll_rx_only(struct napi_struct
+@@ -1904,7 +1904,7 @@ vmxnet3_poll_rx_only(struct napi_struct
rxd_done = vmxnet3_rq_rx_complete(rq, adapter, budget);
if (rxd_done < budget) {
*/
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
-@@ -1059,7 +1059,7 @@ err:
+@@ -1071,7 +1071,7 @@ err:
if (work_done < budget) {
int more_to_do = 0;