Hi, Description: The existing wait is in TASK_INTERRUPTIBLE, but does not check for signals (especially problemtic for a 30 msec wait!) as being a cause for schedule_timeout()s return. Use msleep() instead, to guarantee the task delays as expected. Signed-off-by: Nishanth Aravamudan <nacc@xxxxxxxxxx> --- 2.6.10-v/drivers/net/cs89x0.c 2004-12-24 13:35:24.000000000 -0800 +++ 2.6.10/drivers/net/cs89x0.c 2005-01-04 14:57:49.000000000 -0800 @@ -136,6 +136,7 @@ #include <linux/string.h> #include <linux/init.h> #include <linux/bitops.h> +#include <linux/delay.h> #include <asm/system.h> #include <asm/io.h> @@ -909,8 +910,7 @@ void __init reset_chip(struct net_devic writereg(dev, PP_SelfCTL, readreg(dev, PP_SelfCTL) | POWER_ON_RESET); /* wait 30 ms */ - current->state = TASK_INTERRUPTIBLE; - schedule_timeout(30*HZ/1000); + msleep(30); #ifndef CONFIG_ARCH_IXDP2X01 if (lp->chip_type != CS8900) { - : send the line "unsubscribe linux-net" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html