From: Anton Vorontsov Add netpoll support for the QE UCC Gigabit Ethernet driver. The approach is very similar to the gianfar driver. Tested using netconsole. Signed-off-by: Anton Vorontsov Signed-off-by: Andrew Morton --- drivers/net/ucc_geth.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff -puN drivers/net/ucc_geth.c~ucc_geth-add-support-for-netpoll drivers/net/ucc_geth.c --- a/drivers/net/ucc_geth.c~ucc_geth-add-support-for-netpoll +++ a/drivers/net/ucc_geth.c @@ -3662,6 +3662,22 @@ static irqreturn_t ucc_geth_irq_handler( return IRQ_HANDLED; } +#ifdef CONFIG_NET_POLL_CONTROLLER +/* + * Polling 'interrupt' - used by things like netconsole to send skbs + * without having to re-enable interrupts. It's not called while + * the interrupt routine is executing. + */ +static void ucc_netpoll(struct net_device *dev) +{ + struct ucc_geth_private *ugeth = netdev_priv(dev); + + disable_irq(ugeth->ug_info->uf_info.irq); + ucc_geth_irq_handler(ugeth->ug_info->uf_info.irq, dev); + enable_irq(ugeth->ug_info->uf_info.irq); +} +#endif /* CONFIG_NET_POLL_CONTROLLER */ + /* Called when something needs to use the ethernet device */ /* Returns 0 for success. */ static int ucc_geth_open(struct net_device *dev) @@ -3951,6 +3967,9 @@ static int ucc_geth_probe(struct of_devi #ifdef CONFIG_UGETH_NAPI netif_napi_add(dev, &ugeth->napi, ucc_geth_poll, UCC_GETH_DEV_WEIGHT); #endif /* CONFIG_UGETH_NAPI */ +#ifdef CONFIG_NET_POLL_CONTROLLER + dev->poll_controller = ucc_netpoll; +#endif dev->stop = ucc_geth_close; // dev->change_mtu = ucc_geth_change_mtu; dev->mtu = 1500; _