aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/aacraid/commsup.c
diff options
context:
space:
mode:
authorSalyzyn, Mark <Mark_Salyzyn@adaptec.com>2008-01-17 12:25:07 -0500
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-01-23 12:29:34 -0500
commitcb1042f285c2168bd8cf10aca0e24802e682252b (patch)
tree80b682f3fc0622de08278e37e51c59f94ad530e0 /drivers/scsi/aacraid/commsup.c
parent2ca39c48ea0d2fd265479d0b62f2ac8878900360 (diff)
[SCSI] aacraid: add Voodoo Lite class of cards.
The cards being added are supported in a limited sense already through family matching, but we needed to add some functionality to the driver to expose selectively the physical drives. These Physical drives are specifically marked to not be part of any array and thus are declared JBODs (Just a Bunch Of Drives) for generic SCSI access. We report that this is the second patch in a set of two, but merely depends on the stand-alone functionality of the first patch which adds in that case the ability to report a driver feature flag via sysfs. We leverage that functionality by reporting that this driver now supports this new JBOD feature for the controller so that the array management applications may react accordingly and guide the user as they manage the controller. Signed-off-by: Mark Salyzyn <aacraid@adaptec.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/aacraid/commsup.c')
-rw-r--r--drivers/scsi/aacraid/commsup.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c
index 1dd2e57c3345..81b36923e0ef 100644
--- a/drivers/scsi/aacraid/commsup.c
+++ b/drivers/scsi/aacraid/commsup.c
@@ -901,7 +901,31 @@ static void aac_handle_aif(struct aac_dev * dev, struct fib * fibptr)
901 case AifEnConfigChange: 901 case AifEnConfigChange:
902 break; 902 break;
903 903
904 case AifEnAddJBOD:
905 case AifEnDeleteJBOD:
906 container = le32_to_cpu(((__le32 *)aifcmd->data)[1]);
907 if ((container >> 28))
908 break;
909 channel = (container >> 24) & 0xF;
910 if (channel >= dev->maximum_num_channels)
911 break;
912 id = container & 0xFFFF;
913 if (id >= dev->maximum_num_physicals)
914 break;
915 lun = (container >> 16) & 0xFF;
916 channel = aac_phys_to_logical(channel);
917 device_config_needed =
918 (((__le32 *)aifcmd->data)[0] ==
919 cpu_to_le32(AifEnAddJBOD)) ? ADD : DELETE;
920 break;
921
904 case AifEnEnclosureManagement: 922 case AifEnEnclosureManagement:
923 /*
924 * If in JBOD mode, automatic exposure of new
925 * physical target to be suppressed until configured.
926 */
927 if (dev->jbod)
928 break;
905 switch (le32_to_cpu(((__le32 *)aifcmd->data)[3])) { 929 switch (le32_to_cpu(((__le32 *)aifcmd->data)[3])) {
906 case EM_DRIVE_INSERTION: 930 case EM_DRIVE_INSERTION:
907 case EM_DRIVE_REMOVAL: 931 case EM_DRIVE_REMOVAL: