ext Johannes Berg wrote:
On Fri, 2009-10-16 at 15:27 +0300, Luciano Coelho wrote:
@@ -2405,7 +2411,15 @@ int ieee80211_mgd_auth(struct ieee80211_sub_if_data *sdata,
* to sleep and then change channel etc.
*/
sdata->local->oper_channel = req->bss->channel;
- ieee80211_hw_config(sdata->local, 0);
+
+ if (memcmp(sdata->local->hw.conf.oper_bssid,
+ req->bss->bssid, ETH_ALEN)) {
+ config_changed |= IEEE80211_CONF_CHANGE_OPER_BSSID;
+ memcpy(sdata->local->hw.conf.oper_bssid,
+ req->bss->bssid, ETH_ALEN);
+ }
+
+ ieee80211_hw_config(sdata->local, config_changed);
Is this really necessary before you can auth?
As we discussed on IRC, it is really needed. We must always provide a BSSID
when changing channels in preparation for an association. For this reason (and
others) the wl1271 with the current firmware does not support promiscuous mode
or frame injections.
I'll ask TI next time we meet them, if there is any possibility to remove the
need for the BSSID at this point, so things will be greatly simplified. There
is a very slight chance that this could be possible for wl1271, but for wl1251 I
think there's no hope to change it anymore. So in any case, we will need to
support this on the stack if we want to have wl1251 to work correctly. :(
Also, I'm not 100% sure, but IIRC Kalle has mentioned that the at76c50x-usb card
also needs this feature.
If it is, you're going to have to do a lot more work and go all the way
up to userspace so wpa_supplicant with -Dnl80211 knows about this too,
and doesn't try to authenticate twice or do FT-OTA.
Thanks a lot for pointing this out. I think I understand it better after our
discussion on IRC. I'll have to study more the authentication mechanism and
figure out how to deal with multiple authentications, as you pointed out.
These are definitely details that I'll need to sort out. But in principle, do
you agree with the idea of passing the "operating" BSSID down to the driver in
the hw_config op? And saving it as a hardware configuration parameter in
local->hw.conf?
Once again, I really appreciate your help and the time you spend discussing and
explaining these things in detail to me! :)
--
Cheers,
Luca.
--
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