Adds support to the ibmvscsi driver to handle non SCSI error status. This is needed to support some new VIOS enhancements. Signed-off-by: Brian King <brking@xxxxxxxxxxxxxxxxxx> Signed-off-by: Santiago Leon <santil@xxxxxxxxxx> --- linux-2.6-bjking1/drivers/scsi/ibmvscsi/ibmvscsi.c | 5 ++++- linux-2.6-bjking1/drivers/scsi/ibmvscsi/viosrp.h | 9 +++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff -puN drivers/scsi/ibmvscsi/ibmvscsi.c~ibmvscsi_non_scsi_error_status drivers/scsi/ibmvscsi/ibmvscsi.c --- linux-2.6/drivers/scsi/ibmvscsi/ibmvscsi.c~ibmvscsi_non_scsi_error_status 2008-04-25 16:36:21.000000000 -0500 +++ linux-2.6-bjking1/drivers/scsi/ibmvscsi/ibmvscsi.c 2008-04-25 16:36:21.000000000 -0500 @@ -686,7 +686,7 @@ static void handle_cmd_rsp(struct srp_ev } if (cmnd) { - cmnd->result = rsp->status; + cmnd->result |= rsp->status; if (((cmnd->result >> 1) & 0x1f) == CHECK_CONDITION) memcpy(cmnd->sense_buffer, rsp->data, @@ -730,6 +730,7 @@ static int ibmvscsi_queuecommand(struct u16 lun = lun_from_dev(cmnd->device); u8 out_fmt, in_fmt; + cmnd->result = (DID_OK << 16); evt_struct = get_event_struct(&hostdata->pool); if (!evt_struct) return SCSI_MLQUEUE_HOST_BUSY; @@ -1347,6 +1348,8 @@ void ibmvscsi_handle_crq(struct viosrp_c del_timer(&evt_struct->timer); + if (crq->status != VIOSRP_OK && evt_struct->cmnd) + evt_struct->cmnd->result = DID_ERROR << 16; if (evt_struct->done) evt_struct->done(evt_struct); else diff -puN drivers/scsi/ibmvscsi/viosrp.h~ibmvscsi_non_scsi_error_status drivers/scsi/ibmvscsi/viosrp.h --- linux-2.6/drivers/scsi/ibmvscsi/viosrp.h~ibmvscsi_non_scsi_error_status 2008-04-25 16:36:21.000000000 -0500 +++ linux-2.6-bjking1/drivers/scsi/ibmvscsi/viosrp.h 2008-04-25 16:36:21.000000000 -0500 @@ -59,6 +59,15 @@ enum viosrp_crq_formats { VIOSRP_INLINE_FORMAT = 0x07 }; +enum viosrp_crq_status { + VIOSRP_OK = 0x0, + VIOSRP_NONRECOVERABLE_ERR = 0x1, + VIOSRP_VIOLATES_MAX_XFER = 0x2, + VIOSRP_PARTNER_PANIC = 0x3, + VIOSRP_DEVICE_BUSY = 0x8, + VIOSRP_ADAPTER_FAIL = 0x10 +}; + struct viosrp_crq { u8 valid; /* used by RPA */ u8 format; /* SCSI vs out-of-band */ _ -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html