[patch] Unable to associate with already associated network on ipw3945 hardware

Jouni Malinen j at w1.fi
Tue Sep 4 22:23:07 EDT 2007


On Tue, Sep 04, 2007 at 12:29:27PM +0200, Reinhard Tartler wrote:

> This is a forward for a bug filed by Scott Robinson against the
> wpasupplicant package in ubuntu. You can see the bug report here:
> 
> https://bugs.launchpad.net/ubuntu/+source/wpasupplicant/+bug/135442

> > the ipw3945 driver does not send an association event in the case of a
> > requested association to the already associated AP.

Does the driver actually re-associate at this point or just ignore the
request? If it re-associates, I would certainly expect it to report the
association. If not, I would have expected it to reassociate and
consequently, report the association.. ;-)

> > wpasupplicant expects this but won't request a disassociation due to
> > the bssid never being filled in its internal view of the wireless
> > interface.
> >
> > The attached patch can be placed in the debian/patches directory for
> > wpasupplicant and will fill in the data structures and request a
> > disassociation, thereby solving the problem.

I'm not that keen on forcing the disassociation at this point
unconditionally, but I do have to admit that I ended up doing exactly
the same with driver_ndis.c. Then again, with Linux, I would expect us
to be more likely to be able to make drivers behave more sanely than in
the NDIS case..

> --- wpa_supplicant/wpa_supplicant.c.orig	2007-05-28 10:26:55.000000000 -0700
> +++ wpa_supplicant/wpa_supplicant.c	2007-08-24 19:08:22.000000000 -0700
> @@ -2107,6 +2107,11 @@
>  	wpa_printf(MSG_DEBUG, "RSN: flushing PMKID list in the driver");
>  	wpa_drv_flush_pmkid(wpa_s);
>  
> +	/* Disassociate the interface on startup, as WPAS has presumptions
> +	 * about the whole mess. */
> +	wpa_supplicant_get_bssid(wpa_s, wpa_s->bssid);
> +	wpa_supplicant_disassociate(wpa_s, WLAN_REASON_UNSPECIFIED);

What is the get_bssid used for here if the next operation is to request
disassociation immediately? The wording of that comment is not that
helpful here..

Using get_bssid to figure out whether the driver is associated and then
do something differently could be one option. However, with WPA it is
often best to just force the driver to re-associate. I would just expect
the driver to do this (and report new association) when we ask it to
associate; even if this is for the same BSS that was used before.

-- 
Jouni Malinen                                            PGP id EFC895FA



More information about the HostAP mailing list