drivers/net/apne.c | 9 +++++---- drivers/net/arcnet/arcnet.c | 5 +++-- drivers/net/fc/iph5526.c | 18 ++++++++++-------- drivers/net/fec.c | 18 +++++++++++++----- drivers/net/fmv18x.c | 6 +++--- drivers/net/hamradio/scc.c | 7 ++++--- drivers/net/irda/sa1100_ir.c | 3 ++- drivers/net/macmace.c | 5 +++-- drivers/net/myri_sbus.c | 4 +++- drivers/net/seeq8005.c | 9 +++++++-- drivers/net/sun3lance.c | 8 ++++---- drivers/net/sunqe.c | 1 + drivers/net/tokenring/lanstreamer.c | 5 +++-- drivers/net/tulip/de4x5.c | 2 +- drivers/net/wan/lmc/lmc_main.c | 8 ++++++-- include/linux/arcdevice.h | 2 +- 16 files changed, 69 insertions(+), 41 deletions(-) diff -puN drivers/net/apne.c~irqreturn-drivers-net drivers/net/apne.c --- 25/drivers/net/apne.c~irqreturn-drivers-net 2003-05-11 19:21:27.000000000 -0700 +++ 25-akpm/drivers/net/apne.c 2003-05-11 19:21:27.000000000 -0700 @@ -85,7 +85,7 @@ static void apne_block_input(struct net_ struct sk_buff *skb, int ring_offset); static void apne_block_output(struct net_device *dev, const int count, const unsigned char *buf, const int start_page); -static void apne_interrupt(int irq, void *dev_id, struct pt_regs *regs); +static irqreturn_t apne_interrupt(int irq, void *dev_id, struct pt_regs *regs); static int init_pcmcia(void); @@ -511,18 +511,18 @@ apne_block_output(struct net_device *dev return; } -static void apne_interrupt(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t apne_interrupt(int irq, void *dev_id, struct pt_regs *regs) { unsigned char pcmcia_intreq; if (!(gayle.inten & GAYLE_IRQ_IRQ)) - return; + return IRQ_NONE; pcmcia_intreq = pcmcia_get_intreq(); if (!(pcmcia_intreq & GAYLE_IRQ_IRQ)) { pcmcia_ack_int(pcmcia_intreq); - return; + return IRQ_NONE; } if (ei_debug > 3) printk("pcmcia intreq = %x\n", pcmcia_intreq); @@ -530,6 +530,7 @@ static void apne_interrupt(int irq, void ei_interrupt(irq, dev_id, regs); pcmcia_ack_int(pcmcia_get_intreq()); pcmcia_enable_irq(); + return IRQ_HANDLED; } #ifdef MODULE diff -puN drivers/net/arcnet/arcnet.c~irqreturn-drivers-net drivers/net/arcnet/arcnet.c --- 25/drivers/net/arcnet/arcnet.c~irqreturn-drivers-net 2003-05-11 19:21:27.000000000 -0700 +++ 25-akpm/drivers/net/arcnet/arcnet.c 2003-05-11 19:21:27.000000000 -0700 @@ -701,7 +701,7 @@ static void arcnet_timeout(struct net_de * interrupts. Establish which device needs attention, and call the correct * chipset interrupt handler. */ -void arcnet_interrupt(int irq, void *dev_id, struct pt_regs *regs) +irqreturn_t arcnet_interrupt(int irq, void *dev_id, struct pt_regs *regs) { struct net_device *dev = dev_id; struct arcnet_local *lp; @@ -726,7 +726,7 @@ void arcnet_interrupt(int irq, void *dev ACOMMAND(CFLAGScmd | RESETclear); AINTMASK(0); spin_unlock(&arcnet_lock); - return; + return IRQ_HANDLED; } BUGMSG(D_DURING, "in arcnet_inthandler (status=%Xh, intmask=%Xh)\n", @@ -894,6 +894,7 @@ void arcnet_interrupt(int irq, void *dev AINTMASK(lp->intmask); spin_unlock(&arcnet_lock); + return IRQ_RETVAL(didsomething); } diff -puN drivers/net/fc/iph5526.c~irqreturn-drivers-net drivers/net/fc/iph5526.c --- 25/drivers/net/fc/iph5526.c~irqreturn-drivers-net 2003-05-11 19:21:27.000000000 -0700 +++ 25-akpm/drivers/net/fc/iph5526.c 2003-05-11 19:21:27.000000000 -0700 @@ -134,7 +134,7 @@ clone_list[] __initdata = { {0,} }; -static void tachyon_interrupt(int irq, void *dev_id, struct pt_regs *regs); +static irqreturn_t tachyon_interrupt(int irq, void *dev_id, struct pt_regs *regs); static void tachyon_interrupt_handler(int irq, void* dev_id, struct pt_regs* regs); static int initialize_register_pointers(struct fc_info *fi); @@ -623,7 +623,7 @@ u_int bus_addr, bus_indx_addr, i; } -static void tachyon_interrupt(int irq, void* dev_id, struct pt_regs* regs) +static irqreturn_t tachyon_interrupt(int irq, void* dev_id, struct pt_regs* regs) { struct Scsi_Host *host = dev_id; struct iph5526_hostdata *hostdata = (struct iph5526_hostdata *)host->hostdata; @@ -632,6 +632,7 @@ u_long flags; spin_lock_irqsave(&fi->fc_lock, flags); tachyon_interrupt_handler(irq, dev_id, regs); spin_unlock_irqrestore(&fi->fc_lock, flags); + return IRQ_HANDLED; } static void tachyon_interrupt_handler(int irq, void* dev_id, struct pt_regs* regs) @@ -3721,12 +3722,13 @@ struct fc_info *fi = (struct fc_info*)de int iph5526_detect(Scsi_Host_Template *tmpt) { -struct Scsi_Host *host = NULL; -struct iph5526_hostdata *hostdata; -struct fc_info *fi = NULL; -int no_of_hosts = 0, timeout, i, j, count = 0; -u_int pci_maddr = 0; -struct pci_dev *pdev = NULL; + struct Scsi_Host *host = NULL; + struct iph5526_hostdata *hostdata; + struct fc_info *fi = NULL; + int no_of_hosts = 0, i, j, count = 0; + u_int pci_maddr = 0; + struct pci_dev *pdev = NULL; + unsigned long timeout; tmpt->proc_name = "iph5526"; if (pci_present() == 0) { diff -puN drivers/net/fec.c~irqreturn-drivers-net drivers/net/fec.c --- 25/drivers/net/fec.c~irqreturn-drivers-net 2003-05-11 19:21:27.000000000 -0700 +++ 25-akpm/drivers/net/fec.c 2003-05-11 19:21:27.000000000 -0700 @@ -188,7 +188,7 @@ struct fec_enet_private { static int fec_enet_open(struct net_device *dev); static int fec_enet_start_xmit(struct sk_buff *skb, struct net_device *dev); static void fec_enet_mii(struct net_device *dev); -static void fec_enet_interrupt(int irq, void * dev_id, struct pt_regs * regs); +static irqreturn_t fec_enet_interrupt(int irq, void * dev_id, struct pt_regs * regs); static void fec_enet_tx(struct net_device *dev); static void fec_enet_rx(struct net_device *dev); static int fec_enet_close(struct net_device *dev); @@ -393,12 +393,13 @@ fec_timeout(struct net_device *dev) /* The interrupt handler. * This is called from the MPC core interrupt. */ -static void +static irqreturn_t fec_enet_interrupt(int irq, void * dev_id, struct pt_regs * regs) { struct net_device *dev = dev_id; volatile fec_t *fecp; uint int_events; + int handled = 0; fecp = (volatile fec_t*)dev->base_addr; @@ -413,20 +414,27 @@ fec_enet_interrupt(int irq, void * dev_i /* Handle receive event in its own function. */ - if (int_events & FEC_ENET_RXF) + if (int_events & FEC_ENET_RXF) { + handled = 1; fec_enet_rx(dev); + } /* Transmit OK, or non-fatal error. Update the buffer descriptors. FEC handles all errors, we just discover them as part of the transmit process. */ - if (int_events & FEC_ENET_TXF) + if (int_events & FEC_ENET_TXF) { + handled = 1; fec_enet_tx(dev); + } - if (int_events & FEC_ENET_MII) + if (int_events & FEC_ENET_MII) { + handled = 1; fec_enet_mii(dev); + } } + return IRQ_RETVAL(handled); } diff -puN drivers/net/fmv18x.c~irqreturn-drivers-net drivers/net/fmv18x.c --- 25/drivers/net/fmv18x.c~irqreturn-drivers-net 2003-05-11 19:21:27.000000000 -0700 +++ 25-akpm/drivers/net/fmv18x.c 2003-05-11 19:21:27.000000000 -0700 @@ -114,7 +114,7 @@ extern int fmv18x_probe(struct net_devic static int fmv18x_probe1(struct net_device *dev, short ioaddr); static int net_open(struct net_device *dev); static int net_send_packet(struct sk_buff *skb, struct net_device *dev); -static void net_interrupt(int irq, void *dev_id, struct pt_regs *regs); +static irqreturn_t net_interrupt(int irq, void *dev_id, struct pt_regs *regs); static void net_rx(struct net_device *dev); static void net_timeout(struct net_device *dev); static int net_close(struct net_device *dev); @@ -423,7 +423,7 @@ static int net_send_packet(struct sk_buf /* The typical workload of the driver: Handle the network interface interrupts. */ -static void +static irqreturn_t net_interrupt(int irq, void *dev_id, struct pt_regs *regs) { struct net_device *dev = dev_id; @@ -476,7 +476,7 @@ net_interrupt(int irq, void *dev_id, str spin_unlock(&lp->lock); } } - return; + return IRQ_RETVAL(status); } /* We have a good packet(s), get it/them out of the buffers. */ diff -puN drivers/net/hamradio/scc.c~irqreturn-drivers-net drivers/net/hamradio/scc.c --- 25/drivers/net/hamradio/scc.c~irqreturn-drivers-net 2003-05-11 19:21:27.000000000 -0700 +++ 25-akpm/drivers/net/hamradio/scc.c 2003-05-11 19:21:27.000000000 -0700 @@ -199,7 +199,7 @@ static void z8530_init(void); static void init_channel(struct scc_channel *scc); static void scc_key_trx (struct scc_channel *scc, char tx); -static void scc_isr(int irq, void *dev_id, struct pt_regs *regs); +static irqreturn_t scc_isr(int irq, void *dev_id, struct pt_regs *regs); static void scc_init_timer(struct scc_channel *scc); static int scc_net_setup(struct scc_channel *scc, unsigned char *name, int addev); @@ -625,7 +625,7 @@ static void scc_isr_dispatch(struct scc_ #define SCC_IRQTIMEOUT 30000 -static void scc_isr(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t scc_isr(int irq, void *dev_id, struct pt_regs *regs) { unsigned char vector; struct scc_channel *scc; @@ -653,7 +653,7 @@ static void scc_isr(int irq, void *dev_i if (k == SCC_IRQTIMEOUT) printk(KERN_WARNING "z8530drv: endless loop in scc_isr()?\n"); - return; + return IRQ_HANDLED; } /* Find the SCC generating the interrupt by polling all attached SCCs @@ -701,6 +701,7 @@ static void scc_isr(int irq, void *dev_i } else ctrl++; } + return IRQ_HANDLED; } diff -puN drivers/net/irda/sa1100_ir.c~irqreturn-drivers-net drivers/net/irda/sa1100_ir.c --- 25/drivers/net/irda/sa1100_ir.c~irqreturn-drivers-net 2003-05-11 19:21:27.000000000 -0700 +++ 25-akpm/drivers/net/irda/sa1100_ir.c 2003-05-11 19:21:27.000000000 -0700 @@ -636,13 +636,14 @@ static void sa1100_irda_fir_irq(struct n sa1100_irda_rx_dma_start(si); } -static void sa1100_irda_irq(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t sa1100_irda_irq(int irq, void *dev_id, struct pt_regs *regs) { struct net_device *dev = dev_id; if (IS_FIR(((struct sa1100_irda *)dev->priv))) sa1100_irda_fir_irq(dev); else sa1100_irda_hpsir_irq(dev); + return IRQ_HANDLED; } /* diff -puN drivers/net/macmace.c~irqreturn-drivers-net drivers/net/macmace.c --- 25/drivers/net/macmace.c~irqreturn-drivers-net 2003-05-11 19:21:27.000000000 -0700 +++ 25-akpm/drivers/net/macmace.c 2003-05-11 19:21:27.000000000 -0700 @@ -77,7 +77,7 @@ static int mace_xmit_start(struct sk_buf static struct net_device_stats *mace_stats(struct net_device *dev); static void mace_set_multicast(struct net_device *dev); static int mace_set_address(struct net_device *dev, void *addr); -static void mace_interrupt(int irq, void *dev_id, struct pt_regs *regs); +static irqreturn_t mace_interrupt(int irq, void *dev_id, struct pt_regs *regs); static void mace_dma_intr(int irq, void *dev_id, struct pt_regs *regs); static void mace_tx_timeout(struct net_device *dev); @@ -561,7 +561,7 @@ static void mace_recv_interrupt(struct n * Process the chip interrupt */ -static void mace_interrupt(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t mace_interrupt(int irq, void *dev_id, struct pt_regs *regs) { struct net_device *dev = (struct net_device *) dev_id; struct mace_data *mp = (struct mace_data *) dev->priv; @@ -577,6 +577,7 @@ static void mace_interrupt(int irq, void if (ir & RCVINT) { mace_recv_interrupt(dev); } + return IRQ_HANDLED; } static void mace_tx_timeout(struct net_device *dev) diff -puN drivers/net/myri_sbus.c~irqreturn-drivers-net drivers/net/myri_sbus.c --- 25/drivers/net/myri_sbus.c~irqreturn-drivers-net 2003-05-11 19:21:27.000000000 -0700 +++ 25-akpm/drivers/net/myri_sbus.c 2003-05-11 19:21:27.000000000 -0700 @@ -541,6 +541,7 @@ static irqreturn_t myri_interrupt(int ir struct myri_channel *chan = &mp->shmem->channel; unsigned long flags; u32 status; + int handled = 0; spin_lock_irqsave(&mp->irq_lock, flags); @@ -549,6 +550,7 @@ static irqreturn_t myri_interrupt(int ir if (status & ISTAT_HOST) { u32 softstate; + handled = 1; DIRQ(("IRQ_DISAB ")); myri_disable_irq(lregs, mp->cregs); softstate = sbus_readl(&chan->state); @@ -568,7 +570,7 @@ static irqreturn_t myri_interrupt(int ir spin_unlock_irqrestore(&mp->irq_lock, flags); - return IRQ_HANDLED; + return IRQ_RETVAL(handled); } static int myri_open(struct net_device *dev) diff -puN drivers/net/seeq8005.c~irqreturn-drivers-net drivers/net/seeq8005.c --- 25/drivers/net/seeq8005.c~irqreturn-drivers-net 2003-05-11 19:21:27.000000000 -0700 +++ 25-akpm/drivers/net/seeq8005.c 2003-05-11 19:21:27.000000000 -0700 @@ -84,7 +84,7 @@ static int seeq8005_probe1(struct net_de static int seeq8005_open(struct net_device *dev); static void seeq8005_timeout(struct net_device *dev); static int seeq8005_send_packet(struct sk_buff *skb, struct net_device *dev); -static void seeq8005_interrupt(int irq, void *dev_id, struct pt_regs *regs); +static irqreturn_t seeq8005_interrupt(int irq, void *dev_id, struct pt_regs *regs); static void seeq8005_rx(struct net_device *dev); static int seeq8005_close(struct net_device *dev); static struct net_device_stats *seeq8005_get_stats(struct net_device *dev); @@ -400,11 +400,12 @@ static int seeq8005_send_packet(struct s /* The typical workload of the driver: Handle the network interface interrupts. */ -static void seeq8005_interrupt(int irq, void *dev_id, struct pt_regs * regs) +static irqreturn_t seeq8005_interrupt(int irq, void *dev_id, struct pt_regs * regs) { struct net_device *dev = dev_id; struct net_local *lp; int ioaddr, status, boguscount = 0; + int handled = 0; ioaddr = dev->base_addr; lp = (struct net_local *)dev->priv; @@ -416,17 +417,20 @@ static void seeq8005_interrupt(int irq, } if (status & SEEQSTAT_WINDOW_INT) { + handled = 1; outw( SEEQCMD_WINDOW_INT_ACK | (status & SEEQCMD_INT_MASK), SEEQ_CMD); if (net_debug) { printk("%s: window int!\n",dev->name); } } if (status & SEEQSTAT_TX_INT) { + handled = 1; outw( SEEQCMD_TX_INT_ACK | (status & SEEQCMD_INT_MASK), SEEQ_CMD); lp->stats.tx_packets++; netif_wake_queue(dev); /* Inform upper layers. */ } if (status & SEEQSTAT_RX_INT) { + handled = 1; /* Got a packet(s). */ seeq8005_rx(dev); } @@ -436,6 +440,7 @@ static void seeq8005_interrupt(int irq, if(net_debug>2) { printk("%s: eoi\n",dev->name); } + return IRQ_RETVAL(handled); } /* We have a good packet(s), get it/them out of the buffers. */ diff -puN drivers/net/sun3lance.c~irqreturn-drivers-net drivers/net/sun3lance.c --- 25/drivers/net/sun3lance.c~irqreturn-drivers-net 2003-05-11 19:21:27.000000000 -0700 +++ 25-akpm/drivers/net/sun3lance.c 2003-05-11 19:21:27.000000000 -0700 @@ -238,7 +238,7 @@ static int lance_probe( struct net_devic static int lance_open( struct net_device *dev ); static void lance_init_ring( struct net_device *dev ); static int lance_start_xmit( struct sk_buff *skb, struct net_device *dev ); -static void lance_interrupt( int irq, void *dev_id, struct pt_regs *fp ); +static irqreturn_t lance_interrupt( int irq, void *dev_id, struct pt_regs *fp ); static int lance_rx( struct net_device *dev ); static int lance_close( struct net_device *dev ); static struct net_device_stats *lance_get_stats( struct net_device *dev ); @@ -620,7 +620,7 @@ static int lance_start_xmit( struct sk_b /* The LANCE interrupt handler. */ -static void lance_interrupt( int irq, void *dev_id, struct pt_regs *fp) +static irqreturn_t lance_interrupt( int irq, void *dev_id, struct pt_regs *fp) { struct net_device *dev = dev_id; struct lance_private *lp = dev->priv; @@ -629,7 +629,7 @@ static void lance_interrupt( int irq, vo if (dev == NULL) { DPRINTK( 1, ( "lance_interrupt(): invalid dev_id\n" )); - return; + return IRQ_NONE; } if (in_interrupt) @@ -743,7 +743,7 @@ static void lance_interrupt( int irq, vo DPRINTK( 2, ( "%s: exiting interrupt, csr0=%#04x.\n", dev->name, DREG )); in_interrupt = 0; - return; + return IRQ_HANDLED; } /* get packet, toss into skbuff */ diff -puN drivers/net/sunqe.c~irqreturn-drivers-net drivers/net/sunqe.c --- 25/drivers/net/sunqe.c~irqreturn-drivers-net 2003-05-11 19:21:27.000000000 -0700 +++ 25-akpm/drivers/net/sunqe.c 2003-05-11 19:21:27.000000000 -0700 @@ -124,6 +124,7 @@ static void qe_init_rings(struct sunqe * qb->qe_rxd[i].rx_flags = (RXD_OWN | ((RXD_PKT_SZ) & RXD_LENGTH)); } + return IRQ_HANDLED; } static int qe_init(struct sunqe *qep, int from_irq) diff -puN drivers/net/tokenring/lanstreamer.c~irqreturn-drivers-net drivers/net/tokenring/lanstreamer.c --- 25/drivers/net/tokenring/lanstreamer.c~irqreturn-drivers-net 2003-05-11 19:21:27.000000000 -0700 +++ 25-akpm/drivers/net/tokenring/lanstreamer.c 2003-05-11 19:21:27.000000000 -0700 @@ -201,7 +201,7 @@ static int streamer_open(struct net_devi static int streamer_xmit(struct sk_buff *skb, struct net_device *dev); static int streamer_close(struct net_device *dev); static void streamer_set_rx_mode(struct net_device *dev); -static void streamer_interrupt(int irq, void *dev_id, +static irqreturn_t streamer_interrupt(int irq, void *dev_id, struct pt_regs *regs); static struct net_device_stats *streamer_get_stats(struct net_device *dev); static int streamer_set_mac_address(struct net_device *dev, void *addr); @@ -1021,7 +1021,7 @@ static void streamer_rx(struct net_devic } /* end for all completed rx descriptors */ } -static void streamer_interrupt(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t streamer_interrupt(int irq, void *dev_id, struct pt_regs *regs) { struct net_device *dev = (struct net_device *) dev_id; struct streamer_private *streamer_priv = @@ -1142,6 +1142,7 @@ static void streamer_interrupt(int irq, } /* while() */ spin_unlock(&streamer_priv->streamer_lock) ; + return IRQ_HANDLED; } static int streamer_xmit(struct sk_buff *skb, struct net_device *dev) diff -puN drivers/net/tulip/de4x5.c~irqreturn-drivers-net drivers/net/tulip/de4x5.c --- 25/drivers/net/tulip/de4x5.c~irqreturn-drivers-net 2003-05-11 19:21:27.000000000 -0700 +++ 25-akpm/drivers/net/tulip/de4x5.c 2003-05-11 19:21:27.000000000 -0700 @@ -2026,7 +2026,7 @@ set_multicast_list(struct net_device *de } } - return; + return IRQ_HANDLED; } /* diff -puN drivers/net/wan/lmc/lmc_main.c~irqreturn-drivers-net drivers/net/wan/lmc/lmc_main.c --- 25/drivers/net/wan/lmc/lmc_main.c~irqreturn-drivers-net 2003-05-11 19:21:27.000000000 -0700 +++ 25-akpm/drivers/net/wan/lmc/lmc_main.c 2003-05-11 19:21:27.000000000 -0700 @@ -117,7 +117,7 @@ static int lmc_rx (struct net_device *de static int lmc_open(struct net_device *dev); static int lmc_close(struct net_device *dev); static struct net_device_stats *lmc_get_stats(struct net_device *dev); -static void lmc_interrupt(int irq, void *dev_instance, struct pt_regs *regs); +static irqreturn_t lmc_interrupt(int irq, void *dev_instance, struct pt_regs *regs); static int lmc_set_config(struct net_device *dev, struct ifmap *map); static void lmc_initcsrs(lmc_softc_t * const sc, lmc_csrptr_t csr_base, size_t csr_size); static void lmc_softreset(lmc_softc_t * const); @@ -1388,7 +1388,7 @@ static int lmc_ifdown (struct net_device /* Interrupt handling routine. This will take an incoming packet, or clean * up after a trasmit. */ -static void lmc_interrupt (int irq, void *dev_instance, struct pt_regs *regs) /*fold00*/ +static irqreturn_t lmc_interrupt (int irq, void *dev_instance, struct pt_regs *regs) /*fold00*/ { struct net_device *dev = (struct net_device *) dev_instance; lmc_softc_t *sc; @@ -1398,6 +1398,7 @@ static void lmc_interrupt (int irq, void unsigned int badtx; u32 firstcsr; int max_work = LMC_RXDESCS; + int handled = 0; lmc_trace(dev, "lmc_interrupt in"); @@ -1421,6 +1422,8 @@ static void lmc_interrupt (int irq, void /* always go through this loop at least once */ while (csr & sc->lmc_intrmask) { + handled = 1; + /* * Clear interrupt bits, we handle all case below */ @@ -1580,6 +1583,7 @@ lmc_int_fail_out: spin_unlock(&sc->lmc_lock); lmc_trace(dev, "lmc_interrupt out"); + return IRQ_RETVAL(handled); } static int lmc_start_xmit (struct sk_buff *skb, struct net_device *dev) /*fold00*/ diff -puN include/linux/arcdevice.h~irqreturn-drivers-net include/linux/arcdevice.h --- 25/include/linux/arcdevice.h~irqreturn-drivers-net 2003-05-11 19:21:27.000000000 -0700 +++ 25-akpm/include/linux/arcdevice.h 2003-05-11 19:21:27.000000000 -0700 @@ -329,7 +329,7 @@ void arcnet_dump_packet(struct net_devic #endif void arcnet_unregister_proto(struct ArcProto *proto); -void arcnet_interrupt(int irq, void *dev_id, struct pt_regs *regs); +irqreturn_t arcnet_interrupt(int irq, void *dev_id, struct pt_regs *regs); void arcdev_setup(struct net_device *dev); void arcnet_rx(struct net_device *dev, int bufnum); _