--- a/drivers/net/ar231x.c +++ b/drivers/net/ar231x.c @@ -155,6 +155,18 @@ #define ERR(fmt, args...) printk("%s: " fmt, __func__, ##args) #endif +#ifdef CONFIG_NET_POLL_CONTROLLER +static void +ar231x_netpoll(struct net_device *dev) +{ + unsigned long flags; + + local_irq_save(flags); + ar231x_interrupt(dev->irq, dev); + local_irq_restore(flags); +} +#endif + static const struct net_device_ops ar231x_ops = { .ndo_open = ar231x_open, .ndo_stop = ar231x_close, @@ -165,6 +177,9 @@ .ndo_validate_addr = eth_validate_addr, .ndo_set_mac_address = eth_mac_addr, .ndo_tx_timeout = ar231x_tx_timeout, +#ifdef CONFIG_NET_POLL_CONTROLLER + .ndo_poll_controller = ar231x_netpoll, +#endif }; int __init ar231x_probe(struct platform_device *pdev)