mirror of https://gitee.com/openkylin/linux.git
[SCSI] bfa: IOC fixes, check for IOC down condition.
Currently BFA was not checking for IOC down condition when issuing getstats/clearstats Add check to see if IOC is operational, before issuing getstats/clearstats. Signed-off-by: Krishna Gudipati <kgudipat@brocade.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
parent
78f915f7b0
commit
13cc20c5e7
|
@ -1129,9 +1129,6 @@ bfa_ioc_download_fw(struct bfa_ioc_s *ioc, u32 boot_type,
|
||||||
if (bfa_ioc_fwimg_get_size(ioc) < BFA_IOC_FWIMG_MINSZ)
|
if (bfa_ioc_fwimg_get_size(ioc) < BFA_IOC_FWIMG_MINSZ)
|
||||||
boot_type = BFI_BOOT_TYPE_FLASH;
|
boot_type = BFI_BOOT_TYPE_FLASH;
|
||||||
fwimg = bfa_ioc_fwimg_get_chunk(ioc, chunkno);
|
fwimg = bfa_ioc_fwimg_get_chunk(ioc, chunkno);
|
||||||
fwimg[BFI_BOOT_TYPE_OFF / sizeof(u32)] = bfa_os_swap32(boot_type);
|
|
||||||
fwimg[BFI_BOOT_PARAM_OFF / sizeof(u32)] =
|
|
||||||
bfa_os_swap32(boot_param);
|
|
||||||
|
|
||||||
pgnum = bfa_ioc_smem_pgnum(ioc, loff);
|
pgnum = bfa_ioc_smem_pgnum(ioc, loff);
|
||||||
pgoff = bfa_ioc_smem_pgoff(ioc, loff);
|
pgoff = bfa_ioc_smem_pgoff(ioc, loff);
|
||||||
|
@ -1166,6 +1163,14 @@ bfa_ioc_download_fw(struct bfa_ioc_s *ioc, u32 boot_type,
|
||||||
|
|
||||||
bfa_reg_write(ioc->ioc_regs.host_page_num_fn,
|
bfa_reg_write(ioc->ioc_regs.host_page_num_fn,
|
||||||
bfa_ioc_smem_pgnum(ioc, 0));
|
bfa_ioc_smem_pgnum(ioc, 0));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set boot type and boot param at the end.
|
||||||
|
*/
|
||||||
|
bfa_mem_write(ioc->ioc_regs.smem_page_start, BFI_BOOT_TYPE_OFF,
|
||||||
|
bfa_os_swap32(boot_type));
|
||||||
|
bfa_mem_write(ioc->ioc_regs.smem_page_start, BFI_BOOT_PARAM_OFF,
|
||||||
|
bfa_os_swap32(boot_param));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -801,6 +801,11 @@ bfa_iocfc_get_stats(struct bfa_s *bfa, struct bfa_iocfc_stats_s *stats,
|
||||||
return BFA_STATUS_DEVBUSY;
|
return BFA_STATUS_DEVBUSY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!bfa_iocfc_is_operational(bfa)) {
|
||||||
|
bfa_trc(bfa, 0);
|
||||||
|
return BFA_STATUS_IOC_NON_OP;
|
||||||
|
}
|
||||||
|
|
||||||
iocfc->stats_busy = BFA_TRUE;
|
iocfc->stats_busy = BFA_TRUE;
|
||||||
iocfc->stats_ret = stats;
|
iocfc->stats_ret = stats;
|
||||||
iocfc->stats_cbfn = cbfn;
|
iocfc->stats_cbfn = cbfn;
|
||||||
|
@ -821,6 +826,11 @@ bfa_iocfc_clear_stats(struct bfa_s *bfa, bfa_cb_ioc_t cbfn, void *cbarg)
|
||||||
return BFA_STATUS_DEVBUSY;
|
return BFA_STATUS_DEVBUSY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!bfa_iocfc_is_operational(bfa)) {
|
||||||
|
bfa_trc(bfa, 0);
|
||||||
|
return BFA_STATUS_IOC_NON_OP;
|
||||||
|
}
|
||||||
|
|
||||||
iocfc->stats_busy = BFA_TRUE;
|
iocfc->stats_busy = BFA_TRUE;
|
||||||
iocfc->stats_cbfn = cbfn;
|
iocfc->stats_cbfn = cbfn;
|
||||||
iocfc->stats_cbarg = cbarg;
|
iocfc->stats_cbarg = cbarg;
|
||||||
|
|
Loading…
Reference in New Issue