diff -uprN a/drivers/scsi/arcmsr/arcmsr.h b/drivers/scsi/arcmsr/arcmsr.h --- a/drivers/scsi/arcmsr/arcmsr.h 2013-08-26 19:23:24.000000000 +0800 +++ b/drivers/scsi/arcmsr/arcmsr.h 2013-08-26 19:25:02.000000000 +0800 @@ -51,7 +51,7 @@ struct device_attribute; #else #define ARCMSR_MAX_FREECCB_NUM 320 #endif -#define ARCMSR_DRIVER_VERSION "Driver Version 1.30.00.00 2013/05/06" +#define ARCMSR_DRIVER_VERSION "Driver Version 1.30.00.02 2013/05/15" #define ARCMSR_SCSI_INITIATOR_ID 255 #define ARCMSR_MAX_XFER_SECTORS 512 #define ARCMSR_MAX_XFER_SECTORS_B 4096 diff -uprN a/drivers/scsi/arcmsr/arcmsr_hba.c b/drivers/scsi/arcmsr/arcmsr_hba.c --- a/drivers/scsi/arcmsr/arcmsr_hba.c 2013-05-07 19:12:12.000000000 +0800 +++ b/drivers/scsi/arcmsr/arcmsr_hba.c 2013-05-16 04:20:04.000000000 +0800 @@ -2461,12 +2461,12 @@ arcmsr_hbaC_postqueue_isr(struct Adapter ? true : false; /* check if command done with no error */ arcmsr_drain_donequeue(acb, ccb, error); + throttling++; if (throttling == ARCMSR_HBC_ISR_THROTTLING_LEVEL) { writel(ARCMSR_HBCMU_DRV2IOP_POSTQUEUE_THROTTLING, &phbcmu->inbound_doorbell); - continue; + throttling = 0; } - throttling++; } while (readl(&phbcmu->host_int_status) & ARCMSR_HBCMU_OUTBOUND_POSTQUEUE_ISR); }