aboutsummaryrefslogtreecommitdiffstats
path: root/os/various/lib_scsi.c
diff options
context:
space:
mode:
authorUladzimir Pylinski <barthess@yandex.ru>2017-10-13 10:10:32 +0300
committerGitHub <noreply@github.com>2017-10-13 10:10:32 +0300
commit921d233cdd43e6fff867f80a89b43f07154b3f9a (patch)
treee97a6b41e4ec39e38f1f7b7a26506b5e289d6098 /os/various/lib_scsi.c
parentf392dfa223310ab3bc17dce73a949d3a80b12b04 (diff)
parent39487df4de8aadb22ccdeb984a5ac8c74080905b (diff)
downloadChibiOS-Contrib-921d233cdd43e6fff867f80a89b43f07154b3f9a.tar.gz
ChibiOS-Contrib-921d233cdd43e6fff867f80a89b43f07154b3f9a.tar.bz2
ChibiOS-Contrib-921d233cdd43e6fff867f80a89b43f07154b3f9a.zip
Merge pull request #129 from kimmoli/scsi-serial-number
SCSI: Respond to unit serial number inquiry
Diffstat (limited to 'os/various/lib_scsi.c')
-rw-r--r--os/various/lib_scsi.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/os/various/lib_scsi.c b/os/various/lib_scsi.c
index 55aeb7e..1ece954 100644
--- a/os/various/lib_scsi.c
+++ b/os/various/lib_scsi.c
@@ -175,7 +175,12 @@ static bool cmd_ignored(SCSITarget *scsip, const uint8_t *cmd) {
*/
static bool inquiry(SCSITarget *scsip, const uint8_t *cmd) {
- if ((cmd[1] & 0b11) || cmd[2] != 0) {
+ if ((cmd[1] & 0b1) && cmd[2] == 0x80) {
+ /* Unit serial number page */
+ return transmit_data(scsip, (const uint8_t *)scsip->config->unit_serial_number_inquiry_response,
+ sizeof(scsi_unit_serial_number_inquiry_response_t));
+ }
+ else if ((cmd[1] & 0b11) || cmd[2] != 0) {
set_sense(scsip, SCSI_SENSE_KEY_ILLEGAL_REQUEST,
SCSI_ASENSE_INVALID_FIELD_IN_CDB,
SCSI_ASENSEQ_NO_QUALIFIER);