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,