Commit b6b68715 authored by Matt Mackall's avatar Matt Mackall Committed by Stephen Hemminger

[netdrvr] add netpoll support to several 8390-based drivers

parent 6bd3ac9d
......@@ -309,6 +309,9 @@ el2_probe1(struct net_device *dev, int ioaddr)
dev->open = &el2_open;
dev->stop = &el2_close;
dev->ethtool_ops = &netdev_ethtool_ops;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ei_poll;
#endif
if (dev->mem_start)
printk("%s: %s - %dkB RAM, 8kB shared mem window at %#6lx-%#6lx.\n",
......
......@@ -523,6 +523,15 @@ irqreturn_t ei_interrupt(int irq, void *dev_id, struct pt_regs * regs)
return IRQ_HANDLED;
}
#ifdef CONFIG_NET_POLL_CONTROLLER
void ei_poll(struct net_device *dev)
{
disable_irq(dev->irq);
ei_interrupt(dev->irq, dev, NULL);
enable_irq(dev->irq);
}
#endif
/**
* ei_tx_err - handle transmitter error
* @dev: network device which threw the exception
......@@ -1155,6 +1164,9 @@ static void NS8390_trigger_send(struct net_device *dev, unsigned int length,
EXPORT_SYMBOL(ei_open);
EXPORT_SYMBOL(ei_close);
EXPORT_SYMBOL(ei_interrupt);
#ifdef CONFIG_NET_POLL_CONTROLLER
EXPORT_SYMBOL(ei_poll);
#endif
EXPORT_SYMBOL(ei_tx_timeout);
EXPORT_SYMBOL(ethdev_init);
EXPORT_SYMBOL(NS8390_init);
......
......@@ -39,6 +39,10 @@ extern int ei_debug;
#define ei_debug 1
#endif
#ifdef CONFIG_NET_POLL_CONTROLLER
extern void ei_poll(struct net_device *dev);
#endif
extern int ethdev_init(struct net_device *dev);
extern void NS8390_init(struct net_device *dev, int startp);
extern int ei_open(struct net_device *dev);
......
......@@ -245,6 +245,9 @@ static int __init ac_probe1(int ioaddr, struct net_device *dev)
dev->open = &ac_open;
dev->stop = &ac_close_card;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ei_poll;
#endif
NS8390_init(dev, 0);
return 0;
out2:
......
......@@ -307,6 +307,9 @@ static int __init apne_probe1(struct net_device *dev, int ioaddr)
ei_status.get_8390_hdr = &apne_get_8390_hdr;
dev->open = &apne_open;
dev->stop = &apne_close;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ei_poll;
#endif
NS8390_init(dev, 0);
pcmcia_ack_int(pcmcia_get_intreq()); /* ack PCMCIA int req */
......
......@@ -245,6 +245,9 @@ static int __init e21_probe1(struct net_device *dev, int ioaddr)
ei_status.get_8390_hdr = &e21_get_8390_hdr;
dev->open = &e21_open;
dev->stop = &e21_close;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ei_poll;
#endif
NS8390_init(dev, 0);
return 0;
......
......@@ -270,6 +270,9 @@ static int __init es_probe1(struct net_device *dev, int ioaddr)
dev->open = &es_open;
dev->stop = &es_close;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ei_poll;
#endif
NS8390_init(dev, 0);
return 0;
out1:
......
......@@ -210,6 +210,9 @@ static int __init hpp_probe1(struct net_device *dev, int ioaddr)
dev->open = &hpp_open;
dev->stop = &hpp_close;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ei_poll;
#endif
ei_status.name = name;
ei_status.word16 = 0; /* Agggghhhhh! Debug time: 2 days! */
......
......@@ -181,6 +181,9 @@ static int __init hp_probe1(struct net_device *dev, int ioaddr)
dev->base_addr = ioaddr + NIC_OFFSET;
dev->open = &hp_open;
dev->stop = &hp_close;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ei_poll;
#endif
ei_status.name = name;
ei_status.word16 = wordmode;
......
......@@ -141,6 +141,9 @@ static int __init hydra_init(unsigned long board)
ei_status.reg_offset = hydra_offsets;
dev->open = &hydra_open;
dev->stop = &hydra_close;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ei_poll;
#endif
#ifdef MODULE
ei_status.priv = (unsigned long)root_hydra_dev;
root_hydra_dev = dev;
......
......@@ -270,6 +270,9 @@ static int __init lne390_probe1(struct net_device *dev, int ioaddr)
dev->open = &lne390_open;
dev->stop = &lne390_close;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ei_poll;
#endif
NS8390_init(dev, 0);
return 0;
cleanup:
......
......@@ -432,6 +432,9 @@ int __init mac8390_initdev(struct net_device * dev, struct nubus_dev * ndev,
/* Now fill in our stuff */
dev->open = &mac8390_open;
dev->stop = &mac8390_close;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ei_poll;
#endif
/* GAR, ei_status is actually a macro even though it looks global */
ei_status.name = cardname[type];
......
......@@ -469,6 +469,9 @@ static int __init ne_probe1(struct net_device *dev, int ioaddr)
ei_status.priv = 0;
dev->open = &ne_open;
dev->stop = &ne_close;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ei_poll;
#endif
NS8390_init(dev, 0);
return 0;
......
......@@ -481,6 +481,9 @@ static int __init ne2_probe1(struct net_device *dev, int slot)
dev->open = &ne_open;
dev->stop = &ne_close;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ei_poll;
#endif
NS8390_init(dev, 0);
return 0;
out:
......
......@@ -356,6 +356,9 @@ static int __devinit ne2k_pci_init_one (struct pci_dev *pdev,
dev->open = &ne2k_pci_open;
dev->stop = &ne2k_pci_close;
dev->ethtool_ops = &ne2k_pci_ethtool_ops;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ei_poll;
#endif
NS8390_init(dev, 0);
i = register_netdev(dev);
......
......@@ -501,6 +501,9 @@ static int __init ne_probe1(struct net_device *dev, int ioaddr)
ei_status.priv = 0;
dev->open = &ne_open;
dev->stop = &ne_close;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ei_poll;
#endif
NS8390_init(dev, 0);
return 0;
......
......@@ -211,6 +211,9 @@ static int __init ne3210_eisa_probe (struct device *device)
dev->open = &ne3210_open;
dev->stop = &ne3210_close;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ei_poll;
#endif
dev->if_port = ifmap_val[port_index];
if ((retval = register_netdev (dev)))
......
......@@ -213,6 +213,9 @@ static int __init oaknet_init(void)
dev->open = oaknet_open;
dev->stop = oaknet_close;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ei_poll;
#endif
NS8390_init(dev, FALSE);
......
......@@ -336,6 +336,9 @@ int __init ultramca_probe(struct device *gen_dev)
dev->open = &ultramca_open;
dev->stop = &ultramca_close_card;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ei_poll;
#endif
NS8390_init(dev, 0);
......
......@@ -281,6 +281,9 @@ static int __init ultra_probe1(struct net_device *dev, int ioaddr)
ei_status.reset_8390 = &ultra_reset_8390;
dev->open = &ultra_open;
dev->stop = &ultra_close_card;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ei_poll;
#endif
NS8390_init(dev, 0);
return 0;
......
......@@ -243,6 +243,9 @@ static int __init ultra32_probe1(struct net_device *dev, int ioaddr)
ei_status.reset_8390 = &ultra32_reset_8390;
dev->open = &ultra32_open;
dev->stop = &ultra32_close;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ei_poll;
#endif
NS8390_init(dev, 0);
return 0;
......
......@@ -132,6 +132,9 @@ int __init stnic_probe(void)
dev->irq = IRQ_STNIC;
dev->open = &stnic_open;
dev->stop = &stnic_close;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ei_poll;
#endif
/* Snarf the interrupt now. There's no point in waiting since we cannot
share and the board will usually be enabled. */
......
......@@ -305,6 +305,9 @@ static int __init wd_probe1(struct net_device *dev, int ioaddr)
ei_status.get_8390_hdr = &wd_get_8390_hdr;
dev->open = &wd_open;
dev->stop = &wd_close;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ei_poll;
#endif
NS8390_init(dev, 0);
#if 1
......
......@@ -227,6 +227,9 @@ static int __init zorro8390_init(struct net_device *dev, unsigned long board,
ei_status.reg_offset = zorro8390_offsets;
dev->open = &zorro8390_open;
dev->stop = &zorro8390_close;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ei_poll;
#endif
#ifdef MODULE
ei_status.priv = (unsigned long)root_zorro8390_dev;
root_zorro8390_dev = dev;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment