aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/aacraid/commsup.c
diff options
context:
space:
mode:
authorSalyzyn, Mark <Mark_Salyzyn@adaptec.com>2008-01-08 15:48:25 -0500
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-01-23 12:29:19 -0500
commita3940da5e6fe8b833eecdbca3fac9456b4204d6e (patch)
treee7254ab5376f92b427e283eba55e2f66a7ce1c19 /drivers/scsi/aacraid/commsup.c
parent06a43d1725f59a0f5e043bd06081c44ae528098e (diff)
[SCSI] aacraid: fix big endian issues
Big endian systems issues discovered in the aacraid driver. Somewhat reverses a patch from November 7th of last year that removed swap operations because they formerly were being assigned to an u8 array when they should have been assigned to an le32 array. This patch is largely inert for any little endian processor architecture. It resolves a bug in delivering the BlinkLED AIF event to registered applications when the adapter or associated hardware was reset due to ill health. A rare corner case occurrence, also largely unnoticed by any as it was a new (untested!) feature. 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.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c
index 81cdac166d4b..e82d89ccaf15 100644
--- a/drivers/scsi/aacraid/commsup.c
+++ b/drivers/scsi/aacraid/commsup.c
@@ -1343,11 +1343,11 @@ int aac_check_health(struct aac_dev * aac)
1343 fib->data = hw_fib->data; 1343 fib->data = hw_fib->data;
1344 aif = (struct aac_aifcmd *)hw_fib->data; 1344 aif = (struct aac_aifcmd *)hw_fib->data;
1345 aif->command = cpu_to_le32(AifCmdEventNotify); 1345 aif->command = cpu_to_le32(AifCmdEventNotify);
1346 aif->seqnum = cpu_to_le32(0xFFFFFFFF); 1346 aif->seqnum = cpu_to_le32(0xFFFFFFFF);
1347 aif->data[0] = AifEnExpEvent; 1347 ((__le32 *)aif->data)[0] = cpu_to_le32(AifEnExpEvent);
1348 aif->data[1] = AifExeFirmwarePanic; 1348 ((__le32 *)aif->data)[1] = cpu_to_le32(AifExeFirmwarePanic);
1349 aif->data[2] = AifHighPriority; 1349 ((__le32 *)aif->data)[2] = cpu_to_le32(AifHighPriority);
1350 aif->data[3] = BlinkLED; 1350 ((__le32 *)aif->data)[3] = cpu_to_le32(BlinkLED);
1351 1351
1352 /* 1352 /*
1353 * Put the FIB onto the 1353 * Put the FIB onto the
@@ -1377,10 +1377,9 @@ int aac_check_health(struct aac_dev * aac)
1377 1377
1378 printk(KERN_ERR "%s: Host adapter BLINK LED 0x%x\n", aac->name, BlinkLED); 1378 printk(KERN_ERR "%s: Host adapter BLINK LED 0x%x\n", aac->name, BlinkLED);
1379 1379
1380 if (!aac_check_reset || 1380 if (!aac_check_reset || ((aac_check_reset != 1) &&
1381 ((aac_check_reset != 1) && 1381 (aac->supplement_adapter_info.SupportedOptions2 &
1382 (aac->supplement_adapter_info.SupportedOptions2 & 1382 AAC_OPTION_IGNORE_RESET)))
1383 cpu_to_le32(AAC_OPTION_IGNORE_RESET))))
1384 goto out; 1383 goto out;
1385 host = aac->scsi_host_ptr; 1384 host = aac->scsi_host_ptr;
1386 if (aac->thread->pid != current->pid) 1385 if (aac->thread->pid != current->pid)