summaryrefslogtreecommitdiff
path: root/drivers/scsi/bfa/bfa_iocfc.c
diff options
context:
space:
mode:
authorJing Huang <huangj@brocade.com>2010-07-09 02:48:12 (GMT)
committerJames Bottomley <James.Bottomley@suse.de>2010-07-27 17:04:06 (GMT)
commit15b64a835def4c784c6e62ad762677f5cb56eba2 (patch)
tree0d6ca06f6472c2bb71d254dbbc255ea6f18f8988 /drivers/scsi/bfa/bfa_iocfc.c
parent1769f990fc182695bc215ce4369688064addcd1e (diff)
downloadlinux-15b64a835def4c784c6e62ad762677f5cb56eba2.tar.xz
[SCSI] bfa: ioc attributes fix
This patch fixes the APIs to obtain ioc attributes - fix API to obtain wwpn, wwnn, and mac. - add API to get mfg wwpn, wwnn, and mac. - fix API to obtain wwn of boot target. Signed-off-by: Jing Huang <huangj@brocade.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/bfa/bfa_iocfc.c')
-rw-r--r--drivers/scsi/bfa/bfa_iocfc.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/drivers/scsi/bfa/bfa_iocfc.c b/drivers/scsi/bfa/bfa_iocfc.c
index d3f1052..6f54bea 100644
--- a/drivers/scsi/bfa/bfa_iocfc.c
+++ b/drivers/scsi/bfa/bfa_iocfc.c
@@ -861,13 +861,23 @@ bfa_iocfc_is_operational(struct bfa_s *bfa)
* Return boot target port wwns -- read from boot information in flash.
*/
void
-bfa_iocfc_get_bootwwns(struct bfa_s *bfa, u8 *nwwns, wwn_t **wwns)
+bfa_iocfc_get_bootwwns(struct bfa_s *bfa, u8 *nwwns, wwn_t *wwns)
{
- struct bfa_iocfc_s *iocfc = &bfa->iocfc;
- struct bfi_iocfc_cfgrsp_s *cfgrsp = iocfc->cfgrsp;
+ struct bfa_iocfc_s *iocfc = &bfa->iocfc;
+ struct bfi_iocfc_cfgrsp_s *cfgrsp = iocfc->cfgrsp;
+ int i;
+
+ if (cfgrsp->pbc_cfg.boot_enabled && cfgrsp->pbc_cfg.nbluns) {
+ bfa_trc(bfa, cfgrsp->pbc_cfg.nbluns);
+ *nwwns = cfgrsp->pbc_cfg.nbluns;
+ for (i = 0; i < cfgrsp->pbc_cfg.nbluns; i++)
+ wwns[i] = cfgrsp->pbc_cfg.blun[i].tgt_pwwn;
+
+ return;
+ }
*nwwns = cfgrsp->bootwwns.nwwns;
- *wwns = cfgrsp->bootwwns.wwn;
+ memcpy(wwns, cfgrsp->bootwwns.wwn, sizeof(cfgrsp->bootwwns.wwn));
}
void