[PATCH v2] wext: handle mode switches correctly for mac80211

Dan Williams dcbw at redhat.com
Tue Sep 2 09:37:43 EDT 2008


On Fri, 2008-08-29 at 12:57 -0400, Dan Williams wrote: 
> On Wed, 2008-06-04 at 21:02 +0300, Jouni Malinen wrote:
> > On Wed, Jun 04, 2008 at 01:36:23PM -0400, Dan Williams wrote:
> > > Since mac80211 requires that the device be !IFF_UP to change the mode
> > > (and I think the old prism54 fullmac driver does too), do that.  This
> > > shouldn't harm fullmac devices since they can handle mode switches on
> > > the fly and usually don't care about up/down that much.
> > 
> > Thanks! Applied.
> 
> A bug just got reported as a result of this for mac80211 drivers.
> 
> https://bugzilla.redhat.com/show_bug.cgi?id=459399
> 
> The basic problem is that since taking the device down clears the keys
> from the driver on many mac80211-based cards, and since the mode gets
> set _after_ the keys have been set in the driver, the keys get cleared
> on a mode switch and the resulting association is wrong.  The report is
> about ad-hoc mode specifically, but this could happen when switching
> from adhoc back to managed mode.
> 
> Fabrice suggested using WPA_DRIVER_FLAGS_SET_KEYS_AFTER_ASSOC for the
> driver, but it seems to me that setting the mode as _early_ as possible
> is the best thing to do.  Perhaps create another driver hook for
> set_mode and call that (if needed) very early in
> wpa_supplicant_associate() around line 924:
> 
> 	/* Starting new association, so clear the possibly used WPA IE from the
> 	 * previous association. */
> 	wpa_sm_set_assoc_wpa_ie(wpa_s->wpa, NULL, 0);
> 
> +	wpa_drv_set_mode(wpa_s, ssid->mode);
> 
> #ifdef IEEE8021X_EAPOL
> 	if (ssid->key_mgmt & WPA_KEY_MGMT_IEEE8021X_NO_WPA) {
> 		if (ssid->leap) {
> 
> I can't think of a reason why setting the mode first isn't the right
> thing to do in the first place.  Thoughts?  I'll cook up a patch for
> this if it sounds OK.

Two patches attached, the "big" patch moves every driver over to
set_mode(), while the "small" patch just adds the hook and moves the
nl80211 and wext drivers over.

Dan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: big-set-mode.patch
Type: text/x-patch
Size: 16731 bytes
Desc: not available
Url : http://lists.shmoo.com/pipermail/hostap/attachments/20080902/03a54b40/attachment-0002.bin 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: small-set-mode.patch
Type: text/x-patch
Size: 4558 bytes
Desc: not available
Url : http://lists.shmoo.com/pipermail/hostap/attachments/20080902/03a54b40/attachment-0003.bin 


More information about the HostAP mailing list