On Mon, 2009-08-17 at 10:35 +0800, Zhu Yi wrote: > Yes, the iwmc3200wifi device sends special disconnect and reassoc events > for roaming. But since we know we'll be reassociated shortly, we don't > propagate this special disconnect event outside (to kernel SME and > userspace). I agree we should use cfg80211_roamed() to indicate a real > roam event. But sometimes the device reassociated to the same BSSID. Do > you think the driver should simply ignore this event or still call > cfg80211_connect_result() as well? You probably can't just ignore it since it might require re-doing WPA handshake, so I think I'd just send a "roamed to the same" event. > Continue with the above case, in my current implementation, I call > cfg80211_connect_result(). Then I find the SME enters a weird state > (CFG80211_SME_CONNECTED while wdev->current_bss is NULL). So I think if > we don't allow cfg80211_connect_result() to be called while > CFG80211_SME_CONNECTED, let's put a big WARN_ON at the beginning of > __cfg80211_connect_result(). The current code seems allow this case > (i.e. send some roam event), thus I'm confused. Ok, I'll take a look. There probably was a reason that's somewhat related to the cfg80211 SME, but it must be possible to change. johannes