diff -up wpa_supplicant-0.7.3/wpa_supplicant/events.c.foo wpa_supplicant-0.7.3/wpa_supplicant/events.c --- wpa_supplicant-0.7.3/wpa_supplicant/events.c.foo 2012-06-12 12:03:36.172962193 -0500 +++ wpa_supplicant-0.7.3/wpa_supplicant/events.c 2012-06-12 12:03:51.388771973 -0500 @@ -871,16 +871,14 @@ static int wpa_supplicant_need_to_roam(s min_diff = 2; if (current_bss->level < 0) { - if (current_bss->level < -85) - min_diff = 1; - else if (current_bss->level < -80) - min_diff = 2; - else if (current_bss->level < -75) - min_diff = 3; - else if (current_bss->level < -70) + if (current_bss->level < -75) min_diff = 4; + else if (current_bss->level < -70) + min_diff = 6; + else if (current_bss->level < -65) + min_diff = 8; else - min_diff = 5; + min_diff = 15; } if (abs(current_bss->level - selected->level) < min_diff) { wpa_dbg(wpa_s, MSG_DEBUG, "Skip roam - too small difference "