On Sun, 21 Sep 2008 23:38:09 +0400 Evgeniy Polyakov <johnpol@xxxxxxxxxxx> wrote: > > As I pointed, I can rewrite the whole driver's initialization process, > so that it looked like init/wait/exit loop, which can be processed at > the module load and when fatal interrupt fires. yes please do this. > > I do hope this will result in a progress. Arjan, do you aggree to add > this patch to the current tree? > > diff --git a/drivers/net/wireless/ipw2100.c > b/drivers/net/wireless/ipw2100.c index 19a401c..9a7b64c 100644 > --- a/drivers/net/wireless/ipw2100.c > +++ b/drivers/net/wireless/ipw2100.c > @@ -206,6 +206,8 @@ MODULE_PARM_DESC(disable, "manually disable the > radio (default 0 [radio on])"); > static u32 ipw2100_debug_level = IPW_DL_NONE; > > +static int ipw2100_max_fatal_ints = 10; > + > #ifdef CONFIG_IPW2100_DEBUG > #define IPW_DEBUG(level, message...) \ > do { \ > @@ -3174,6 +3176,10 @@ static void ipw2100_irq_tasklet(struct > ipw2100_priv *priv) if (inta & IPW2100_INTA_FATAL_ERROR) { > printk(KERN_WARNING DRV_NAME > ": Fatal interrupt. Scheduling firmware > restart.\n"); > + WARN_ON(1); > + > + BUG_ON(ipw2100_max_fatal_ints-- <= 0); BUG_ON in interrupt context is just extremely hostile, since it means the box is dead. also I would suggest using WARN_ON_ONCE() -- Arjan van de Ven Intel Open Source Technology Centre For development, discussion and tips for power savings, visit http://www.lesswatts.org -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html