diff options
-rw-r--r-- | drivers/scsi/aacraid/README | 8 | ||||
-rw-r--r-- | drivers/scsi/aacraid/TODO | 2 | ||||
-rw-r--r-- | drivers/scsi/aacraid/aachba.c | 44 | ||||
-rw-r--r-- | drivers/scsi/aacraid/aacraid.h | 24 | ||||
-rw-r--r-- | drivers/scsi/aacraid/linit.c | 81 |
5 files changed, 125 insertions, 34 deletions
diff --git a/drivers/scsi/aacraid/README b/drivers/scsi/aacraid/README index fdb0f45f7336..4fa524687bc5 100644 --- a/drivers/scsi/aacraid/README +++ b/drivers/scsi/aacraid/README | |||
@@ -13,6 +13,7 @@ Supported Cards/Chipsets | |||
13 | Adaptec 2020S | 13 | Adaptec 2020S |
14 | Adaptec 2025S | 14 | Adaptec 2025S |
15 | Adaptec 2120S | 15 | Adaptec 2120S |
16 | Adaptec 2130S | ||
16 | Adaptec 2200S | 17 | Adaptec 2200S |
17 | Adaptec 2230S | 18 | Adaptec 2230S |
18 | Adaptec 2240S | 19 | Adaptec 2240S |
@@ -35,6 +36,13 @@ Supported Cards/Chipsets | |||
35 | HP NetRAID-4M | 36 | HP NetRAID-4M |
36 | Legend S220 | 37 | Legend S220 |
37 | Legend S230 | 38 | Legend S230 |
39 | IBM ServeRAID 8i | ||
40 | ICP 9014R0 | ||
41 | ICP 9024R0 | ||
42 | ICP 9047MA | ||
43 | ICP 9087MA | ||
44 | ICP 9085LI | ||
45 | ICP 5085AU | ||
38 | 46 | ||
39 | People | 47 | People |
40 | ------------------------- | 48 | ------------------------- |
diff --git a/drivers/scsi/aacraid/TODO b/drivers/scsi/aacraid/TODO index 25856a21d982..2f148b4617dc 100644 --- a/drivers/scsi/aacraid/TODO +++ b/drivers/scsi/aacraid/TODO | |||
@@ -1,6 +1,4 @@ | |||
1 | o Testing | 1 | o Testing |
2 | o More testing | 2 | o More testing |
3 | o Feature request: display the firmware/bios/etc revisions in the | ||
4 | /proc info | ||
5 | o Drop irq_mask, basically unused | 3 | o Drop irq_mask, basically unused |
6 | o I/O size increase | 4 | o I/O size increase |
diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c index f02c99641467..ccdf440021fb 100644 --- a/drivers/scsi/aacraid/aachba.c +++ b/drivers/scsi/aacraid/aachba.c | |||
@@ -276,7 +276,6 @@ int aac_get_containers(struct aac_dev *dev) | |||
276 | 276 | ||
277 | if (maximum_num_containers < MAXIMUM_NUM_CONTAINERS) | 277 | if (maximum_num_containers < MAXIMUM_NUM_CONTAINERS) |
278 | maximum_num_containers = MAXIMUM_NUM_CONTAINERS; | 278 | maximum_num_containers = MAXIMUM_NUM_CONTAINERS; |
279 | |||
280 | fsa_dev_ptr = (struct fsa_dev_info *) kmalloc( | 279 | fsa_dev_ptr = (struct fsa_dev_info *) kmalloc( |
281 | sizeof(*fsa_dev_ptr) * maximum_num_containers, GFP_KERNEL); | 280 | sizeof(*fsa_dev_ptr) * maximum_num_containers, GFP_KERNEL); |
282 | if (!fsa_dev_ptr) { | 281 | if (!fsa_dev_ptr) { |
@@ -527,6 +526,11 @@ static char *container_types[] = { | |||
527 | "V-MIRRORS", | 526 | "V-MIRRORS", |
528 | "PSEUDO R4", | 527 | "PSEUDO R4", |
529 | "RAID50", | 528 | "RAID50", |
529 | "RAID5D", | ||
530 | "RAID5D0", | ||
531 | "RAID1E", | ||
532 | "RAID6", | ||
533 | "RAID60", | ||
530 | "Unknown" | 534 | "Unknown" |
531 | }; | 535 | }; |
532 | 536 | ||
@@ -610,7 +614,9 @@ int aac_get_adapter_info(struct aac_dev* dev) | |||
610 | struct fib* fibptr; | 614 | struct fib* fibptr; |
611 | int rcode; | 615 | int rcode; |
612 | u32 tmp; | 616 | u32 tmp; |
613 | struct aac_adapter_info * info; | 617 | struct aac_adapter_info *info; |
618 | struct aac_bus_info *command; | ||
619 | struct aac_bus_info_response *bus_info; | ||
614 | 620 | ||
615 | if (!(fibptr = fib_alloc(dev))) | 621 | if (!(fibptr = fib_alloc(dev))) |
616 | return -ENOMEM; | 622 | return -ENOMEM; |
@@ -655,6 +661,36 @@ int aac_get_adapter_info(struct aac_dev* dev) | |||
655 | memcpy(&dev->supplement_adapter_info, info, sizeof(*info)); | 661 | memcpy(&dev->supplement_adapter_info, info, sizeof(*info)); |
656 | } | 662 | } |
657 | 663 | ||
664 | |||
665 | /* | ||
666 | * GetBusInfo | ||
667 | */ | ||
668 | |||
669 | fib_init(fibptr); | ||
670 | |||
671 | bus_info = (struct aac_bus_info_response *) fib_data(fibptr); | ||
672 | |||
673 | memset(bus_info, 0, sizeof(*bus_info)); | ||
674 | |||
675 | command = (struct aac_bus_info *)bus_info; | ||
676 | |||
677 | command->Command = cpu_to_le32(VM_Ioctl); | ||
678 | command->ObjType = cpu_to_le32(FT_DRIVE); | ||
679 | command->MethodId = cpu_to_le32(1); | ||
680 | command->CtlCmd = cpu_to_le32(GetBusInfo); | ||
681 | |||
682 | rcode = fib_send(ContainerCommand, | ||
683 | fibptr, | ||
684 | sizeof (*bus_info), | ||
685 | FsaNormal, | ||
686 | 1, 1, | ||
687 | NULL, NULL); | ||
688 | |||
689 | if (rcode >= 0 && le32_to_cpu(bus_info->Status) == ST_OK) { | ||
690 | dev->maximum_num_physicals = le32_to_cpu(bus_info->TargetsPerBus); | ||
691 | dev->maximum_num_channels = le32_to_cpu(bus_info->BusCount); | ||
692 | } | ||
693 | |||
658 | tmp = le32_to_cpu(dev->adapter_info.kernelrev); | 694 | tmp = le32_to_cpu(dev->adapter_info.kernelrev); |
659 | printk(KERN_INFO "%s%d: kernel %d.%d-%d[%d] %.*s\n", | 695 | printk(KERN_INFO "%s%d: kernel %d.%d-%d[%d] %.*s\n", |
660 | dev->name, | 696 | dev->name, |
@@ -1818,7 +1854,9 @@ static int aac_send_srb_fib(struct scsi_cmnd* scsicmd) | |||
1818 | u32 flag; | 1854 | u32 flag; |
1819 | u32 timeout; | 1855 | u32 timeout; |
1820 | 1856 | ||
1821 | if( scsicmd->device->id > 15 || scsicmd->device->lun > 7) { | 1857 | dev = (struct aac_dev *)scsicmd->device->host->hostdata; |
1858 | if (scsicmd->device->id >= dev->maximum_num_physicals || | ||
1859 | scsicmd->device->lun > 7) { | ||
1822 | scsicmd->result = DID_NO_CONNECT << 16; | 1860 | scsicmd->result = DID_NO_CONNECT << 16; |
1823 | scsicmd->scsi_done(scsicmd); | 1861 | scsicmd->scsi_done(scsicmd); |
1824 | return 0; | 1862 | return 0; |
diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h index 42484417cef7..3a11a536c0da 100644 --- a/drivers/scsi/aacraid/aacraid.h +++ b/drivers/scsi/aacraid/aacraid.h | |||
@@ -845,6 +845,28 @@ struct aac_supplement_adapter_info | |||
845 | #define AAC_SIS_VERSION_V3 3 | 845 | #define AAC_SIS_VERSION_V3 3 |
846 | #define AAC_SIS_SLOT_UNKNOWN 0xFF | 846 | #define AAC_SIS_SLOT_UNKNOWN 0xFF |
847 | 847 | ||
848 | #define GetBusInfo 0x00000009 | ||
849 | struct aac_bus_info { | ||
850 | __le32 Command; /* VM_Ioctl */ | ||
851 | __le32 ObjType; /* FT_DRIVE */ | ||
852 | __le32 MethodId; /* 1 = SCSI Layer */ | ||
853 | __le32 ObjectId; /* Handle */ | ||
854 | __le32 CtlCmd; /* GetBusInfo */ | ||
855 | }; | ||
856 | |||
857 | struct aac_bus_info_response { | ||
858 | __le32 Status; /* ST_OK */ | ||
859 | __le32 ObjType; | ||
860 | __le32 MethodId; /* unused */ | ||
861 | __le32 ObjectId; /* unused */ | ||
862 | __le32 CtlCmd; /* unused */ | ||
863 | __le32 ProbeComplete; | ||
864 | __le32 BusCount; | ||
865 | __le32 TargetsPerBus; | ||
866 | u8 InitiatorBusId[10]; | ||
867 | u8 BusValid[10]; | ||
868 | }; | ||
869 | |||
848 | /* | 870 | /* |
849 | * Battery platforms | 871 | * Battery platforms |
850 | */ | 872 | */ |
@@ -934,6 +956,8 @@ struct aac_dev | |||
934 | 956 | ||
935 | struct Scsi_Host *scsi_host_ptr; | 957 | struct Scsi_Host *scsi_host_ptr; |
936 | int maximum_num_containers; | 958 | int maximum_num_containers; |
959 | int maximum_num_physicals; | ||
960 | int maximum_num_channels; | ||
937 | struct fsa_dev_info *fsa_dev; | 961 | struct fsa_dev_info *fsa_dev; |
938 | pid_t thread_pid; | 962 | pid_t thread_pid; |
939 | int cardtype; | 963 | int cardtype; |
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c index f7e9c89c4915..c1a4f978fcba 100644 --- a/drivers/scsi/aacraid/linit.c +++ b/drivers/scsi/aacraid/linit.c | |||
@@ -102,32 +102,43 @@ static struct pci_device_id aac_pci_tbl[] = { | |||
102 | { 0x9005, 0x0286, 0x9005, 0x029b, 0, 0, 22 }, /* AAR-2820SA (Intruder) */ | 102 | { 0x9005, 0x0286, 0x9005, 0x029b, 0, 0, 22 }, /* AAR-2820SA (Intruder) */ |
103 | { 0x9005, 0x0286, 0x9005, 0x029c, 0, 0, 23 }, /* AAR-2620SA (Intruder) */ | 103 | { 0x9005, 0x0286, 0x9005, 0x029c, 0, 0, 23 }, /* AAR-2620SA (Intruder) */ |
104 | { 0x9005, 0x0286, 0x9005, 0x029d, 0, 0, 24 }, /* AAR-2420SA (Intruder) */ | 104 | { 0x9005, 0x0286, 0x9005, 0x029d, 0, 0, 24 }, /* AAR-2420SA (Intruder) */ |
105 | { 0x9005, 0x0286, 0x9005, 0x0800, 0, 0, 25 }, /* Callisto Jupiter Platform */ | 105 | { 0x9005, 0x0286, 0x9005, 0x029e, 0, 0, 25 }, /* ICP9024R0 (Lancer) */ |
106 | { 0x9005, 0x0285, 0x9005, 0x028e, 0, 0, 26 }, /* ASR-2020SA SATA PCI-X ZCR (Skyhawk) */ | 106 | { 0x9005, 0x0286, 0x9005, 0x029f, 0, 0, 26 }, /* ICP9014R0 (Lancer) */ |
107 | { 0x9005, 0x0285, 0x9005, 0x028f, 0, 0, 27 }, /* ASR-2025SA SATA SO-DIMM PCI-X ZCR (Terminator) */ | 107 | { 0x9005, 0x0286, 0x9005, 0x02a0, 0, 0, 27 }, /* ICP9047MA (Lancer) */ |
108 | { 0x9005, 0x0285, 0x9005, 0x0290, 0, 0, 28 }, /* AAR-2410SA PCI SATA 4ch (Jaguar II) */ | 108 | { 0x9005, 0x0286, 0x9005, 0x02a1, 0, 0, 28 }, /* ICP9087MA (Lancer) */ |
109 | { 0x9005, 0x0285, 0x1028, 0x0291, 0, 0, 29 }, /* CERC SATA RAID 2 PCI SATA 6ch (DellCorsair) */ | 109 | { 0x9005, 0x0286, 0x9005, 0x02a3, 0, 0, 29 }, /* ICP5085AU (Hurricane) */ |
110 | { 0x9005, 0x0285, 0x9005, 0x0292, 0, 0, 30 }, /* AAR-2810SA PCI SATA 8ch (Corsair-8) */ | 110 | { 0x9005, 0x0285, 0x9005, 0x02a4, 0, 0, 30 }, /* ICP9085LI (Marauder-X) */ |
111 | { 0x9005, 0x0285, 0x9005, 0x0293, 0, 0, 31 }, /* AAR-21610SA PCI SATA 16ch (Corsair-16) */ | 111 | { 0x9005, 0x0285, 0x9005, 0x02a5, 0, 0, 31 }, /* ICP5085BR (Marauder-E) */ |
112 | { 0x9005, 0x0285, 0x9005, 0x0294, 0, 0, 32 }, /* ESD SO-DIMM PCI-X SATA ZCR (Prowler) */ | 112 | { 0x9005, 0x0287, 0x9005, 0x0800, 0, 0, 32 }, /* Themisto Jupiter Platform */ |
113 | { 0x9005, 0x0285, 0x103C, 0x3227, 0, 0, 33 }, /* AAR-2610SA PCI SATA 6ch */ | 113 | { 0x9005, 0x0200, 0x9005, 0x0200, 0, 0, 32 }, /* Themisto Jupiter Platform */ |
114 | { 0x9005, 0x0285, 0x9005, 0x0296, 0, 0, 34 }, /* ASR-2240S (SabreExpress) */ | 114 | { 0x9005, 0x0286, 0x9005, 0x0800, 0, 0, 33 }, /* Callisto Jupiter Platform */ |
115 | { 0x9005, 0x0285, 0x9005, 0x0297, 0, 0, 35 }, /* ASR-4005SAS */ | 115 | { 0x9005, 0x0285, 0x9005, 0x028e, 0, 0, 34 }, /* ASR-2020SA SATA PCI-X ZCR (Skyhawk) */ |
116 | { 0x9005, 0x0285, 0x1014, 0x02F2, 0, 0, 36 }, /* IBM 8i (AvonPark) */ | 116 | { 0x9005, 0x0285, 0x9005, 0x028f, 0, 0, 35 }, /* ASR-2025SA SATA SO-DIMM PCI-X ZCR (Terminator) */ |
117 | { 0x9005, 0x0285, 0x9005, 0x0298, 0, 0, 37 }, /* ASR-4000SAS (BlackBird) */ | 117 | { 0x9005, 0x0285, 0x9005, 0x0290, 0, 0, 36 }, /* AAR-2410SA PCI SATA 4ch (Jaguar II) */ |
118 | { 0x9005, 0x0285, 0x9005, 0x0299, 0, 0, 38 }, /* ASR-4800SAS (Marauder-X) */ | 118 | { 0x9005, 0x0285, 0x1028, 0x0291, 0, 0, 37 }, /* CERC SATA RAID 2 PCI SATA 6ch (DellCorsair) */ |
119 | { 0x9005, 0x0285, 0x9005, 0x029A, 0, 0, 39 }, /* ASR-4805SAS (Marauder-E) */ | 119 | { 0x9005, 0x0285, 0x9005, 0x0292, 0, 0, 38 }, /* AAR-2810SA PCI SATA 8ch (Corsair-8) */ |
120 | 120 | { 0x9005, 0x0285, 0x9005, 0x0293, 0, 0, 39 }, /* AAR-21610SA PCI SATA 16ch (Corsair-16) */ | |
121 | { 0x9005, 0x0285, 0x1028, 0x0287, 0, 0, 40 }, /* Perc 320/DC*/ | 121 | { 0x9005, 0x0285, 0x9005, 0x0294, 0, 0, 40 }, /* ESD SO-DIMM PCI-X SATA ZCR (Prowler) */ |
122 | { 0x1011, 0x0046, 0x9005, 0x0365, 0, 0, 41 }, /* Adaptec 5400S (Mustang)*/ | 122 | { 0x9005, 0x0285, 0x103C, 0x3227, 0, 0, 41 }, /* AAR-2610SA PCI SATA 6ch */ |
123 | { 0x1011, 0x0046, 0x9005, 0x0364, 0, 0, 42 }, /* Adaptec 5400S (Mustang)*/ | 123 | { 0x9005, 0x0285, 0x9005, 0x0296, 0, 0, 42 }, /* ASR-2240S (SabreExpress) */ |
124 | { 0x1011, 0x0046, 0x9005, 0x1364, 0, 0, 43 }, /* Dell PERC2/QC */ | 124 | { 0x9005, 0x0285, 0x9005, 0x0297, 0, 0, 43 }, /* ASR-4005SAS */ |
125 | { 0x1011, 0x0046, 0x103c, 0x10c2, 0, 0, 44 }, /* HP NetRAID-4M */ | 125 | { 0x9005, 0x0285, 0x1014, 0x02F2, 0, 0, 44 }, /* IBM 8i (AvonPark) */ |
126 | 126 | { 0x9005, 0x0285, 0x1014, 0x0312, 0, 0, 44 }, /* IBM 8i (AvonPark Lite) */ | |
127 | { 0x9005, 0x0285, 0x1028, PCI_ANY_ID, 0, 0, 45 }, /* Dell Catchall */ | 127 | { 0x9005, 0x0285, 0x9005, 0x0298, 0, 0, 45 }, /* ASR-4000SAS (BlackBird) */ |
128 | { 0x9005, 0x0285, 0x17aa, PCI_ANY_ID, 0, 0, 46 }, /* Legend Catchall */ | 128 | { 0x9005, 0x0285, 0x9005, 0x0299, 0, 0, 46 }, /* ASR-4800SAS (Marauder-X) */ |
129 | { 0x9005, 0x0285, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 47 }, /* Adaptec Catch All */ | 129 | { 0x9005, 0x0285, 0x9005, 0x029a, 0, 0, 47 }, /* ASR-4805SAS (Marauder-E) */ |
130 | { 0x9005, 0x0286, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 48 }, /* Adaptec Rocket Catch All */ | 130 | { 0x9005, 0x0286, 0x9005, 0x02a2, 0, 0, 48 }, /* ASR-4810SAS (Hurricane */ |
131 | |||
132 | { 0x9005, 0x0285, 0x1028, 0x0287, 0, 0, 49 }, /* Perc 320/DC*/ | ||
133 | { 0x1011, 0x0046, 0x9005, 0x0365, 0, 0, 50 }, /* Adaptec 5400S (Mustang)*/ | ||
134 | { 0x1011, 0x0046, 0x9005, 0x0364, 0, 0, 51 }, /* Adaptec 5400S (Mustang)*/ | ||
135 | { 0x1011, 0x0046, 0x9005, 0x1364, 0, 0, 52 }, /* Dell PERC2/QC */ | ||
136 | { 0x1011, 0x0046, 0x103c, 0x10c2, 0, 0, 53 }, /* HP NetRAID-4M */ | ||
137 | |||
138 | { 0x9005, 0x0285, 0x1028, PCI_ANY_ID, 0, 0, 54 }, /* Dell Catchall */ | ||
139 | { 0x9005, 0x0285, 0x17aa, PCI_ANY_ID, 0, 0, 55 }, /* Legend Catchall */ | ||
140 | { 0x9005, 0x0285, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 56 }, /* Adaptec Catch All */ | ||
141 | { 0x9005, 0x0286, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 57 }, /* Adaptec Rocket Catch All */ | ||
131 | { 0,} | 142 | { 0,} |
132 | }; | 143 | }; |
133 | MODULE_DEVICE_TABLE(pci, aac_pci_tbl); | 144 | MODULE_DEVICE_TABLE(pci, aac_pci_tbl); |
@@ -164,6 +175,14 @@ static struct aac_driver_ident aac_drivers[] = { | |||
164 | { aac_rkt_init, "aacraid", "ADAPTEC ", "AAR-2820SA ", 1 }, /* AAR-2820SA (Intruder) */ | 175 | { aac_rkt_init, "aacraid", "ADAPTEC ", "AAR-2820SA ", 1 }, /* AAR-2820SA (Intruder) */ |
165 | { aac_rkt_init, "aacraid", "ADAPTEC ", "AAR-2620SA ", 1 }, /* AAR-2620SA (Intruder) */ | 176 | { aac_rkt_init, "aacraid", "ADAPTEC ", "AAR-2620SA ", 1 }, /* AAR-2620SA (Intruder) */ |
166 | { aac_rkt_init, "aacraid", "ADAPTEC ", "AAR-2420SA ", 1 }, /* AAR-2420SA (Intruder) */ | 177 | { aac_rkt_init, "aacraid", "ADAPTEC ", "AAR-2420SA ", 1 }, /* AAR-2420SA (Intruder) */ |
178 | { aac_rkt_init, "aacraid", "ICP ", "ICP9024R0 ", 2 }, /* ICP9024R0 (Lancer) */ | ||
179 | { aac_rkt_init, "aacraid", "ICP ", "ICP9014R0 ", 1 }, /* ICP9014R0 (Lancer) */ | ||
180 | { aac_rkt_init, "aacraid", "ICP ", "ICP9047MA ", 1 }, /* ICP9047MA (Lancer) */ | ||
181 | { aac_rkt_init, "aacraid", "ICP ", "ICP9087MA ", 1 }, /* ICP9087MA (Lancer) */ | ||
182 | { aac_rkt_init, "aacraid", "ICP ", "ICP5085AU ", 1 }, /* ICP5085AU (Hurricane) */ | ||
183 | { aac_rkt_init, "aacraid", "ICP ", "ICP9085LI ", 1 }, /* ICP9085LI (Marauder-X) */ | ||
184 | { aac_rkt_init, "aacraid", "ICP ", "ICP5085BR ", 1 }, /* ICP5085BR (Marauder-E) */ | ||
185 | { NULL , "aacraid", "ADAPTEC ", "Themisto ", 0, AAC_QUIRK_SLAVE }, /* Jupiter Platform */ | ||
167 | { aac_rkt_init, "aacraid", "ADAPTEC ", "Callisto ", 2, AAC_QUIRK_MASTER }, /* Jupiter Platform */ | 186 | { aac_rkt_init, "aacraid", "ADAPTEC ", "Callisto ", 2, AAC_QUIRK_MASTER }, /* Jupiter Platform */ |
168 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2020SA ", 1 }, /* ASR-2020SA SATA PCI-X ZCR (Skyhawk) */ | 187 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2020SA ", 1 }, /* ASR-2020SA SATA PCI-X ZCR (Skyhawk) */ |
169 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2025SA ", 1 }, /* ASR-2025SA SATA SO-DIMM PCI-X ZCR (Terminator) */ | 188 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2025SA ", 1 }, /* ASR-2025SA SATA SO-DIMM PCI-X ZCR (Terminator) */ |
@@ -175,10 +194,11 @@ static struct aac_driver_ident aac_drivers[] = { | |||
175 | { aac_rx_init, "aacraid", "ADAPTEC ", "AAR-2610SA ", 1 }, /* SATA 6Ch (Bearcat) */ | 194 | { aac_rx_init, "aacraid", "ADAPTEC ", "AAR-2610SA ", 1 }, /* SATA 6Ch (Bearcat) */ |
176 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2240S ", 1 }, /* ASR-2240S (SabreExpress) */ | 195 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-2240S ", 1 }, /* ASR-2240S (SabreExpress) */ |
177 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4005SAS ", 1 }, /* ASR-4005SAS */ | 196 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4005SAS ", 1 }, /* ASR-4005SAS */ |
178 | { aac_rx_init, "aacraid", "IBM ", "ServeRAID 8i ", 1 }, /* IBM 8i (AvonPark) */ | 197 | { aac_rx_init, "ServeRAID","IBM ", "ServeRAID 8i ", 1 }, /* IBM 8i (AvonPark) */ |
179 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4000SAS ", 1 }, /* ASR-4000SAS (BlackBird & AvonPark) */ | 198 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4000SAS ", 1 }, /* ASR-4000SAS (BlackBird & AvonPark) */ |
180 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4800SAS ", 1 }, /* ASR-4800SAS (Marauder-X) */ | 199 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4800SAS ", 1 }, /* ASR-4800SAS (Marauder-X) */ |
181 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4805SAS ", 1 }, /* ASR-4805SAS (Marauder-E) */ | 200 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4805SAS ", 1 }, /* ASR-4805SAS (Marauder-E) */ |
201 | { aac_rx_init, "aacraid", "ADAPTEC ", "ASR-4810SAS ", 1 }, /* ASR-4810SAS (Hurricane) */ | ||
182 | 202 | ||
183 | { aac_rx_init, "percraid", "DELL ", "PERC 320/DC ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG }, /* Perc 320/DC*/ | 203 | { aac_rx_init, "percraid", "DELL ", "PERC 320/DC ", 2, AAC_QUIRK_31BIT | AAC_QUIRK_34SG }, /* Perc 320/DC*/ |
184 | { aac_sa_init, "aacraid", "ADAPTEC ", "Adaptec 5400S ", 4, AAC_QUIRK_34SG }, /* Adaptec 5400S (Mustang)*/ | 204 | { aac_sa_init, "aacraid", "ADAPTEC ", "Adaptec 5400S ", 4, AAC_QUIRK_34SG }, /* Adaptec 5400S (Mustang)*/ |
@@ -681,7 +701,7 @@ static struct scsi_host_template aac_driver_template = { | |||
681 | .slave_configure = aac_slave_configure, | 701 | .slave_configure = aac_slave_configure, |
682 | .eh_host_reset_handler = aac_eh_reset, | 702 | .eh_host_reset_handler = aac_eh_reset, |
683 | .can_queue = AAC_NUM_IO_FIB, | 703 | .can_queue = AAC_NUM_IO_FIB, |
684 | .this_id = 16, | 704 | .this_id = MAXIMUM_NUM_CONTAINERS, |
685 | .sg_tablesize = 16, | 705 | .sg_tablesize = 16, |
686 | .max_sectors = 128, | 706 | .max_sectors = 128, |
687 | #if (AAC_NUM_IO_FIB > 256) | 707 | #if (AAC_NUM_IO_FIB > 256) |
@@ -760,6 +780,7 @@ static int __devinit aac_probe_one(struct pci_dev *pdev, | |||
760 | if (pci_set_dma_mask(pdev, 0xFFFFFFFFULL)) | 780 | if (pci_set_dma_mask(pdev, 0xFFFFFFFFULL)) |
761 | goto out_free_fibs; | 781 | goto out_free_fibs; |
762 | 782 | ||
783 | aac->maximum_num_channels = aac_drivers[index].channels; | ||
763 | aac_get_adapter_info(aac); | 784 | aac_get_adapter_info(aac); |
764 | 785 | ||
765 | /* | 786 | /* |
@@ -786,7 +807,7 @@ static int __devinit aac_probe_one(struct pci_dev *pdev, | |||
786 | * physical channels are address by their actual physical number+1 | 807 | * physical channels are address by their actual physical number+1 |
787 | */ | 808 | */ |
788 | if (aac->nondasd_support == 1) | 809 | if (aac->nondasd_support == 1) |
789 | shost->max_channel = aac_drivers[index].channels+1; | 810 | shost->max_channel = aac->maximum_num_channels + 1; |
790 | else | 811 | else |
791 | shost->max_channel = 1; | 812 | shost->max_channel = 1; |
792 | 813 | ||
@@ -795,6 +816,8 @@ static int __devinit aac_probe_one(struct pci_dev *pdev, | |||
795 | list_add(&aac->entry, insert); | 816 | list_add(&aac->entry, insert); |
796 | 817 | ||
797 | shost->max_id = aac->maximum_num_containers; | 818 | shost->max_id = aac->maximum_num_containers; |
819 | if (shost->max_id < aac->maximum_num_physicals) | ||
820 | shost->max_id = aac->maximum_num_physicals; | ||
798 | if (shost->max_id < MAXIMUM_NUM_CONTAINERS) | 821 | if (shost->max_id < MAXIMUM_NUM_CONTAINERS) |
799 | shost->max_id = MAXIMUM_NUM_CONTAINERS; | 822 | shost->max_id = MAXIMUM_NUM_CONTAINERS; |
800 | else | 823 | else |