|
@@ -5850,6 +5850,8 @@ lpfc_sli4_driver_resource_setup(struct lpfc_hba *phba)
|
|
int fof_vectors = 0;
|
|
int fof_vectors = 0;
|
|
int extra;
|
|
int extra;
|
|
uint64_t wwn;
|
|
uint64_t wwn;
|
|
|
|
+ u32 if_type;
|
|
|
|
+ u32 if_fam;
|
|
|
|
|
|
phba->sli4_hba.num_online_cpu = num_online_cpus();
|
|
phba->sli4_hba.num_online_cpu = num_online_cpus();
|
|
phba->sli4_hba.num_present_cpu = lpfc_present_cpu;
|
|
phba->sli4_hba.num_present_cpu = lpfc_present_cpu;
|
|
@@ -6171,15 +6173,28 @@ lpfc_sli4_driver_resource_setup(struct lpfc_hba *phba)
|
|
*/
|
|
*/
|
|
rc = lpfc_get_sli4_parameters(phba, mboxq);
|
|
rc = lpfc_get_sli4_parameters(phba, mboxq);
|
|
if (rc) {
|
|
if (rc) {
|
|
|
|
+ if_type = bf_get(lpfc_sli_intf_if_type,
|
|
|
|
+ &phba->sli4_hba.sli_intf);
|
|
|
|
+ if_fam = bf_get(lpfc_sli_intf_sli_family,
|
|
|
|
+ &phba->sli4_hba.sli_intf);
|
|
if (phba->sli4_hba.extents_in_use &&
|
|
if (phba->sli4_hba.extents_in_use &&
|
|
phba->sli4_hba.rpi_hdrs_in_use) {
|
|
phba->sli4_hba.rpi_hdrs_in_use) {
|
|
lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
|
|
lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
|
|
"2999 Unsupported SLI4 Parameters "
|
|
"2999 Unsupported SLI4 Parameters "
|
|
"Extents and RPI headers enabled.\n");
|
|
"Extents and RPI headers enabled.\n");
|
|
|
|
+ if (if_type == LPFC_SLI_INTF_IF_TYPE_0 &&
|
|
|
|
+ if_fam == LPFC_SLI_INTF_FAMILY_BE2) {
|
|
|
|
+ mempool_free(mboxq, phba->mbox_mem_pool);
|
|
|
|
+ rc = -EIO;
|
|
|
|
+ goto out_free_bsmbx;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (!(if_type == LPFC_SLI_INTF_IF_TYPE_0 &&
|
|
|
|
+ if_fam == LPFC_SLI_INTF_FAMILY_BE2)) {
|
|
|
|
+ mempool_free(mboxq, phba->mbox_mem_pool);
|
|
|
|
+ rc = -EIO;
|
|
|
|
+ goto out_free_bsmbx;
|
|
}
|
|
}
|
|
- mempool_free(mboxq, phba->mbox_mem_pool);
|
|
|
|
- rc = -EIO;
|
|
|
|
- goto out_free_bsmbx;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
mempool_free(mboxq, phba->mbox_mem_pool);
|
|
mempool_free(mboxq, phba->mbox_mem_pool);
|