diff options
-rw-r--r-- | drivers/net/Kconfig | 4 | ||||
-rw-r--r-- | drivers/net/ucc_geth.c | 29 |
2 files changed, 2 insertions, 31 deletions
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index 1fe7e0792c1f..9b98714889bf 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig | |||
@@ -2270,10 +2270,6 @@ config UCC_GETH | |||
2270 | This driver supports the Gigabit Ethernet mode of the QUICC Engine, | 2270 | This driver supports the Gigabit Ethernet mode of the QUICC Engine, |
2271 | which is available on some Freescale SOCs. | 2271 | which is available on some Freescale SOCs. |
2272 | 2272 | ||
2273 | config UGETH_NAPI | ||
2274 | bool "Use Rx Polling (NAPI)" | ||
2275 | depends on UCC_GETH | ||
2276 | |||
2277 | config UGETH_MAGIC_PACKET | 2273 | config UGETH_MAGIC_PACKET |
2278 | bool "Magic Packet detection support" | 2274 | bool "Magic Packet detection support" |
2279 | depends on UCC_GETH | 2275 | depends on UCC_GETH |
diff --git a/drivers/net/ucc_geth.c b/drivers/net/ucc_geth.c index fb0b918e5ccb..07933f71b86d 100644 --- a/drivers/net/ucc_geth.c +++ b/drivers/net/ucc_geth.c | |||
@@ -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 |