--- src.save/nm-manager.c	2011-08-22 23:16:06.000000000 +0000
+++ src/nm-manager.c	2011-09-07 14:40:51.000000000 +0000
@@ -1760,9 +1760,17 @@
 		 */
 		device = find_device_by_ip_iface (self, g_udev_device_get_name (udev_device));
 	}
-
-	if (device)
-		priv->devices = remove_one_device (self, priv->devices, device, FALSE);
+    nm_log_dbg (LOGD_DEVICE, "udev=%s device=%s ifindex=%d", 
+                g_udev_device_get_name (udev_device), 
+                device?nm_device_get_iface (device):"<NULL>", 
+                ifindex) ;
+    
+    if (device) {
+        NMDeviceType device_type = nm_device_get_device_type (device);
+        int is_modem = (device_type == NM_DEVICE_TYPE_MODEM);
+        if (!is_modem || strncmp (g_udev_device_get_name (udev_device), "ppp", 3) != 0)
+            priv->devices = remove_one_device (self, priv->devices, device, FALSE);
+    }
 }
 
 static void
