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