aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/aacraid/aachba.c
diff options
context:
space:
mode:
authorSalyzyn, Mark <Mark_Salyzyn@adaptec.com>2008-01-11 16:46:24 -0500
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-01-23 12:29:26 -0500
commit3bc8070fb75b33151791fb54ca36ae5abcc8b8df (patch)
tree2a795e02fb83a7d4b2bad06145161c05592dda5f /drivers/scsi/aacraid/aachba.c
parent0995ad382df77b438d0c1e4f93ff349aa2eb9caf (diff)
[SCSI] aacraid: SMC vendor identification
Due to an internal limit associated with the AdapterTypeText field, SMC required a product ID that overloaded the combined vendor and product ID. A decision was made to ship the SMC products without a vendor string dropping the defacto space that used to delineate vendor and product to boot. To correct this, we needed to adjust the code in the driver to parse out the vendor and product strings for the adapter. We match of 'AOC' in the AdapterTypeText, if so we set the vendor to SMC and place the entire AdapterTypeText into the product field. This only affects the cosmetic presentation of the Adapter vendor and product in the logs and in sysfs. Signed-off-by: Mark Salyzyn <aacraid@adaptec.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/aacraid/aachba.c')
-rw-r--r--drivers/scsi/aacraid/aachba.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c
index 970a8d99107a..62d95165d2a6 100644
--- a/drivers/scsi/aacraid/aachba.c
+++ b/drivers/scsi/aacraid/aachba.c
@@ -716,16 +716,21 @@ static void setinqstr(struct aac_dev *dev, void *data, int tindex)
716 716
717 if (dev->supplement_adapter_info.AdapterTypeText[0]) { 717 if (dev->supplement_adapter_info.AdapterTypeText[0]) {
718 char * cp = dev->supplement_adapter_info.AdapterTypeText; 718 char * cp = dev->supplement_adapter_info.AdapterTypeText;
719 int c = sizeof(str->vid); 719 int c;
720 while (*cp && *cp != ' ' && --c) 720 if ((cp[0] == 'A') && (cp[1] == 'O') && (cp[2] == 'C'))
721 ++cp; 721 inqstrcpy("SMC", str->vid);
722 c = *cp; 722 else {
723 *cp = '\0'; 723 c = sizeof(str->vid);
724 inqstrcpy (dev->supplement_adapter_info.AdapterTypeText, 724 while (*cp && *cp != ' ' && --c)
725 str->vid); 725 ++cp;
726 *cp = c; 726 c = *cp;
727 while (*cp && *cp != ' ') 727 *cp = '\0';
728 ++cp; 728 inqstrcpy (dev->supplement_adapter_info.AdapterTypeText,
729 str->vid);
730 *cp = c;
731 while (*cp && *cp != ' ')
732 ++cp;
733 }
729 while (*cp == ' ') 734 while (*cp == ' ')
730 ++cp; 735 ++cp;
731 /* last six chars reserved for vol type */ 736 /* last six chars reserved for vol type */