|
@@ -171,9 +171,6 @@ static struct pci_driver isicom_driver = {
|
|
static int prev_card = 3; /* start servicing isi_card[0] */
|
|
static int prev_card = 3; /* start servicing isi_card[0] */
|
|
static struct tty_driver *isicom_normal;
|
|
static struct tty_driver *isicom_normal;
|
|
|
|
|
|
-static DECLARE_COMPLETION(isi_timerdone);
|
|
|
|
-static char re_schedule = 1;
|
|
|
|
-
|
|
|
|
static void isicom_tx(unsigned long _data);
|
|
static void isicom_tx(unsigned long _data);
|
|
static void isicom_start(struct tty_struct *tty);
|
|
static void isicom_start(struct tty_struct *tty);
|
|
|
|
|
|
@@ -502,11 +499,6 @@ unlock:
|
|
spin_unlock_irqrestore(&isi_card[card].card_lock, flags);
|
|
spin_unlock_irqrestore(&isi_card[card].card_lock, flags);
|
|
/* schedule another tx for hopefully in about 10ms */
|
|
/* schedule another tx for hopefully in about 10ms */
|
|
sched_again:
|
|
sched_again:
|
|
- if (!re_schedule) {
|
|
|
|
- complete(&isi_timerdone);
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
mod_timer(&tx, jiffies + msecs_to_jiffies(10));
|
|
mod_timer(&tx, jiffies + msecs_to_jiffies(10));
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1890,9 +1882,7 @@ error:
|
|
|
|
|
|
static void __exit isicom_exit(void)
|
|
static void __exit isicom_exit(void)
|
|
{
|
|
{
|
|
- re_schedule = 0;
|
|
|
|
-
|
|
|
|
- wait_for_completion_timeout(&isi_timerdone, HZ);
|
|
|
|
|
|
+ del_timer_sync(&tx);
|
|
|
|
|
|
pci_unregister_driver(&isicom_driver);
|
|
pci_unregister_driver(&isicom_driver);
|
|
tty_unregister_driver(isicom_normal);
|
|
tty_unregister_driver(isicom_normal);
|