diff options
author | Matthew Wilcox <matthew@wil.cx> | 2006-03-10 17:18:22 +0300 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2006-03-12 18:44:46 +0300 |
commit | 72df0ebf95561694c06adca62e590e37ec549579 (patch) | |
tree | a50e19ae6162b1ce79742ad9920ccc6a857573a2 /drivers/scsi/scsi_transport_spi.c | |
parent | 1757b67809078439662d62a266db45eae3a3d214 (diff) | |
download | linux-72df0ebf95561694c06adca62e590e37ec549579.tar.xz |
[SCSI] Missing names from SPI3, SPI4 and SPI5
Add several missing messages from SPI3, SPI4 and SPI5:
- Terminate Process
- Continue Task
- Target Transfer Disable
- Clear ACA
- LUN Reset
- ACA
- QAS Request
Rename some older commands to their SPI5 names:
- Command Complete -> Task Complete
- Abort -> Abort Task Set
- Bus device Reset -> Target Reset
- Clear Queue -> Clear Task Set
Change spi_print_msg() to always consume one byte, even if we don't
recognise it. That allows drivers to call it in a loop to print all
messages.
Signed-off-by: Matthew Wilcox <matthew@wil.cx>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/scsi_transport_spi.c')
-rw-r--r-- | drivers/scsi/scsi_transport_spi.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/drivers/scsi/scsi_transport_spi.c b/drivers/scsi/scsi_transport_spi.c index 0b29ee9989a4..4855d1602d6b 100644 --- a/drivers/scsi/scsi_transport_spi.c +++ b/drivers/scsi/scsi_transport_spi.c @@ -1089,17 +1089,19 @@ EXPORT_SYMBOL_GPL(spi_populate_ppr_msg); #ifdef CONFIG_SCSI_CONSTANTS static const char * const one_byte_msgs[] = { -/* 0x00 */ "Command Complete", NULL, "Save Pointers", +/* 0x00 */ "Task Complete", NULL /* Extended Message */, "Save Pointers", /* 0x03 */ "Restore Pointers", "Disconnect", "Initiator Error", -/* 0x06 */ "Abort", "Message Reject", "Nop", "Message Parity Error", +/* 0x06 */ "Abort Task Set", "Message Reject", "Nop", "Message Parity Error", /* 0x0a */ "Linked Command Complete", "Linked Command Complete w/flag", -/* 0x0c */ "Bus device reset", "Abort Tag", "Clear Queue", -/* 0x0f */ "Initiate Recovery", "Release Recovery" +/* 0x0c */ "Target Reset", "Abort Task", "Clear Task Set", +/* 0x0f */ "Initiate Recovery", "Release Recovery", +/* 0x11 */ "Terminate Process", "Continue Task", "Target Transfer Disable", +/* 0x14 */ NULL, NULL, "Clear ACA", "LUN Reset" }; static const char * const two_byte_msgs[] = { /* 0x20 */ "Simple Queue Tag", "Head of Queue Tag", "Ordered Queue Tag", -/* 0x23 */ "Ignore Wide Residue" +/* 0x23 */ "Ignore Wide Residue", "ACA" }; static const char * const extended_msgs[] = { @@ -1131,7 +1133,7 @@ static void print_ptr(const unsigned char *msg, int msb, const char *desc) int spi_print_msg(const unsigned char *msg) { - int len = 0, i; + int len = 1, i; if (msg[0] == EXTENDED_MESSAGE) { len = 2 + msg[1]; if (len == 2) @@ -1168,14 +1170,14 @@ int spi_print_msg(const unsigned char *msg) (msg[0] & 0x40) ? "" : "not ", (msg[0] & 0x20) ? "target routine" : "lun", msg[0] & 0x7); - len = 1; /* Normal One byte */ } else if (msg[0] < 0x1f) { - if (msg[0] < ARRAY_SIZE(one_byte_msgs)) + if (msg[0] < ARRAY_SIZE(one_byte_msgs) && one_byte_msgs[msg[0]]) printk("%s ", one_byte_msgs[msg[0]]); else printk("reserved (%02x) ", msg[0]); - len = 1; + } else if (msg[0] == 0x55) { + printk("QAS Request "); /* Two byte */ } else if (msg[0] <= 0x2f) { if ((msg[0] - 0x20) < ARRAY_SIZE(two_byte_msgs)) @@ -1195,7 +1197,7 @@ EXPORT_SYMBOL(spi_print_msg); int spi_print_msg(const unsigned char *msg) { - int len = 0, i; + int len = 1, i; if (msg[0] == EXTENDED_MESSAGE) { len = 2 + msg[1]; @@ -1206,11 +1208,9 @@ int spi_print_msg(const unsigned char *msg) /* Identify */ } else if (msg[0] & 0x80) { printk("%02x ", msg[0]); - len = 1; /* Normal One byte */ - } else if (msg[0] < 0x1f) { + } else if ((msg[0] < 0x1f) || (msg == 0x55)) { printk("%02x ", msg[0]); - len = 1; /* Two byte */ } else if (msg[0] <= 0x2f) { printk("%02x %02x", msg[0], msg[1]); |