diff options
| -rw-r--r-- | drivers/net/3c505.c | 30 | ||||
| -rw-r--r-- | drivers/net/3c505.h | 2 | ||||
| -rw-r--r-- | drivers/net/depca.c | 7 | ||||
| -rw-r--r-- | drivers/net/ni5010.c | 6 | ||||
| -rw-r--r-- | drivers/net/ni52.c | 7 | ||||
| -rw-r--r-- | drivers/net/ni65.c | 10 | ||||
| -rw-r--r-- | drivers/net/tulip/dmfe.c | 11 | ||||
| -rw-r--r-- | drivers/net/tulip/winbond-840.c | 10 |
8 files changed, 44 insertions, 39 deletions
diff --git a/drivers/net/3c505.c b/drivers/net/3c505.c index 25f22cd89701..3112d5deac88 100644 --- a/drivers/net/3c505.c +++ b/drivers/net/3c505.c @@ -259,7 +259,7 @@ static inline unsigned int backlog_next(unsigned int n) static inline int get_status(unsigned int base_addr) { - int timeout = jiffies + 10*HZ/100; + unsigned long timeout = jiffies + 10*HZ/100; register int stat1; do { stat1 = inb_status(base_addr); @@ -283,7 +283,7 @@ static int start_receive(struct net_device *, pcb_struct *); inline static void adapter_reset(struct net_device *dev) { - int timeout; + unsigned long timeout; elp_device *adapter = dev->priv; unsigned char orig_hcr = adapter->hcr_val; @@ -343,7 +343,7 @@ static inline void check_3c505_dma(struct net_device *dev) /* Primitive functions used by send_pcb() */ static inline unsigned int send_pcb_slow(unsigned int base_addr, unsigned char byte) { - unsigned int timeout; + unsigned long timeout; outb_command(byte, base_addr); for (timeout = jiffies + 5*HZ/100; time_before(jiffies, timeout);) { if (inb_status(base_addr) & HCRE) @@ -402,7 +402,7 @@ static inline void prime_rx(struct net_device *dev) static int send_pcb(struct net_device *dev, pcb_struct * pcb) { int i; - int timeout; + unsigned long timeout; elp_device *adapter = dev->priv; unsigned long flags; @@ -488,7 +488,7 @@ static int receive_pcb(struct net_device *dev, pcb_struct * pcb) int i, j; int total_length; int stat; - int timeout; + unsigned long timeout; unsigned long flags; elp_device *adapter = dev->priv; @@ -662,14 +662,14 @@ static void receive_packet(struct net_device *dev, int len) * ******************************************************/ -static void elp_interrupt(int irq, void *dev_id, struct pt_regs *reg_ptr) +static irqreturn_t elp_interrupt(int irq, void *dev_id, struct pt_regs *reg_ptr) { int len; int dlen; int icount = 0; struct net_device *dev; elp_device *adapter; - int timeout; + unsigned long timeout; dev = dev_id; adapter = (elp_device *) dev->priv; @@ -855,6 +855,7 @@ static void elp_interrupt(int irq, void *dev_id, struct pt_regs *reg_ptr) * indicate no longer in interrupt routine */ spin_unlock(&adapter->lock); + return IRQ_HANDLED; } @@ -947,7 +948,7 @@ static int elp_open(struct net_device *dev) if (!send_pcb(dev, &adapter->tx_pcb)) printk("%s: couldn't send memory configuration command\n", dev->name); else { - int timeout = jiffies + TIMEOUT; + unsigned long timeout = jiffies + TIMEOUT; while (adapter->got[CMD_CONFIGURE_ADAPTER_MEMORY] == 0 && time_before(jiffies, timeout)); if (time_after_eq(jiffies, timeout)) TIMEOUT_MSG(__LINE__); @@ -966,7 +967,7 @@ static int elp_open(struct net_device *dev) if (!send_pcb(dev, &adapter->tx_pcb)) printk("%s: couldn't send 82586 configure command\n", dev->name); else { - int timeout = jiffies + TIMEOUT; + unsigned long timeout = jiffies + TIMEOUT; while (adapter->got[CMD_CONFIGURE_82586] == 0 && time_before(jiffies, timeout)); if (time_after_eq(jiffies, timeout)) TIMEOUT_MSG(__LINE__); @@ -1150,7 +1151,7 @@ static struct net_device_stats *elp_get_stats(struct net_device *dev) if (!send_pcb(dev, &adapter->tx_pcb)) printk("%s: couldn't send get statistics command\n", dev->name); else { - int timeout = jiffies + TIMEOUT; + unsigned long timeout = jiffies + TIMEOUT; while (adapter->got[CMD_NETWORK_STATISTICS] == 0 && time_before(jiffies, timeout)); if (time_after_eq(jiffies, timeout)) { TIMEOUT_MSG(__LINE__); @@ -1317,7 +1318,7 @@ static void elp_set_mc_list(struct net_device *dev) if (!send_pcb(dev, &adapter->tx_pcb)) printk("%s: couldn't send set_multicast command\n", dev->name); else { - int timeout = jiffies + TIMEOUT; + unsigned long timeout = jiffies + TIMEOUT; while (adapter->got[CMD_LOAD_MULTICAST_LIST] == 0 && time_before(jiffies, timeout)); if (time_after_eq(jiffies, timeout)) { TIMEOUT_MSG(__LINE__); @@ -1344,7 +1345,7 @@ static void elp_set_mc_list(struct net_device *dev) printk("%s: couldn't send 82586 configure command\n", dev->name); } else { - int timeout = jiffies + TIMEOUT; + unsigned long timeout = jiffies + TIMEOUT; spin_unlock_irqrestore(&adapter->lock, flags); while (adapter->got[CMD_CONFIGURE_82586] == 0 && time_before(jiffies, timeout)); if (time_after_eq(jiffies, timeout)) @@ -1396,10 +1397,8 @@ static inline void elp_init(struct net_device *dev) static int __init elp_sense(struct net_device *dev) { - int timeout; int addr = dev->base_addr; const char *name = dev->name; - unsigned long flags; byte orig_HSR; if (!request_region(addr, ELP_IO_EXTENT, "3c505")) @@ -1506,7 +1505,8 @@ static int __init elp_autodetect(struct net_device *dev) int __init elplus_probe(struct net_device *dev) { elp_device *adapter; - int i, tries, tries1, timeout, okay; + int i, tries, tries1, okay; + unsigned long timeout; unsigned long cookie = 0; SET_MODULE_OWNER(dev); diff --git a/drivers/net/3c505.h b/drivers/net/3c505.h index 23714facc7fc..77dfeedff815 100644 --- a/drivers/net/3c505.h +++ b/drivers/net/3c505.h @@ -279,7 +279,7 @@ typedef struct { unsigned int length; struct sk_buff *skb; void *target; - long int start_time; + unsigned long start_time; } current_dma; /* flags */ diff --git a/drivers/net/depca.c b/drivers/net/depca.c index 8a06665aedc6..fd92339319a3 100644 --- a/drivers/net/depca.c +++ b/drivers/net/depca.c @@ -430,7 +430,7 @@ struct depca_private { */ static int depca_open(struct net_device *dev); static int depca_start_xmit(struct sk_buff *skb, struct net_device *dev); -static void depca_interrupt(int irq, void *dev_id, struct pt_regs *regs); +static irqreturn_t depca_interrupt(int irq, void *dev_id, struct pt_regs *regs); static int depca_close(struct net_device *dev); static int depca_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); static void depca_tx_timeout(struct net_device *dev); @@ -894,7 +894,7 @@ static int depca_start_xmit(struct sk_buff *skb, struct net_device *dev) /* ** The DEPCA interrupt handler. */ -static void depca_interrupt(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t depca_interrupt(int irq, void *dev_id, struct pt_regs *regs) { struct net_device *dev = dev_id; struct depca_private *lp; @@ -903,7 +903,7 @@ static void depca_interrupt(int irq, void *dev_id, struct pt_regs *regs) if (dev == NULL) { printk("depca_interrupt(): irq %d for unknown device.\n", irq); - return; + return IRQ_NONE; } lp = (struct depca_private *) dev->priv; @@ -938,6 +938,7 @@ static void depca_interrupt(int irq, void *dev_id, struct pt_regs *regs) outb(nicsr, DEPCA_NICSR); spin_unlock(&lp->lock); + return IRQ_HANDLED; } /* Called with lp->lock held */ diff --git a/drivers/net/ni5010.c b/drivers/net/ni5010.c index 1941d1bec6f7..06e88ea07243 100644 --- a/drivers/net/ni5010.c +++ b/drivers/net/ni5010.c @@ -104,7 +104,7 @@ extern int ni5010_probe(struct net_device *dev); static int ni5010_probe1(struct net_device *dev, int ioaddr); static int ni5010_open(struct net_device *dev); static int ni5010_send_packet(struct sk_buff *skb, struct net_device *dev); -static void ni5010_interrupt(int irq, void *dev_id, struct pt_regs *regs); +static irqreturn_t ni5010_interrupt(int irq, void *dev_id, struct pt_regs *regs); static void ni5010_rx(struct net_device *dev); static void ni5010_timeout(struct net_device *dev); static int ni5010_close(struct net_device *dev); @@ -451,7 +451,7 @@ static int ni5010_send_packet(struct sk_buff *skb, struct net_device *dev) * The typical workload of the driver: * Handle the network interface interrupts. */ -static void ni5010_interrupt(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t ni5010_interrupt(int irq, void *dev_id, struct pt_regs *regs) { struct net_device *dev = dev_id; struct ni5010_local *lp; @@ -479,7 +479,7 @@ static void ni5010_interrupt(int irq, void *dev_id, struct pt_regs *regs) if (!xmit_was_error) reset_receiver(dev); - return; + return IRQ_HANDLED; } diff --git a/drivers/net/ni52.c b/drivers/net/ni52.c index 0b16f0b64d8d..67f857fc37ae 100644 --- a/drivers/net/ni52.c +++ b/drivers/net/ni52.c @@ -193,7 +193,7 @@ sizeof(nop_cmd) = 8; #define NI52_ADDR2 0x01 static int ni52_probe1(struct net_device *dev,int ioaddr); -static void ni52_interrupt(int irq,void *dev_id,struct pt_regs *reg_ptr); +static irqreturn_t ni52_interrupt(int irq,void *dev_id,struct pt_regs *reg_ptr); static int ni52_open(struct net_device *dev); static int ni52_close(struct net_device *dev); static int ni52_send_packet(struct sk_buff *,struct net_device *); @@ -821,7 +821,7 @@ static void *alloc_rfa(struct net_device *dev,void *ptr) * Interrupt Handler ... */ -static void ni52_interrupt(int irq,void *dev_id,struct pt_regs *reg_ptr) +static irqreturn_t ni52_interrupt(int irq,void *dev_id,struct pt_regs *reg_ptr) { struct net_device *dev = dev_id; unsigned short stat; @@ -830,7 +830,7 @@ static void ni52_interrupt(int irq,void *dev_id,struct pt_regs *reg_ptr) if (!dev) { printk ("ni5210-interrupt: irq %d for unknown device.\n",irq); - return; + return IRQ_NONE; } p = (struct priv *) dev->priv; @@ -889,6 +889,7 @@ static void ni52_interrupt(int irq,void *dev_id,struct pt_regs *reg_ptr) if(debuglevel > 1) printk("i"); + return IRQ_HANDLED; } /******************************************************* diff --git a/drivers/net/ni65.c b/drivers/net/ni65.c index 6b3b9e2fe802..d19f909c1d86 100644 --- a/drivers/net/ni65.c +++ b/drivers/net/ni65.c @@ -248,7 +248,7 @@ struct priv }; static int ni65_probe1(struct net_device *dev,int); -static void ni65_interrupt(int irq, void * dev_id, struct pt_regs *regs); +static irqreturn_t ni65_interrupt(int irq, void * dev_id, struct pt_regs *regs); static void ni65_recv_intr(struct net_device *dev,int); static void ni65_xmit_intr(struct net_device *dev,int); static int ni65_open(struct net_device *dev); @@ -307,7 +307,6 @@ static int ni65_open(struct net_device *dev) if(ni65_lance_reinit(dev)) { netif_start_queue(dev); - MOD_INC_USE_COUNT; return 0; } else @@ -341,7 +340,6 @@ static int ni65_close(struct net_device *dev) } #endif free_irq(dev->irq,dev); - MOD_DEC_USE_COUNT; return 0; } @@ -512,7 +510,7 @@ static int __init ni65_probe1(struct net_device *dev,int ioaddr) } dev->base_addr = ioaddr; - + SET_MODULE_OWNER(dev); dev->open = ni65_open; dev->stop = ni65_close; dev->hard_start_xmit = ni65_send_packet; @@ -839,7 +837,7 @@ static int ni65_lance_reinit(struct net_device *dev) /* * interrupt handler */ -static void ni65_interrupt(int irq, void * dev_id, struct pt_regs * regs) +static irqreturn_t ni65_interrupt(int irq, void * dev_id, struct pt_regs * regs) { int csr0 = 0; struct net_device *dev = dev_id; @@ -940,7 +938,7 @@ static void ni65_interrupt(int irq, void * dev_id, struct pt_regs * regs) else writedatareg(CSR0_INEA); - return; + return IRQ_HANDLED; } /* diff --git a/drivers/net/tulip/dmfe.c b/drivers/net/tulip/dmfe.c index b2d33c9ac274..845dd8cb8902 100644 --- a/drivers/net/tulip/dmfe.c +++ b/drivers/net/tulip/dmfe.c @@ -298,7 +298,7 @@ static struct net_device_stats * dmfe_get_stats(struct DEVICE *); static void dmfe_set_filter_mode(struct DEVICE *); static int dmfe_do_ioctl(struct DEVICE *, struct ifreq *, int); static u16 read_srom_word(long ,int); -static void dmfe_interrupt(int , void *, struct pt_regs *); +static irqreturn_t dmfe_interrupt(int , void *, struct pt_regs *); static void dmfe_descriptor_init(struct dmfe_board_info *, unsigned long); static void allocate_rx_buffer(struct dmfe_board_info *); static void update_cr6(u32, unsigned long); @@ -726,7 +726,7 @@ static int dmfe_stop(struct DEVICE *dev) * receive the packet to upper layer, free the transmitted packet */ -static void dmfe_interrupt(int irq, void *dev_id, struct pt_regs *regs) +static irqreturn_t dmfe_interrupt(int irq, void *dev_id, struct pt_regs *regs) { struct DEVICE *dev = dev_id; struct dmfe_board_info *db = (struct dmfe_board_info *) dev->priv; @@ -737,7 +737,7 @@ static void dmfe_interrupt(int irq, void *dev_id, struct pt_regs *regs) if (!dev) { DMFE_DBUG(1, "dmfe_interrupt() without DEVICE arg", 0); - return; + return IRQ_NONE; } spin_lock_irqsave(&db->lock, flags); @@ -747,7 +747,7 @@ static void dmfe_interrupt(int irq, void *dev_id, struct pt_regs *regs) outl(db->cr5_data, ioaddr + DCR5); if ( !(db->cr5_data & 0xc1) ) { spin_unlock_irqrestore(&db->lock, flags); - return; + return IRQ_HANDLED; } /* Disable all interrupt in CR7 to solve the interrupt edge problem */ @@ -760,7 +760,7 @@ static void dmfe_interrupt(int irq, void *dev_id, struct pt_regs *regs) db->reset_fatal++; db->wait_reset = 1; /* Need to RESET */ spin_unlock_irqrestore(&db->lock, flags); - return; + return IRQ_HANDLED; } /* Received the coming packet */ @@ -786,6 +786,7 @@ static void dmfe_interrupt(int irq, void *dev_id, struct pt_regs *regs) outl(db->cr7_data, ioaddr + DCR7); spin_unlock_irqrestore(&db->lock, flags); + return IRQ_HANDLED; } diff --git a/drivers/net/tulip/winbond-840.c b/drivers/net/tulip/winbond-840.c index 04c89f62aea6..060a376ebec3 100644 --- a/drivers/net/tulip/winbond-840.c +++ b/drivers/net/tulip/winbond-840.c @@ -385,7 +385,7 @@ static void tx_timeout(struct net_device *dev); static int alloc_ringdesc(struct net_device *dev); static void free_ringdesc(struct netdev_private *np); static int start_tx(struct sk_buff *skb, struct net_device *dev); -static void intr_handler(int irq, void *dev_instance, struct pt_regs *regs); +static irqreturn_t intr_handler(int irq, void *dev_instance, struct pt_regs *regs); static void netdev_error(struct net_device *dev, int intr_status); static int netdev_rx(struct net_device *dev); static u32 __set_rx_mode(struct net_device *dev); @@ -1165,15 +1165,16 @@ static void netdev_tx_done(struct net_device *dev) /* The interrupt handler does all of the Rx thread work and cleans up after the Tx thread. */ -static void intr_handler(int irq, void *dev_instance, struct pt_regs *rgs) +static irqreturn_t intr_handler(int irq, void *dev_instance, struct pt_regs *rgs) { struct net_device *dev = (struct net_device *)dev_instance; struct netdev_private *np = dev->priv; long ioaddr = dev->base_addr; int work_limit = max_interrupt_work; + int handled = 0; if (!netif_device_present(dev)) - return; + return IRQ_NONE; do { u32 intr_status = readl(ioaddr + IntrStatus); @@ -1187,6 +1188,8 @@ static void intr_handler(int irq, void *dev_instance, struct pt_regs *rgs) if ((intr_status & (NormalIntr|AbnormalIntr)) == 0) break; + handled = 1; + if (intr_status & (IntrRxDone | RxNoBuf)) netdev_rx(dev); if (intr_status & RxNoBuf) @@ -1222,6 +1225,7 @@ static void intr_handler(int irq, void *dev_instance, struct pt_regs *rgs) if (debug > 3) printk(KERN_DEBUG "%s: exiting interrupt, status=%#4.4x.\n", dev->name, (int)readl(ioaddr + IntrStatus)); + return IRQ_RETVAL(handled); } /* This routine is logically part of the interrupt handler, but separated |
