/* * Open/initialize the board. This is called (in the current kernel) * sometime after booting when the 'ifconfig' program is run. * * 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 ether3_open(struct net_device *dev) { if (request_irq(dev->irq, ether3_interrupt, 0, "ether3", dev)) return -EAGAIN; ether3_init_for_open(dev); netif_start_queue(dev); return 0; }
/* * Open/initialize the board. This is called (in the current kernel) * sometime after booting when the 'ifconfig' program is run. * * 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 ether3_open(struct net_device *dev) { if (!is_valid_ether_addr(dev->dev_addr)) { printk(KERN_WARNING "%s: invalid ethernet MAC address\n", dev->name); return -EINVAL; } if (request_irq(dev->irq, ether3_interrupt, 0, "ether3", dev)) return -EAGAIN; ether3_init_for_open(dev); netif_start_queue(dev); return 0; }
/* * Open/initialize the board. This is called (in the current kernel) * sometime after booting when the 'ifconfig' program is run. * * 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 ether3_open(struct device *dev) { MOD_INC_USE_COUNT; if (request_irq(dev->irq, ether3_interrupt, 0, "ether3", dev)) { MOD_DEC_USE_COUNT; return -EAGAIN; } dev->tbusy = 0; dev->interrupt = 0; dev->start = 1; ether3_init_for_open(dev); return 0; }