Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > d60bd1f35e0c82afb5f88d78afd23ee9 > files > 4

NetworkManager-0.7.0-9.el5.src.rpm

https://bugzilla.redhat.com/show_bug.cgi?id=467117

The airo driver in 2.6.18 just doesn't scan well enough to be able to use
ap_scan=1 reliably.

diff -up NetworkManager-0.7.0/src/nm-device-wifi.c.airo NetworkManager-0.7.0/src/nm-device-wifi.c
--- NetworkManager-0.7.0/src/nm-device-wifi.c.airo	2008-10-15 15:44:54.000000000 -0400
+++ NetworkManager-0.7.0/src/nm-device-wifi.c	2008-10-15 15:47:04.000000000 -0400
@@ -2618,6 +2618,8 @@ build_supplicant_config (NMDeviceWifi *s
 	NMSettingWireless *s_wireless;
 	NMSettingWirelessSecurity *s_wireless_sec;
 	guint32 adhoc_freq = 0;
+	const char *driver = NULL;
+	gboolean ap_scan2 = FALSE;
 
 	g_return_val_if_fail (self != NULL, NULL);
 
@@ -2651,11 +2653,17 @@ build_supplicant_config (NMDeviceWifi *s
 		}
 	}
 
+	/* Sigh.  The airo driver is scan-challenged and needs ap_scan=2 */
+	driver = nm_device_get_driver (NM_DEVICE (self));
+	if (driver && !strcmp (driver, "airo"))
+		ap_scan2 = TRUE;
+
 	if (!nm_supplicant_config_add_setting_wireless (config,
 	                                                s_wireless,
 	                                                nm_ap_get_broadcast (ap),
 	                                                adhoc_freq,
-	                                                priv->has_scan_capa_ssid)) {
+	                                                priv->has_scan_capa_ssid,
+	                                                ap_scan2)) {
 		nm_warning ("Couldn't add 802-11-wireless setting to supplicant config.");
 		goto error;
 	}
diff -up NetworkManager-0.7.0/src/supplicant-manager/nm-supplicant-config.c.airo NetworkManager-0.7.0/src/supplicant-manager/nm-supplicant-config.c
--- NetworkManager-0.7.0/src/supplicant-manager/nm-supplicant-config.c.airo	2008-10-15 15:47:20.000000000 -0400
+++ NetworkManager-0.7.0/src/supplicant-manager/nm-supplicant-config.c	2008-10-15 15:48:19.000000000 -0400
@@ -332,7 +332,8 @@ nm_supplicant_config_add_setting_wireles
                                            NMSettingWireless * setting,
                                            gboolean is_broadcast,
                                            guint32 adhoc_freq,
-                                           gboolean has_scan_capa_ssid)
+                                           gboolean has_scan_capa_ssid,
+                                           gboolean ap_scan2)
 {
 	NMSupplicantConfigPrivate *priv;
 	gboolean is_adhoc;
@@ -352,6 +353,10 @@ nm_supplicant_config_add_setting_wireles
 		priv->ap_scan = has_scan_capa_ssid ? 1 : 2;
 	}
 
+	/* Otherwise, if the driver really really sucks, use ap_scan2 */
+	if (ap_scan2)
+		priv->ap_scan = 2;
+
 	id = nm_setting_wireless_get_ssid (setting);
 	if (!nm_supplicant_config_add_option (self, "ssid", (char *) id->data, id->len, FALSE)) {
 		nm_warning ("Error adding SSID to supplicant config.");
diff -up NetworkManager-0.7.0/src/supplicant-manager/nm-supplicant-config.h.airo NetworkManager-0.7.0/src/supplicant-manager/nm-supplicant-config.h
--- NetworkManager-0.7.0/src/supplicant-manager/nm-supplicant-config.h.airo	2008-10-15 15:47:32.000000000 -0400
+++ NetworkManager-0.7.0/src/supplicant-manager/nm-supplicant-config.h	2008-10-15 15:47:51.000000000 -0400
@@ -71,7 +71,8 @@ gboolean nm_supplicant_config_add_settin
                                                     NMSettingWireless * setting,
                                                     gboolean is_broadcast,
                                                     guint32 adhoc_freq,
-                                                    gboolean has_scan_capa_ssid);
+                                                    gboolean has_scan_capa_ssid,
+                                                    gboolean ap_scan2);
 
 gboolean nm_supplicant_config_add_setting_wireless_security (NMSupplicantConfig *self,
                                                              NMSettingWirelessSecurity *setting,