From 63fcb3816de26a52e4b4686e244b8feaf5fbe8ad Mon Sep 17 00:00:00 2001 From: Michael McMaster Date: Tue, 24 Jan 2017 20:23:29 +1000 Subject: [PATCH] Fix SCSI inquiry command with 0 byte allocation length --- rtl/fpga_bitmap.o | Bin 32724 -> 32724 bytes src/firmware/inquiry.c | 11 ++++++++++- src/firmware/scsi.c | 2 +- src/firmware/scsi.h | 5 +++++ 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/rtl/fpga_bitmap.o b/rtl/fpga_bitmap.o index c4ec7a4843862cb50b727468363ddda3c6401f05..6cbce7c58ef6b593e699f40565e37b8c6806855b 100644 GIT binary patch literal 32724 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 literal 32724 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 diff --git a/src/firmware/inquiry.c b/src/firmware/inquiry.c index d51b3c0d..70dca308 100755 --- a/src/firmware/inquiry.c +++ b/src/firmware/inquiry.c @@ -85,7 +85,11 @@ void s2s_scsiInquiry() uint32_t allocationLength = scsiDev.cdb[4]; // SASI standard, X3T9.3_185_RevE states that 0 == 256 bytes - if (allocationLength == 0) allocationLength = 256; + // BUT SCSI 2 standard says 0 == 0. + if (scsiDev.compatMode <= COMPAT_SCSI1) // excludes COMPAT_SCSI2_DISABLED + { + if (allocationLength == 0) allocationLength = 256; + } if (!evpd) { @@ -210,6 +214,11 @@ uint32_t s2s_getStandardInquiry( memcpy(out, StandardResponse, buflen); out[1] = cfg->deviceTypeModifier; + + if (scsiDev.compatMode >= COMPAT_SCSI2) + { + out[3] = 2; // SCSI 2 response format. + } memcpy(&out[8], cfg->vendor, sizeof(cfg->vendor)); memcpy(&out[16], cfg->prodId, sizeof(cfg->prodId)); memcpy(&out[32], cfg->revision, sizeof(cfg->revision)); diff --git a/src/firmware/scsi.c b/src/firmware/scsi.c index bf20f9df..0b9b8078 100755 --- a/src/firmware/scsi.c +++ b/src/firmware/scsi.c @@ -596,7 +596,7 @@ static void process_SelectionPhase() } else if (!(scsiDev.boardCfg.flags & S2S_CFG_ENABLE_SCSI2)) { - scsiDev.compatMode = COMPAT_SCSI1; + scsiDev.compatMode = COMPAT_SCSI2_DISABLED; } else { diff --git a/src/firmware/scsi.h b/src/firmware/scsi.h index 33f3c085..50724564 100755 --- a/src/firmware/scsi.h +++ b/src/firmware/scsi.h @@ -63,6 +63,11 @@ typedef enum { COMPAT_UNKNOWN, COMPAT_SCSI1, + + // Messages are being used, yet SCSI 2 mode is disabled. + // This impacts interpretation of INQUIRY commands. + COMPAT_SCSI2_DISABLED, + COMPAT_SCSI2 } SCSI_COMPAT_MODE; -- 2.38.5