hostap hangs when reseting..

Denis Vlasenko vda at
Wed May 14 02:47:06 EDT 2003

On 13 May 2003 17:19, Milan Krcmar wrote:
> It is a property of each and every computer with PRISM and hostap I
> know of. This is experience of a large user group counting several
> tens of hostap based APs. Various hardware used for computer itself,
> card mostly Zcomax Xi626, but also DLink 520 and so on).

me too. DLink 520

> The only way to make the hostap behave stably is to avoid resets (the
> most frequent reason hostap shedules card reset seems to be weak
> signal from AP while it is in Managed mode, I just had to use a
> better antenna).

No. The only acceptable way is to debug reset code and fix it.
Lets read the code (hostap-0.0.2): 

static void prism2_hw_reset(struct net_device *dev)
        local_info_t *local = (local_info_t *) dev->priv;
#if 0
        static long last_reset = 0;

        /* do not reset card more than once per second to avoid ending up in a
         * busy loop reseting the card */
        if (last_reset + HZ >= jiffies)
        last_reset = jiffies;
nice but 1) why is it commented out? 2) jiffies could wrap:
if(last_reset + HZ >= jiffies) ==> if(time_before(last_reset + HZ,jiffies))

        if (in_interrupt()) {
                printk(KERN_DEBUG "%s: driver bug - prism2_hw_reset() called "
                       "in interrupt context\n", dev->name);

--->    if (local->hw_downloading)

--->    if (local->hw_resetting) {
                printk(KERN_WARNING "%s: %s: already resetting card - "
                       "ignoring reset request\n", dev_info, dev->name);

        if (local->hw_reset_tries > 10) {
                printk(KERN_WARNING "%s: too many reset tries, skipping\n",

        printk(KERN_WARNING "%s: %s: resetting card\n", dev_info, dev->name);
--->    local->hw_resetting = 1;
        if (local->func->cor_sreset)

add a printk hunt?

+printk(KERN_DEBUG "cor_sreset()...\n");
+printk(KERN_DEBUG "hw_shutdown()...\n");
        prism2_hw_shutdown(dev, 1);
+printk(KERN_DEBUG "hw_config()...\n");
        prism2_hw_config(dev, 0);
        local->hw_resetting = 0;
+printk(KERN_DEBUG "reset done\n");

More information about the HostAP mailing list