wpa_supplicant roaming not working with nl80211 driver

Lin Ma linmaonly
Fri Jan 14 21:08:38 PST 2011


Hello Jouni and All,

 

Current kernel cfg80211 framework seems to have a problem handling roaming.
Upon scan event, wpa_supplicant will roam if a BSSID with better signal
strength is found (in wpa_supplicant_need_to_roam). It calls
wpa_supplicant_connect and eventually to kernel's __cfg80211_connect.
However  __cfg80211_connect check current status and returns -EALREADY if it
is already connected

 

In compat-linux/net/wireless/sme.c

 

int __cfg80211_connect(struct cfg80211_registered_device *rdev,

                               struct net_device *dev,

                               struct cfg80211_connect_params *connect,

                               struct cfg80211_cached_keys *connkeys,

                               const u8 *prev_bssid)

{

            . 

            if (wdev->sme_state != CFG80211_SME_IDLE)

                        return -EALREADY;

 

The wpa_supplicant then goes into a loop in retrying association. NL80211
has a NL80211_CMD_ROAM command but it is implemented yet. We can work around
this by dissociating from previous AP but it not roaming..

 

Anyone has a solution for this? 

 

Thanks,

Lin

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.shmoo.com/pipermail/hostap/attachments/20110114/e490966e/attachment.htm 



More information about the Hostap mailing list