]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/char/ipmi/ipmi_bt_sm.c
[PATCH] ipmi: bt restart reset fixes
[net-next-2.6.git] / drivers / char / ipmi / ipmi_bt_sm.c
index 7c4a195dfc9a415b7f6d5b77988b07555c7846fc..58dcdee1cd719ab3d165907fb76f53c6e55c5db6 100644 (file)
@@ -333,8 +333,7 @@ static void error_recovery(struct si_sm_data *bt, char *reason)
                bt->state = BT_STATE_HOSED;
                if (!bt->nonzero_status)
                        printk(KERN_ERR "IPMI: BT stuck, try power cycle\n");
-               else if (bt->seq == FIRST_SEQ + BT_RETRY_LIMIT) {
-                       /* most likely during insmod */
+               else if (bt->error_retries <= BT_RETRY_LIMIT + 1) {
                        printk(KERN_DEBUG "IPMI: BT reset (takes 5 secs)\n");
                        bt->state = BT_STATE_RESET1;
                }
@@ -475,6 +474,7 @@ static enum si_sm_result bt_event(struct si_sm_data *bt, long time)
                break;
 
        case BT_STATE_RESTART:          /* don't reset retries! */
+               reset_flags(bt);
                bt->write_data[2] = ++bt->seq;
                bt->read_count = 0;
                bt->nonzero_status = 0;