X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fnet%2Ftokenring%2Fibmtr.c;h=61f50e0b1635d03e6f7dfc5b67cac1573dc41a9a;hb=918425d07b2fe2087ee7dabf90e69a17e914649c;hp=10fa8e79d98ecfcedb83b8fe1e82db9ee4009062;hpb=86090fcac5e27b630656fe3d963a6b80e26dac44;p=linux-2.6.git diff --git a/drivers/net/tokenring/ibmtr.c b/drivers/net/tokenring/ibmtr.c index 10fa8e79d..61f50e0b1 100644 --- a/drivers/net/tokenring/ibmtr.c +++ b/drivers/net/tokenring/ibmtr.c @@ -848,6 +848,8 @@ static int tok_init_card(struct net_device *dev) struct tok_info *ti; short PIOaddr; unsigned long i; + wait_queue_t __wait; + init_waitqueue_entry(&__wait, current); PIOaddr = dev->base_addr; ti = (struct tok_info *) dev->priv; @@ -860,13 +862,18 @@ static int tok_init_card(struct net_device *dev) current->state=TASK_UNINTERRUPTIBLE; schedule_timeout(TR_RST_TIME); /* wait 50ms */ + add_wait_queue(&ti->wait_for_reset, &__wait); + set_current_state(TASK_UNINTERRUPTIBLE); outb(0, PIOaddr + ADAPTRESETREL); #ifdef ENABLE_PAGING if (ti->page_mask) writeb(SRPR_ENABLE_PAGING,ti->mmio+ACA_OFFSET+ACA_RW+SRPR_EVEN); #endif writeb(INT_ENABLE, ti->mmio + ACA_OFFSET + ACA_SET + ISRP_EVEN); - i = sleep_on_timeout(&ti->wait_for_reset, 4 * HZ); + #warning pci posting bug + i = schedule_timeout(4 * HZ); + current->state = TASK_RUNNING; + remove_wait_queue(&ti->wait_for_reset, &__wait); return i? 0 : -EAGAIN; }