Some IRQ udpates for IRDA which seemed to get lost. drivers/net/irda/ali-ircc.c | 9 +++++---- drivers/net/irda/donauboe.c | 7 ++++--- drivers/net/irda/nsc-ircc.c | 7 ++++--- drivers/net/irda/smc-ircc.c | 4 ++-- drivers/net/irda/toshoboe.c | 9 ++++----- drivers/net/irda/vlsi_ir.c | 8 +++++--- drivers/net/irda/w83977af_ir.c | 8 ++++---- include/net/irda/irport.h | 2 +- 8 files changed, 29 insertions(+), 25 deletions(-) diff -puN drivers/net/irda/smc-ircc.c~irqreturn-smcc drivers/net/irda/smc-ircc.c --- 25/drivers/net/irda/smc-ircc.c~irqreturn-smcc 2003-04-22 19:07:34.000000000 -0700 +++ 25-akpm/drivers/net/irda/smc-ircc.c 2003-04-22 19:07:42.000000000 -0700 @@ -992,9 +992,9 @@ static irqreturn_t ircc_interrupt(int ir return IRQ_NONE; } irport = (struct irport_cb *) dev->priv; - ASSERT(irport != NULL, return;); + ASSERT(irport != NULL, return IRQ_NONE;); self = (struct ircc_cb *) irport->priv; - ASSERT(self != NULL, return;); + ASSERT(self != NULL, return IRQ_NONE;); /* Check if we should use the SIR interrupt handler */ if (self->io->speed < 576000) { diff -puN include/net/irda/irport.h~irqreturn-smcc include/net/irda/irport.h --- 25/include/net/irda/irport.h~irqreturn-smcc 2003-04-22 19:13:15.000000000 -0700 +++ 25-akpm/include/net/irda/irport.h 2003-04-22 19:17:36.000000000 -0700 @@ -73,7 +73,7 @@ struct irport_cb { /* For piggyback drivers */ void *priv; void (*change_speed)(void *priv, __u32 speed); - void (*interrupt)(int irq, void *dev_id, struct pt_regs *regs); + int (*interrupt)(int irq, void *dev_id, struct pt_regs *regs); }; struct irport_cb *irport_open(int i, unsigned int iobase, unsigned int irq); diff -puN drivers/net/irda/w83977af_ir.c~irqreturn-smcc drivers/net/irda/w83977af_ir.c --- 25/drivers/net/irda/w83977af_ir.c~irqreturn-smcc 2003-04-22 19:25:32.000000000 -0700 +++ 25-akpm/drivers/net/irda/w83977af_ir.c 2003-04-22 19:26:20.000000000 -0700 @@ -97,7 +97,6 @@ static int w83977af_hard_xmit(struct sk static int w83977af_pio_write(int iobase, __u8 *buf, int len, int fifo_size); static void w83977af_dma_write(struct w83977af_ir *self, int iobase); static void w83977af_change_speed(struct w83977af_ir *self, __u32 speed); -static void w83977af_interrupt(int irq, void *dev_id, struct pt_regs *regs); static int w83977af_is_receiving(struct w83977af_ir *self); static int w83977af_net_init(struct net_device *dev); @@ -1118,7 +1117,8 @@ static __u8 w83977af_fir_interrupt(struc * An interrupt from the chip has arrived. Time to do some work * */ -static void w83977af_interrupt(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t w83977af_interrupt(int irq, void *dev_id, + struct pt_regs *regs) { struct net_device *dev = (struct net_device *) dev_id; struct w83977af_ir *self; @@ -1128,7 +1128,7 @@ static void w83977af_interrupt(int irq, if (!dev) { printk(KERN_WARNING "%s: irq %d for unknown device.\n", driver_name, irq); - return; + return IRQ_NONE; } self = (struct w83977af_ir *) dev->priv; @@ -1153,7 +1153,7 @@ static void w83977af_interrupt(int irq, outb(icr, iobase+ICR); /* Restore (new) interrupts */ outb(set, iobase+SSR); /* Restore bank register */ - + return IRQ_HANDLED; } /* diff -puN drivers/net/irda/nsc-ircc.c~irqreturn-smcc drivers/net/irda/nsc-ircc.c --- 25/drivers/net/irda/nsc-ircc.c~irqreturn-smcc 2003-04-22 19:26:28.000000000 -0700 +++ 25-akpm/drivers/net/irda/nsc-ircc.c 2003-04-22 19:27:02.000000000 -0700 @@ -131,7 +131,6 @@ static int nsc_ircc_hard_xmit_fir(struc static int nsc_ircc_pio_write(int iobase, __u8 *buf, int len, int fifo_size); static void nsc_ircc_dma_xmit(struct nsc_ircc_cb *self, int iobase); static __u8 nsc_ircc_change_speed(struct nsc_ircc_cb *self, __u32 baud); -static void nsc_ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs); static int nsc_ircc_is_receiving(struct nsc_ircc_cb *self); static int nsc_ircc_read_dongle_id (int iobase); static void nsc_ircc_init_dongle_interface (int iobase, int dongle_id); @@ -1781,7 +1780,8 @@ static void nsc_ircc_fir_interrupt(struc * An interrupt from the chip has arrived. Time to do some work * */ -static void nsc_ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t nsc_ircc_interrupt(int irq, void *dev_id, + struct pt_regs *regs) { struct net_device *dev = (struct net_device *) dev_id; struct nsc_ircc_cb *self; @@ -1790,7 +1790,7 @@ static void nsc_ircc_interrupt(int irq, if (!dev) { WARNING("%s: irq %d for unknown device.\n", driver_name, irq); - return; + return IRQ_NONE; } self = (struct nsc_ircc_cb *) dev->priv; @@ -1818,6 +1818,7 @@ static void nsc_ircc_interrupt(int irq, outb(bsr, iobase+BSR); /* Restore bank register */ spin_unlock(&self->lock); + return IRQ_HANDLED; } /* diff -puN drivers/net/irda/toshoboe.c~irqreturn-smcc drivers/net/irda/toshoboe.c --- 25/drivers/net/irda/toshoboe.c~irqreturn-smcc 2003-04-22 19:27:09.000000000 -0700 +++ 25-akpm/drivers/net/irda/toshoboe.c 2003-04-22 19:28:05.000000000 -0700 @@ -349,7 +349,7 @@ toshoboe_hard_xmit (struct sk_buff *skb, } /*interrupt handler */ -static void +static irqreturn_t toshoboe_interrupt (int irq, void *dev_id, struct pt_regs *regs) { struct toshoboe_cb *self = (struct toshoboe_cb *) dev_id; @@ -360,7 +360,7 @@ toshoboe_interrupt (int irq, void *dev_i { printk (KERN_WARNING "%s: irq %d for unknown device.\n", driver_name, irq); - return; + return IRQ_NONE; } IRDA_DEBUG (4, "%s()\n", __FUNCTION__ ); @@ -369,7 +369,7 @@ toshoboe_interrupt (int irq, void *dev_i /* woz it us */ if (!(irqstat & 0xf8)) - return; + return IRQ_NONE; outb_p (irqstat, OBOE_ISR); /*Acknologede it */ @@ -456,8 +456,7 @@ toshoboe_interrupt (int irq, void *dev_i self->stats.rx_errors++; } - - + return IRQ_HANDLED; } static int diff -puN drivers/net/irda/donauboe.c~irqreturn-smcc drivers/net/irda/donauboe.c --- 25/drivers/net/irda/donauboe.c~irqreturn-smcc 2003-04-22 19:28:14.000000000 -0700 +++ 25-akpm/drivers/net/irda/donauboe.c 2003-04-22 19:28:49.000000000 -0700 @@ -745,20 +745,20 @@ STATIC int toshoboe_invalid_dev(int irq) return 1; } -STATIC void +STATIC irqreturn_t toshoboe_probeinterrupt (int irq, void *dev_id, struct pt_regs *regs) { struct toshoboe_cb *self = (struct toshoboe_cb *) dev_id; __u8 irqstat; if (self == NULL && toshoboe_invalid_dev(irq)) - return; + return IRQ_NONE; irqstat = INB (OBOE_ISR); /* was it us */ if (!(irqstat & OBOE_INT_MASK)) - return; + return IRQ_NONE; /* Ack all the interrupts */ OUTB (irqstat, OBOE_ISR); @@ -791,6 +791,7 @@ toshoboe_probeinterrupt (int irq, void * if (irqstat & OBOE_INT_SIP) { self->int_sip++; PROBE_DEBUG("I"); } + return IRQ_HANDLED; } STATIC int diff -puN drivers/net/irda/vlsi_ir.c~irqreturn-smcc drivers/net/irda/vlsi_ir.c --- 25/drivers/net/irda/vlsi_ir.c~irqreturn-smcc 2003-04-22 19:29:06.000000000 -0700 +++ 25-akpm/drivers/net/irda/vlsi_ir.c 2003-04-22 19:29:55.000000000 -0700 @@ -1570,7 +1570,8 @@ static int vlsi_ioctl(struct net_device /********************************************************/ -static void vlsi_interrupt(int irq, void *dev_instance, struct pt_regs *regs) +static irqreturn_t vlsi_interrupt(int irq, void *dev_instance, + struct pt_regs *regs) { struct net_device *ndev = dev_instance; vlsi_irda_dev_t *idev = ndev->priv; @@ -1579,6 +1580,7 @@ static void vlsi_interrupt(int irq, void int boguscount = 32; unsigned got_act; unsigned long flags; + int handled = 0; got_act = 0; iobase = ndev->base_addr; @@ -1591,7 +1593,7 @@ static void vlsi_interrupt(int irq, void if (!(irintr&=IRINTR_INT_MASK)) /* not our INT - probably shared */ break; - + handled = 1; if (irintr&IRINTR_RPKTINT) vlsi_rx_interrupt(ndev); @@ -1610,7 +1612,7 @@ static void vlsi_interrupt(int irq, void if (boguscount <= 0) printk(KERN_WARNING "%s: too much work in interrupt!\n", __FUNCTION__); - + return IRQ_RETVAL(handled); } /********************************************************/ diff -puN drivers/net/irda/ali-ircc.c~irqreturn-smcc drivers/net/irda/ali-ircc.c --- 25/drivers/net/irda/ali-ircc.c~irqreturn-smcc 2003-04-22 19:30:01.000000000 -0700 +++ 25-akpm/drivers/net/irda/ali-ircc.c 2003-04-22 19:30:41.000000000 -0700 @@ -95,7 +95,6 @@ static int ali_ircc_net_close(struct ne static int ali_ircc_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); static int ali_ircc_pmproc(struct pm_dev *dev, pm_request_t rqst, void *data); static void ali_ircc_change_speed(struct ali_ircc_cb *self, __u32 baud); -static void ali_ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs); static void ali_ircc_suspend(struct ali_ircc_cb *self); static void ali_ircc_wakeup(struct ali_ircc_cb *self); static struct net_device_stats *ali_ircc_net_get_stats(struct net_device *dev); @@ -632,7 +631,8 @@ static int ali_ircc_read_dongle_id (int * An interrupt from the chip has arrived. Time to do some work * */ -static void ali_ircc_interrupt(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t ali_ircc_interrupt(int irq, void *dev_id, + struct pt_regs *regs) { struct net_device *dev = (struct net_device *) dev_id; struct ali_ircc_cb *self; @@ -641,7 +641,7 @@ static void ali_ircc_interrupt(int irq, if (!dev) { WARNING("%s: irq %d for unknown device.\n", driver_name, irq); - return; + return IRQ_NONE; } self = (struct ali_ircc_cb *) dev->priv; @@ -656,7 +656,8 @@ static void ali_ircc_interrupt(int irq, spin_unlock(&self->lock); - IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__); + IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__); + return IRQ_HANDLED; } /* * Function ali_ircc_fir_interrupt(irq, struct ali_ircc_cb *self, regs) _