diff -Nuar linux-2.6.3/drivers/scsi/constants.c linux-2.6.3.new/drivers/scsi/constants.c --- linux-2.6.3/drivers/scsi/constants.c 2004-02-25 17:11:53.212334320 +0530 +++ linux-2.6.3.new/drivers/scsi/constants.c 2004-02-25 17:10:04.187908552 +0530 @@ -1135,7 +1135,7 @@ static const char * hostbyte_table[]={ "DID_OK", "DID_NO_CONNECT", "DID_BUS_BUSY", "DID_TIME_OUT", "DID_BAD_TARGET", "DID_ABORT", "DID_PARITY", "DID_ERROR", "DID_RESET", "DID_BAD_INTR", -"DID_PASSTHROUGH", "DID_SOFT_ERROR", NULL}; +"DID_PASSTHROUGH", "DID_SOFT_ERROR", "DID_IMM_RETRY", NULL}; void print_hostbyte(int scsiresult) { static int maxcode=0; diff -Nuar linux-2.6.3/drivers/scsi/scsi_error.c linux-2.6.3.new/drivers/scsi/scsi_error.c --- linux-2.6.3/drivers/scsi/scsi_error.c 2004-02-25 17:11:48.453057840 +0530 +++ linux-2.6.3.new/drivers/scsi/scsi_error.c 2004-02-25 17:08:53.324681400 +0530 @@ -1181,6 +1181,8 @@ */ case DID_SOFT_ERROR: goto maybe_retry; + case DID_IMM_RETRY: + return NEEDS_RETRY; case DID_ERROR: if (msg_byte(scmd->result) == COMMAND_COMPLETE && diff -Nuar linux-2.6.3/include/scsi/scsi.h linux-2.6.3.new/include/scsi/scsi.h --- linux-2.6.3/include/scsi/scsi.h 2004-02-25 17:12:36.435763360 +0530 +++ linux-2.6.3.new/include/scsi/scsi.h 2004-02-25 17:07:45.909930000 +0530 @@ -266,6 +266,7 @@ #define DID_BAD_INTR 0x09 /* Got an interrupt we weren't expecting. */ #define DID_PASSTHROUGH 0x0a /* Force command past mid-layer */ #define DID_SOFT_ERROR 0x0b /* The low level driver just wish a retry */ +#define DID_IMM_RETRY 0x0c /* Retry without decrementing retry count */ #define DRIVER_OK 0x00 /* Driver status */ /*