--- src.save/nm-policy.c.orig	2011-09-06 11:44:27.000000000 +0000
+++ src/nm-policy.c	2011-09-07 13:47:06.000000000 +0000
@@ -985,11 +987,15 @@
 				 */
 				g_object_set_data (G_OBJECT (connection), FAILURE_REASON_TAG, GUINT_TO_POINTER (NM_DEVICE_STATE_REASON_NO_SECRETS));
 			} else if (tries > 0) {
-				/* Otherwise if it's a random failure, just decrease the number
-				 * of automatic retries so that the connection gets tried again
-				 * if it still has a retry count.
-				 */
-				set_connection_auto_retries (connection, tries - 1);
+				NMDeviceType device_type = nm_device_get_device_type (device);
+				int is_modem = (device_type == NM_DEVICE_TYPE_MODEM);
+				if (!is_modem) {
+				    /* Otherwise if it's a random failure and not a umts modem, just decrease the number
+				     * of automatic retries so that the connection gets tried again
+				     * if it still has a retry count.
+				     */
+				     set_connection_auto_retries (connection, tries - 1);
+				}
 			}
 
 			if (get_connection_auto_retries (connection) == 0) {
