diff options
Diffstat (limited to 'drivers/net/ucc_geth.c')
-rw-r--r-- | drivers/net/ucc_geth.c | 33 |
1 files changed, 4 insertions, 29 deletions
diff --git a/drivers/net/ucc_geth.c b/drivers/net/ucc_geth.c index 402e81020fb8..756ba10b79d6 100644 --- a/drivers/net/ucc_geth.c +++ b/drivers/net/ucc_geth.c | |||
@@ -1588,7 +1588,7 @@ static void adjust_link(struct net_device *dev) | |||
1588 | if (!ugeth->oldlink) { | 1588 | if (!ugeth->oldlink) { |
1589 | new_state = 1; | 1589 | new_state = 1; |
1590 | ugeth->oldlink = 1; | 1590 | ugeth->oldlink = 1; |
1591 | netif_schedule(dev); | 1591 | netif_tx_schedule_all(dev); |
1592 | } | 1592 | } |
1593 | } else if (ugeth->oldlink) { | 1593 | } else if (ugeth->oldlink) { |
1594 | new_state = 1; | 1594 | new_state = 1; |
@@ -3372,7 +3372,7 @@ static void ucc_geth_timeout(struct net_device *dev) | |||
3372 | ucc_geth_startup(ugeth); | 3372 | ucc_geth_startup(ugeth); |
3373 | } | 3373 | } |
3374 | 3374 | ||
3375 | netif_schedule(dev); | 3375 | netif_tx_schedule_all(dev); |
3376 | } | 3376 | } |
3377 | 3377 | ||
3378 | /* This is called by the kernel when a frame is ready for transmission. */ | 3378 | /* This is called by the kernel when a frame is ready for transmission. */ |
@@ -3500,11 +3500,7 @@ static int ucc_geth_rx(struct ucc_geth_private *ugeth, u8 rxQ, int rx_work_limit | |||
3500 | 3500 | ||
3501 | dev->stats.rx_bytes += length; | 3501 | dev->stats.rx_bytes += length; |
3502 | /* Send the packet up the stack */ | 3502 | /* Send the packet up the stack */ |
3503 | #ifdef CONFIG_UGETH_NAPI | ||
3504 | netif_receive_skb(skb); | 3503 | netif_receive_skb(skb); |
3505 | #else | ||
3506 | netif_rx(skb); | ||
3507 | #endif /* CONFIG_UGETH_NAPI */ | ||
3508 | } | 3504 | } |
3509 | 3505 | ||
3510 | ugeth->dev->last_rx = jiffies; | 3506 | ugeth->dev->last_rx = jiffies; |
@@ -3580,7 +3576,6 @@ static int ucc_geth_tx(struct net_device *dev, u8 txQ) | |||
3580 | return 0; | 3576 | return 0; |
3581 | } | 3577 | } |
3582 | 3578 | ||
3583 | #ifdef CONFIG_UGETH_NAPI | ||
3584 | static int ucc_geth_poll(struct napi_struct *napi, int budget) | 3579 | static int ucc_geth_poll(struct napi_struct *napi, int budget) |
3585 | { | 3580 | { |
3586 | struct ucc_geth_private *ugeth = container_of(napi, struct ucc_geth_private, napi); | 3581 | struct ucc_geth_private *ugeth = container_of(napi, struct ucc_geth_private, napi); |
@@ -3607,7 +3602,6 @@ static int ucc_geth_poll(struct napi_struct *napi, int budget) | |||
3607 | 3602 | ||
3608 | return howmany; | 3603 | return howmany; |
3609 | } | 3604 | } |
3610 | #endif /* CONFIG_UGETH_NAPI */ | ||
3611 | 3605 | ||
3612 | static irqreturn_t ucc_geth_irq_handler(int irq, void *info) | 3606 | static irqreturn_t ucc_geth_irq_handler(int irq, void *info) |
3613 | { | 3607 | { |
@@ -3617,9 +3611,6 @@ static irqreturn_t ucc_geth_irq_handler(int irq, void *info) | |||
3617 | struct ucc_geth_info *ug_info; | 3611 | struct ucc_geth_info *ug_info; |
3618 | register u32 ucce; | 3612 | register u32 ucce; |
3619 | register u32 uccm; | 3613 | register u32 uccm; |
3620 | #ifndef CONFIG_UGETH_NAPI | ||
3621 | register u32 rx_mask; | ||
3622 | #endif | ||
3623 | register u32 tx_mask; | 3614 | register u32 tx_mask; |
3624 | u8 i; | 3615 | u8 i; |
3625 | 3616 | ||
@@ -3636,21 +3627,11 @@ static irqreturn_t ucc_geth_irq_handler(int irq, void *info) | |||
3636 | 3627 | ||
3637 | /* check for receive events that require processing */ | 3628 | /* check for receive events that require processing */ |
3638 | if (ucce & UCCE_RX_EVENTS) { | 3629 | if (ucce & UCCE_RX_EVENTS) { |
3639 | #ifdef CONFIG_UGETH_NAPI | ||
3640 | if (netif_rx_schedule_prep(dev, &ugeth->napi)) { | 3630 | if (netif_rx_schedule_prep(dev, &ugeth->napi)) { |
3641 | uccm &= ~UCCE_RX_EVENTS; | 3631 | uccm &= ~UCCE_RX_EVENTS; |
3642 | out_be32(uccf->p_uccm, uccm); | 3632 | out_be32(uccf->p_uccm, uccm); |
3643 | __netif_rx_schedule(dev, &ugeth->napi); | 3633 | __netif_rx_schedule(dev, &ugeth->napi); |
3644 | } | 3634 | } |
3645 | #else | ||
3646 | rx_mask = UCCE_RXBF_SINGLE_MASK; | ||
3647 | for (i = 0; i < ug_info->numQueuesRx; i++) { | ||
3648 | if (ucce & rx_mask) | ||
3649 | ucc_geth_rx(ugeth, i, (int)ugeth->ug_info->bdRingLenRx[i]); | ||
3650 | ucce &= ~rx_mask; | ||
3651 | rx_mask <<= 1; | ||
3652 | } | ||
3653 | #endif /* CONFIG_UGETH_NAPI */ | ||
3654 | } | 3635 | } |
3655 | 3636 | ||
3656 | /* Tx event processing */ | 3637 | /* Tx event processing */ |
@@ -3720,9 +3701,8 @@ static int ucc_geth_open(struct net_device *dev) | |||
3720 | return err; | 3701 | return err; |
3721 | } | 3702 | } |
3722 | 3703 | ||
3723 | #ifdef CONFIG_UGETH_NAPI | ||
3724 | napi_enable(&ugeth->napi); | 3704 | napi_enable(&ugeth->napi); |
3725 | #endif | 3705 | |
3726 | err = ucc_geth_startup(ugeth); | 3706 | err = ucc_geth_startup(ugeth); |
3727 | if (err) { | 3707 | if (err) { |
3728 | if (netif_msg_ifup(ugeth)) | 3708 | if (netif_msg_ifup(ugeth)) |
@@ -3783,9 +3763,8 @@ static int ucc_geth_open(struct net_device *dev) | |||
3783 | return err; | 3763 | return err; |
3784 | 3764 | ||
3785 | out_err: | 3765 | out_err: |
3786 | #ifdef CONFIG_UGETH_NAPI | ||
3787 | napi_disable(&ugeth->napi); | 3766 | napi_disable(&ugeth->napi); |
3788 | #endif | 3767 | |
3789 | return err; | 3768 | return err; |
3790 | } | 3769 | } |
3791 | 3770 | ||
@@ -3796,9 +3775,7 @@ static int ucc_geth_close(struct net_device *dev) | |||
3796 | 3775 | ||
3797 | ugeth_vdbg("%s: IN", __FUNCTION__); | 3776 | ugeth_vdbg("%s: IN", __FUNCTION__); |
3798 | 3777 | ||
3799 | #ifdef CONFIG_UGETH_NAPI | ||
3800 | napi_disable(&ugeth->napi); | 3778 | napi_disable(&ugeth->napi); |
3801 | #endif | ||
3802 | 3779 | ||
3803 | ucc_geth_stop(ugeth); | 3780 | ucc_geth_stop(ugeth); |
3804 | 3781 | ||
@@ -4050,9 +4027,7 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma | |||
4050 | dev->hard_start_xmit = ucc_geth_start_xmit; | 4027 | dev->hard_start_xmit = ucc_geth_start_xmit; |
4051 | dev->tx_timeout = ucc_geth_timeout; | 4028 | dev->tx_timeout = ucc_geth_timeout; |
4052 | dev->watchdog_timeo = TX_TIMEOUT; | 4029 | dev->watchdog_timeo = TX_TIMEOUT; |
4053 | #ifdef CONFIG_UGETH_NAPI | ||
4054 | netif_napi_add(dev, &ugeth->napi, ucc_geth_poll, UCC_GETH_DEV_WEIGHT); | 4030 | netif_napi_add(dev, &ugeth->napi, ucc_geth_poll, UCC_GETH_DEV_WEIGHT); |
4055 | #endif /* CONFIG_UGETH_NAPI */ | ||
4056 | #ifdef CONFIG_NET_POLL_CONTROLLER | 4031 | #ifdef CONFIG_NET_POLL_CONTROLLER |
4057 | dev->poll_controller = ucc_netpoll; | 4032 | dev->poll_controller = ucc_netpoll; |
4058 | #endif | 4033 | #endif |