Commit a83cc983 authored by Jeff Garzik's avatar Jeff Garzik

Merge redhat.com:/garz/repo/linus-2.5

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