uint32_t allocationLength = scsiDev.cdb[4];\r
\r
// SASI standard, X3T9.3_185_RevE states that 0 == 256 bytes\r
- if (allocationLength == 0) allocationLength = 256;\r
+ // BUT SCSI 2 standard says 0 == 0.\r
+ if (scsiDev.compatMode <= COMPAT_SCSI1) // excludes COMPAT_SCSI2_DISABLED\r
+ {\r
+ if (allocationLength == 0) allocationLength = 256;\r
+ }\r
\r
if (!evpd)\r
{\r
\r
memcpy(out, StandardResponse, buflen);\r
out[1] = cfg->deviceTypeModifier;\r
+\r
+ if (scsiDev.compatMode >= COMPAT_SCSI2)\r
+ {\r
+ out[3] = 2; // SCSI 2 response format.\r
+ }\r
memcpy(&out[8], cfg->vendor, sizeof(cfg->vendor));\r
memcpy(&out[16], cfg->prodId, sizeof(cfg->prodId));\r
memcpy(&out[32], cfg->revision, sizeof(cfg->revision));\r
}\r
else if (!(scsiDev.boardCfg.flags & S2S_CFG_ENABLE_SCSI2))\r
{\r
- scsiDev.compatMode = COMPAT_SCSI1;\r
+ scsiDev.compatMode = COMPAT_SCSI2_DISABLED;\r
}\r
else\r
{\r