diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2010-03-27 13:05:17 +0000 |
---|---|---|
committer | Gabor Juhos <juhosg@openwrt.org> | 2010-03-27 13:05:17 +0000 |
commit | 245775a49f867b0da28b37934f9a512c1d05c054 (patch) | |
tree | 7ecff496229bbbd206510702ad85ce45a8db1a02 /target/linux | |
parent | 5dbee8b3aa04848da5187c34e7eb5d982af7100a (diff) | |
download | upstream-245775a49f867b0da28b37934f9a512c1d05c054.tar.gz upstream-245775a49f867b0da28b37934f9a512c1d05c054.tar.bz2 upstream-245775a49f867b0da28b37934f9a512c1d05c054.zip |
ar71xx: ag71xx: Add netpoll support
This patch adds support for polling interrupts, used by
netconsole and the likes.
Tested on d-link dir-615 C1 using netconsole.
Signed-off-by: Pat Erley <pat-lkml@erley.org>
SVN-Revision: 20503
Diffstat (limited to 'target/linux')
-rw-r--r-- | target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c index 4519ec8dca..8244239663 100644 --- a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c +++ b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c @@ -926,6 +926,20 @@ static void ag71xx_set_multicast_list(struct net_device *dev) /* TODO */ } +#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 ag71xx_netpoll(struct net_device *dev) +{ + disable_irq(dev->irq); + ag71xx_interrupt(dev->irq, dev); + enable_irq(dev->irq); +} +#endif + static const struct net_device_ops ag71xx_netdev_ops = { .ndo_open = ag71xx_open, .ndo_stop = ag71xx_stop, @@ -936,6 +950,9 @@ static const struct net_device_ops ag71xx_netdev_ops = { .ndo_change_mtu = eth_change_mtu, .ndo_set_mac_address = eth_mac_addr, .ndo_validate_addr = eth_validate_addr, +#ifdef CONFIG_NET_POLL_CONTROLLER + .ndo_poll_controller = ag71xx_netpoll, +#endif }; static int __init ag71xx_probe(struct platform_device *pdev) |