diff options
author | Mahesh Rajashekhara <Mahesh_Rajashekhara@pmc-sierra.com> | 2012-02-09 01:51:04 -0500 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2012-02-19 09:09:01 -0500 |
commit | 116046127d1a3bad2853d02781ad9fee33f05e5a (patch) | |
tree | f5a0ca20662b98960ce20587f666b6267367478b /drivers/scsi/aacraid/linit.c | |
parent | 70fc872c738d1e0af7d0420047e4ca3acf283c9d (diff) |
[SCSI] aacraid: Added Sync.mode to support series 7/8/9 controllers
Added Sync. mode to support Series 7/8/9 controller families: This is a
compatibility mode for all these controller families. The Async. (Performance)
mode can be changed in the future. First Async. mode version added for Series
7; Controller parameter aac_sync_mode added
Signed-off-by: Mahesh Rajashekhara <aacraid@pmc-sierra.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/aacraid/linit.c')
-rw-r--r-- | drivers/scsi/aacraid/linit.c | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c index 705e13e470af..0d279c445a30 100644 --- a/drivers/scsi/aacraid/linit.c +++ b/drivers/scsi/aacraid/linit.c | |||
@@ -56,7 +56,7 @@ | |||
56 | 56 | ||
57 | #include "aacraid.h" | 57 | #include "aacraid.h" |
58 | 58 | ||
59 | #define AAC_DRIVER_VERSION "1.1-7" | 59 | #define AAC_DRIVER_VERSION "1.2-0" |
60 | #ifndef AAC_DRIVER_BRANCH | 60 | #ifndef AAC_DRIVER_BRANCH |
61 | #define AAC_DRIVER_BRANCH "" | 61 | #define AAC_DRIVER_BRANCH "" |
62 | #endif | 62 | #endif |
@@ -162,7 +162,10 @@ static const struct pci_device_id aac_pci_tbl[] __devinitdata = { | |||
162 | { 0x9005, 0x0285, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 59 }, /* Adaptec Catch All */ | 162 | { 0x9005, 0x0285, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 59 }, /* Adaptec Catch All */ |
163 | { 0x9005, 0x0286, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 60 }, /* Adaptec Rocket Catch All */ | 163 | { 0x9005, 0x0286, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 60 }, /* Adaptec Rocket Catch All */ |
164 | { 0x9005, 0x0288, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 61 }, /* Adaptec NEMER/ARK Catch All */ | 164 | { 0x9005, 0x0288, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 61 }, /* Adaptec NEMER/ARK Catch All */ |
165 | { 0x9005, 0x028b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 62 }, /* Adaptec PMC Catch All */ | 165 | { 0x9005, 0x028b, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 62 }, /* Adaptec PMC Series 6 (Tupelo) */ |
166 | { 0x9005, 0x028c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 63 }, /* Adaptec PMC Series 7 (Denali) */ | ||
167 | { 0x9005, 0x028d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 64 }, /* Adaptec PMC Series 8 */ | ||
168 | { 0x9005, 0x028f, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 65 }, /* Adaptec PMC Series 9 */ | ||
166 | { 0,} | 169 | { 0,} |
167 | }; | 170 | }; |
168 | MODULE_DEVICE_TABLE(pci, aac_pci_tbl); | 171 | MODULE_DEVICE_TABLE(pci, aac_pci_tbl); |
@@ -238,7 +241,10 @@ static struct aac_driver_ident aac_drivers[] = { | |||
238 | { aac_rx_init, "aacraid", "ADAPTEC ", "RAID ", 2 }, /* Adaptec Catch All */ | 241 | { aac_rx_init, "aacraid", "ADAPTEC ", "RAID ", 2 }, /* Adaptec Catch All */ |
239 | { aac_rkt_init, "aacraid", "ADAPTEC ", "RAID ", 2 }, /* Adaptec Rocket Catch All */ | 242 | { aac_rkt_init, "aacraid", "ADAPTEC ", "RAID ", 2 }, /* Adaptec Rocket Catch All */ |
240 | { aac_nark_init, "aacraid", "ADAPTEC ", "RAID ", 2 }, /* Adaptec NEMER/ARK Catch All */ | 243 | { aac_nark_init, "aacraid", "ADAPTEC ", "RAID ", 2 }, /* Adaptec NEMER/ARK Catch All */ |
241 | { aac_src_init, "aacraid", "ADAPTEC ", "RAID ", 2 } /* Adaptec PMC Catch All */ | 244 | { aac_src_init, "aacraid", "ADAPTEC ", "RAID ", 2 }, /* Adaptec PMC Series 6 (Tupelo) */ |
245 | { aac_srcv_init, "aacraid", "ADAPTEC ", "RAID ", 2 }, /* Adaptec PMC Series 7 (Denali) */ | ||
246 | { aac_srcv_init, "aacraid", "ADAPTEC ", "RAID ", 2 }, /* Adaptec PMC Series 8 */ | ||
247 | { aac_srcv_init, "aacraid", "ADAPTEC ", "RAID ", 2 } /* Adaptec PMC Series 9 */ | ||
242 | }; | 248 | }; |
243 | 249 | ||
244 | /** | 250 | /** |
@@ -1102,6 +1108,7 @@ static int __devinit aac_probe_one(struct pci_dev *pdev, | |||
1102 | int error = -ENODEV; | 1108 | int error = -ENODEV; |
1103 | int unique_id = 0; | 1109 | int unique_id = 0; |
1104 | u64 dmamask; | 1110 | u64 dmamask; |
1111 | extern int aac_sync_mode; | ||
1105 | 1112 | ||
1106 | list_for_each_entry(aac, &aac_devices, entry) { | 1113 | list_for_each_entry(aac, &aac_devices, entry) { |
1107 | if (aac->id > unique_id) | 1114 | if (aac->id > unique_id) |
@@ -1162,6 +1169,21 @@ static int __devinit aac_probe_one(struct pci_dev *pdev, | |||
1162 | if ((*aac_drivers[index].init)(aac)) | 1169 | if ((*aac_drivers[index].init)(aac)) |
1163 | goto out_unmap; | 1170 | goto out_unmap; |
1164 | 1171 | ||
1172 | if (aac->sync_mode) { | ||
1173 | if (aac_sync_mode) | ||
1174 | printk(KERN_INFO "%s%d: Sync. mode enforced " | ||
1175 | "by driver parameter. This will cause " | ||
1176 | "a significant performance decrease!\n", | ||
1177 | aac->name, | ||
1178 | aac->id); | ||
1179 | else | ||
1180 | printk(KERN_INFO "%s%d: Async. mode not supported " | ||
1181 | "by current driver, sync. mode enforced." | ||
1182 | "\nPlease update driver to get full performance.\n", | ||
1183 | aac->name, | ||
1184 | aac->id); | ||
1185 | } | ||
1186 | |||
1165 | /* | 1187 | /* |
1166 | * Start any kernel threads needed | 1188 | * Start any kernel threads needed |
1167 | */ | 1189 | */ |