aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/synclink.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char/synclink.c')
-rw-r--r--drivers/char/synclink.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/drivers/char/synclink.c b/drivers/char/synclink.c
index 3fa625db9e4b..ce4db6f52362 100644
--- a/drivers/char/synclink.c
+++ b/drivers/char/synclink.c
@@ -1148,10 +1148,8 @@ static void mgsl_bh_transmit(struct mgsl_struct *info)
1148 printk( "%s(%d):mgsl_bh_transmit() entry on %s\n", 1148 printk( "%s(%d):mgsl_bh_transmit() entry on %s\n",
1149 __FILE__,__LINE__,info->device_name); 1149 __FILE__,__LINE__,info->device_name);
1150 1150
1151 if (tty) { 1151 if (tty)
1152 tty_wakeup(tty); 1152 tty_wakeup(tty);
1153 wake_up_interruptible(&tty->write_wait);
1154 }
1155 1153
1156 /* if transmitter idle and loopmode_send_done_requested 1154 /* if transmitter idle and loopmode_send_done_requested
1157 * then start echoing RxD to TxD 1155 * then start echoing RxD to TxD
@@ -1800,9 +1798,7 @@ static int startup(struct mgsl_struct * info)
1800 1798
1801 memset(&info->icount, 0, sizeof(info->icount)); 1799 memset(&info->icount, 0, sizeof(info->icount));
1802 1800
1803 init_timer(&info->tx_timer); 1801 setup_timer(&info->tx_timer, mgsl_tx_timeout, (unsigned long)info);
1804 info->tx_timer.data = (unsigned long)info;
1805 info->tx_timer.function = mgsl_tx_timeout;
1806 1802
1807 /* Allocate and claim adapter resources */ 1803 /* Allocate and claim adapter resources */
1808 retval = mgsl_claim_resources(info); 1804 retval = mgsl_claim_resources(info);
@@ -1853,7 +1849,7 @@ static void shutdown(struct mgsl_struct * info)
1853 wake_up_interruptible(&info->status_event_wait_q); 1849 wake_up_interruptible(&info->status_event_wait_q);
1854 wake_up_interruptible(&info->event_wait_q); 1850 wake_up_interruptible(&info->event_wait_q);
1855 1851
1856 del_timer(&info->tx_timer); 1852 del_timer_sync(&info->tx_timer);
1857 1853
1858 if (info->xmit_buf) { 1854 if (info->xmit_buf) {
1859 free_page((unsigned long) info->xmit_buf); 1855 free_page((unsigned long) info->xmit_buf);
@@ -2340,7 +2336,6 @@ static void mgsl_flush_buffer(struct tty_struct *tty)
2340 del_timer(&info->tx_timer); 2336 del_timer(&info->tx_timer);
2341 spin_unlock_irqrestore(&info->irq_spinlock,flags); 2337 spin_unlock_irqrestore(&info->irq_spinlock,flags);
2342 2338
2343 wake_up_interruptible(&tty->write_wait);
2344 tty_wakeup(tty); 2339 tty_wakeup(tty);
2345} 2340}
2346 2341
@@ -5713,8 +5708,8 @@ static void usc_start_transmitter( struct mgsl_struct *info )
5713 5708
5714 usc_TCmd( info, TCmd_SendFrame ); 5709 usc_TCmd( info, TCmd_SendFrame );
5715 5710
5716 info->tx_timer.expires = jiffies + msecs_to_jiffies(5000); 5711 mod_timer(&info->tx_timer, jiffies +
5717 add_timer(&info->tx_timer); 5712 msecs_to_jiffies(5000));
5718 } 5713 }
5719 info->tx_active = 1; 5714 info->tx_active = 1;
5720 } 5715 }