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