msg_done_handler(ssif_info, -EIO, NULL, 0);
                }
        } else {
+               /* Ready to request the result. */
                unsigned long oflags, *flags;
-               bool got_alert;
 
                ssif_inc_stat(ssif_info, sent_messages);
                ssif_inc_stat(ssif_info, sent_messages_parts);
 
                flags = ipmi_ssif_lock_cond(ssif_info, &oflags);
-               got_alert = ssif_info->got_alert;
-               if (got_alert) {
+               if (ssif_info->got_alert) {
+                       /* The result is already ready, just start it. */
                        ssif_info->got_alert = false;
-                       ssif_info->waiting_alert = false;
-               }
-
-               if (got_alert) {
                        ipmi_ssif_unlock_cond(ssif_info, flags);
-                       /* The alert already happened, try now. */
-                       retry_timeout((unsigned long) ssif_info);
+                       start_get(ssif_info);
                } else {
                        /* Wait a jiffie then request the next message */
                        ssif_info->waiting_alert = true;