From: Jiri Slaby Date: Tue, 8 May 2007 07:36:54 +0000 (-0700) Subject: Char: cyclades, timers cleanup X-Git-Tag: v2.6.22-rc1~475 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3991428d9efc7185312196f82cc36e9df4a2ddb0;p=linux-2.6 Char: cyclades, timers cleanup Signed-off-by: Jiri Slaby Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/drivers/char/cyclades.c b/drivers/char/cyclades.c index 91609539ad..14652c1ed0 100644 --- a/drivers/char/cyclades.c +++ b/drivers/char/cyclades.c @@ -932,15 +932,9 @@ do_softint(struct work_struct *work) if (test_and_clear_bit(Cy_EVENT_OPEN_WAKEUP, &info->event)) wake_up_interruptible(&info->open_wait); #ifdef CONFIG_CYZ_INTR - if (test_and_clear_bit(Cy_EVENT_Z_RX_FULL, &info->event)) { - if (cyz_rx_full_timer[info->line].function == NULL) { - cyz_rx_full_timer[info->line].expires = jiffies + 1; - cyz_rx_full_timer[info->line].function = cyz_rx_restart; - cyz_rx_full_timer[info->line].data = - (unsigned long)info; - add_timer(&cyz_rx_full_timer[info->line]); - } - } + if (test_and_clear_bit(Cy_EVENT_Z_RX_FULL, &info->event) && + !timer_pending(&cyz_rx_full_timer[info->line])) + mod_timer(&cyz_rx_full_timer[info->line], jiffies + 1); #endif if (test_and_clear_bit(Cy_EVENT_DELTA_WAKEUP, &info->event)) wake_up_interruptible(&info->delta_msr_wait); @@ -1887,7 +1881,6 @@ static void cyz_rx_restart(unsigned long arg) printk(KERN_ERR "cyc:cyz_rx_restart retval on ttyC%d was %x\n", info->line, retval); } - cyz_rx_full_timer[info->line].function = NULL; CY_UNLOCK(info, flags); } @@ -4529,8 +4522,8 @@ static void __devinit cy_init_card(struct cyclades_card *cinfo) else info->xmit_fifo_size = 4 * CYZ_FIFO_SIZE; #ifdef CONFIG_CYZ_INTR - init_timer(&cyz_rx_full_timer[port]); - cyz_rx_full_timer[port].function = NULL; + setup_timer(&cyz_rx_full_timer[port], + cyz_rx_restart, (unsigned long)info); #endif } else { info->type = PORT_CIRRUS;