kernel: bump 4.9 to 4.9.208
[openwrt/openwrt.git] / target / linux / generic / backport-4.9 / 090-net-generalize-napi_complete_done.patch
index 5c0388ed0fe30d613a98f8528e142d2e2cce93f7..433788e07570e95554eac2effd3b8033828cebf3 100644 (file)
@@ -137,7 +137,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  
 --- 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) {
@@ -192,7 +192,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  
 --- 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) {
@@ -214,14 +214,14 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
                                   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
@@ -269,7 +269,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
                           "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
-@@ -658,7 +658,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) {
@@ -302,7 +302,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
        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:
@@ -313,7 +313,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
        }
 --- 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:
@@ -388,7 +388,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
                                        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
-@@ -3230,7 +3230,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)) {
@@ -399,7 +399,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
                        /* bnx2x_has_rx_work() reads the status block,
 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
 +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
-@@ -1778,7 +1778,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) {
@@ -476,7 +476,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
        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 */
@@ -657,7 +657,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
                gfar_write(&regs->rstat, gfargrp->rstat);
 --- a/drivers/net/ethernet/freescale/ucc_geth.c
 +++ b/drivers/net/ethernet/freescale/ucc_geth.c
-@@ -3301,7 +3301,7 @@ static int ucc_geth_poll(struct napi_str
+@@ -3303,7 +3303,7 @@ static int ucc_geth_poll(struct napi_str
                howmany += ucc_geth_rx(ugeth, i, budget - howmany);
  
        if (howmany < budget) {
@@ -668,15 +668,15 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  
 --- 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
@@ -701,7 +701,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
  
 --- 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) {
@@ -1040,7 +1040,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
                writel(irq->mask, adpt->base + EMAC_INT_MASK);
 --- a/drivers/net/ethernet/realtek/r8169.c
 +++ b/drivers/net/ethernet/realtek/r8169.c
-@@ -7577,7 +7577,7 @@ static int rtl8169_poll(struct napi_stru
+@@ -7578,7 +7578,7 @@ static int rtl8169_poll(struct napi_stru
        }
  
        if (work_done < budget) {
@@ -1095,7 +1095,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
                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
-@@ -2705,7 +2705,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) {
@@ -1117,7 +1117,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
        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);
  
@@ -1150,7 +1150,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
        return work_done;
 --- a/drivers/net/ethernet/ti/cpsw.c
 +++ b/drivers/net/ethernet/ti/cpsw.c
-@@ -843,7 +843,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) {
@@ -1227,7 +1227,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
        }
 --- 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) {
@@ -1238,7 +1238,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
        }
 --- 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;
@@ -1293,7 +1293,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
        }
 --- a/drivers/net/fjes/fjes_main.c
 +++ b/drivers/net/fjes/fjes_main.c
-@@ -1122,7 +1122,7 @@ static int fjes_poll(struct napi_struct
+@@ -1125,7 +1125,7 @@ static int fjes_poll(struct napi_struct
        }
  
        if (work_done < budget) {
@@ -1379,7 +1379,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
                 */
 --- a/drivers/net/xen-netfront.c
 +++ b/drivers/net/xen-netfront.c
-@@ -1064,7 +1064,7 @@ err:
+@@ -1071,7 +1071,7 @@ err:
        if (work_done < budget) {
                int more_to_do = 0;