/* This routine should set everything up anew at each open, even registers that "should" only need to be set once at boot, so that there is non-reboot way to recover if something goes wrong.  */
static int net_open(struct net_device *dev)
/* This routine should set everything up anew at each open, even registers that "should" only need to be set once at boot, so that there is non-reboot way to recover if something goes wrong.  */
static int net_open(struct net_device *dev)
{
	struct net_local *np = netdev_priv(dev);
	int ioaddr = dev->base_addr;
	if (request_irq(dev->irq, net_interrupt, 0, cardname, dev)) {
		return -EAGAIN;
	}
	if (request_dma(dev->dma, cardname)) {
		free_irq(dev->irq, dev);
		return -EAGAIN;
	}
	chipset_init(dev, 1);
	outb(0x00, ioaddr);
	np->open_time = jiffies;
	netif_start_queue(dev);
	return 0;
}