Search Linux Wireless

Re: [Orinoco-devel] Agere PCMCIA sometimes takes very long time to associate with 9.48 FW

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thursday 06 November 2008, Dave wrote:
> Dave wrote:
> > Andrey Borzenkov wrote:
> >> To remind - sometimes after resume it takes *very* long time to associate,
> >> so everything else times out and I get no connection. Running orinoco from
> >> 2.6.28 in WPA mode and wpa_supplicant 0.6.4; in logs can be seen that
> >> wpa_supplicant endlessly tries to associate.
> > 
> > The orinoco driver maintains its settings across an 'if down' - 'if up'.
> > This means the card will attempt to associate as soon as you 'if up'.
> > 
> > I'm looking at a patch which will clear all driver settings in
> > orinoco_open, which should fix things for distributions which bring the
> > interface down when suspending.
> 
> Can you try the patch below? Apologies if it gets whitespace damage.
> 

It is hard to be sure when the problem is sporadic and no known way to
trigger it, but I have been running with this patch for a week without
issues; this so far exceeds usual score.

Now comments :)

- we should not be doing it in ->open. It is technically legal to set
wireless parameters before "icfonfig up" and we lose all of them. I will
try next week with similar patch in orinoco_stop().

- I am still not even sure we should do it at all. What is sematic of
ifconfig up/down w.r.t. wireless parameters? I.e. is "ifconfig down"
expected to clean all device state and start from scratch?

- finally I still think we are facing more wpa_supplicant bug, and this is
just a workaround for it. I have seen at least one case of losing access
point and wpa_supplicant was not able to cope with it after AP was found
again.

> Dave.
> 
> ---
> diff --git a/drivers/net/wireless/orinoco.c b/drivers/net/wireless/orinoco.c
> index 12059f4..8ca9d51 100644
> --- a/drivers/net/wireless/orinoco.c
> +++ b/drivers/net/wireless/orinoco.c
> @@ -721,6 +721,18 @@ static int orinoco_open(struct net_device *dev)
>         if (orinoco_lock(priv, &flags) != 0)
>                 return -EBUSY;
> 
> +       /* Clear driver settings. Copied from orinoco_init */
> +       priv->iw_mode = IW_MODE_INFRA;
> +       priv->prefer_port3 = priv->has_port3 && (! priv->has_ibss);
> +       set_port_type(priv);
> +       priv->channel = 0;
> +       priv->promiscuous = 0;
> +       priv->encode_alg = IW_ENCODE_ALG_NONE;
> +       priv->tx_key = 0;
> +       priv->wpa_enabled = 0;
> +       priv->tkip_cm_active = 0;
> +       priv->key_mgmt = 0;
> +
>         err = __orinoco_up(dev);
> 
>         if (! err)
> 
> 
> 


Attachment: signature.asc
Description: This is a digitally signed message part.


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux