diff options
66 files changed, 218 insertions, 235 deletions
diff --git a/drivers/infiniband/hw/nes/nes_hw.c b/drivers/infiniband/hw/nes/nes_hw.c index 7c49cc882d75..735c125b48af 100644 --- a/drivers/infiniband/hw/nes/nes_hw.c +++ b/drivers/infiniband/hw/nes/nes_hw.c | |||
@@ -2541,7 +2541,7 @@ static void nes_nic_napi_ce_handler(struct nes_device *nesdev, struct nes_hw_nic | |||
2541 | { | 2541 | { |
2542 | struct nes_vnic *nesvnic = container_of(cq, struct nes_vnic, nic_cq); | 2542 | struct nes_vnic *nesvnic = container_of(cq, struct nes_vnic, nic_cq); |
2543 | 2543 | ||
2544 | netif_rx_schedule(nesdev->netdev[nesvnic->netdev_index], &nesvnic->napi); | 2544 | netif_rx_schedule(&nesvnic->napi); |
2545 | } | 2545 | } |
2546 | 2546 | ||
2547 | 2547 | ||
diff --git a/drivers/infiniband/hw/nes/nes_nic.c b/drivers/infiniband/hw/nes/nes_nic.c index 3c96203e0d91..80e7a4d98d5b 100644 --- a/drivers/infiniband/hw/nes/nes_nic.c +++ b/drivers/infiniband/hw/nes/nes_nic.c | |||
@@ -112,7 +112,7 @@ static int nes_netdev_poll(struct napi_struct *napi, int budget) | |||
112 | nes_nic_ce_handler(nesdev, nescq); | 112 | nes_nic_ce_handler(nesdev, nescq); |
113 | 113 | ||
114 | if (nescq->cqes_pending == 0) { | 114 | if (nescq->cqes_pending == 0) { |
115 | netif_rx_complete(netdev, napi); | 115 | netif_rx_complete(napi); |
116 | /* clear out completed cqes and arm */ | 116 | /* clear out completed cqes and arm */ |
117 | nes_write32(nesdev->regs+NES_CQE_ALLOC, NES_CQE_ALLOC_NOTIFY_NEXT | | 117 | nes_write32(nesdev->regs+NES_CQE_ALLOC, NES_CQE_ALLOC_NOTIFY_NEXT | |
118 | nescq->cq_number | (nescq->cqe_allocs_pending << 16)); | 118 | nescq->cq_number | (nescq->cqe_allocs_pending << 16)); |
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_ib.c b/drivers/infiniband/ulp/ipoib/ipoib_ib.c index 28eb6f03c588..a1925810be3c 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_ib.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_ib.c | |||
@@ -446,11 +446,11 @@ poll_more: | |||
446 | if (dev->features & NETIF_F_LRO) | 446 | if (dev->features & NETIF_F_LRO) |
447 | lro_flush_all(&priv->lro.lro_mgr); | 447 | lro_flush_all(&priv->lro.lro_mgr); |
448 | 448 | ||
449 | netif_rx_complete(dev, napi); | 449 | netif_rx_complete(napi); |
450 | if (unlikely(ib_req_notify_cq(priv->recv_cq, | 450 | if (unlikely(ib_req_notify_cq(priv->recv_cq, |
451 | IB_CQ_NEXT_COMP | | 451 | IB_CQ_NEXT_COMP | |
452 | IB_CQ_REPORT_MISSED_EVENTS)) && | 452 | IB_CQ_REPORT_MISSED_EVENTS)) && |
453 | netif_rx_reschedule(dev, napi)) | 453 | netif_rx_reschedule(napi)) |
454 | goto poll_more; | 454 | goto poll_more; |
455 | } | 455 | } |
456 | 456 | ||
@@ -462,7 +462,7 @@ void ipoib_ib_completion(struct ib_cq *cq, void *dev_ptr) | |||
462 | struct net_device *dev = dev_ptr; | 462 | struct net_device *dev = dev_ptr; |
463 | struct ipoib_dev_priv *priv = netdev_priv(dev); | 463 | struct ipoib_dev_priv *priv = netdev_priv(dev); |
464 | 464 | ||
465 | netif_rx_schedule(dev, &priv->napi); | 465 | netif_rx_schedule(&priv->napi); |
466 | } | 466 | } |
467 | 467 | ||
468 | static void drain_tx_cq(struct net_device *dev) | 468 | static void drain_tx_cq(struct net_device *dev) |
diff --git a/drivers/net/8139cp.c b/drivers/net/8139cp.c index f6d9d1353dd5..dd7ac8290aec 100644 --- a/drivers/net/8139cp.c +++ b/drivers/net/8139cp.c | |||
@@ -604,7 +604,7 @@ rx_next: | |||
604 | 604 | ||
605 | spin_lock_irqsave(&cp->lock, flags); | 605 | spin_lock_irqsave(&cp->lock, flags); |
606 | cpw16_f(IntrMask, cp_intr_mask); | 606 | cpw16_f(IntrMask, cp_intr_mask); |
607 | __netif_rx_complete(dev, napi); | 607 | __netif_rx_complete(napi); |
608 | spin_unlock_irqrestore(&cp->lock, flags); | 608 | spin_unlock_irqrestore(&cp->lock, flags); |
609 | } | 609 | } |
610 | 610 | ||
@@ -641,9 +641,9 @@ static irqreturn_t cp_interrupt (int irq, void *dev_instance) | |||
641 | } | 641 | } |
642 | 642 | ||
643 | if (status & (RxOK | RxErr | RxEmpty | RxFIFOOvr)) | 643 | if (status & (RxOK | RxErr | RxEmpty | RxFIFOOvr)) |
644 | if (netif_rx_schedule_prep(dev, &cp->napi)) { | 644 | if (netif_rx_schedule_prep(&cp->napi)) { |
645 | cpw16_f(IntrMask, cp_norx_intr_mask); | 645 | cpw16_f(IntrMask, cp_norx_intr_mask); |
646 | __netif_rx_schedule(dev, &cp->napi); | 646 | __netif_rx_schedule(&cp->napi); |
647 | } | 647 | } |
648 | 648 | ||
649 | if (status & (TxOK | TxErr | TxEmpty | SWInt)) | 649 | if (status & (TxOK | TxErr | TxEmpty | SWInt)) |
diff --git a/drivers/net/8139too.c b/drivers/net/8139too.c index 67bbf4f25bea..fe370f805793 100644 --- a/drivers/net/8139too.c +++ b/drivers/net/8139too.c | |||
@@ -2128,7 +2128,7 @@ static int rtl8139_poll(struct napi_struct *napi, int budget) | |||
2128 | */ | 2128 | */ |
2129 | spin_lock_irqsave(&tp->lock, flags); | 2129 | spin_lock_irqsave(&tp->lock, flags); |
2130 | RTL_W16_F(IntrMask, rtl8139_intr_mask); | 2130 | RTL_W16_F(IntrMask, rtl8139_intr_mask); |
2131 | __netif_rx_complete(dev, napi); | 2131 | __netif_rx_complete(napi); |
2132 | spin_unlock_irqrestore(&tp->lock, flags); | 2132 | spin_unlock_irqrestore(&tp->lock, flags); |
2133 | } | 2133 | } |
2134 | spin_unlock(&tp->rx_lock); | 2134 | spin_unlock(&tp->rx_lock); |
@@ -2178,9 +2178,9 @@ static irqreturn_t rtl8139_interrupt (int irq, void *dev_instance) | |||
2178 | /* Receive packets are processed by poll routine. | 2178 | /* Receive packets are processed by poll routine. |
2179 | If not running start it now. */ | 2179 | If not running start it now. */ |
2180 | if (status & RxAckBits){ | 2180 | if (status & RxAckBits){ |
2181 | if (netif_rx_schedule_prep(dev, &tp->napi)) { | 2181 | if (netif_rx_schedule_prep(&tp->napi)) { |
2182 | RTL_W16_F (IntrMask, rtl8139_norx_intr_mask); | 2182 | RTL_W16_F (IntrMask, rtl8139_norx_intr_mask); |
2183 | __netif_rx_schedule(dev, &tp->napi); | 2183 | __netif_rx_schedule(&tp->napi); |
2184 | } | 2184 | } |
2185 | } | 2185 | } |
2186 | 2186 | ||
diff --git a/drivers/net/amd8111e.c b/drivers/net/amd8111e.c index 0bc4f54d5db9..187ac6eb6e94 100644 --- a/drivers/net/amd8111e.c +++ b/drivers/net/amd8111e.c | |||
@@ -831,7 +831,7 @@ static int amd8111e_rx_poll(struct napi_struct *napi, int budget) | |||
831 | if (rx_pkt_limit > 0) { | 831 | if (rx_pkt_limit > 0) { |
832 | /* Receive descriptor is empty now */ | 832 | /* Receive descriptor is empty now */ |
833 | spin_lock_irqsave(&lp->lock, flags); | 833 | spin_lock_irqsave(&lp->lock, flags); |
834 | __netif_rx_complete(dev, napi); | 834 | __netif_rx_complete(napi); |
835 | writel(VAL0|RINTEN0, mmio + INTEN0); | 835 | writel(VAL0|RINTEN0, mmio + INTEN0); |
836 | writel(VAL2 | RDMD0, mmio + CMD0); | 836 | writel(VAL2 | RDMD0, mmio + CMD0); |
837 | spin_unlock_irqrestore(&lp->lock, flags); | 837 | spin_unlock_irqrestore(&lp->lock, flags); |
@@ -1170,11 +1170,11 @@ static irqreturn_t amd8111e_interrupt(int irq, void *dev_id) | |||
1170 | 1170 | ||
1171 | /* Check if Receive Interrupt has occurred. */ | 1171 | /* Check if Receive Interrupt has occurred. */ |
1172 | if (intr0 & RINT0) { | 1172 | if (intr0 & RINT0) { |
1173 | if (netif_rx_schedule_prep(dev, &lp->napi)) { | 1173 | if (netif_rx_schedule_prep(&lp->napi)) { |
1174 | /* Disable receive interupts */ | 1174 | /* Disable receive interupts */ |
1175 | writel(RINTEN0, mmio + INTEN0); | 1175 | writel(RINTEN0, mmio + INTEN0); |
1176 | /* Schedule a polling routine */ | 1176 | /* Schedule a polling routine */ |
1177 | __netif_rx_schedule(dev, &lp->napi); | 1177 | __netif_rx_schedule(&lp->napi); |
1178 | } else if (intren0 & RINTEN0) { | 1178 | } else if (intren0 & RINTEN0) { |
1179 | printk("************Driver bug! \ | 1179 | printk("************Driver bug! \ |
1180 | interrupt while in poll\n"); | 1180 | interrupt while in poll\n"); |
diff --git a/drivers/net/arm/ep93xx_eth.c b/drivers/net/arm/ep93xx_eth.c index 588c9739d13d..6ecc600c1bcc 100644 --- a/drivers/net/arm/ep93xx_eth.c +++ b/drivers/net/arm/ep93xx_eth.c | |||
@@ -298,7 +298,7 @@ poll_some_more: | |||
298 | int more = 0; | 298 | int more = 0; |
299 | 299 | ||
300 | spin_lock_irq(&ep->rx_lock); | 300 | spin_lock_irq(&ep->rx_lock); |
301 | __netif_rx_complete(dev, napi); | 301 | __netif_rx_complete(napi); |
302 | wrl(ep, REG_INTEN, REG_INTEN_TX | REG_INTEN_RX); | 302 | wrl(ep, REG_INTEN, REG_INTEN_TX | REG_INTEN_RX); |
303 | if (ep93xx_have_more_rx(ep)) { | 303 | if (ep93xx_have_more_rx(ep)) { |
304 | wrl(ep, REG_INTEN, REG_INTEN_TX); | 304 | wrl(ep, REG_INTEN, REG_INTEN_TX); |
@@ -415,9 +415,9 @@ static irqreturn_t ep93xx_irq(int irq, void *dev_id) | |||
415 | 415 | ||
416 | if (status & REG_INTSTS_RX) { | 416 | if (status & REG_INTSTS_RX) { |
417 | spin_lock(&ep->rx_lock); | 417 | spin_lock(&ep->rx_lock); |
418 | if (likely(netif_rx_schedule_prep(dev, &ep->napi))) { | 418 | if (likely(netif_rx_schedule_prep(&ep->napi))) { |
419 | wrl(ep, REG_INTEN, REG_INTEN_TX); | 419 | wrl(ep, REG_INTEN, REG_INTEN_TX); |
420 | __netif_rx_schedule(dev, &ep->napi); | 420 | __netif_rx_schedule(&ep->napi); |
421 | } | 421 | } |
422 | spin_unlock(&ep->rx_lock); | 422 | spin_unlock(&ep->rx_lock); |
423 | } | 423 | } |
diff --git a/drivers/net/arm/ixp4xx_eth.c b/drivers/net/arm/ixp4xx_eth.c index 14ffa2a61890..b03609f2e90f 100644 --- a/drivers/net/arm/ixp4xx_eth.c +++ b/drivers/net/arm/ixp4xx_eth.c | |||
@@ -498,7 +498,7 @@ static void eth_rx_irq(void *pdev) | |||
498 | printk(KERN_DEBUG "%s: eth_rx_irq\n", dev->name); | 498 | printk(KERN_DEBUG "%s: eth_rx_irq\n", dev->name); |
499 | #endif | 499 | #endif |
500 | qmgr_disable_irq(port->plat->rxq); | 500 | qmgr_disable_irq(port->plat->rxq); |
501 | netif_rx_schedule(dev, &port->napi); | 501 | netif_rx_schedule(&port->napi); |
502 | } | 502 | } |
503 | 503 | ||
504 | static int eth_poll(struct napi_struct *napi, int budget) | 504 | static int eth_poll(struct napi_struct *napi, int budget) |
@@ -526,7 +526,7 @@ static int eth_poll(struct napi_struct *napi, int budget) | |||
526 | printk(KERN_DEBUG "%s: eth_poll netif_rx_complete\n", | 526 | printk(KERN_DEBUG "%s: eth_poll netif_rx_complete\n", |
527 | dev->name); | 527 | dev->name); |
528 | #endif | 528 | #endif |
529 | netif_rx_complete(dev, napi); | 529 | netif_rx_complete(napi); |
530 | qmgr_enable_irq(rxq); | 530 | qmgr_enable_irq(rxq); |
531 | if (!qmgr_stat_empty(rxq) && | 531 | if (!qmgr_stat_empty(rxq) && |
532 | netif_rx_reschedule(dev, napi)) { | 532 | netif_rx_reschedule(dev, napi)) { |
@@ -1025,7 +1025,7 @@ static int eth_open(struct net_device *dev) | |||
1025 | } | 1025 | } |
1026 | ports_open++; | 1026 | ports_open++; |
1027 | /* we may already have RX data, enables IRQ */ | 1027 | /* we may already have RX data, enables IRQ */ |
1028 | netif_rx_schedule(dev, &port->napi); | 1028 | netif_rx_schedule(&port->napi); |
1029 | return 0; | 1029 | return 0; |
1030 | } | 1030 | } |
1031 | 1031 | ||
diff --git a/drivers/net/atl1e/atl1e_main.c b/drivers/net/atl1e/atl1e_main.c index 98b2a7a466b8..a72a46145ed7 100644 --- a/drivers/net/atl1e/atl1e_main.c +++ b/drivers/net/atl1e/atl1e_main.c | |||
@@ -1326,9 +1326,9 @@ static irqreturn_t atl1e_intr(int irq, void *data) | |||
1326 | AT_WRITE_REG(hw, REG_IMR, | 1326 | AT_WRITE_REG(hw, REG_IMR, |
1327 | IMR_NORMAL_MASK & ~ISR_RX_EVENT); | 1327 | IMR_NORMAL_MASK & ~ISR_RX_EVENT); |
1328 | AT_WRITE_FLUSH(hw); | 1328 | AT_WRITE_FLUSH(hw); |
1329 | if (likely(netif_rx_schedule_prep(netdev, | 1329 | if (likely(netif_rx_schedule_prep( |
1330 | &adapter->napi))) | 1330 | &adapter->napi))) |
1331 | __netif_rx_schedule(netdev, &adapter->napi); | 1331 | __netif_rx_schedule(&adapter->napi); |
1332 | } | 1332 | } |
1333 | } while (--max_ints > 0); | 1333 | } while (--max_ints > 0); |
1334 | /* re-enable Interrupt*/ | 1334 | /* re-enable Interrupt*/ |
@@ -1515,7 +1515,7 @@ static int atl1e_clean(struct napi_struct *napi, int budget) | |||
1515 | /* If no Tx and not enough Rx work done, exit the polling mode */ | 1515 | /* If no Tx and not enough Rx work done, exit the polling mode */ |
1516 | if (work_done < budget) { | 1516 | if (work_done < budget) { |
1517 | quit_polling: | 1517 | quit_polling: |
1518 | netif_rx_complete(netdev, napi); | 1518 | netif_rx_complete(napi); |
1519 | imr_data = AT_READ_REG(&adapter->hw, REG_IMR); | 1519 | imr_data = AT_READ_REG(&adapter->hw, REG_IMR); |
1520 | AT_WRITE_REG(&adapter->hw, REG_IMR, imr_data | ISR_RX_EVENT); | 1520 | AT_WRITE_REG(&adapter->hw, REG_IMR, imr_data | ISR_RX_EVENT); |
1521 | /* test debug */ | 1521 | /* test debug */ |
diff --git a/drivers/net/b44.c b/drivers/net/b44.c index 2c7a32eb92a5..934a95091dc3 100644 --- a/drivers/net/b44.c +++ b/drivers/net/b44.c | |||
@@ -875,7 +875,7 @@ static int b44_poll(struct napi_struct *napi, int budget) | |||
875 | } | 875 | } |
876 | 876 | ||
877 | if (work_done < budget) { | 877 | if (work_done < budget) { |
878 | netif_rx_complete(netdev, napi); | 878 | netif_rx_complete(napi); |
879 | b44_enable_ints(bp); | 879 | b44_enable_ints(bp); |
880 | } | 880 | } |
881 | 881 | ||
@@ -907,13 +907,13 @@ static irqreturn_t b44_interrupt(int irq, void *dev_id) | |||
907 | goto irq_ack; | 907 | goto irq_ack; |
908 | } | 908 | } |
909 | 909 | ||
910 | if (netif_rx_schedule_prep(dev, &bp->napi)) { | 910 | if (netif_rx_schedule_prep(&bp->napi)) { |
911 | /* NOTE: These writes are posted by the readback of | 911 | /* NOTE: These writes are posted by the readback of |
912 | * the ISTAT register below. | 912 | * the ISTAT register below. |
913 | */ | 913 | */ |
914 | bp->istat = istat; | 914 | bp->istat = istat; |
915 | __b44_disable_ints(bp); | 915 | __b44_disable_ints(bp); |
916 | __netif_rx_schedule(dev, &bp->napi); | 916 | __netif_rx_schedule(&bp->napi); |
917 | } else { | 917 | } else { |
918 | printk(KERN_ERR PFX "%s: Error, poll already scheduled\n", | 918 | printk(KERN_ERR PFX "%s: Error, poll already scheduled\n", |
919 | dev->name); | 919 | dev->name); |
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c index 1a2780374a49..33d69ddc90a3 100644 --- a/drivers/net/bnx2.c +++ b/drivers/net/bnx2.c | |||
@@ -3043,7 +3043,6 @@ bnx2_msi(int irq, void *dev_instance) | |||
3043 | { | 3043 | { |
3044 | struct bnx2_napi *bnapi = dev_instance; | 3044 | struct bnx2_napi *bnapi = dev_instance; |
3045 | struct bnx2 *bp = bnapi->bp; | 3045 | struct bnx2 *bp = bnapi->bp; |
3046 | struct net_device *dev = bp->dev; | ||
3047 | 3046 | ||
3048 | prefetch(bnapi->status_blk.msi); | 3047 | prefetch(bnapi->status_blk.msi); |
3049 | REG_WR(bp, BNX2_PCICFG_INT_ACK_CMD, | 3048 | REG_WR(bp, BNX2_PCICFG_INT_ACK_CMD, |
@@ -3054,7 +3053,7 @@ bnx2_msi(int irq, void *dev_instance) | |||
3054 | if (unlikely(atomic_read(&bp->intr_sem) != 0)) | 3053 | if (unlikely(atomic_read(&bp->intr_sem) != 0)) |
3055 | return IRQ_HANDLED; | 3054 | return IRQ_HANDLED; |
3056 | 3055 | ||
3057 | netif_rx_schedule(dev, &bnapi->napi); | 3056 | netif_rx_schedule(&bnapi->napi); |
3058 | 3057 | ||
3059 | return IRQ_HANDLED; | 3058 | return IRQ_HANDLED; |
3060 | } | 3059 | } |
@@ -3064,7 +3063,6 @@ bnx2_msi_1shot(int irq, void *dev_instance) | |||
3064 | { | 3063 | { |
3065 | struct bnx2_napi *bnapi = dev_instance; | 3064 | struct bnx2_napi *bnapi = dev_instance; |
3066 | struct bnx2 *bp = bnapi->bp; | 3065 | struct bnx2 *bp = bnapi->bp; |
3067 | struct net_device *dev = bp->dev; | ||
3068 | 3066 | ||
3069 | prefetch(bnapi->status_blk.msi); | 3067 | prefetch(bnapi->status_blk.msi); |
3070 | 3068 | ||
@@ -3072,7 +3070,7 @@ bnx2_msi_1shot(int irq, void *dev_instance) | |||
3072 | if (unlikely(atomic_read(&bp->intr_sem) != 0)) | 3070 | if (unlikely(atomic_read(&bp->intr_sem) != 0)) |
3073 | return IRQ_HANDLED; | 3071 | return IRQ_HANDLED; |
3074 | 3072 | ||
3075 | netif_rx_schedule(dev, &bnapi->napi); | 3073 | netif_rx_schedule(&bnapi->napi); |
3076 | 3074 | ||
3077 | return IRQ_HANDLED; | 3075 | return IRQ_HANDLED; |
3078 | } | 3076 | } |
@@ -3082,7 +3080,6 @@ bnx2_interrupt(int irq, void *dev_instance) | |||
3082 | { | 3080 | { |
3083 | struct bnx2_napi *bnapi = dev_instance; | 3081 | struct bnx2_napi *bnapi = dev_instance; |
3084 | struct bnx2 *bp = bnapi->bp; | 3082 | struct bnx2 *bp = bnapi->bp; |
3085 | struct net_device *dev = bp->dev; | ||
3086 | struct status_block *sblk = bnapi->status_blk.msi; | 3083 | struct status_block *sblk = bnapi->status_blk.msi; |
3087 | 3084 | ||
3088 | /* When using INTx, it is possible for the interrupt to arrive | 3085 | /* When using INTx, it is possible for the interrupt to arrive |
@@ -3109,9 +3106,9 @@ bnx2_interrupt(int irq, void *dev_instance) | |||
3109 | if (unlikely(atomic_read(&bp->intr_sem) != 0)) | 3106 | if (unlikely(atomic_read(&bp->intr_sem) != 0)) |
3110 | return IRQ_HANDLED; | 3107 | return IRQ_HANDLED; |
3111 | 3108 | ||
3112 | if (netif_rx_schedule_prep(dev, &bnapi->napi)) { | 3109 | if (netif_rx_schedule_prep(&bnapi->napi)) { |
3113 | bnapi->last_status_idx = sblk->status_idx; | 3110 | bnapi->last_status_idx = sblk->status_idx; |
3114 | __netif_rx_schedule(dev, &bnapi->napi); | 3111 | __netif_rx_schedule(&bnapi->napi); |
3115 | } | 3112 | } |
3116 | 3113 | ||
3117 | return IRQ_HANDLED; | 3114 | return IRQ_HANDLED; |
@@ -3221,7 +3218,7 @@ static int bnx2_poll_msix(struct napi_struct *napi, int budget) | |||
3221 | rmb(); | 3218 | rmb(); |
3222 | if (likely(!bnx2_has_fast_work(bnapi))) { | 3219 | if (likely(!bnx2_has_fast_work(bnapi))) { |
3223 | 3220 | ||
3224 | netif_rx_complete(bp->dev, napi); | 3221 | netif_rx_complete(napi); |
3225 | REG_WR(bp, BNX2_PCICFG_INT_ACK_CMD, bnapi->int_num | | 3222 | REG_WR(bp, BNX2_PCICFG_INT_ACK_CMD, bnapi->int_num | |
3226 | BNX2_PCICFG_INT_ACK_CMD_INDEX_VALID | | 3223 | BNX2_PCICFG_INT_ACK_CMD_INDEX_VALID | |
3227 | bnapi->last_status_idx); | 3224 | bnapi->last_status_idx); |
@@ -3254,7 +3251,7 @@ static int bnx2_poll(struct napi_struct *napi, int budget) | |||
3254 | 3251 | ||
3255 | rmb(); | 3252 | rmb(); |
3256 | if (likely(!bnx2_has_work(bnapi))) { | 3253 | if (likely(!bnx2_has_work(bnapi))) { |
3257 | netif_rx_complete(bp->dev, napi); | 3254 | netif_rx_complete(napi); |
3258 | if (likely(bp->flags & BNX2_FLAG_USING_MSI_OR_MSIX)) { | 3255 | if (likely(bp->flags & BNX2_FLAG_USING_MSI_OR_MSIX)) { |
3259 | REG_WR(bp, BNX2_PCICFG_INT_ACK_CMD, | 3256 | REG_WR(bp, BNX2_PCICFG_INT_ACK_CMD, |
3260 | BNX2_PCICFG_INT_ACK_CMD_INDEX_VALID | | 3257 | BNX2_PCICFG_INT_ACK_CMD_INDEX_VALID | |
diff --git a/drivers/net/bnx2x_main.c b/drivers/net/bnx2x_main.c index 24d2ae8b74bf..02ab9b0ea697 100644 --- a/drivers/net/bnx2x_main.c +++ b/drivers/net/bnx2x_main.c | |||
@@ -1615,7 +1615,7 @@ static irqreturn_t bnx2x_msix_fp_int(int irq, void *fp_cookie) | |||
1615 | prefetch(&fp->status_blk->c_status_block.status_block_index); | 1615 | prefetch(&fp->status_blk->c_status_block.status_block_index); |
1616 | prefetch(&fp->status_blk->u_status_block.status_block_index); | 1616 | prefetch(&fp->status_blk->u_status_block.status_block_index); |
1617 | 1617 | ||
1618 | netif_rx_schedule(dev, &bnx2x_fp(bp, index, napi)); | 1618 | netif_rx_schedule(&bnx2x_fp(bp, index, napi)); |
1619 | 1619 | ||
1620 | return IRQ_HANDLED; | 1620 | return IRQ_HANDLED; |
1621 | } | 1621 | } |
@@ -1654,7 +1654,7 @@ static irqreturn_t bnx2x_interrupt(int irq, void *dev_instance) | |||
1654 | prefetch(&fp->status_blk->c_status_block.status_block_index); | 1654 | prefetch(&fp->status_blk->c_status_block.status_block_index); |
1655 | prefetch(&fp->status_blk->u_status_block.status_block_index); | 1655 | prefetch(&fp->status_blk->u_status_block.status_block_index); |
1656 | 1656 | ||
1657 | netif_rx_schedule(dev, &bnx2x_fp(bp, 0, napi)); | 1657 | netif_rx_schedule(&bnx2x_fp(bp, 0, napi)); |
1658 | 1658 | ||
1659 | status &= ~mask; | 1659 | status &= ~mask; |
1660 | } | 1660 | } |
@@ -9284,7 +9284,7 @@ static int bnx2x_poll(struct napi_struct *napi, int budget) | |||
9284 | #ifdef BNX2X_STOP_ON_ERROR | 9284 | #ifdef BNX2X_STOP_ON_ERROR |
9285 | poll_panic: | 9285 | poll_panic: |
9286 | #endif | 9286 | #endif |
9287 | netif_rx_complete(bp->dev, napi); | 9287 | netif_rx_complete(napi); |
9288 | 9288 | ||
9289 | bnx2x_ack_sb(bp, FP_SB_ID(fp), USTORM_ID, | 9289 | bnx2x_ack_sb(bp, FP_SB_ID(fp), USTORM_ID, |
9290 | le16_to_cpu(fp->fp_u_idx), IGU_INT_NOP, 1); | 9290 | le16_to_cpu(fp->fp_u_idx), IGU_INT_NOP, 1); |
diff --git a/drivers/net/cassini.c b/drivers/net/cassini.c index 023d205e9054..321f43d9f0e2 100644 --- a/drivers/net/cassini.c +++ b/drivers/net/cassini.c | |||
@@ -2506,7 +2506,7 @@ static irqreturn_t cas_interruptN(int irq, void *dev_id) | |||
2506 | if (status & INTR_RX_DONE_ALT) { /* handle rx separately */ | 2506 | if (status & INTR_RX_DONE_ALT) { /* handle rx separately */ |
2507 | #ifdef USE_NAPI | 2507 | #ifdef USE_NAPI |
2508 | cas_mask_intr(cp); | 2508 | cas_mask_intr(cp); |
2509 | netif_rx_schedule(dev, &cp->napi); | 2509 | netif_rx_schedule(&cp->napi); |
2510 | #else | 2510 | #else |
2511 | cas_rx_ringN(cp, ring, 0); | 2511 | cas_rx_ringN(cp, ring, 0); |
2512 | #endif | 2512 | #endif |
@@ -2557,7 +2557,7 @@ static irqreturn_t cas_interrupt1(int irq, void *dev_id) | |||
2557 | if (status & INTR_RX_DONE_ALT) { /* handle rx separately */ | 2557 | if (status & INTR_RX_DONE_ALT) { /* handle rx separately */ |
2558 | #ifdef USE_NAPI | 2558 | #ifdef USE_NAPI |
2559 | cas_mask_intr(cp); | 2559 | cas_mask_intr(cp); |
2560 | netif_rx_schedule(dev, &cp->napi); | 2560 | netif_rx_schedule(&cp->napi); |
2561 | #else | 2561 | #else |
2562 | cas_rx_ringN(cp, 1, 0); | 2562 | cas_rx_ringN(cp, 1, 0); |
2563 | #endif | 2563 | #endif |
@@ -2613,7 +2613,7 @@ static irqreturn_t cas_interrupt(int irq, void *dev_id) | |||
2613 | if (status & INTR_RX_DONE) { | 2613 | if (status & INTR_RX_DONE) { |
2614 | #ifdef USE_NAPI | 2614 | #ifdef USE_NAPI |
2615 | cas_mask_intr(cp); | 2615 | cas_mask_intr(cp); |
2616 | netif_rx_schedule(dev, &cp->napi); | 2616 | netif_rx_schedule(&cp->napi); |
2617 | #else | 2617 | #else |
2618 | cas_rx_ringN(cp, 0, 0); | 2618 | cas_rx_ringN(cp, 0, 0); |
2619 | #endif | 2619 | #endif |
@@ -2691,7 +2691,7 @@ rx_comp: | |||
2691 | #endif | 2691 | #endif |
2692 | spin_unlock_irqrestore(&cp->lock, flags); | 2692 | spin_unlock_irqrestore(&cp->lock, flags); |
2693 | if (enable_intr) { | 2693 | if (enable_intr) { |
2694 | netif_rx_complete(dev, napi); | 2694 | netif_rx_complete(napi); |
2695 | cas_unmask_intr(cp); | 2695 | cas_unmask_intr(cp); |
2696 | } | 2696 | } |
2697 | return credits; | 2697 | return credits; |
diff --git a/drivers/net/chelsio/sge.c b/drivers/net/chelsio/sge.c index 1da70070c2fa..7896468dda11 100644 --- a/drivers/net/chelsio/sge.c +++ b/drivers/net/chelsio/sge.c | |||
@@ -1613,7 +1613,7 @@ int t1_poll(struct napi_struct *napi, int budget) | |||
1613 | int work_done = process_responses(adapter, budget); | 1613 | int work_done = process_responses(adapter, budget); |
1614 | 1614 | ||
1615 | if (likely(work_done < budget)) { | 1615 | if (likely(work_done < budget)) { |
1616 | netif_rx_complete(dev, napi); | 1616 | netif_rx_complete(napi); |
1617 | writel(adapter->sge->respQ.cidx, | 1617 | writel(adapter->sge->respQ.cidx, |
1618 | adapter->regs + A_SG_SLEEPING); | 1618 | adapter->regs + A_SG_SLEEPING); |
1619 | } | 1619 | } |
@@ -1633,7 +1633,7 @@ irqreturn_t t1_interrupt(int irq, void *data) | |||
1633 | 1633 | ||
1634 | if (napi_schedule_prep(&adapter->napi)) { | 1634 | if (napi_schedule_prep(&adapter->napi)) { |
1635 | if (process_pure_responses(adapter)) | 1635 | if (process_pure_responses(adapter)) |
1636 | __netif_rx_schedule(dev, &adapter->napi); | 1636 | __netif_rx_schedule(&adapter->napi); |
1637 | else { | 1637 | else { |
1638 | /* no data, no NAPI needed */ | 1638 | /* no data, no NAPI needed */ |
1639 | writel(sge->respQ.cidx, adapter->regs + A_SG_SLEEPING); | 1639 | writel(sge->respQ.cidx, adapter->regs + A_SG_SLEEPING); |
diff --git a/drivers/net/cpmac.c b/drivers/net/cpmac.c index d39a77cba1af..f66548751c38 100644 --- a/drivers/net/cpmac.c +++ b/drivers/net/cpmac.c | |||
@@ -428,7 +428,7 @@ static int cpmac_poll(struct napi_struct *napi, int budget) | |||
428 | printk(KERN_WARNING "%s: rx: polling, but no queue\n", | 428 | printk(KERN_WARNING "%s: rx: polling, but no queue\n", |
429 | priv->dev->name); | 429 | priv->dev->name); |
430 | spin_unlock(&priv->rx_lock); | 430 | spin_unlock(&priv->rx_lock); |
431 | netif_rx_complete(priv->dev, napi); | 431 | netif_rx_complete(napi); |
432 | return 0; | 432 | return 0; |
433 | } | 433 | } |
434 | 434 | ||
@@ -514,7 +514,7 @@ static int cpmac_poll(struct napi_struct *napi, int budget) | |||
514 | if (processed == 0) { | 514 | if (processed == 0) { |
515 | /* we ran out of packets to read, | 515 | /* we ran out of packets to read, |
516 | * revert to interrupt-driven mode */ | 516 | * revert to interrupt-driven mode */ |
517 | netif_rx_complete(priv->dev, napi); | 517 | netif_rx_complete(napi); |
518 | cpmac_write(priv->regs, CPMAC_RX_INT_ENABLE, 1); | 518 | cpmac_write(priv->regs, CPMAC_RX_INT_ENABLE, 1); |
519 | return 0; | 519 | return 0; |
520 | } | 520 | } |
@@ -536,7 +536,7 @@ fatal_error: | |||
536 | } | 536 | } |
537 | 537 | ||
538 | spin_unlock(&priv->rx_lock); | 538 | spin_unlock(&priv->rx_lock); |
539 | netif_rx_complete(priv->dev, napi); | 539 | netif_rx_complete(napi); |
540 | netif_tx_stop_all_queues(priv->dev); | 540 | netif_tx_stop_all_queues(priv->dev); |
541 | napi_disable(&priv->napi); | 541 | napi_disable(&priv->napi); |
542 | 542 | ||
@@ -802,9 +802,9 @@ static irqreturn_t cpmac_irq(int irq, void *dev_id) | |||
802 | 802 | ||
803 | if (status & MAC_INT_RX) { | 803 | if (status & MAC_INT_RX) { |
804 | queue = (status >> 8) & 7; | 804 | queue = (status >> 8) & 7; |
805 | if (netif_rx_schedule_prep(dev, &priv->napi)) { | 805 | if (netif_rx_schedule_prep(&priv->napi)) { |
806 | cpmac_write(priv->regs, CPMAC_RX_INT_CLEAR, 1 << queue); | 806 | cpmac_write(priv->regs, CPMAC_RX_INT_CLEAR, 1 << queue); |
807 | __netif_rx_schedule(dev, &priv->napi); | 807 | __netif_rx_schedule(&priv->napi); |
808 | } | 808 | } |
809 | } | 809 | } |
810 | 810 | ||
diff --git a/drivers/net/e100.c b/drivers/net/e100.c index dce7ff28c3ff..9f38b16ccbbd 100644 --- a/drivers/net/e100.c +++ b/drivers/net/e100.c | |||
@@ -2049,9 +2049,9 @@ static irqreturn_t e100_intr(int irq, void *dev_id) | |||
2049 | if(stat_ack & stat_ack_rnr) | 2049 | if(stat_ack & stat_ack_rnr) |
2050 | nic->ru_running = RU_SUSPENDED; | 2050 | nic->ru_running = RU_SUSPENDED; |
2051 | 2051 | ||
2052 | if(likely(netif_rx_schedule_prep(netdev, &nic->napi))) { | 2052 | if(likely(netif_rx_schedule_prep(&nic->napi))) { |
2053 | e100_disable_irq(nic); | 2053 | e100_disable_irq(nic); |
2054 | __netif_rx_schedule(netdev, &nic->napi); | 2054 | __netif_rx_schedule(&nic->napi); |
2055 | } | 2055 | } |
2056 | 2056 | ||
2057 | return IRQ_HANDLED; | 2057 | return IRQ_HANDLED; |
@@ -2060,7 +2060,6 @@ static irqreturn_t e100_intr(int irq, void *dev_id) | |||
2060 | static int e100_poll(struct napi_struct *napi, int budget) | 2060 | static int e100_poll(struct napi_struct *napi, int budget) |
2061 | { | 2061 | { |
2062 | struct nic *nic = container_of(napi, struct nic, napi); | 2062 | struct nic *nic = container_of(napi, struct nic, napi); |
2063 | struct net_device *netdev = nic->netdev; | ||
2064 | unsigned int work_done = 0; | 2063 | unsigned int work_done = 0; |
2065 | 2064 | ||
2066 | e100_rx_clean(nic, &work_done, budget); | 2065 | e100_rx_clean(nic, &work_done, budget); |
@@ -2068,7 +2067,7 @@ static int e100_poll(struct napi_struct *napi, int budget) | |||
2068 | 2067 | ||
2069 | /* If budget not fully consumed, exit the polling mode */ | 2068 | /* If budget not fully consumed, exit the polling mode */ |
2070 | if (work_done < budget) { | 2069 | if (work_done < budget) { |
2071 | netif_rx_complete(netdev, napi); | 2070 | netif_rx_complete(napi); |
2072 | e100_enable_irq(nic); | 2071 | e100_enable_irq(nic); |
2073 | } | 2072 | } |
2074 | 2073 | ||
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index 116c96e0b119..26474c92193f 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c | |||
@@ -3687,12 +3687,12 @@ static irqreturn_t e1000_intr_msi(int irq, void *data) | |||
3687 | mod_timer(&adapter->watchdog_timer, jiffies + 1); | 3687 | mod_timer(&adapter->watchdog_timer, jiffies + 1); |
3688 | } | 3688 | } |
3689 | 3689 | ||
3690 | if (likely(netif_rx_schedule_prep(netdev, &adapter->napi))) { | 3690 | if (likely(netif_rx_schedule_prep(&adapter->napi))) { |
3691 | adapter->total_tx_bytes = 0; | 3691 | adapter->total_tx_bytes = 0; |
3692 | adapter->total_tx_packets = 0; | 3692 | adapter->total_tx_packets = 0; |
3693 | adapter->total_rx_bytes = 0; | 3693 | adapter->total_rx_bytes = 0; |
3694 | adapter->total_rx_packets = 0; | 3694 | adapter->total_rx_packets = 0; |
3695 | __netif_rx_schedule(netdev, &adapter->napi); | 3695 | __netif_rx_schedule(&adapter->napi); |
3696 | } else | 3696 | } else |
3697 | e1000_irq_enable(adapter); | 3697 | e1000_irq_enable(adapter); |
3698 | 3698 | ||
@@ -3747,12 +3747,12 @@ static irqreturn_t e1000_intr(int irq, void *data) | |||
3747 | ew32(IMC, ~0); | 3747 | ew32(IMC, ~0); |
3748 | E1000_WRITE_FLUSH(); | 3748 | E1000_WRITE_FLUSH(); |
3749 | } | 3749 | } |
3750 | if (likely(netif_rx_schedule_prep(netdev, &adapter->napi))) { | 3750 | if (likely(netif_rx_schedule_prep(&adapter->napi))) { |
3751 | adapter->total_tx_bytes = 0; | 3751 | adapter->total_tx_bytes = 0; |
3752 | adapter->total_tx_packets = 0; | 3752 | adapter->total_tx_packets = 0; |
3753 | adapter->total_rx_bytes = 0; | 3753 | adapter->total_rx_bytes = 0; |
3754 | adapter->total_rx_packets = 0; | 3754 | adapter->total_rx_packets = 0; |
3755 | __netif_rx_schedule(netdev, &adapter->napi); | 3755 | __netif_rx_schedule(&adapter->napi); |
3756 | } else | 3756 | } else |
3757 | /* this really should not happen! if it does it is basically a | 3757 | /* this really should not happen! if it does it is basically a |
3758 | * bug, but not a hard error, so enable ints and continue */ | 3758 | * bug, but not a hard error, so enable ints and continue */ |
@@ -3793,7 +3793,7 @@ static int e1000_clean(struct napi_struct *napi, int budget) | |||
3793 | if (work_done < budget) { | 3793 | if (work_done < budget) { |
3794 | if (likely(adapter->itr_setting & 3)) | 3794 | if (likely(adapter->itr_setting & 3)) |
3795 | e1000_set_itr(adapter); | 3795 | e1000_set_itr(adapter); |
3796 | netif_rx_complete(poll_dev, napi); | 3796 | netif_rx_complete(napi); |
3797 | e1000_irq_enable(adapter); | 3797 | e1000_irq_enable(adapter); |
3798 | } | 3798 | } |
3799 | 3799 | ||
diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c index f7b05609073d..d4639facd1bd 100644 --- a/drivers/net/e1000e/netdev.c +++ b/drivers/net/e1000e/netdev.c | |||
@@ -1179,12 +1179,12 @@ static irqreturn_t e1000_intr_msi(int irq, void *data) | |||
1179 | mod_timer(&adapter->watchdog_timer, jiffies + 1); | 1179 | mod_timer(&adapter->watchdog_timer, jiffies + 1); |
1180 | } | 1180 | } |
1181 | 1181 | ||
1182 | if (netif_rx_schedule_prep(netdev, &adapter->napi)) { | 1182 | if (netif_rx_schedule_prep(&adapter->napi)) { |
1183 | adapter->total_tx_bytes = 0; | 1183 | adapter->total_tx_bytes = 0; |
1184 | adapter->total_tx_packets = 0; | 1184 | adapter->total_tx_packets = 0; |
1185 | adapter->total_rx_bytes = 0; | 1185 | adapter->total_rx_bytes = 0; |
1186 | adapter->total_rx_packets = 0; | 1186 | adapter->total_rx_packets = 0; |
1187 | __netif_rx_schedule(netdev, &adapter->napi); | 1187 | __netif_rx_schedule(&adapter->napi); |
1188 | } | 1188 | } |
1189 | 1189 | ||
1190 | return IRQ_HANDLED; | 1190 | return IRQ_HANDLED; |
@@ -1246,12 +1246,12 @@ static irqreturn_t e1000_intr(int irq, void *data) | |||
1246 | mod_timer(&adapter->watchdog_timer, jiffies + 1); | 1246 | mod_timer(&adapter->watchdog_timer, jiffies + 1); |
1247 | } | 1247 | } |
1248 | 1248 | ||
1249 | if (netif_rx_schedule_prep(netdev, &adapter->napi)) { | 1249 | if (netif_rx_schedule_prep(&adapter->napi)) { |
1250 | adapter->total_tx_bytes = 0; | 1250 | adapter->total_tx_bytes = 0; |
1251 | adapter->total_tx_packets = 0; | 1251 | adapter->total_tx_packets = 0; |
1252 | adapter->total_rx_bytes = 0; | 1252 | adapter->total_rx_bytes = 0; |
1253 | adapter->total_rx_packets = 0; | 1253 | adapter->total_rx_packets = 0; |
1254 | __netif_rx_schedule(netdev, &adapter->napi); | 1254 | __netif_rx_schedule(&adapter->napi); |
1255 | } | 1255 | } |
1256 | 1256 | ||
1257 | return IRQ_HANDLED; | 1257 | return IRQ_HANDLED; |
@@ -1320,10 +1320,10 @@ static irqreturn_t e1000_intr_msix_rx(int irq, void *data) | |||
1320 | adapter->rx_ring->set_itr = 0; | 1320 | adapter->rx_ring->set_itr = 0; |
1321 | } | 1321 | } |
1322 | 1322 | ||
1323 | if (netif_rx_schedule_prep(netdev, &adapter->napi)) { | 1323 | if (netif_rx_schedule_prep(&adapter->napi)) { |
1324 | adapter->total_rx_bytes = 0; | 1324 | adapter->total_rx_bytes = 0; |
1325 | adapter->total_rx_packets = 0; | 1325 | adapter->total_rx_packets = 0; |
1326 | __netif_rx_schedule(netdev, &adapter->napi); | 1326 | __netif_rx_schedule(&adapter->napi); |
1327 | } | 1327 | } |
1328 | return IRQ_HANDLED; | 1328 | return IRQ_HANDLED; |
1329 | } | 1329 | } |
@@ -2028,7 +2028,7 @@ clean_rx: | |||
2028 | if (work_done < budget) { | 2028 | if (work_done < budget) { |
2029 | if (adapter->itr_setting & 3) | 2029 | if (adapter->itr_setting & 3) |
2030 | e1000_set_itr(adapter); | 2030 | e1000_set_itr(adapter); |
2031 | netif_rx_complete(poll_dev, napi); | 2031 | netif_rx_complete(napi); |
2032 | if (adapter->msix_entries) | 2032 | if (adapter->msix_entries) |
2033 | ew32(IMS, adapter->rx_ring->ims_val); | 2033 | ew32(IMS, adapter->rx_ring->ims_val); |
2034 | else | 2034 | else |
diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c index 44c9ae18383f..035aa7dfc5cd 100644 --- a/drivers/net/ehea/ehea_main.c +++ b/drivers/net/ehea/ehea_main.c | |||
@@ -830,7 +830,7 @@ static int ehea_poll(struct napi_struct *napi, int budget) | |||
830 | while ((rx != budget) || force_irq) { | 830 | while ((rx != budget) || force_irq) { |
831 | pr->poll_counter = 0; | 831 | pr->poll_counter = 0; |
832 | force_irq = 0; | 832 | force_irq = 0; |
833 | netif_rx_complete(dev, napi); | 833 | netif_rx_complete(napi); |
834 | ehea_reset_cq_ep(pr->recv_cq); | 834 | ehea_reset_cq_ep(pr->recv_cq); |
835 | ehea_reset_cq_ep(pr->send_cq); | 835 | ehea_reset_cq_ep(pr->send_cq); |
836 | ehea_reset_cq_n1(pr->recv_cq); | 836 | ehea_reset_cq_n1(pr->recv_cq); |
@@ -859,7 +859,7 @@ static void ehea_netpoll(struct net_device *dev) | |||
859 | int i; | 859 | int i; |
860 | 860 | ||
861 | for (i = 0; i < port->num_def_qps; i++) | 861 | for (i = 0; i < port->num_def_qps; i++) |
862 | netif_rx_schedule(dev, &port->port_res[i].napi); | 862 | netif_rx_schedule(&port->port_res[i].napi); |
863 | } | 863 | } |
864 | #endif | 864 | #endif |
865 | 865 | ||
@@ -867,7 +867,7 @@ static irqreturn_t ehea_recv_irq_handler(int irq, void *param) | |||
867 | { | 867 | { |
868 | struct ehea_port_res *pr = param; | 868 | struct ehea_port_res *pr = param; |
869 | 869 | ||
870 | netif_rx_schedule(pr->port->netdev, &pr->napi); | 870 | netif_rx_schedule(&pr->napi); |
871 | 871 | ||
872 | return IRQ_HANDLED; | 872 | return IRQ_HANDLED; |
873 | } | 873 | } |
diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c index deddd76a550c..d039e16f2763 100644 --- a/drivers/net/enic/enic_main.c +++ b/drivers/net/enic/enic_main.c | |||
@@ -411,8 +411,8 @@ static irqreturn_t enic_isr_legacy(int irq, void *data) | |||
411 | } | 411 | } |
412 | 412 | ||
413 | if (ENIC_TEST_INTR(pba, ENIC_INTX_WQ_RQ)) { | 413 | if (ENIC_TEST_INTR(pba, ENIC_INTX_WQ_RQ)) { |
414 | if (netif_rx_schedule_prep(netdev, &enic->napi)) | 414 | if (netif_rx_schedule_prep(&enic->napi)) |
415 | __netif_rx_schedule(netdev, &enic->napi); | 415 | __netif_rx_schedule(&enic->napi); |
416 | } else { | 416 | } else { |
417 | vnic_intr_unmask(&enic->intr[ENIC_INTX_WQ_RQ]); | 417 | vnic_intr_unmask(&enic->intr[ENIC_INTX_WQ_RQ]); |
418 | } | 418 | } |
@@ -440,7 +440,7 @@ static irqreturn_t enic_isr_msi(int irq, void *data) | |||
440 | * writes). | 440 | * writes). |
441 | */ | 441 | */ |
442 | 442 | ||
443 | netif_rx_schedule(enic->netdev, &enic->napi); | 443 | netif_rx_schedule(&enic->napi); |
444 | 444 | ||
445 | return IRQ_HANDLED; | 445 | return IRQ_HANDLED; |
446 | } | 446 | } |
@@ -450,7 +450,7 @@ static irqreturn_t enic_isr_msix_rq(int irq, void *data) | |||
450 | struct enic *enic = data; | 450 | struct enic *enic = data; |
451 | 451 | ||
452 | /* schedule NAPI polling for RQ cleanup */ | 452 | /* schedule NAPI polling for RQ cleanup */ |
453 | netif_rx_schedule(enic->netdev, &enic->napi); | 453 | netif_rx_schedule(&enic->napi); |
454 | 454 | ||
455 | return IRQ_HANDLED; | 455 | return IRQ_HANDLED; |
456 | } | 456 | } |
@@ -1068,7 +1068,7 @@ static int enic_poll(struct napi_struct *napi, int budget) | |||
1068 | if (netdev->features & NETIF_F_LRO) | 1068 | if (netdev->features & NETIF_F_LRO) |
1069 | lro_flush_all(&enic->lro_mgr); | 1069 | lro_flush_all(&enic->lro_mgr); |
1070 | 1070 | ||
1071 | netif_rx_complete(netdev, napi); | 1071 | netif_rx_complete(napi); |
1072 | vnic_intr_unmask(&enic->intr[ENIC_MSIX_RQ]); | 1072 | vnic_intr_unmask(&enic->intr[ENIC_MSIX_RQ]); |
1073 | } | 1073 | } |
1074 | 1074 | ||
@@ -1112,7 +1112,7 @@ static int enic_poll_msix(struct napi_struct *napi, int budget) | |||
1112 | if (netdev->features & NETIF_F_LRO) | 1112 | if (netdev->features & NETIF_F_LRO) |
1113 | lro_flush_all(&enic->lro_mgr); | 1113 | lro_flush_all(&enic->lro_mgr); |
1114 | 1114 | ||
1115 | netif_rx_complete(netdev, napi); | 1115 | netif_rx_complete(napi); |
1116 | vnic_intr_unmask(&enic->intr[ENIC_MSIX_RQ]); | 1116 | vnic_intr_unmask(&enic->intr[ENIC_MSIX_RQ]); |
1117 | } | 1117 | } |
1118 | 1118 | ||
diff --git a/drivers/net/epic100.c b/drivers/net/epic100.c index 4a951b8cb4d7..f9b37c80dda6 100644 --- a/drivers/net/epic100.c +++ b/drivers/net/epic100.c | |||
@@ -1109,9 +1109,9 @@ static irqreturn_t epic_interrupt(int irq, void *dev_instance) | |||
1109 | 1109 | ||
1110 | if ((status & EpicNapiEvent) && !ep->reschedule_in_poll) { | 1110 | if ((status & EpicNapiEvent) && !ep->reschedule_in_poll) { |
1111 | spin_lock(&ep->napi_lock); | 1111 | spin_lock(&ep->napi_lock); |
1112 | if (netif_rx_schedule_prep(dev, &ep->napi)) { | 1112 | if (netif_rx_schedule_prep(&ep->napi)) { |
1113 | epic_napi_irq_off(dev, ep); | 1113 | epic_napi_irq_off(dev, ep); |
1114 | __netif_rx_schedule(dev, &ep->napi); | 1114 | __netif_rx_schedule(&ep->napi); |
1115 | } else | 1115 | } else |
1116 | ep->reschedule_in_poll++; | 1116 | ep->reschedule_in_poll++; |
1117 | spin_unlock(&ep->napi_lock); | 1117 | spin_unlock(&ep->napi_lock); |
@@ -1288,7 +1288,7 @@ rx_action: | |||
1288 | 1288 | ||
1289 | more = ep->reschedule_in_poll; | 1289 | more = ep->reschedule_in_poll; |
1290 | if (!more) { | 1290 | if (!more) { |
1291 | __netif_rx_complete(dev, napi); | 1291 | __netif_rx_complete(napi); |
1292 | outl(EpicNapiEvent, ioaddr + INTSTAT); | 1292 | outl(EpicNapiEvent, ioaddr + INTSTAT); |
1293 | epic_napi_irq_on(dev, ep); | 1293 | epic_napi_irq_on(dev, ep); |
1294 | } else | 1294 | } else |
diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c index 1f2b24743ee9..9fbfa856ae5b 100644 --- a/drivers/net/forcedeth.c +++ b/drivers/net/forcedeth.c | |||
@@ -1760,7 +1760,7 @@ static void nv_do_rx_refill(unsigned long data) | |||
1760 | struct fe_priv *np = netdev_priv(dev); | 1760 | struct fe_priv *np = netdev_priv(dev); |
1761 | 1761 | ||
1762 | /* Just reschedule NAPI rx processing */ | 1762 | /* Just reschedule NAPI rx processing */ |
1763 | netif_rx_schedule(dev, &np->napi); | 1763 | netif_rx_schedule(&np->napi); |
1764 | } | 1764 | } |
1765 | #else | 1765 | #else |
1766 | static void nv_do_rx_refill(unsigned long data) | 1766 | static void nv_do_rx_refill(unsigned long data) |
@@ -3403,7 +3403,7 @@ static irqreturn_t nv_nic_irq(int foo, void *data) | |||
3403 | 3403 | ||
3404 | #ifdef CONFIG_FORCEDETH_NAPI | 3404 | #ifdef CONFIG_FORCEDETH_NAPI |
3405 | if (events & NVREG_IRQ_RX_ALL) { | 3405 | if (events & NVREG_IRQ_RX_ALL) { |
3406 | netif_rx_schedule(dev, &np->napi); | 3406 | netif_rx_schedule(&np->napi); |
3407 | 3407 | ||
3408 | /* Disable furthur receive irq's */ | 3408 | /* Disable furthur receive irq's */ |
3409 | spin_lock(&np->lock); | 3409 | spin_lock(&np->lock); |
@@ -3520,7 +3520,7 @@ static irqreturn_t nv_nic_irq_optimized(int foo, void *data) | |||
3520 | 3520 | ||
3521 | #ifdef CONFIG_FORCEDETH_NAPI | 3521 | #ifdef CONFIG_FORCEDETH_NAPI |
3522 | if (events & NVREG_IRQ_RX_ALL) { | 3522 | if (events & NVREG_IRQ_RX_ALL) { |
3523 | netif_rx_schedule(dev, &np->napi); | 3523 | netif_rx_schedule(&np->napi); |
3524 | 3524 | ||
3525 | /* Disable furthur receive irq's */ | 3525 | /* Disable furthur receive irq's */ |
3526 | spin_lock(&np->lock); | 3526 | spin_lock(&np->lock); |
@@ -3678,7 +3678,7 @@ static int nv_napi_poll(struct napi_struct *napi, int budget) | |||
3678 | /* re-enable receive interrupts */ | 3678 | /* re-enable receive interrupts */ |
3679 | spin_lock_irqsave(&np->lock, flags); | 3679 | spin_lock_irqsave(&np->lock, flags); |
3680 | 3680 | ||
3681 | __netif_rx_complete(dev, napi); | 3681 | __netif_rx_complete(napi); |
3682 | 3682 | ||
3683 | np->irqmask |= NVREG_IRQ_RX_ALL; | 3683 | np->irqmask |= NVREG_IRQ_RX_ALL; |
3684 | if (np->msi_flags & NV_MSI_X_ENABLED) | 3684 | if (np->msi_flags & NV_MSI_X_ENABLED) |
@@ -3704,7 +3704,7 @@ static irqreturn_t nv_nic_irq_rx(int foo, void *data) | |||
3704 | writel(NVREG_IRQ_RX_ALL, base + NvRegMSIXIrqStatus); | 3704 | writel(NVREG_IRQ_RX_ALL, base + NvRegMSIXIrqStatus); |
3705 | 3705 | ||
3706 | if (events) { | 3706 | if (events) { |
3707 | netif_rx_schedule(dev, &np->napi); | 3707 | netif_rx_schedule(&np->napi); |
3708 | /* disable receive interrupts on the nic */ | 3708 | /* disable receive interrupts on the nic */ |
3709 | writel(NVREG_IRQ_RX_ALL, base + NvRegIrqMask); | 3709 | writel(NVREG_IRQ_RX_ALL, base + NvRegIrqMask); |
3710 | pci_push(base); | 3710 | pci_push(base); |
diff --git a/drivers/net/fs_enet/fs_enet-main.c b/drivers/net/fs_enet/fs_enet-main.c index df66d620b115..4e6a9195fe5f 100644 --- a/drivers/net/fs_enet/fs_enet-main.c +++ b/drivers/net/fs_enet/fs_enet-main.c | |||
@@ -209,7 +209,7 @@ static int fs_enet_rx_napi(struct napi_struct *napi, int budget) | |||
209 | 209 | ||
210 | if (received < budget) { | 210 | if (received < budget) { |
211 | /* done */ | 211 | /* done */ |
212 | netif_rx_complete(dev, napi); | 212 | netif_rx_complete(napi); |
213 | (*fep->ops->napi_enable_rx)(dev); | 213 | (*fep->ops->napi_enable_rx)(dev); |
214 | } | 214 | } |
215 | return received; | 215 | return received; |
@@ -478,7 +478,7 @@ fs_enet_interrupt(int irq, void *dev_id) | |||
478 | /* NOTE: it is possible for FCCs in NAPI mode */ | 478 | /* NOTE: it is possible for FCCs in NAPI mode */ |
479 | /* to submit a spurious interrupt while in poll */ | 479 | /* to submit a spurious interrupt while in poll */ |
480 | if (napi_ok) | 480 | if (napi_ok) |
481 | __netif_rx_schedule(dev, &fep->napi); | 481 | __netif_rx_schedule(&fep->napi); |
482 | } | 482 | } |
483 | } | 483 | } |
484 | 484 | ||
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c index 13f49643ba0b..c672ecfc9595 100644 --- a/drivers/net/gianfar.c +++ b/drivers/net/gianfar.c | |||
@@ -1607,9 +1607,9 @@ static int gfar_clean_tx_ring(struct net_device *dev) | |||
1607 | static void gfar_schedule_cleanup(struct net_device *dev) | 1607 | static void gfar_schedule_cleanup(struct net_device *dev) |
1608 | { | 1608 | { |
1609 | struct gfar_private *priv = netdev_priv(dev); | 1609 | struct gfar_private *priv = netdev_priv(dev); |
1610 | if (netif_rx_schedule_prep(dev, &priv->napi)) { | 1610 | if (netif_rx_schedule_prep(&priv->napi)) { |
1611 | gfar_write(&priv->regs->imask, IMASK_RTX_DISABLED); | 1611 | gfar_write(&priv->regs->imask, IMASK_RTX_DISABLED); |
1612 | __netif_rx_schedule(dev, &priv->napi); | 1612 | __netif_rx_schedule(&priv->napi); |
1613 | } | 1613 | } |
1614 | } | 1614 | } |
1615 | 1615 | ||
@@ -1863,7 +1863,7 @@ static int gfar_poll(struct napi_struct *napi, int budget) | |||
1863 | return budget; | 1863 | return budget; |
1864 | 1864 | ||
1865 | if (rx_cleaned < budget) { | 1865 | if (rx_cleaned < budget) { |
1866 | netif_rx_complete(dev, napi); | 1866 | netif_rx_complete(napi); |
1867 | 1867 | ||
1868 | /* Clear the halt bit in RSTAT */ | 1868 | /* Clear the halt bit in RSTAT */ |
1869 | gfar_write(&priv->regs->rstat, RSTAT_CLEAR_RHALT); | 1869 | gfar_write(&priv->regs->rstat, RSTAT_CLEAR_RHALT); |
diff --git a/drivers/net/ibmveth.c b/drivers/net/ibmveth.c index 02ecfdb4df6b..1f055a955089 100644 --- a/drivers/net/ibmveth.c +++ b/drivers/net/ibmveth.c | |||
@@ -1028,7 +1028,7 @@ static int ibmveth_poll(struct napi_struct *napi, int budget) | |||
1028 | 1028 | ||
1029 | ibmveth_assert(lpar_rc == H_SUCCESS); | 1029 | ibmveth_assert(lpar_rc == H_SUCCESS); |
1030 | 1030 | ||
1031 | netif_rx_complete(netdev, napi); | 1031 | netif_rx_complete(napi); |
1032 | 1032 | ||
1033 | if (ibmveth_rxq_pending_buffer(adapter) && | 1033 | if (ibmveth_rxq_pending_buffer(adapter) && |
1034 | netif_rx_reschedule(netdev, napi)) { | 1034 | netif_rx_reschedule(netdev, napi)) { |
@@ -1047,11 +1047,11 @@ static irqreturn_t ibmveth_interrupt(int irq, void *dev_instance) | |||
1047 | struct ibmveth_adapter *adapter = netdev_priv(netdev); | 1047 | struct ibmveth_adapter *adapter = netdev_priv(netdev); |
1048 | unsigned long lpar_rc; | 1048 | unsigned long lpar_rc; |
1049 | 1049 | ||
1050 | if (netif_rx_schedule_prep(netdev, &adapter->napi)) { | 1050 | if (netif_rx_schedule_prep(&adapter->napi)) { |
1051 | lpar_rc = h_vio_signal(adapter->vdev->unit_address, | 1051 | lpar_rc = h_vio_signal(adapter->vdev->unit_address, |
1052 | VIO_IRQ_DISABLE); | 1052 | VIO_IRQ_DISABLE); |
1053 | ibmveth_assert(lpar_rc == H_SUCCESS); | 1053 | ibmveth_assert(lpar_rc == H_SUCCESS); |
1054 | __netif_rx_schedule(netdev, &adapter->napi); | 1054 | __netif_rx_schedule(&adapter->napi); |
1055 | } | 1055 | } |
1056 | return IRQ_HANDLED; | 1056 | return IRQ_HANDLED; |
1057 | } | 1057 | } |
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c index 25df7c931064..6a40d9486daf 100644 --- a/drivers/net/igb/igb_main.c +++ b/drivers/net/igb/igb_main.c | |||
@@ -3347,8 +3347,8 @@ static irqreturn_t igb_msix_rx(int irq, void *data) | |||
3347 | 3347 | ||
3348 | igb_write_itr(rx_ring); | 3348 | igb_write_itr(rx_ring); |
3349 | 3349 | ||
3350 | if (netif_rx_schedule_prep(adapter->netdev, &rx_ring->napi)) | 3350 | if (netif_rx_schedule_prep(&rx_ring->napi)) |
3351 | __netif_rx_schedule(adapter->netdev, &rx_ring->napi); | 3351 | __netif_rx_schedule(&rx_ring->napi); |
3352 | 3352 | ||
3353 | #ifdef CONFIG_IGB_DCA | 3353 | #ifdef CONFIG_IGB_DCA |
3354 | if (adapter->flags & IGB_FLAG_DCA_ENABLED) | 3354 | if (adapter->flags & IGB_FLAG_DCA_ENABLED) |
@@ -3500,7 +3500,7 @@ static irqreturn_t igb_intr_msi(int irq, void *data) | |||
3500 | mod_timer(&adapter->watchdog_timer, jiffies + 1); | 3500 | mod_timer(&adapter->watchdog_timer, jiffies + 1); |
3501 | } | 3501 | } |
3502 | 3502 | ||
3503 | netif_rx_schedule(netdev, &adapter->rx_ring[0].napi); | 3503 | netif_rx_schedule(&adapter->rx_ring[0].napi); |
3504 | 3504 | ||
3505 | return IRQ_HANDLED; | 3505 | return IRQ_HANDLED; |
3506 | } | 3506 | } |
@@ -3538,7 +3538,7 @@ static irqreturn_t igb_intr(int irq, void *data) | |||
3538 | mod_timer(&adapter->watchdog_timer, jiffies + 1); | 3538 | mod_timer(&adapter->watchdog_timer, jiffies + 1); |
3539 | } | 3539 | } |
3540 | 3540 | ||
3541 | netif_rx_schedule(netdev, &adapter->rx_ring[0].napi); | 3541 | netif_rx_schedule(&adapter->rx_ring[0].napi); |
3542 | 3542 | ||
3543 | return IRQ_HANDLED; | 3543 | return IRQ_HANDLED; |
3544 | } | 3544 | } |
@@ -3573,7 +3573,7 @@ static int igb_poll(struct napi_struct *napi, int budget) | |||
3573 | !netif_running(netdev)) { | 3573 | !netif_running(netdev)) { |
3574 | if (adapter->itr_setting & 3) | 3574 | if (adapter->itr_setting & 3) |
3575 | igb_set_itr(adapter); | 3575 | igb_set_itr(adapter); |
3576 | netif_rx_complete(netdev, napi); | 3576 | netif_rx_complete(napi); |
3577 | if (!test_bit(__IGB_DOWN, &adapter->state)) | 3577 | if (!test_bit(__IGB_DOWN, &adapter->state)) |
3578 | igb_irq_enable(adapter); | 3578 | igb_irq_enable(adapter); |
3579 | return 0; | 3579 | return 0; |
@@ -3599,7 +3599,7 @@ static int igb_clean_rx_ring_msix(struct napi_struct *napi, int budget) | |||
3599 | 3599 | ||
3600 | /* If not enough Rx work done, exit the polling mode */ | 3600 | /* If not enough Rx work done, exit the polling mode */ |
3601 | if ((work_done == 0) || !netif_running(netdev)) { | 3601 | if ((work_done == 0) || !netif_running(netdev)) { |
3602 | netif_rx_complete(netdev, napi); | 3602 | netif_rx_complete(napi); |
3603 | 3603 | ||
3604 | if (adapter->itr_setting & 3) { | 3604 | if (adapter->itr_setting & 3) { |
3605 | if (adapter->num_rx_queues == 1) | 3605 | if (adapter->num_rx_queues == 1) |
diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c index 820a92cc7f62..679125b3bbc9 100644 --- a/drivers/net/ixgb/ixgb_main.c +++ b/drivers/net/ixgb/ixgb_main.c | |||
@@ -1721,14 +1721,14 @@ ixgb_intr(int irq, void *data) | |||
1721 | if (!test_bit(__IXGB_DOWN, &adapter->flags)) | 1721 | if (!test_bit(__IXGB_DOWN, &adapter->flags)) |
1722 | mod_timer(&adapter->watchdog_timer, jiffies); | 1722 | mod_timer(&adapter->watchdog_timer, jiffies); |
1723 | 1723 | ||
1724 | if (netif_rx_schedule_prep(netdev, &adapter->napi)) { | 1724 | if (netif_rx_schedule_prep(&adapter->napi)) { |
1725 | 1725 | ||
1726 | /* Disable interrupts and register for poll. The flush | 1726 | /* Disable interrupts and register for poll. The flush |
1727 | of the posted write is intentionally left out. | 1727 | of the posted write is intentionally left out. |
1728 | */ | 1728 | */ |
1729 | 1729 | ||
1730 | IXGB_WRITE_REG(&adapter->hw, IMC, ~0); | 1730 | IXGB_WRITE_REG(&adapter->hw, IMC, ~0); |
1731 | __netif_rx_schedule(netdev, &adapter->napi); | 1731 | __netif_rx_schedule(&adapter->napi); |
1732 | } | 1732 | } |
1733 | return IRQ_HANDLED; | 1733 | return IRQ_HANDLED; |
1734 | } | 1734 | } |
@@ -1750,7 +1750,7 @@ ixgb_clean(struct napi_struct *napi, int budget) | |||
1750 | 1750 | ||
1751 | /* If budget not fully consumed, exit the polling mode */ | 1751 | /* If budget not fully consumed, exit the polling mode */ |
1752 | if (work_done < budget) { | 1752 | if (work_done < budget) { |
1753 | netif_rx_complete(netdev, napi); | 1753 | netif_rx_complete(napi); |
1754 | if (!test_bit(__IXGB_DOWN, &adapter->flags)) | 1754 | if (!test_bit(__IXGB_DOWN, &adapter->flags)) |
1755 | ixgb_irq_enable(adapter); | 1755 | ixgb_irq_enable(adapter); |
1756 | } | 1756 | } |
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index 92b35cfc7a46..b6ae9f674ba5 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c | |||
@@ -1012,7 +1012,7 @@ static irqreturn_t ixgbe_msix_clean_rx(int irq, void *data) | |||
1012 | rx_ring = &(adapter->rx_ring[r_idx]); | 1012 | rx_ring = &(adapter->rx_ring[r_idx]); |
1013 | /* disable interrupts on this vector only */ | 1013 | /* disable interrupts on this vector only */ |
1014 | IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMC, rx_ring->v_idx); | 1014 | IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMC, rx_ring->v_idx); |
1015 | netif_rx_schedule(adapter->netdev, &q_vector->napi); | 1015 | netif_rx_schedule(&q_vector->napi); |
1016 | 1016 | ||
1017 | return IRQ_HANDLED; | 1017 | return IRQ_HANDLED; |
1018 | } | 1018 | } |
@@ -1053,7 +1053,7 @@ static int ixgbe_clean_rxonly(struct napi_struct *napi, int budget) | |||
1053 | 1053 | ||
1054 | /* If all Rx work done, exit the polling mode */ | 1054 | /* If all Rx work done, exit the polling mode */ |
1055 | if (work_done < budget) { | 1055 | if (work_done < budget) { |
1056 | netif_rx_complete(adapter->netdev, napi); | 1056 | netif_rx_complete(napi); |
1057 | if (adapter->itr_setting & 3) | 1057 | if (adapter->itr_setting & 3) |
1058 | ixgbe_set_itr_msix(q_vector); | 1058 | ixgbe_set_itr_msix(q_vector); |
1059 | if (!test_bit(__IXGBE_DOWN, &adapter->state)) | 1059 | if (!test_bit(__IXGBE_DOWN, &adapter->state)) |
@@ -1102,7 +1102,7 @@ static int ixgbe_clean_rxonly_many(struct napi_struct *napi, int budget) | |||
1102 | rx_ring = &(adapter->rx_ring[r_idx]); | 1102 | rx_ring = &(adapter->rx_ring[r_idx]); |
1103 | /* If all Rx work done, exit the polling mode */ | 1103 | /* If all Rx work done, exit the polling mode */ |
1104 | if (work_done < budget) { | 1104 | if (work_done < budget) { |
1105 | netif_rx_complete(adapter->netdev, napi); | 1105 | netif_rx_complete(napi); |
1106 | if (adapter->itr_setting & 3) | 1106 | if (adapter->itr_setting & 3) |
1107 | ixgbe_set_itr_msix(q_vector); | 1107 | ixgbe_set_itr_msix(q_vector); |
1108 | if (!test_bit(__IXGBE_DOWN, &adapter->state)) | 1108 | if (!test_bit(__IXGBE_DOWN, &adapter->state)) |
@@ -1378,13 +1378,13 @@ static irqreturn_t ixgbe_intr(int irq, void *data) | |||
1378 | 1378 | ||
1379 | ixgbe_check_fan_failure(adapter, eicr); | 1379 | ixgbe_check_fan_failure(adapter, eicr); |
1380 | 1380 | ||
1381 | if (netif_rx_schedule_prep(netdev, &adapter->q_vector[0].napi)) { | 1381 | if (netif_rx_schedule_prep(&adapter->q_vector[0].napi)) { |
1382 | adapter->tx_ring[0].total_packets = 0; | 1382 | adapter->tx_ring[0].total_packets = 0; |
1383 | adapter->tx_ring[0].total_bytes = 0; | 1383 | adapter->tx_ring[0].total_bytes = 0; |
1384 | adapter->rx_ring[0].total_packets = 0; | 1384 | adapter->rx_ring[0].total_packets = 0; |
1385 | adapter->rx_ring[0].total_bytes = 0; | 1385 | adapter->rx_ring[0].total_bytes = 0; |
1386 | /* would disable interrupts here but EIAM disabled it */ | 1386 | /* would disable interrupts here but EIAM disabled it */ |
1387 | __netif_rx_schedule(netdev, &adapter->q_vector[0].napi); | 1387 | __netif_rx_schedule(&adapter->q_vector[0].napi); |
1388 | } | 1388 | } |
1389 | 1389 | ||
1390 | return IRQ_HANDLED; | 1390 | return IRQ_HANDLED; |
@@ -2308,7 +2308,7 @@ static int ixgbe_poll(struct napi_struct *napi, int budget) | |||
2308 | 2308 | ||
2309 | /* If budget not fully consumed, exit the polling mode */ | 2309 | /* If budget not fully consumed, exit the polling mode */ |
2310 | if (work_done < budget) { | 2310 | if (work_done < budget) { |
2311 | netif_rx_complete(adapter->netdev, napi); | 2311 | netif_rx_complete(napi); |
2312 | if (adapter->itr_setting & 3) | 2312 | if (adapter->itr_setting & 3) |
2313 | ixgbe_set_itr(adapter); | 2313 | ixgbe_set_itr(adapter); |
2314 | if (!test_bit(__IXGBE_DOWN, &adapter->state)) | 2314 | if (!test_bit(__IXGBE_DOWN, &adapter->state)) |
diff --git a/drivers/net/ixp2000/ixpdev.c b/drivers/net/ixp2000/ixpdev.c index bd96dbc8e021..014745720560 100644 --- a/drivers/net/ixp2000/ixpdev.c +++ b/drivers/net/ixp2000/ixpdev.c | |||
@@ -141,7 +141,7 @@ static int ixpdev_poll(struct napi_struct *napi, int budget) | |||
141 | break; | 141 | break; |
142 | } while (ixp2000_reg_read(IXP2000_IRQ_THD_RAW_STATUS_A_0) & 0x00ff); | 142 | } while (ixp2000_reg_read(IXP2000_IRQ_THD_RAW_STATUS_A_0) & 0x00ff); |
143 | 143 | ||
144 | netif_rx_complete(dev, napi); | 144 | netif_rx_complete(napi); |
145 | ixp2000_reg_write(IXP2000_IRQ_THD_ENABLE_SET_A_0, 0x00ff); | 145 | ixp2000_reg_write(IXP2000_IRQ_THD_ENABLE_SET_A_0, 0x00ff); |
146 | 146 | ||
147 | return rx; | 147 | return rx; |
@@ -204,7 +204,7 @@ static irqreturn_t ixpdev_interrupt(int irq, void *dev_id) | |||
204 | 204 | ||
205 | ixp2000_reg_wrb(IXP2000_IRQ_THD_ENABLE_CLEAR_A_0, 0x00ff); | 205 | ixp2000_reg_wrb(IXP2000_IRQ_THD_ENABLE_CLEAR_A_0, 0x00ff); |
206 | if (likely(napi_schedule_prep(&ip->napi))) { | 206 | if (likely(napi_schedule_prep(&ip->napi))) { |
207 | __netif_rx_schedule(dev, &ip->napi); | 207 | __netif_rx_schedule(&ip->napi); |
208 | } else { | 208 | } else { |
209 | printk(KERN_CRIT "ixp2000: irq while polling!!\n"); | 209 | printk(KERN_CRIT "ixp2000: irq while polling!!\n"); |
210 | } | 210 | } |
diff --git a/drivers/net/jme.c b/drivers/net/jme.c index 15035cb1738a..08b34051c646 100644 --- a/drivers/net/jme.c +++ b/drivers/net/jme.c | |||
@@ -1250,7 +1250,6 @@ static int | |||
1250 | jme_poll(JME_NAPI_HOLDER(holder), JME_NAPI_WEIGHT(budget)) | 1250 | jme_poll(JME_NAPI_HOLDER(holder), JME_NAPI_WEIGHT(budget)) |
1251 | { | 1251 | { |
1252 | struct jme_adapter *jme = jme_napi_priv(holder); | 1252 | struct jme_adapter *jme = jme_napi_priv(holder); |
1253 | struct net_device *netdev = jme->dev; | ||
1254 | int rest; | 1253 | int rest; |
1255 | 1254 | ||
1256 | rest = jme_process_receive(jme, JME_NAPI_WEIGHT_VAL(budget)); | 1255 | rest = jme_process_receive(jme, JME_NAPI_WEIGHT_VAL(budget)); |
diff --git a/drivers/net/jme.h b/drivers/net/jme.h index adaf3ddbf783..2d6f30e638fc 100644 --- a/drivers/net/jme.h +++ b/drivers/net/jme.h | |||
@@ -398,15 +398,15 @@ struct jme_ring { | |||
398 | #define JME_NAPI_WEIGHT(w) int w | 398 | #define JME_NAPI_WEIGHT(w) int w |
399 | #define JME_NAPI_WEIGHT_VAL(w) w | 399 | #define JME_NAPI_WEIGHT_VAL(w) w |
400 | #define JME_NAPI_WEIGHT_SET(w, r) | 400 | #define JME_NAPI_WEIGHT_SET(w, r) |
401 | #define JME_RX_COMPLETE(dev, napis) netif_rx_complete(dev, napis) | 401 | #define JME_RX_COMPLETE(dev, napis) netif_rx_complete(napis) |
402 | #define JME_NAPI_ENABLE(priv) napi_enable(&priv->napi); | 402 | #define JME_NAPI_ENABLE(priv) napi_enable(&priv->napi); |
403 | #define JME_NAPI_DISABLE(priv) \ | 403 | #define JME_NAPI_DISABLE(priv) \ |
404 | if (!napi_disable_pending(&priv->napi)) \ | 404 | if (!napi_disable_pending(&priv->napi)) \ |
405 | napi_disable(&priv->napi); | 405 | napi_disable(&priv->napi); |
406 | #define JME_RX_SCHEDULE_PREP(priv) \ | 406 | #define JME_RX_SCHEDULE_PREP(priv) \ |
407 | netif_rx_schedule_prep(priv->dev, &priv->napi) | 407 | netif_rx_schedule_prep(&priv->napi) |
408 | #define JME_RX_SCHEDULE(priv) \ | 408 | #define JME_RX_SCHEDULE(priv) \ |
409 | __netif_rx_schedule(priv->dev, &priv->napi); | 409 | __netif_rx_schedule(&priv->napi); |
410 | 410 | ||
411 | /* | 411 | /* |
412 | * Jmac Adapter Private data | 412 | * Jmac Adapter Private data |
diff --git a/drivers/net/korina.c b/drivers/net/korina.c index 63626953f07e..4a5580c1126a 100644 --- a/drivers/net/korina.c +++ b/drivers/net/korina.c | |||
@@ -327,7 +327,7 @@ static irqreturn_t korina_rx_dma_interrupt(int irq, void *dev_id) | |||
327 | 327 | ||
328 | dmas = readl(&lp->rx_dma_regs->dmas); | 328 | dmas = readl(&lp->rx_dma_regs->dmas); |
329 | if (dmas & (DMA_STAT_DONE | DMA_STAT_HALT | DMA_STAT_ERR)) { | 329 | if (dmas & (DMA_STAT_DONE | DMA_STAT_HALT | DMA_STAT_ERR)) { |
330 | netif_rx_schedule_prep(dev, &lp->napi); | 330 | netif_rx_schedule_prep(&lp->napi); |
331 | 331 | ||
332 | dmasm = readl(&lp->rx_dma_regs->dmasm); | 332 | dmasm = readl(&lp->rx_dma_regs->dmasm); |
333 | writel(dmasm | (DMA_STAT_DONE | | 333 | writel(dmasm | (DMA_STAT_DONE | |
@@ -466,7 +466,7 @@ static int korina_poll(struct napi_struct *napi, int budget) | |||
466 | 466 | ||
467 | work_done = korina_rx(dev, budget); | 467 | work_done = korina_rx(dev, budget); |
468 | if (work_done < budget) { | 468 | if (work_done < budget) { |
469 | netif_rx_complete(dev, napi); | 469 | netif_rx_complete(napi); |
470 | 470 | ||
471 | writel(readl(&lp->rx_dma_regs->dmasm) & | 471 | writel(readl(&lp->rx_dma_regs->dmasm) & |
472 | ~(DMA_STAT_DONE | DMA_STAT_HALT | DMA_STAT_ERR), | 472 | ~(DMA_STAT_DONE | DMA_STAT_HALT | DMA_STAT_ERR), |
diff --git a/drivers/net/macb.c b/drivers/net/macb.c index 261b9507124b..a04da4ecaa88 100644 --- a/drivers/net/macb.c +++ b/drivers/net/macb.c | |||
@@ -519,7 +519,7 @@ static int macb_poll(struct napi_struct *napi, int budget) | |||
519 | * this function was called last time, and no packets | 519 | * this function was called last time, and no packets |
520 | * have been received since. | 520 | * have been received since. |
521 | */ | 521 | */ |
522 | netif_rx_complete(dev, napi); | 522 | netif_rx_complete(napi); |
523 | goto out; | 523 | goto out; |
524 | } | 524 | } |
525 | 525 | ||
@@ -530,13 +530,13 @@ static int macb_poll(struct napi_struct *napi, int budget) | |||
530 | dev_warn(&bp->pdev->dev, | 530 | dev_warn(&bp->pdev->dev, |
531 | "No RX buffers complete, status = %02lx\n", | 531 | "No RX buffers complete, status = %02lx\n", |
532 | (unsigned long)status); | 532 | (unsigned long)status); |
533 | netif_rx_complete(dev, napi); | 533 | netif_rx_complete(napi); |
534 | goto out; | 534 | goto out; |
535 | } | 535 | } |
536 | 536 | ||
537 | work_done = macb_rx(bp, budget); | 537 | work_done = macb_rx(bp, budget); |
538 | if (work_done < budget) | 538 | if (work_done < budget) |
539 | netif_rx_complete(dev, napi); | 539 | netif_rx_complete(napi); |
540 | 540 | ||
541 | /* | 541 | /* |
542 | * We've done what we can to clean the buffers. Make sure we | 542 | * We've done what we can to clean the buffers. Make sure we |
@@ -571,7 +571,7 @@ static irqreturn_t macb_interrupt(int irq, void *dev_id) | |||
571 | } | 571 | } |
572 | 572 | ||
573 | if (status & MACB_RX_INT_FLAGS) { | 573 | if (status & MACB_RX_INT_FLAGS) { |
574 | if (netif_rx_schedule_prep(dev, &bp->napi)) { | 574 | if (netif_rx_schedule_prep(&bp->napi)) { |
575 | /* | 575 | /* |
576 | * There's no point taking any more interrupts | 576 | * There's no point taking any more interrupts |
577 | * until we have processed the buffers | 577 | * until we have processed the buffers |
@@ -579,7 +579,7 @@ static irqreturn_t macb_interrupt(int irq, void *dev_id) | |||
579 | macb_writel(bp, IDR, MACB_RX_INT_FLAGS); | 579 | macb_writel(bp, IDR, MACB_RX_INT_FLAGS); |
580 | dev_dbg(&bp->pdev->dev, | 580 | dev_dbg(&bp->pdev->dev, |
581 | "scheduling RX softirq\n"); | 581 | "scheduling RX softirq\n"); |
582 | __netif_rx_schedule(dev, &bp->napi); | 582 | __netif_rx_schedule(&bp->napi); |
583 | } | 583 | } |
584 | } | 584 | } |
585 | 585 | ||
diff --git a/drivers/net/mlx4/en_rx.c b/drivers/net/mlx4/en_rx.c index ffe28089b687..c61b0bdca1a4 100644 --- a/drivers/net/mlx4/en_rx.c +++ b/drivers/net/mlx4/en_rx.c | |||
@@ -814,7 +814,7 @@ void mlx4_en_rx_irq(struct mlx4_cq *mcq) | |||
814 | struct mlx4_en_priv *priv = netdev_priv(cq->dev); | 814 | struct mlx4_en_priv *priv = netdev_priv(cq->dev); |
815 | 815 | ||
816 | if (priv->port_up) | 816 | if (priv->port_up) |
817 | netif_rx_schedule(cq->dev, &cq->napi); | 817 | netif_rx_schedule(&cq->napi); |
818 | else | 818 | else |
819 | mlx4_en_arm_cq(priv, cq); | 819 | mlx4_en_arm_cq(priv, cq); |
820 | } | 820 | } |
@@ -834,7 +834,7 @@ int mlx4_en_poll_rx_cq(struct napi_struct *napi, int budget) | |||
834 | INC_PERF_COUNTER(priv->pstats.napi_quota); | 834 | INC_PERF_COUNTER(priv->pstats.napi_quota); |
835 | else { | 835 | else { |
836 | /* Done for now */ | 836 | /* Done for now */ |
837 | netif_rx_complete(dev, napi); | 837 | netif_rx_complete(napi); |
838 | mlx4_en_arm_cq(priv, cq); | 838 | mlx4_en_arm_cq(priv, cq); |
839 | } | 839 | } |
840 | return done; | 840 | return done; |
diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c index f017c774e1a4..378c89e6c7d5 100644 --- a/drivers/net/myri10ge/myri10ge.c +++ b/drivers/net/myri10ge/myri10ge.c | |||
@@ -1515,7 +1515,7 @@ static int myri10ge_poll(struct napi_struct *napi, int budget) | |||
1515 | work_done = myri10ge_clean_rx_done(ss, budget); | 1515 | work_done = myri10ge_clean_rx_done(ss, budget); |
1516 | 1516 | ||
1517 | if (work_done < budget) { | 1517 | if (work_done < budget) { |
1518 | netif_rx_complete(netdev, napi); | 1518 | netif_rx_complete(napi); |
1519 | put_be32(htonl(3), ss->irq_claim); | 1519 | put_be32(htonl(3), ss->irq_claim); |
1520 | } | 1520 | } |
1521 | return work_done; | 1521 | return work_done; |
@@ -1533,7 +1533,7 @@ static irqreturn_t myri10ge_intr(int irq, void *arg) | |||
1533 | /* an interrupt on a non-zero receive-only slice is implicitly | 1533 | /* an interrupt on a non-zero receive-only slice is implicitly |
1534 | * valid since MSI-X irqs are not shared */ | 1534 | * valid since MSI-X irqs are not shared */ |
1535 | if ((mgp->dev->real_num_tx_queues == 1) && (ss != mgp->ss)) { | 1535 | if ((mgp->dev->real_num_tx_queues == 1) && (ss != mgp->ss)) { |
1536 | netif_rx_schedule(ss->dev, &ss->napi); | 1536 | netif_rx_schedule(&ss->napi); |
1537 | return (IRQ_HANDLED); | 1537 | return (IRQ_HANDLED); |
1538 | } | 1538 | } |
1539 | 1539 | ||
@@ -1544,7 +1544,7 @@ static irqreturn_t myri10ge_intr(int irq, void *arg) | |||
1544 | /* low bit indicates receives are present, so schedule | 1544 | /* low bit indicates receives are present, so schedule |
1545 | * napi poll handler */ | 1545 | * napi poll handler */ |
1546 | if (stats->valid & 1) | 1546 | if (stats->valid & 1) |
1547 | netif_rx_schedule(ss->dev, &ss->napi); | 1547 | netif_rx_schedule(&ss->napi); |
1548 | 1548 | ||
1549 | if (!mgp->msi_enabled && !mgp->msix_enabled) { | 1549 | if (!mgp->msi_enabled && !mgp->msix_enabled) { |
1550 | put_be32(0, mgp->irq_deassert); | 1550 | put_be32(0, mgp->irq_deassert); |
diff --git a/drivers/net/natsemi.c b/drivers/net/natsemi.c index 9f81fcb96882..478edb92bca3 100644 --- a/drivers/net/natsemi.c +++ b/drivers/net/natsemi.c | |||
@@ -2193,10 +2193,10 @@ static irqreturn_t intr_handler(int irq, void *dev_instance) | |||
2193 | 2193 | ||
2194 | prefetch(&np->rx_skbuff[np->cur_rx % RX_RING_SIZE]); | 2194 | prefetch(&np->rx_skbuff[np->cur_rx % RX_RING_SIZE]); |
2195 | 2195 | ||
2196 | if (netif_rx_schedule_prep(dev, &np->napi)) { | 2196 | if (netif_rx_schedule_prep(&np->napi)) { |
2197 | /* Disable interrupts and register for poll */ | 2197 | /* Disable interrupts and register for poll */ |
2198 | natsemi_irq_disable(dev); | 2198 | natsemi_irq_disable(dev); |
2199 | __netif_rx_schedule(dev, &np->napi); | 2199 | __netif_rx_schedule(&np->napi); |
2200 | } else | 2200 | } else |
2201 | printk(KERN_WARNING | 2201 | printk(KERN_WARNING |
2202 | "%s: Ignoring interrupt, status %#08x, mask %#08x.\n", | 2202 | "%s: Ignoring interrupt, status %#08x, mask %#08x.\n", |
@@ -2248,7 +2248,7 @@ static int natsemi_poll(struct napi_struct *napi, int budget) | |||
2248 | np->intr_status = readl(ioaddr + IntrStatus); | 2248 | np->intr_status = readl(ioaddr + IntrStatus); |
2249 | } while (np->intr_status); | 2249 | } while (np->intr_status); |
2250 | 2250 | ||
2251 | netif_rx_complete(dev, napi); | 2251 | netif_rx_complete(napi); |
2252 | 2252 | ||
2253 | /* Reenable interrupts providing nothing is trying to shut | 2253 | /* Reenable interrupts providing nothing is trying to shut |
2254 | * the chip down. */ | 2254 | * the chip down. */ |
diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c index 6876bfd4455a..ba01524b5531 100644 --- a/drivers/net/netxen/netxen_nic_main.c +++ b/drivers/net/netxen/netxen_nic_main.c | |||
@@ -1583,7 +1583,7 @@ static int netxen_nic_poll(struct napi_struct *napi, int budget) | |||
1583 | } | 1583 | } |
1584 | 1584 | ||
1585 | if ((work_done < budget) && tx_complete) { | 1585 | if ((work_done < budget) && tx_complete) { |
1586 | netif_rx_complete(adapter->netdev, &adapter->napi); | 1586 | netif_rx_complete(&adapter->napi); |
1587 | netxen_nic_enable_int(adapter); | 1587 | netxen_nic_enable_int(adapter); |
1588 | } | 1588 | } |
1589 | 1589 | ||
diff --git a/drivers/net/niu.c b/drivers/net/niu.c index f219f16ec97a..5698c155bbf3 100644 --- a/drivers/net/niu.c +++ b/drivers/net/niu.c | |||
@@ -3669,7 +3669,7 @@ static int niu_poll(struct napi_struct *napi, int budget) | |||
3669 | work_done = niu_poll_core(np, lp, budget); | 3669 | work_done = niu_poll_core(np, lp, budget); |
3670 | 3670 | ||
3671 | if (work_done < budget) { | 3671 | if (work_done < budget) { |
3672 | netif_rx_complete(np->dev, napi); | 3672 | netif_rx_complete(napi); |
3673 | niu_ldg_rearm(np, lp, 1); | 3673 | niu_ldg_rearm(np, lp, 1); |
3674 | } | 3674 | } |
3675 | return work_done; | 3675 | return work_done; |
@@ -4088,12 +4088,12 @@ static void __niu_fastpath_interrupt(struct niu *np, int ldg, u64 v0) | |||
4088 | static void niu_schedule_napi(struct niu *np, struct niu_ldg *lp, | 4088 | static void niu_schedule_napi(struct niu *np, struct niu_ldg *lp, |
4089 | u64 v0, u64 v1, u64 v2) | 4089 | u64 v0, u64 v1, u64 v2) |
4090 | { | 4090 | { |
4091 | if (likely(netif_rx_schedule_prep(np->dev, &lp->napi))) { | 4091 | if (likely(netif_rx_schedule_prep(&lp->napi))) { |
4092 | lp->v0 = v0; | 4092 | lp->v0 = v0; |
4093 | lp->v1 = v1; | 4093 | lp->v1 = v1; |
4094 | lp->v2 = v2; | 4094 | lp->v2 = v2; |
4095 | __niu_fastpath_interrupt(np, lp->ldg_num, v0); | 4095 | __niu_fastpath_interrupt(np, lp->ldg_num, v0); |
4096 | __netif_rx_schedule(np->dev, &lp->napi); | 4096 | __netif_rx_schedule(&lp->napi); |
4097 | } | 4097 | } |
4098 | } | 4098 | } |
4099 | 4099 | ||
diff --git a/drivers/net/pasemi_mac.c b/drivers/net/pasemi_mac.c index fcbf6ccd0a85..dcd199045613 100644 --- a/drivers/net/pasemi_mac.c +++ b/drivers/net/pasemi_mac.c | |||
@@ -971,7 +971,7 @@ static irqreturn_t pasemi_mac_rx_intr(int irq, void *data) | |||
971 | if (*chan->status & PAS_STATUS_ERROR) | 971 | if (*chan->status & PAS_STATUS_ERROR) |
972 | reg |= PAS_IOB_DMA_RXCH_RESET_DINTC; | 972 | reg |= PAS_IOB_DMA_RXCH_RESET_DINTC; |
973 | 973 | ||
974 | netif_rx_schedule(dev, &mac->napi); | 974 | netif_rx_schedule(&mac->napi); |
975 | 975 | ||
976 | write_iob_reg(PAS_IOB_DMA_RXCH_RESET(chan->chno), reg); | 976 | write_iob_reg(PAS_IOB_DMA_RXCH_RESET(chan->chno), reg); |
977 | 977 | ||
@@ -1011,7 +1011,7 @@ static irqreturn_t pasemi_mac_tx_intr(int irq, void *data) | |||
1011 | 1011 | ||
1012 | mod_timer(&txring->clean_timer, jiffies + (TX_CLEAN_INTERVAL)*2); | 1012 | mod_timer(&txring->clean_timer, jiffies + (TX_CLEAN_INTERVAL)*2); |
1013 | 1013 | ||
1014 | netif_rx_schedule(mac->netdev, &mac->napi); | 1014 | netif_rx_schedule(&mac->napi); |
1015 | 1015 | ||
1016 | if (reg) | 1016 | if (reg) |
1017 | write_iob_reg(PAS_IOB_DMA_TXCH_RESET(chan->chno), reg); | 1017 | write_iob_reg(PAS_IOB_DMA_TXCH_RESET(chan->chno), reg); |
@@ -1641,7 +1641,7 @@ static int pasemi_mac_poll(struct napi_struct *napi, int budget) | |||
1641 | pkts = pasemi_mac_clean_rx(rx_ring(mac), budget); | 1641 | pkts = pasemi_mac_clean_rx(rx_ring(mac), budget); |
1642 | if (pkts < budget) { | 1642 | if (pkts < budget) { |
1643 | /* all done, no more packets present */ | 1643 | /* all done, no more packets present */ |
1644 | netif_rx_complete(dev, napi); | 1644 | netif_rx_complete(napi); |
1645 | 1645 | ||
1646 | pasemi_mac_restart_rx_intr(mac); | 1646 | pasemi_mac_restart_rx_intr(mac); |
1647 | pasemi_mac_restart_tx_intr(mac); | 1647 | pasemi_mac_restart_tx_intr(mac); |
diff --git a/drivers/net/pcnet32.c b/drivers/net/pcnet32.c index f2b192c80e17..044b7b07f5f4 100644 --- a/drivers/net/pcnet32.c +++ b/drivers/net/pcnet32.c | |||
@@ -1397,7 +1397,7 @@ static int pcnet32_poll(struct napi_struct *napi, int budget) | |||
1397 | if (work_done < budget) { | 1397 | if (work_done < budget) { |
1398 | spin_lock_irqsave(&lp->lock, flags); | 1398 | spin_lock_irqsave(&lp->lock, flags); |
1399 | 1399 | ||
1400 | __netif_rx_complete(dev, napi); | 1400 | __netif_rx_complete(napi); |
1401 | 1401 | ||
1402 | /* clear interrupt masks */ | 1402 | /* clear interrupt masks */ |
1403 | val = lp->a.read_csr(ioaddr, CSR3); | 1403 | val = lp->a.read_csr(ioaddr, CSR3); |
@@ -2586,14 +2586,14 @@ pcnet32_interrupt(int irq, void *dev_id) | |||
2586 | dev->name, csr0); | 2586 | dev->name, csr0); |
2587 | /* unlike for the lance, there is no restart needed */ | 2587 | /* unlike for the lance, there is no restart needed */ |
2588 | } | 2588 | } |
2589 | if (netif_rx_schedule_prep(dev, &lp->napi)) { | 2589 | if (netif_rx_schedule_prep(&lp->napi)) { |
2590 | u16 val; | 2590 | u16 val; |
2591 | /* set interrupt masks */ | 2591 | /* set interrupt masks */ |
2592 | val = lp->a.read_csr(ioaddr, CSR3); | 2592 | val = lp->a.read_csr(ioaddr, CSR3); |
2593 | val |= 0x5f00; | 2593 | val |= 0x5f00; |
2594 | lp->a.write_csr(ioaddr, CSR3, val); | 2594 | lp->a.write_csr(ioaddr, CSR3, val); |
2595 | mmiowb(); | 2595 | mmiowb(); |
2596 | __netif_rx_schedule(dev, &lp->napi); | 2596 | __netif_rx_schedule(&lp->napi); |
2597 | break; | 2597 | break; |
2598 | } | 2598 | } |
2599 | csr0 = lp->a.read_csr(ioaddr, CSR0); | 2599 | csr0 = lp->a.read_csr(ioaddr, CSR0); |
diff --git a/drivers/net/qla3xxx.c b/drivers/net/qla3xxx.c index 6b7ed1a5b3b7..33e8e62b4502 100644 --- a/drivers/net/qla3xxx.c +++ b/drivers/net/qla3xxx.c | |||
@@ -2293,7 +2293,7 @@ static int ql_poll(struct napi_struct *napi, int budget) | |||
2293 | 2293 | ||
2294 | if (tx_cleaned + rx_cleaned != budget) { | 2294 | if (tx_cleaned + rx_cleaned != budget) { |
2295 | spin_lock_irqsave(&qdev->hw_lock, hw_flags); | 2295 | spin_lock_irqsave(&qdev->hw_lock, hw_flags); |
2296 | __netif_rx_complete(ndev, napi); | 2296 | __netif_rx_complete(napi); |
2297 | ql_update_small_bufq_prod_index(qdev); | 2297 | ql_update_small_bufq_prod_index(qdev); |
2298 | ql_update_lrg_bufq_prod_index(qdev); | 2298 | ql_update_lrg_bufq_prod_index(qdev); |
2299 | writel(qdev->rsp_consumer_index, | 2299 | writel(qdev->rsp_consumer_index, |
@@ -2352,8 +2352,8 @@ static irqreturn_t ql3xxx_isr(int irq, void *dev_id) | |||
2352 | spin_unlock(&qdev->adapter_lock); | 2352 | spin_unlock(&qdev->adapter_lock); |
2353 | } else if (value & ISP_IMR_DISABLE_CMPL_INT) { | 2353 | } else if (value & ISP_IMR_DISABLE_CMPL_INT) { |
2354 | ql_disable_interrupts(qdev); | 2354 | ql_disable_interrupts(qdev); |
2355 | if (likely(netif_rx_schedule_prep(ndev, &qdev->napi))) { | 2355 | if (likely(netif_rx_schedule_prep(&qdev->napi))) { |
2356 | __netif_rx_schedule(ndev, &qdev->napi); | 2356 | __netif_rx_schedule(&qdev->napi); |
2357 | } | 2357 | } |
2358 | } else { | 2358 | } else { |
2359 | return IRQ_NONE; | 2359 | return IRQ_NONE; |
diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c index 225930fda5af..02147082786d 100644 --- a/drivers/net/qlge/qlge_main.c +++ b/drivers/net/qlge/qlge_main.c | |||
@@ -1647,7 +1647,7 @@ static int ql_napi_poll_msix(struct napi_struct *napi, int budget) | |||
1647 | rx_ring->cq_id); | 1647 | rx_ring->cq_id); |
1648 | 1648 | ||
1649 | if (work_done < budget) { | 1649 | if (work_done < budget) { |
1650 | __netif_rx_complete(qdev->ndev, napi); | 1650 | __netif_rx_complete(napi); |
1651 | ql_enable_completion_interrupt(qdev, rx_ring->irq); | 1651 | ql_enable_completion_interrupt(qdev, rx_ring->irq); |
1652 | } | 1652 | } |
1653 | return work_done; | 1653 | return work_done; |
@@ -1733,7 +1733,7 @@ static irqreturn_t qlge_msix_rx_isr(int irq, void *dev_id) | |||
1733 | { | 1733 | { |
1734 | struct rx_ring *rx_ring = dev_id; | 1734 | struct rx_ring *rx_ring = dev_id; |
1735 | struct ql_adapter *qdev = rx_ring->qdev; | 1735 | struct ql_adapter *qdev = rx_ring->qdev; |
1736 | netif_rx_schedule(qdev->ndev, &rx_ring->napi); | 1736 | netif_rx_schedule(&rx_ring->napi); |
1737 | return IRQ_HANDLED; | 1737 | return IRQ_HANDLED; |
1738 | } | 1738 | } |
1739 | 1739 | ||
@@ -1819,8 +1819,7 @@ static irqreturn_t qlge_isr(int irq, void *dev_id) | |||
1819 | &rx_ring->rx_work, | 1819 | &rx_ring->rx_work, |
1820 | 0); | 1820 | 0); |
1821 | else | 1821 | else |
1822 | netif_rx_schedule(qdev->ndev, | 1822 | netif_rx_schedule(&rx_ring->napi); |
1823 | &rx_ring->napi); | ||
1824 | work_done++; | 1823 | work_done++; |
1825 | } | 1824 | } |
1826 | } | 1825 | } |
diff --git a/drivers/net/r6040.c b/drivers/net/r6040.c index aff1cc627c05..53bbddfc8c95 100644 --- a/drivers/net/r6040.c +++ b/drivers/net/r6040.c | |||
@@ -667,7 +667,7 @@ static int r6040_poll(struct napi_struct *napi, int budget) | |||
667 | work_done = r6040_rx(dev, budget); | 667 | work_done = r6040_rx(dev, budget); |
668 | 668 | ||
669 | if (work_done < budget) { | 669 | if (work_done < budget) { |
670 | netif_rx_complete(dev, napi); | 670 | netif_rx_complete(napi); |
671 | /* Enable RX interrupt */ | 671 | /* Enable RX interrupt */ |
672 | iowrite16(ioread16(ioaddr + MIER) | RX_INTS, ioaddr + MIER); | 672 | iowrite16(ioread16(ioaddr + MIER) | RX_INTS, ioaddr + MIER); |
673 | } | 673 | } |
@@ -704,7 +704,7 @@ static irqreturn_t r6040_interrupt(int irq, void *dev_id) | |||
704 | 704 | ||
705 | /* Mask off RX interrupt */ | 705 | /* Mask off RX interrupt */ |
706 | misr &= ~RX_INTS; | 706 | misr &= ~RX_INTS; |
707 | netif_rx_schedule(dev, &lp->napi); | 707 | netif_rx_schedule(&lp->napi); |
708 | } | 708 | } |
709 | 709 | ||
710 | /* TX interrupt request */ | 710 | /* TX interrupt request */ |
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c index dddf6aeff498..2c73ca606b35 100644 --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c | |||
@@ -3581,8 +3581,8 @@ static irqreturn_t rtl8169_interrupt(int irq, void *dev_instance) | |||
3581 | RTL_W16(IntrMask, tp->intr_event & ~tp->napi_event); | 3581 | RTL_W16(IntrMask, tp->intr_event & ~tp->napi_event); |
3582 | tp->intr_mask = ~tp->napi_event; | 3582 | tp->intr_mask = ~tp->napi_event; |
3583 | 3583 | ||
3584 | if (likely(netif_rx_schedule_prep(dev, &tp->napi))) | 3584 | if (likely(netif_rx_schedule_prep(&tp->napi))) |
3585 | __netif_rx_schedule(dev, &tp->napi); | 3585 | __netif_rx_schedule(&tp->napi); |
3586 | else if (netif_msg_intr(tp)) { | 3586 | else if (netif_msg_intr(tp)) { |
3587 | printk(KERN_INFO "%s: interrupt %04x in poll\n", | 3587 | printk(KERN_INFO "%s: interrupt %04x in poll\n", |
3588 | dev->name, status); | 3588 | dev->name, status); |
@@ -3603,7 +3603,7 @@ static int rtl8169_poll(struct napi_struct *napi, int budget) | |||
3603 | rtl8169_tx_interrupt(dev, tp, ioaddr); | 3603 | rtl8169_tx_interrupt(dev, tp, ioaddr); |
3604 | 3604 | ||
3605 | if (work_done < budget) { | 3605 | if (work_done < budget) { |
3606 | netif_rx_complete(dev, napi); | 3606 | netif_rx_complete(napi); |
3607 | tp->intr_mask = 0xffff; | 3607 | tp->intr_mask = 0xffff; |
3608 | /* | 3608 | /* |
3609 | * 20040426: the barrier is not strictly required but the | 3609 | * 20040426: the barrier is not strictly required but the |
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c index 1b489df80fa6..512861923c6b 100644 --- a/drivers/net/s2io.c +++ b/drivers/net/s2io.c | |||
@@ -2852,7 +2852,7 @@ static int s2io_poll_msix(struct napi_struct *napi, int budget) | |||
2852 | s2io_chk_rx_buffers(nic, ring); | 2852 | s2io_chk_rx_buffers(nic, ring); |
2853 | 2853 | ||
2854 | if (pkts_processed < budget_org) { | 2854 | if (pkts_processed < budget_org) { |
2855 | netif_rx_complete(dev, napi); | 2855 | netif_rx_complete(napi); |
2856 | /*Re Enable MSI-Rx Vector*/ | 2856 | /*Re Enable MSI-Rx Vector*/ |
2857 | addr = (u8 __iomem *)&bar0->xmsi_mask_reg; | 2857 | addr = (u8 __iomem *)&bar0->xmsi_mask_reg; |
2858 | addr += 7 - ring->ring_no; | 2858 | addr += 7 - ring->ring_no; |
@@ -2890,7 +2890,7 @@ static int s2io_poll_inta(struct napi_struct *napi, int budget) | |||
2890 | break; | 2890 | break; |
2891 | } | 2891 | } |
2892 | if (pkts_processed < budget_org) { | 2892 | if (pkts_processed < budget_org) { |
2893 | netif_rx_complete(dev, napi); | 2893 | netif_rx_complete(napi); |
2894 | /* Re enable the Rx interrupts for the ring */ | 2894 | /* Re enable the Rx interrupts for the ring */ |
2895 | writeq(0, &bar0->rx_traffic_mask); | 2895 | writeq(0, &bar0->rx_traffic_mask); |
2896 | readl(&bar0->rx_traffic_mask); | 2896 | readl(&bar0->rx_traffic_mask); |
@@ -4344,7 +4344,7 @@ static irqreturn_t s2io_msix_ring_handle(int irq, void *dev_id) | |||
4344 | val8 = (ring->ring_no == 0) ? 0x7f : 0xff; | 4344 | val8 = (ring->ring_no == 0) ? 0x7f : 0xff; |
4345 | writeb(val8, addr); | 4345 | writeb(val8, addr); |
4346 | val8 = readb(addr); | 4346 | val8 = readb(addr); |
4347 | netif_rx_schedule(dev, &ring->napi); | 4347 | netif_rx_schedule(&ring->napi); |
4348 | } else { | 4348 | } else { |
4349 | rx_intr_handler(ring, 0); | 4349 | rx_intr_handler(ring, 0); |
4350 | s2io_chk_rx_buffers(sp, ring); | 4350 | s2io_chk_rx_buffers(sp, ring); |
@@ -4791,7 +4791,7 @@ static irqreturn_t s2io_isr(int irq, void *dev_id) | |||
4791 | 4791 | ||
4792 | if (config->napi) { | 4792 | if (config->napi) { |
4793 | if (reason & GEN_INTR_RXTRAFFIC) { | 4793 | if (reason & GEN_INTR_RXTRAFFIC) { |
4794 | netif_rx_schedule(dev, &sp->napi); | 4794 | netif_rx_schedule(&sp->napi); |
4795 | writeq(S2IO_MINUS_ONE, &bar0->rx_traffic_mask); | 4795 | writeq(S2IO_MINUS_ONE, &bar0->rx_traffic_mask); |
4796 | writeq(S2IO_MINUS_ONE, &bar0->rx_traffic_int); | 4796 | writeq(S2IO_MINUS_ONE, &bar0->rx_traffic_int); |
4797 | readl(&bar0->rx_traffic_int); | 4797 | readl(&bar0->rx_traffic_int); |
diff --git a/drivers/net/sb1250-mac.c b/drivers/net/sb1250-mac.c index 480caec1e024..31e38fae017f 100644 --- a/drivers/net/sb1250-mac.c +++ b/drivers/net/sb1250-mac.c | |||
@@ -2039,9 +2039,9 @@ static irqreturn_t sbmac_intr(int irq,void *dev_instance) | |||
2039 | sbdma_tx_process(sc,&(sc->sbm_txdma), 0); | 2039 | sbdma_tx_process(sc,&(sc->sbm_txdma), 0); |
2040 | 2040 | ||
2041 | if (isr & (M_MAC_INT_CHANNEL << S_MAC_RX_CH0)) { | 2041 | if (isr & (M_MAC_INT_CHANNEL << S_MAC_RX_CH0)) { |
2042 | if (netif_rx_schedule_prep(dev, &sc->napi)) { | 2042 | if (netif_rx_schedule_prep(&sc->napi)) { |
2043 | __raw_writeq(0, sc->sbm_imr); | 2043 | __raw_writeq(0, sc->sbm_imr); |
2044 | __netif_rx_schedule(dev, &sc->napi); | 2044 | __netif_rx_schedule(&sc->napi); |
2045 | /* Depend on the exit from poll to reenable intr */ | 2045 | /* Depend on the exit from poll to reenable intr */ |
2046 | } | 2046 | } |
2047 | else { | 2047 | else { |
@@ -2667,7 +2667,7 @@ static int sbmac_poll(struct napi_struct *napi, int budget) | |||
2667 | sbdma_tx_process(sc, &(sc->sbm_txdma), 1); | 2667 | sbdma_tx_process(sc, &(sc->sbm_txdma), 1); |
2668 | 2668 | ||
2669 | if (work_done < budget) { | 2669 | if (work_done < budget) { |
2670 | netif_rx_complete(dev, napi); | 2670 | netif_rx_complete(napi); |
2671 | 2671 | ||
2672 | #ifdef CONFIG_SBMAC_COALESCE | 2672 | #ifdef CONFIG_SBMAC_COALESCE |
2673 | __raw_writeq(((M_MAC_INT_EOP_COUNT | M_MAC_INT_EOP_TIMER) << S_MAC_TX_CH0) | | 2673 | __raw_writeq(((M_MAC_INT_EOP_COUNT | M_MAC_INT_EOP_TIMER) << S_MAC_TX_CH0) | |
diff --git a/drivers/net/sfc/efx.c b/drivers/net/sfc/efx.c index 086629c0fe57..42934ba2030d 100644 --- a/drivers/net/sfc/efx.c +++ b/drivers/net/sfc/efx.c | |||
@@ -230,7 +230,7 @@ static int efx_poll(struct napi_struct *napi, int budget) | |||
230 | * since efx_channel_processed() will have no effect if | 230 | * since efx_channel_processed() will have no effect if |
231 | * interrupts have already been disabled. | 231 | * interrupts have already been disabled. |
232 | */ | 232 | */ |
233 | netif_rx_complete(napi_dev, napi); | 233 | netif_rx_complete(napi); |
234 | efx_channel_processed(channel); | 234 | efx_channel_processed(channel); |
235 | } | 235 | } |
236 | 236 | ||
diff --git a/drivers/net/sfc/efx.h b/drivers/net/sfc/efx.h index dd0d45b9e71f..0dd7a532c78a 100644 --- a/drivers/net/sfc/efx.h +++ b/drivers/net/sfc/efx.h | |||
@@ -77,7 +77,7 @@ static inline void efx_schedule_channel(struct efx_channel *channel) | |||
77 | channel->channel, raw_smp_processor_id()); | 77 | channel->channel, raw_smp_processor_id()); |
78 | channel->work_pending = true; | 78 | channel->work_pending = true; |
79 | 79 | ||
80 | netif_rx_schedule(channel->napi_dev, &channel->napi_str); | 80 | netif_rx_schedule(&channel->napi_str); |
81 | } | 81 | } |
82 | 82 | ||
83 | #endif /* EFX_EFX_H */ | 83 | #endif /* EFX_EFX_H */ |
diff --git a/drivers/net/skge.c b/drivers/net/skge.c index f73ee7974003..c9dbb06f8c94 100644 --- a/drivers/net/skge.c +++ b/drivers/net/skge.c | |||
@@ -3214,7 +3214,7 @@ static int skge_poll(struct napi_struct *napi, int to_do) | |||
3214 | unsigned long flags; | 3214 | unsigned long flags; |
3215 | 3215 | ||
3216 | spin_lock_irqsave(&hw->hw_lock, flags); | 3216 | spin_lock_irqsave(&hw->hw_lock, flags); |
3217 | __netif_rx_complete(dev, napi); | 3217 | __netif_rx_complete(napi); |
3218 | hw->intr_mask |= napimask[skge->port]; | 3218 | hw->intr_mask |= napimask[skge->port]; |
3219 | skge_write32(hw, B0_IMSK, hw->intr_mask); | 3219 | skge_write32(hw, B0_IMSK, hw->intr_mask); |
3220 | skge_read32(hw, B0_IMSK); | 3220 | skge_read32(hw, B0_IMSK); |
@@ -3377,7 +3377,7 @@ static irqreturn_t skge_intr(int irq, void *dev_id) | |||
3377 | if (status & (IS_XA1_F|IS_R1_F)) { | 3377 | if (status & (IS_XA1_F|IS_R1_F)) { |
3378 | struct skge_port *skge = netdev_priv(hw->dev[0]); | 3378 | struct skge_port *skge = netdev_priv(hw->dev[0]); |
3379 | hw->intr_mask &= ~(IS_XA1_F|IS_R1_F); | 3379 | hw->intr_mask &= ~(IS_XA1_F|IS_R1_F); |
3380 | netif_rx_schedule(hw->dev[0], &skge->napi); | 3380 | netif_rx_schedule(&skge->napi); |
3381 | } | 3381 | } |
3382 | 3382 | ||
3383 | if (status & IS_PA_TO_TX1) | 3383 | if (status & IS_PA_TO_TX1) |
@@ -3397,7 +3397,7 @@ static irqreturn_t skge_intr(int irq, void *dev_id) | |||
3397 | 3397 | ||
3398 | if (status & (IS_XA2_F|IS_R2_F)) { | 3398 | if (status & (IS_XA2_F|IS_R2_F)) { |
3399 | hw->intr_mask &= ~(IS_XA2_F|IS_R2_F); | 3399 | hw->intr_mask &= ~(IS_XA2_F|IS_R2_F); |
3400 | netif_rx_schedule(hw->dev[1], &skge->napi); | 3400 | netif_rx_schedule(&skge->napi); |
3401 | } | 3401 | } |
3402 | 3402 | ||
3403 | if (status & IS_PA_TO_RX2) { | 3403 | if (status & IS_PA_TO_RX2) { |
diff --git a/drivers/net/smsc911x.c b/drivers/net/smsc911x.c index fa28542b47d5..ecdde03d4167 100644 --- a/drivers/net/smsc911x.c +++ b/drivers/net/smsc911x.c | |||
@@ -984,7 +984,7 @@ static int smsc911x_poll(struct napi_struct *napi, int budget) | |||
984 | /* We processed all packets available. Tell NAPI it can | 984 | /* We processed all packets available. Tell NAPI it can |
985 | * stop polling then re-enable rx interrupts */ | 985 | * stop polling then re-enable rx interrupts */ |
986 | smsc911x_reg_write(pdata, INT_STS, INT_STS_RSFL_); | 986 | smsc911x_reg_write(pdata, INT_STS, INT_STS_RSFL_); |
987 | netif_rx_complete(dev, napi); | 987 | netif_rx_complete(napi); |
988 | temp = smsc911x_reg_read(pdata, INT_EN); | 988 | temp = smsc911x_reg_read(pdata, INT_EN); |
989 | temp |= INT_EN_RSFL_EN_; | 989 | temp |= INT_EN_RSFL_EN_; |
990 | smsc911x_reg_write(pdata, INT_EN, temp); | 990 | smsc911x_reg_write(pdata, INT_EN, temp); |
diff --git a/drivers/net/smsc9420.c b/drivers/net/smsc9420.c index 940220f60921..27e017d96966 100644 --- a/drivers/net/smsc9420.c +++ b/drivers/net/smsc9420.c | |||
@@ -666,7 +666,7 @@ static irqreturn_t smsc9420_isr(int irq, void *dev_id) | |||
666 | smsc9420_pci_flush_write(pd); | 666 | smsc9420_pci_flush_write(pd); |
667 | 667 | ||
668 | ints_to_clear |= (DMAC_STS_RX_ | DMAC_STS_NIS_); | 668 | ints_to_clear |= (DMAC_STS_RX_ | DMAC_STS_NIS_); |
669 | netif_rx_schedule(pd->dev, &pd->napi); | 669 | netif_rx_schedule(&pd->napi); |
670 | } | 670 | } |
671 | 671 | ||
672 | if (ints_to_clear) | 672 | if (ints_to_clear) |
@@ -889,7 +889,7 @@ static int smsc9420_rx_poll(struct napi_struct *napi, int budget) | |||
889 | smsc9420_pci_flush_write(pd); | 889 | smsc9420_pci_flush_write(pd); |
890 | 890 | ||
891 | if (work_done < budget) { | 891 | if (work_done < budget) { |
892 | netif_rx_complete(dev, &pd->napi); | 892 | netif_rx_complete(&pd->napi); |
893 | 893 | ||
894 | /* re-enable RX DMA interrupts */ | 894 | /* re-enable RX DMA interrupts */ |
895 | dma_intr_ena = smsc9420_reg_read(pd, DMAC_INTR_ENA); | 895 | dma_intr_ena = smsc9420_reg_read(pd, DMAC_INTR_ENA); |
diff --git a/drivers/net/spider_net.c b/drivers/net/spider_net.c index 325fbc9612c9..c5c123d3af57 100644 --- a/drivers/net/spider_net.c +++ b/drivers/net/spider_net.c | |||
@@ -1302,7 +1302,7 @@ static int spider_net_poll(struct napi_struct *napi, int budget) | |||
1302 | /* if all packets are in the stack, enable interrupts and return 0 */ | 1302 | /* if all packets are in the stack, enable interrupts and return 0 */ |
1303 | /* if not, return 1 */ | 1303 | /* if not, return 1 */ |
1304 | if (packets_done < budget) { | 1304 | if (packets_done < budget) { |
1305 | netif_rx_complete(netdev, napi); | 1305 | netif_rx_complete(napi); |
1306 | spider_net_rx_irq_on(card); | 1306 | spider_net_rx_irq_on(card); |
1307 | card->ignore_rx_ramfull = 0; | 1307 | card->ignore_rx_ramfull = 0; |
1308 | } | 1308 | } |
@@ -1529,8 +1529,7 @@ spider_net_handle_error_irq(struct spider_net_card *card, u32 status_reg, | |||
1529 | spider_net_refill_rx_chain(card); | 1529 | spider_net_refill_rx_chain(card); |
1530 | spider_net_enable_rxdmac(card); | 1530 | spider_net_enable_rxdmac(card); |
1531 | card->num_rx_ints ++; | 1531 | card->num_rx_ints ++; |
1532 | netif_rx_schedule(card->netdev, | 1532 | netif_rx_schedule(&card->napi); |
1533 | &card->napi); | ||
1534 | } | 1533 | } |
1535 | show_error = 0; | 1534 | show_error = 0; |
1536 | break; | 1535 | break; |
@@ -1550,8 +1549,7 @@ spider_net_handle_error_irq(struct spider_net_card *card, u32 status_reg, | |||
1550 | spider_net_refill_rx_chain(card); | 1549 | spider_net_refill_rx_chain(card); |
1551 | spider_net_enable_rxdmac(card); | 1550 | spider_net_enable_rxdmac(card); |
1552 | card->num_rx_ints ++; | 1551 | card->num_rx_ints ++; |
1553 | netif_rx_schedule(card->netdev, | 1552 | netif_rx_schedule(&card->napi); |
1554 | &card->napi); | ||
1555 | show_error = 0; | 1553 | show_error = 0; |
1556 | break; | 1554 | break; |
1557 | 1555 | ||
@@ -1565,8 +1563,7 @@ spider_net_handle_error_irq(struct spider_net_card *card, u32 status_reg, | |||
1565 | spider_net_refill_rx_chain(card); | 1563 | spider_net_refill_rx_chain(card); |
1566 | spider_net_enable_rxdmac(card); | 1564 | spider_net_enable_rxdmac(card); |
1567 | card->num_rx_ints ++; | 1565 | card->num_rx_ints ++; |
1568 | netif_rx_schedule(card->netdev, | 1566 | netif_rx_schedule(&card->napi); |
1569 | &card->napi); | ||
1570 | show_error = 0; | 1567 | show_error = 0; |
1571 | break; | 1568 | break; |
1572 | 1569 | ||
@@ -1660,11 +1657,11 @@ spider_net_interrupt(int irq, void *ptr) | |||
1660 | 1657 | ||
1661 | if (status_reg & SPIDER_NET_RXINT ) { | 1658 | if (status_reg & SPIDER_NET_RXINT ) { |
1662 | spider_net_rx_irq_off(card); | 1659 | spider_net_rx_irq_off(card); |
1663 | netif_rx_schedule(netdev, &card->napi); | 1660 | netif_rx_schedule(&card->napi); |
1664 | card->num_rx_ints ++; | 1661 | card->num_rx_ints ++; |
1665 | } | 1662 | } |
1666 | if (status_reg & SPIDER_NET_TXINT) | 1663 | if (status_reg & SPIDER_NET_TXINT) |
1667 | netif_rx_schedule(netdev, &card->napi); | 1664 | netif_rx_schedule(&card->napi); |
1668 | 1665 | ||
1669 | if (status_reg & SPIDER_NET_LINKINT) | 1666 | if (status_reg & SPIDER_NET_LINKINT) |
1670 | spider_net_link_reset(netdev); | 1667 | spider_net_link_reset(netdev); |
diff --git a/drivers/net/starfire.c b/drivers/net/starfire.c index 0358809f409c..d5b9dd842c61 100644 --- a/drivers/net/starfire.c +++ b/drivers/net/starfire.c | |||
@@ -1290,8 +1290,8 @@ static irqreturn_t intr_handler(int irq, void *dev_instance) | |||
1290 | if (intr_status & (IntrRxDone | IntrRxEmpty)) { | 1290 | if (intr_status & (IntrRxDone | IntrRxEmpty)) { |
1291 | u32 enable; | 1291 | u32 enable; |
1292 | 1292 | ||
1293 | if (likely(netif_rx_schedule_prep(dev, &np->napi))) { | 1293 | if (likely(netif_rx_schedule_prep(&np->napi))) { |
1294 | __netif_rx_schedule(dev, &np->napi); | 1294 | __netif_rx_schedule(&np->napi); |
1295 | enable = readl(ioaddr + IntrEnable); | 1295 | enable = readl(ioaddr + IntrEnable); |
1296 | enable &= ~(IntrRxDone | IntrRxEmpty); | 1296 | enable &= ~(IntrRxDone | IntrRxEmpty); |
1297 | writel(enable, ioaddr + IntrEnable); | 1297 | writel(enable, ioaddr + IntrEnable); |
@@ -1530,7 +1530,7 @@ static int netdev_poll(struct napi_struct *napi, int budget) | |||
1530 | intr_status = readl(ioaddr + IntrStatus); | 1530 | intr_status = readl(ioaddr + IntrStatus); |
1531 | } while (intr_status & (IntrRxDone | IntrRxEmpty)); | 1531 | } while (intr_status & (IntrRxDone | IntrRxEmpty)); |
1532 | 1532 | ||
1533 | netif_rx_complete(dev, napi); | 1533 | netif_rx_complete(napi); |
1534 | intr_status = readl(ioaddr + IntrEnable); | 1534 | intr_status = readl(ioaddr + IntrEnable); |
1535 | intr_status |= IntrRxDone | IntrRxEmpty; | 1535 | intr_status |= IntrRxDone | IntrRxEmpty; |
1536 | writel(intr_status, ioaddr + IntrEnable); | 1536 | writel(intr_status, ioaddr + IntrEnable); |
diff --git a/drivers/net/sungem.c b/drivers/net/sungem.c index f4b0beec4d19..8a7460412482 100644 --- a/drivers/net/sungem.c +++ b/drivers/net/sungem.c | |||
@@ -921,7 +921,7 @@ static int gem_poll(struct napi_struct *napi, int budget) | |||
921 | gp->status = readl(gp->regs + GREG_STAT); | 921 | gp->status = readl(gp->regs + GREG_STAT); |
922 | } while (gp->status & GREG_STAT_NAPI); | 922 | } while (gp->status & GREG_STAT_NAPI); |
923 | 923 | ||
924 | __netif_rx_complete(dev, napi); | 924 | __netif_rx_complete(napi); |
925 | gem_enable_ints(gp); | 925 | gem_enable_ints(gp); |
926 | 926 | ||
927 | spin_unlock_irqrestore(&gp->lock, flags); | 927 | spin_unlock_irqrestore(&gp->lock, flags); |
@@ -944,7 +944,7 @@ static irqreturn_t gem_interrupt(int irq, void *dev_id) | |||
944 | 944 | ||
945 | spin_lock_irqsave(&gp->lock, flags); | 945 | spin_lock_irqsave(&gp->lock, flags); |
946 | 946 | ||
947 | if (netif_rx_schedule_prep(dev, &gp->napi)) { | 947 | if (netif_rx_schedule_prep(&gp->napi)) { |
948 | u32 gem_status = readl(gp->regs + GREG_STAT); | 948 | u32 gem_status = readl(gp->regs + GREG_STAT); |
949 | 949 | ||
950 | if (gem_status == 0) { | 950 | if (gem_status == 0) { |
@@ -954,7 +954,7 @@ static irqreturn_t gem_interrupt(int irq, void *dev_id) | |||
954 | } | 954 | } |
955 | gp->status = gem_status; | 955 | gp->status = gem_status; |
956 | gem_disable_ints(gp); | 956 | gem_disable_ints(gp); |
957 | __netif_rx_schedule(dev, &gp->napi); | 957 | __netif_rx_schedule(&gp->napi); |
958 | } | 958 | } |
959 | 959 | ||
960 | spin_unlock_irqrestore(&gp->lock, flags); | 960 | spin_unlock_irqrestore(&gp->lock, flags); |
diff --git a/drivers/net/tc35815.c b/drivers/net/tc35815.c index 308f365270e9..bcd0e60cbda9 100644 --- a/drivers/net/tc35815.c +++ b/drivers/net/tc35815.c | |||
@@ -1609,8 +1609,8 @@ static irqreturn_t tc35815_interrupt(int irq, void *dev_id) | |||
1609 | if (!(dmactl & DMA_IntMask)) { | 1609 | if (!(dmactl & DMA_IntMask)) { |
1610 | /* disable interrupts */ | 1610 | /* disable interrupts */ |
1611 | tc_writel(dmactl | DMA_IntMask, &tr->DMA_Ctl); | 1611 | tc_writel(dmactl | DMA_IntMask, &tr->DMA_Ctl); |
1612 | if (netif_rx_schedule_prep(dev, &lp->napi)) | 1612 | if (netif_rx_schedule_prep(&lp->napi)) |
1613 | __netif_rx_schedule(dev, &lp->napi); | 1613 | __netif_rx_schedule(&lp->napi); |
1614 | else { | 1614 | else { |
1615 | printk(KERN_ERR "%s: interrupt taken in poll\n", | 1615 | printk(KERN_ERR "%s: interrupt taken in poll\n", |
1616 | dev->name); | 1616 | dev->name); |
@@ -1919,7 +1919,7 @@ static int tc35815_poll(struct napi_struct *napi, int budget) | |||
1919 | spin_unlock(&lp->lock); | 1919 | spin_unlock(&lp->lock); |
1920 | 1920 | ||
1921 | if (received < budget) { | 1921 | if (received < budget) { |
1922 | netif_rx_complete(dev, napi); | 1922 | netif_rx_complete(napi); |
1923 | /* enable interrupts */ | 1923 | /* enable interrupts */ |
1924 | tc_writel(tc_readl(&tr->DMA_Ctl) & ~DMA_IntMask, &tr->DMA_Ctl); | 1924 | tc_writel(tc_readl(&tr->DMA_Ctl) & ~DMA_IntMask, &tr->DMA_Ctl); |
1925 | } | 1925 | } |
diff --git a/drivers/net/tehuti.c b/drivers/net/tehuti.c index 5b83fbb02013..a10a83a11d9f 100644 --- a/drivers/net/tehuti.c +++ b/drivers/net/tehuti.c | |||
@@ -265,8 +265,8 @@ static irqreturn_t bdx_isr_napi(int irq, void *dev) | |||
265 | bdx_isr_extra(priv, isr); | 265 | bdx_isr_extra(priv, isr); |
266 | 266 | ||
267 | if (isr & (IR_RX_DESC_0 | IR_TX_FREE_0)) { | 267 | if (isr & (IR_RX_DESC_0 | IR_TX_FREE_0)) { |
268 | if (likely(netif_rx_schedule_prep(ndev, &priv->napi))) { | 268 | if (likely(netif_rx_schedule_prep(&priv->napi))) { |
269 | __netif_rx_schedule(ndev, &priv->napi); | 269 | __netif_rx_schedule(&priv->napi); |
270 | RET(IRQ_HANDLED); | 270 | RET(IRQ_HANDLED); |
271 | } else { | 271 | } else { |
272 | /* NOTE: we get here if intr has slipped into window | 272 | /* NOTE: we get here if intr has slipped into window |
@@ -289,7 +289,6 @@ static irqreturn_t bdx_isr_napi(int irq, void *dev) | |||
289 | static int bdx_poll(struct napi_struct *napi, int budget) | 289 | static int bdx_poll(struct napi_struct *napi, int budget) |
290 | { | 290 | { |
291 | struct bdx_priv *priv = container_of(napi, struct bdx_priv, napi); | 291 | struct bdx_priv *priv = container_of(napi, struct bdx_priv, napi); |
292 | struct net_device *dev = priv->ndev; | ||
293 | int work_done; | 292 | int work_done; |
294 | 293 | ||
295 | ENTER; | 294 | ENTER; |
@@ -303,7 +302,7 @@ static int bdx_poll(struct napi_struct *napi, int budget) | |||
303 | * device lock and allow waiting tasks (eg rmmod) to advance) */ | 302 | * device lock and allow waiting tasks (eg rmmod) to advance) */ |
304 | priv->napi_stop = 0; | 303 | priv->napi_stop = 0; |
305 | 304 | ||
306 | netif_rx_complete(dev, napi); | 305 | netif_rx_complete(napi); |
307 | bdx_enable_interrupts(priv); | 306 | bdx_enable_interrupts(priv); |
308 | } | 307 | } |
309 | return work_done; | 308 | return work_done; |
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c index 7971d802508d..04ae1e86aeaa 100644 --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c | |||
@@ -4451,7 +4451,7 @@ static int tg3_poll(struct napi_struct *napi, int budget) | |||
4451 | sblk->status &= ~SD_STATUS_UPDATED; | 4451 | sblk->status &= ~SD_STATUS_UPDATED; |
4452 | 4452 | ||
4453 | if (likely(!tg3_has_work(tp))) { | 4453 | if (likely(!tg3_has_work(tp))) { |
4454 | netif_rx_complete(tp->dev, napi); | 4454 | netif_rx_complete(napi); |
4455 | tg3_restart_ints(tp); | 4455 | tg3_restart_ints(tp); |
4456 | break; | 4456 | break; |
4457 | } | 4457 | } |
@@ -4461,7 +4461,7 @@ static int tg3_poll(struct napi_struct *napi, int budget) | |||
4461 | 4461 | ||
4462 | tx_recovery: | 4462 | tx_recovery: |
4463 | /* work_done is guaranteed to be less than budget. */ | 4463 | /* work_done is guaranteed to be less than budget. */ |
4464 | netif_rx_complete(tp->dev, napi); | 4464 | netif_rx_complete(napi); |
4465 | schedule_work(&tp->reset_task); | 4465 | schedule_work(&tp->reset_task); |
4466 | return work_done; | 4466 | return work_done; |
4467 | } | 4467 | } |
@@ -4510,7 +4510,7 @@ static irqreturn_t tg3_msi_1shot(int irq, void *dev_id) | |||
4510 | prefetch(&tp->rx_rcb[tp->rx_rcb_ptr]); | 4510 | prefetch(&tp->rx_rcb[tp->rx_rcb_ptr]); |
4511 | 4511 | ||
4512 | if (likely(!tg3_irq_sync(tp))) | 4512 | if (likely(!tg3_irq_sync(tp))) |
4513 | netif_rx_schedule(dev, &tp->napi); | 4513 | netif_rx_schedule(&tp->napi); |
4514 | 4514 | ||
4515 | return IRQ_HANDLED; | 4515 | return IRQ_HANDLED; |
4516 | } | 4516 | } |
@@ -4535,7 +4535,7 @@ static irqreturn_t tg3_msi(int irq, void *dev_id) | |||
4535 | */ | 4535 | */ |
4536 | tw32_mailbox(MAILBOX_INTERRUPT_0 + TG3_64BIT_REG_LOW, 0x00000001); | 4536 | tw32_mailbox(MAILBOX_INTERRUPT_0 + TG3_64BIT_REG_LOW, 0x00000001); |
4537 | if (likely(!tg3_irq_sync(tp))) | 4537 | if (likely(!tg3_irq_sync(tp))) |
4538 | netif_rx_schedule(dev, &tp->napi); | 4538 | netif_rx_schedule(&tp->napi); |
4539 | 4539 | ||
4540 | return IRQ_RETVAL(1); | 4540 | return IRQ_RETVAL(1); |
4541 | } | 4541 | } |
@@ -4577,7 +4577,7 @@ static irqreturn_t tg3_interrupt(int irq, void *dev_id) | |||
4577 | sblk->status &= ~SD_STATUS_UPDATED; | 4577 | sblk->status &= ~SD_STATUS_UPDATED; |
4578 | if (likely(tg3_has_work(tp))) { | 4578 | if (likely(tg3_has_work(tp))) { |
4579 | prefetch(&tp->rx_rcb[tp->rx_rcb_ptr]); | 4579 | prefetch(&tp->rx_rcb[tp->rx_rcb_ptr]); |
4580 | netif_rx_schedule(dev, &tp->napi); | 4580 | netif_rx_schedule(&tp->napi); |
4581 | } else { | 4581 | } else { |
4582 | /* No work, shared interrupt perhaps? re-enable | 4582 | /* No work, shared interrupt perhaps? re-enable |
4583 | * interrupts, and flush that PCI write | 4583 | * interrupts, and flush that PCI write |
@@ -4623,7 +4623,7 @@ static irqreturn_t tg3_interrupt_tagged(int irq, void *dev_id) | |||
4623 | tw32_mailbox_f(MAILBOX_INTERRUPT_0 + TG3_64BIT_REG_LOW, 0x00000001); | 4623 | tw32_mailbox_f(MAILBOX_INTERRUPT_0 + TG3_64BIT_REG_LOW, 0x00000001); |
4624 | if (tg3_irq_sync(tp)) | 4624 | if (tg3_irq_sync(tp)) |
4625 | goto out; | 4625 | goto out; |
4626 | if (netif_rx_schedule_prep(dev, &tp->napi)) { | 4626 | if (netif_rx_schedule_prep(&tp->napi)) { |
4627 | prefetch(&tp->rx_rcb[tp->rx_rcb_ptr]); | 4627 | prefetch(&tp->rx_rcb[tp->rx_rcb_ptr]); |
4628 | /* Update last_tag to mark that this status has been | 4628 | /* Update last_tag to mark that this status has been |
4629 | * seen. Because interrupt may be shared, we may be | 4629 | * seen. Because interrupt may be shared, we may be |
@@ -4631,7 +4631,7 @@ static irqreturn_t tg3_interrupt_tagged(int irq, void *dev_id) | |||
4631 | * if tg3_poll() is not scheduled. | 4631 | * if tg3_poll() is not scheduled. |
4632 | */ | 4632 | */ |
4633 | tp->last_tag = sblk->status_tag; | 4633 | tp->last_tag = sblk->status_tag; |
4634 | __netif_rx_schedule(dev, &tp->napi); | 4634 | __netif_rx_schedule(&tp->napi); |
4635 | } | 4635 | } |
4636 | out: | 4636 | out: |
4637 | return IRQ_RETVAL(handled); | 4637 | return IRQ_RETVAL(handled); |
diff --git a/drivers/net/tsi108_eth.c b/drivers/net/tsi108_eth.c index 271bc230c8a9..75461dbd4876 100644 --- a/drivers/net/tsi108_eth.c +++ b/drivers/net/tsi108_eth.c | |||
@@ -888,7 +888,7 @@ static int tsi108_poll(struct napi_struct *napi, int budget) | |||
888 | 888 | ||
889 | if (num_received < budget) { | 889 | if (num_received < budget) { |
890 | data->rxpending = 0; | 890 | data->rxpending = 0; |
891 | netif_rx_complete(dev, napi); | 891 | netif_rx_complete(napi); |
892 | 892 | ||
893 | TSI_WRITE(TSI108_EC_INTMASK, | 893 | TSI_WRITE(TSI108_EC_INTMASK, |
894 | TSI_READ(TSI108_EC_INTMASK) | 894 | TSI_READ(TSI108_EC_INTMASK) |
@@ -919,7 +919,7 @@ static void tsi108_rx_int(struct net_device *dev) | |||
919 | * from tsi108_check_rxring(). | 919 | * from tsi108_check_rxring(). |
920 | */ | 920 | */ |
921 | 921 | ||
922 | if (netif_rx_schedule_prep(dev, &data->napi)) { | 922 | if (netif_rx_schedule_prep(&data->napi)) { |
923 | /* Mask, rather than ack, the receive interrupts. The ack | 923 | /* Mask, rather than ack, the receive interrupts. The ack |
924 | * will happen in tsi108_poll(). | 924 | * will happen in tsi108_poll(). |
925 | */ | 925 | */ |
@@ -930,7 +930,7 @@ static void tsi108_rx_int(struct net_device *dev) | |||
930 | | TSI108_INT_RXTHRESH | | 930 | | TSI108_INT_RXTHRESH | |
931 | TSI108_INT_RXOVERRUN | TSI108_INT_RXERROR | | 931 | TSI108_INT_RXOVERRUN | TSI108_INT_RXERROR | |
932 | TSI108_INT_RXWAIT); | 932 | TSI108_INT_RXWAIT); |
933 | __netif_rx_schedule(dev, &data->napi); | 933 | __netif_rx_schedule(&data->napi); |
934 | } else { | 934 | } else { |
935 | if (!netif_running(dev)) { | 935 | if (!netif_running(dev)) { |
936 | /* This can happen if an interrupt occurs while the | 936 | /* This can happen if an interrupt occurs while the |
diff --git a/drivers/net/tulip/interrupt.c b/drivers/net/tulip/interrupt.c index 739d610d18c5..6c3428a37c0b 100644 --- a/drivers/net/tulip/interrupt.c +++ b/drivers/net/tulip/interrupt.c | |||
@@ -103,7 +103,7 @@ void oom_timer(unsigned long data) | |||
103 | { | 103 | { |
104 | struct net_device *dev = (struct net_device *)data; | 104 | struct net_device *dev = (struct net_device *)data; |
105 | struct tulip_private *tp = netdev_priv(dev); | 105 | struct tulip_private *tp = netdev_priv(dev); |
106 | netif_rx_schedule(dev, &tp->napi); | 106 | netif_rx_schedule(&tp->napi); |
107 | } | 107 | } |
108 | 108 | ||
109 | int tulip_poll(struct napi_struct *napi, int budget) | 109 | int tulip_poll(struct napi_struct *napi, int budget) |
@@ -300,7 +300,7 @@ int tulip_poll(struct napi_struct *napi, int budget) | |||
300 | 300 | ||
301 | /* Remove us from polling list and enable RX intr. */ | 301 | /* Remove us from polling list and enable RX intr. */ |
302 | 302 | ||
303 | netif_rx_complete(dev, napi); | 303 | netif_rx_complete(napi); |
304 | iowrite32(tulip_tbl[tp->chip_id].valid_intrs, tp->base_addr+CSR7); | 304 | iowrite32(tulip_tbl[tp->chip_id].valid_intrs, tp->base_addr+CSR7); |
305 | 305 | ||
306 | /* The last op happens after poll completion. Which means the following: | 306 | /* The last op happens after poll completion. Which means the following: |
@@ -336,7 +336,7 @@ int tulip_poll(struct napi_struct *napi, int budget) | |||
336 | * before we did netif_rx_complete(). See? We would lose it. */ | 336 | * before we did netif_rx_complete(). See? We would lose it. */ |
337 | 337 | ||
338 | /* remove ourselves from the polling list */ | 338 | /* remove ourselves from the polling list */ |
339 | netif_rx_complete(dev, napi); | 339 | netif_rx_complete(napi); |
340 | 340 | ||
341 | return work_done; | 341 | return work_done; |
342 | } | 342 | } |
@@ -519,7 +519,7 @@ irqreturn_t tulip_interrupt(int irq, void *dev_instance) | |||
519 | rxd++; | 519 | rxd++; |
520 | /* Mask RX intrs and add the device to poll list. */ | 520 | /* Mask RX intrs and add the device to poll list. */ |
521 | iowrite32(tulip_tbl[tp->chip_id].valid_intrs&~RxPollInt, ioaddr + CSR7); | 521 | iowrite32(tulip_tbl[tp->chip_id].valid_intrs&~RxPollInt, ioaddr + CSR7); |
522 | netif_rx_schedule(dev, &tp->napi); | 522 | netif_rx_schedule(&tp->napi); |
523 | 523 | ||
524 | if (!(csr5&~(AbnormalIntr|NormalIntr|RxPollInt|TPLnkPass))) | 524 | if (!(csr5&~(AbnormalIntr|NormalIntr|RxPollInt|TPLnkPass))) |
525 | break; | 525 | break; |
diff --git a/drivers/net/typhoon.c b/drivers/net/typhoon.c index 5386d9b73e6a..0009f4e34433 100644 --- a/drivers/net/typhoon.c +++ b/drivers/net/typhoon.c | |||
@@ -1755,7 +1755,6 @@ static int | |||
1755 | typhoon_poll(struct napi_struct *napi, int budget) | 1755 | typhoon_poll(struct napi_struct *napi, int budget) |
1756 | { | 1756 | { |
1757 | struct typhoon *tp = container_of(napi, struct typhoon, napi); | 1757 | struct typhoon *tp = container_of(napi, struct typhoon, napi); |
1758 | struct net_device *dev = tp->dev; | ||
1759 | struct typhoon_indexes *indexes = tp->indexes; | 1758 | struct typhoon_indexes *indexes = tp->indexes; |
1760 | int work_done; | 1759 | int work_done; |
1761 | 1760 | ||
@@ -1784,7 +1783,7 @@ typhoon_poll(struct napi_struct *napi, int budget) | |||
1784 | } | 1783 | } |
1785 | 1784 | ||
1786 | if (work_done < budget) { | 1785 | if (work_done < budget) { |
1787 | netif_rx_complete(dev, napi); | 1786 | netif_rx_complete(napi); |
1788 | iowrite32(TYPHOON_INTR_NONE, | 1787 | iowrite32(TYPHOON_INTR_NONE, |
1789 | tp->ioaddr + TYPHOON_REG_INTR_MASK); | 1788 | tp->ioaddr + TYPHOON_REG_INTR_MASK); |
1790 | typhoon_post_pci_writes(tp->ioaddr); | 1789 | typhoon_post_pci_writes(tp->ioaddr); |
@@ -1807,10 +1806,10 @@ typhoon_interrupt(int irq, void *dev_instance) | |||
1807 | 1806 | ||
1808 | iowrite32(intr_status, ioaddr + TYPHOON_REG_INTR_STATUS); | 1807 | iowrite32(intr_status, ioaddr + TYPHOON_REG_INTR_STATUS); |
1809 | 1808 | ||
1810 | if (netif_rx_schedule_prep(dev, &tp->napi)) { | 1809 | if (netif_rx_schedule_prep(&tp->napi)) { |
1811 | iowrite32(TYPHOON_INTR_ALL, ioaddr + TYPHOON_REG_INTR_MASK); | 1810 | iowrite32(TYPHOON_INTR_ALL, ioaddr + TYPHOON_REG_INTR_MASK); |
1812 | typhoon_post_pci_writes(ioaddr); | 1811 | typhoon_post_pci_writes(ioaddr); |
1813 | __netif_rx_schedule(dev, &tp->napi); | 1812 | __netif_rx_schedule(&tp->napi); |
1814 | } else { | 1813 | } else { |
1815 | printk(KERN_ERR "%s: Error, poll already scheduled\n", | 1814 | printk(KERN_ERR "%s: Error, poll already scheduled\n", |
1816 | dev->name); | 1815 | dev->name); |
diff --git a/drivers/net/ucc_geth.c b/drivers/net/ucc_geth.c index 5c82f147f151..78a2ede19c5e 100644 --- a/drivers/net/ucc_geth.c +++ b/drivers/net/ucc_geth.c | |||
@@ -3330,7 +3330,7 @@ static int ucc_geth_poll(struct napi_struct *napi, int budget) | |||
3330 | struct ucc_fast_private *uccf; | 3330 | struct ucc_fast_private *uccf; |
3331 | u32 uccm; | 3331 | u32 uccm; |
3332 | 3332 | ||
3333 | netif_rx_complete(dev, napi); | 3333 | netif_rx_complete(napi); |
3334 | uccf = ugeth->uccf; | 3334 | uccf = ugeth->uccf; |
3335 | uccm = in_be32(uccf->p_uccm); | 3335 | uccm = in_be32(uccf->p_uccm); |
3336 | uccm |= UCCE_RX_EVENTS; | 3336 | uccm |= UCCE_RX_EVENTS; |
@@ -3364,10 +3364,10 @@ static irqreturn_t ucc_geth_irq_handler(int irq, void *info) | |||
3364 | 3364 | ||
3365 | /* check for receive events that require processing */ | 3365 | /* check for receive events that require processing */ |
3366 | if (ucce & UCCE_RX_EVENTS) { | 3366 | if (ucce & UCCE_RX_EVENTS) { |
3367 | if (netif_rx_schedule_prep(dev, &ugeth->napi)) { | 3367 | if (netif_rx_schedule_prep(&ugeth->napi)) { |
3368 | uccm &= ~UCCE_RX_EVENTS; | 3368 | uccm &= ~UCCE_RX_EVENTS; |
3369 | out_be32(uccf->p_uccm, uccm); | 3369 | out_be32(uccf->p_uccm, uccm); |
3370 | __netif_rx_schedule(dev, &ugeth->napi); | 3370 | __netif_rx_schedule(&ugeth->napi); |
3371 | } | 3371 | } |
3372 | } | 3372 | } |
3373 | 3373 | ||
diff --git a/drivers/net/via-rhine.c b/drivers/net/via-rhine.c index 8d405c83df8b..ac07cc6e3cb2 100644 --- a/drivers/net/via-rhine.c +++ b/drivers/net/via-rhine.c | |||
@@ -589,7 +589,7 @@ static int rhine_napipoll(struct napi_struct *napi, int budget) | |||
589 | work_done = rhine_rx(dev, budget); | 589 | work_done = rhine_rx(dev, budget); |
590 | 590 | ||
591 | if (work_done < budget) { | 591 | if (work_done < budget) { |
592 | netif_rx_complete(dev, napi); | 592 | netif_rx_complete(napi); |
593 | 593 | ||
594 | iowrite16(IntrRxDone | IntrRxErr | IntrRxEmpty| IntrRxOverflow | | 594 | iowrite16(IntrRxDone | IntrRxErr | IntrRxEmpty| IntrRxOverflow | |
595 | IntrRxDropped | IntrRxNoBuf | IntrTxAborted | | 595 | IntrRxDropped | IntrRxNoBuf | IntrTxAborted | |
@@ -1318,7 +1318,7 @@ static irqreturn_t rhine_interrupt(int irq, void *dev_instance) | |||
1318 | IntrPCIErr | IntrStatsMax | IntrLinkChange, | 1318 | IntrPCIErr | IntrStatsMax | IntrLinkChange, |
1319 | ioaddr + IntrEnable); | 1319 | ioaddr + IntrEnable); |
1320 | 1320 | ||
1321 | netif_rx_schedule(dev, &rp->napi); | 1321 | netif_rx_schedule(&rp->napi); |
1322 | } | 1322 | } |
1323 | 1323 | ||
1324 | if (intr_status & (IntrTxErrSummary | IntrTxDone)) { | 1324 | if (intr_status & (IntrTxErrSummary | IntrTxDone)) { |
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 71ca29cc184d..b7004ff36451 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c | |||
@@ -374,9 +374,9 @@ static void skb_recv_done(struct virtqueue *rvq) | |||
374 | { | 374 | { |
375 | struct virtnet_info *vi = rvq->vdev->priv; | 375 | struct virtnet_info *vi = rvq->vdev->priv; |
376 | /* Schedule NAPI, Suppress further interrupts if successful. */ | 376 | /* Schedule NAPI, Suppress further interrupts if successful. */ |
377 | if (netif_rx_schedule_prep(vi->dev, &vi->napi)) { | 377 | if (netif_rx_schedule_prep(&vi->napi)) { |
378 | rvq->vq_ops->disable_cb(rvq); | 378 | rvq->vq_ops->disable_cb(rvq); |
379 | __netif_rx_schedule(vi->dev, &vi->napi); | 379 | __netif_rx_schedule(&vi->napi); |
380 | } | 380 | } |
381 | } | 381 | } |
382 | 382 | ||
@@ -402,11 +402,11 @@ again: | |||
402 | 402 | ||
403 | /* Out of packets? */ | 403 | /* Out of packets? */ |
404 | if (received < budget) { | 404 | if (received < budget) { |
405 | netif_rx_complete(vi->dev, napi); | 405 | netif_rx_complete(napi); |
406 | if (unlikely(!vi->rvq->vq_ops->enable_cb(vi->rvq)) | 406 | if (unlikely(!vi->rvq->vq_ops->enable_cb(vi->rvq)) |
407 | && napi_schedule_prep(napi)) { | 407 | && napi_schedule_prep(napi)) { |
408 | vi->rvq->vq_ops->disable_cb(vi->rvq); | 408 | vi->rvq->vq_ops->disable_cb(vi->rvq); |
409 | __netif_rx_schedule(vi->dev, napi); | 409 | __netif_rx_schedule(napi); |
410 | goto again; | 410 | goto again; |
411 | } | 411 | } |
412 | } | 412 | } |
@@ -580,9 +580,9 @@ static int virtnet_open(struct net_device *dev) | |||
580 | * won't get another interrupt, so process any outstanding packets | 580 | * won't get another interrupt, so process any outstanding packets |
581 | * now. virtnet_poll wants re-enable the queue, so we disable here. | 581 | * now. virtnet_poll wants re-enable the queue, so we disable here. |
582 | * We synchronize against interrupts via NAPI_STATE_SCHED */ | 582 | * We synchronize against interrupts via NAPI_STATE_SCHED */ |
583 | if (netif_rx_schedule_prep(dev, &vi->napi)) { | 583 | if (netif_rx_schedule_prep(&vi->napi)) { |
584 | vi->rvq->vq_ops->disable_cb(vi->rvq); | 584 | vi->rvq->vq_ops->disable_cb(vi->rvq); |
585 | __netif_rx_schedule(dev, &vi->napi); | 585 | __netif_rx_schedule(&vi->napi); |
586 | } | 586 | } |
587 | return 0; | 587 | return 0; |
588 | } | 588 | } |
diff --git a/drivers/net/wan/hd64572.c b/drivers/net/wan/hd64572.c index 0bcc0b5f22d7..08b3536944fe 100644 --- a/drivers/net/wan/hd64572.c +++ b/drivers/net/wan/hd64572.c | |||
@@ -341,7 +341,7 @@ static int sca_poll(struct napi_struct *napi, int budget) | |||
341 | received = sca_rx_done(port, budget); | 341 | received = sca_rx_done(port, budget); |
342 | 342 | ||
343 | if (received < budget) { | 343 | if (received < budget) { |
344 | netif_rx_complete(port->netdev, napi); | 344 | netif_rx_complete(napi); |
345 | enable_intr(port); | 345 | enable_intr(port); |
346 | } | 346 | } |
347 | 347 | ||
@@ -359,7 +359,7 @@ static irqreturn_t sca_intr(int irq, void *dev_id) | |||
359 | if (port && (isr0 & (i ? 0x08002200 : 0x00080022))) { | 359 | if (port && (isr0 & (i ? 0x08002200 : 0x00080022))) { |
360 | handled = 1; | 360 | handled = 1; |
361 | disable_intr(port); | 361 | disable_intr(port); |
362 | netif_rx_schedule(port->netdev, &port->napi); | 362 | netif_rx_schedule(&port->napi); |
363 | } | 363 | } |
364 | } | 364 | } |
365 | 365 | ||
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c index fe376fde4e89..761635be9104 100644 --- a/drivers/net/xen-netfront.c +++ b/drivers/net/xen-netfront.c | |||
@@ -196,7 +196,7 @@ static void rx_refill_timeout(unsigned long data) | |||
196 | { | 196 | { |
197 | struct net_device *dev = (struct net_device *)data; | 197 | struct net_device *dev = (struct net_device *)data; |
198 | struct netfront_info *np = netdev_priv(dev); | 198 | struct netfront_info *np = netdev_priv(dev); |
199 | netif_rx_schedule(dev, &np->napi); | 199 | netif_rx_schedule(&np->napi); |
200 | } | 200 | } |
201 | 201 | ||
202 | static int netfront_tx_slot_available(struct netfront_info *np) | 202 | static int netfront_tx_slot_available(struct netfront_info *np) |
@@ -328,7 +328,7 @@ static int xennet_open(struct net_device *dev) | |||
328 | xennet_alloc_rx_buffers(dev); | 328 | xennet_alloc_rx_buffers(dev); |
329 | np->rx.sring->rsp_event = np->rx.rsp_cons + 1; | 329 | np->rx.sring->rsp_event = np->rx.rsp_cons + 1; |
330 | if (RING_HAS_UNCONSUMED_RESPONSES(&np->rx)) | 330 | if (RING_HAS_UNCONSUMED_RESPONSES(&np->rx)) |
331 | netif_rx_schedule(dev, &np->napi); | 331 | netif_rx_schedule(&np->napi); |
332 | } | 332 | } |
333 | spin_unlock_bh(&np->rx_lock); | 333 | spin_unlock_bh(&np->rx_lock); |
334 | 334 | ||
@@ -979,7 +979,7 @@ err: | |||
979 | 979 | ||
980 | RING_FINAL_CHECK_FOR_RESPONSES(&np->rx, more_to_do); | 980 | RING_FINAL_CHECK_FOR_RESPONSES(&np->rx, more_to_do); |
981 | if (!more_to_do) | 981 | if (!more_to_do) |
982 | __netif_rx_complete(dev, napi); | 982 | __netif_rx_complete(napi); |
983 | 983 | ||
984 | local_irq_restore(flags); | 984 | local_irq_restore(flags); |
985 | } | 985 | } |
@@ -1310,7 +1310,7 @@ static irqreturn_t xennet_interrupt(int irq, void *dev_id) | |||
1310 | xennet_tx_buf_gc(dev); | 1310 | xennet_tx_buf_gc(dev); |
1311 | /* Under tx_lock: protects access to rx shared-ring indexes. */ | 1311 | /* Under tx_lock: protects access to rx shared-ring indexes. */ |
1312 | if (RING_HAS_UNCONSUMED_RESPONSES(&np->rx)) | 1312 | if (RING_HAS_UNCONSUMED_RESPONSES(&np->rx)) |
1313 | netif_rx_schedule(dev, &np->napi); | 1313 | netif_rx_schedule(&np->napi); |
1314 | } | 1314 | } |
1315 | 1315 | ||
1316 | spin_unlock_irqrestore(&np->tx_lock, flags); | 1316 | spin_unlock_irqrestore(&np->tx_lock, flags); |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 58856b6737fb..41e1224651cf 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -1555,8 +1555,7 @@ static inline u32 netif_msg_init(int debug_value, int default_msg_enable_bits) | |||
1555 | } | 1555 | } |
1556 | 1556 | ||
1557 | /* Test if receive needs to be scheduled but only if up */ | 1557 | /* Test if receive needs to be scheduled but only if up */ |
1558 | static inline int netif_rx_schedule_prep(struct net_device *dev, | 1558 | static inline int netif_rx_schedule_prep(struct napi_struct *napi) |
1559 | struct napi_struct *napi) | ||
1560 | { | 1559 | { |
1561 | return napi_schedule_prep(napi); | 1560 | return napi_schedule_prep(napi); |
1562 | } | 1561 | } |
@@ -1564,27 +1563,24 @@ static inline int netif_rx_schedule_prep(struct net_device *dev, | |||
1564 | /* Add interface to tail of rx poll list. This assumes that _prep has | 1563 | /* Add interface to tail of rx poll list. This assumes that _prep has |
1565 | * already been called and returned 1. | 1564 | * already been called and returned 1. |
1566 | */ | 1565 | */ |
1567 | static inline void __netif_rx_schedule(struct net_device *dev, | 1566 | static inline void __netif_rx_schedule(struct napi_struct *napi) |
1568 | struct napi_struct *napi) | ||
1569 | { | 1567 | { |
1570 | __napi_schedule(napi); | 1568 | __napi_schedule(napi); |
1571 | } | 1569 | } |
1572 | 1570 | ||
1573 | /* Try to reschedule poll. Called by irq handler. */ | 1571 | /* Try to reschedule poll. Called by irq handler. */ |
1574 | 1572 | ||
1575 | static inline void netif_rx_schedule(struct net_device *dev, | 1573 | static inline void netif_rx_schedule(struct napi_struct *napi) |
1576 | struct napi_struct *napi) | ||
1577 | { | 1574 | { |
1578 | if (netif_rx_schedule_prep(dev, napi)) | 1575 | if (netif_rx_schedule_prep(napi)) |
1579 | __netif_rx_schedule(dev, napi); | 1576 | __netif_rx_schedule(napi); |
1580 | } | 1577 | } |
1581 | 1578 | ||
1582 | /* Try to reschedule poll. Called by dev->poll() after netif_rx_complete(). */ | 1579 | /* Try to reschedule poll. Called by dev->poll() after netif_rx_complete(). */ |
1583 | static inline int netif_rx_reschedule(struct net_device *dev, | 1580 | static inline int netif_rx_reschedule(struct napi_struct *napi) |
1584 | struct napi_struct *napi) | ||
1585 | { | 1581 | { |
1586 | if (napi_schedule_prep(napi)) { | 1582 | if (napi_schedule_prep(napi)) { |
1587 | __netif_rx_schedule(dev, napi); | 1583 | __netif_rx_schedule(napi); |
1588 | return 1; | 1584 | return 1; |
1589 | } | 1585 | } |
1590 | return 0; | 1586 | return 0; |
@@ -1593,8 +1589,7 @@ static inline int netif_rx_reschedule(struct net_device *dev, | |||
1593 | /* same as netif_rx_complete, except that local_irq_save(flags) | 1589 | /* same as netif_rx_complete, except that local_irq_save(flags) |
1594 | * has already been issued | 1590 | * has already been issued |
1595 | */ | 1591 | */ |
1596 | static inline void __netif_rx_complete(struct net_device *dev, | 1592 | static inline void __netif_rx_complete(struct napi_struct *napi) |
1597 | struct napi_struct *napi) | ||
1598 | { | 1593 | { |
1599 | __napi_complete(napi); | 1594 | __napi_complete(napi); |
1600 | } | 1595 | } |
@@ -1604,8 +1599,7 @@ static inline void __netif_rx_complete(struct net_device *dev, | |||
1604 | * it completes the work. The device cannot be out of poll list at this | 1599 | * it completes the work. The device cannot be out of poll list at this |
1605 | * moment, it is BUG(). | 1600 | * moment, it is BUG(). |
1606 | */ | 1601 | */ |
1607 | static inline void netif_rx_complete(struct net_device *dev, | 1602 | static inline void netif_rx_complete(struct napi_struct *napi) |
1608 | struct napi_struct *napi) | ||
1609 | { | 1603 | { |
1610 | napi_complete(napi); | 1604 | napi_complete(napi); |
1611 | } | 1605 | } |