diff options
author | James.Smart@Emulex.Com <James.Smart@Emulex.Com> | 2005-10-28 20:29:28 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.(none)> | 2005-10-29 11:19:52 -0400 |
commit | f91b392c4d20fcd2684587c0a091123c0409959c (patch) | |
tree | d6ffb11b617930a5c518367c5d3dea84d560a406 /drivers/scsi/lpfc/lpfc_mbox.c | |
parent | 09703d38d47d2b4ff769269ffe01c9aa340e3c8b (diff) |
[SCSI] lpfc: Fix for "Unknown IOCB command Data: x0 x3 x0 x0"
Fix for "Unknown IOCB command Data: x0 x3 x0 x0" messages and
inability to see devices
On some platforms, the host-memory based ring mgmt area was not
zero. Also, driver wasn't manipulating the entire 32bits of the ring
pointers.
Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_mbox.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_mbox.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/scsi/lpfc/lpfc_mbox.c b/drivers/scsi/lpfc/lpfc_mbox.c index 73eb89f91593..31c20cc00609 100644 --- a/drivers/scsi/lpfc/lpfc_mbox.c +++ b/drivers/scsi/lpfc/lpfc_mbox.c | |||
@@ -531,6 +531,7 @@ lpfc_config_port(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmb) | |||
531 | size_t offset; | 531 | size_t offset; |
532 | struct lpfc_hgp hgp; | 532 | struct lpfc_hgp hgp; |
533 | void __iomem *to_slim; | 533 | void __iomem *to_slim; |
534 | int i; | ||
534 | 535 | ||
535 | memset(pmb, 0, sizeof(LPFC_MBOXQ_t)); | 536 | memset(pmb, 0, sizeof(LPFC_MBOXQ_t)); |
536 | mb->mbxCommand = MBX_CONFIG_PORT; | 537 | mb->mbxCommand = MBX_CONFIG_PORT; |
@@ -587,7 +588,11 @@ lpfc_config_port(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmb) | |||
587 | /* write HGP data to SLIM at the required longword offset */ | 588 | /* write HGP data to SLIM at the required longword offset */ |
588 | memset(&hgp, 0, sizeof(struct lpfc_hgp)); | 589 | memset(&hgp, 0, sizeof(struct lpfc_hgp)); |
589 | to_slim = phba->MBslimaddr + (SLIMOFF*sizeof (uint32_t)); | 590 | to_slim = phba->MBslimaddr + (SLIMOFF*sizeof (uint32_t)); |
590 | lpfc_memcpy_to_slim(to_slim, &hgp, sizeof(struct lpfc_hgp)); | 591 | |
592 | for (i=0; i < phba->sli.num_rings; i++) { | ||
593 | lpfc_memcpy_to_slim(to_slim, &hgp, sizeof(struct lpfc_hgp)); | ||
594 | to_slim += sizeof (struct lpfc_hgp); | ||
595 | } | ||
591 | 596 | ||
592 | /* Setup Port Group ring pointer */ | 597 | /* Setup Port Group ring pointer */ |
593 | offset = (uint8_t *)&phba->slim2p->mbx.us.s2.port - | 598 | offset = (uint8_t *)&phba->slim2p->mbx.us.s2.port - |