diff options
| -rwxr-xr-x | drivers/scsi/lpfc/lpfc_hbadisc.c | 14 | ||||
| -rwxr-xr-x[-rw-r--r--] | drivers/scsi/lpfc/lpfc_hw4.h | 1 | ||||
| -rw-r--r-- | drivers/scsi/lpfc/lpfc_init.c | 3 | ||||
| -rw-r--r-- | drivers/scsi/lpfc/lpfc_sli.c | 27 | ||||
| -rw-r--r-- | drivers/scsi/lpfc/lpfc_sli4.h | 2 |
5 files changed, 30 insertions, 17 deletions
diff --git a/drivers/scsi/lpfc/lpfc_hbadisc.c b/drivers/scsi/lpfc/lpfc_hbadisc.c index 401167de4ff0..f40b9609f6e4 100755 --- a/drivers/scsi/lpfc/lpfc_hbadisc.c +++ b/drivers/scsi/lpfc/lpfc_hbadisc.c | |||
| @@ -1555,10 +1555,16 @@ lpfc_mbx_cmpl_read_fcf_record(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq) | |||
| 1555 | * to book keeping the FCFIs can be used. | 1555 | * to book keeping the FCFIs can be used. |
| 1556 | */ | 1556 | */ |
| 1557 | if (shdr_status || shdr_add_status) { | 1557 | if (shdr_status || shdr_add_status) { |
| 1558 | lpfc_printf_log(phba, KERN_ERR, LOG_INIT, | 1558 | if (shdr_status == STATUS_FCF_TABLE_EMPTY) { |
| 1559 | "2521 READ_FCF_RECORD mailbox failed " | 1559 | lpfc_printf_log(phba, KERN_ERR, LOG_INIT, |
| 1560 | "with status x%x add_status x%x, mbx\n", | 1560 | "2726 READ_FCF_RECORD Indicates empty " |
| 1561 | shdr_status, shdr_add_status); | 1561 | "FCF table.\n"); |
| 1562 | } else { | ||
| 1563 | lpfc_printf_log(phba, KERN_ERR, LOG_INIT, | ||
| 1564 | "2521 READ_FCF_RECORD mailbox failed " | ||
| 1565 | "with status x%x add_status x%x, mbx\n", | ||
| 1566 | shdr_status, shdr_add_status); | ||
| 1567 | } | ||
| 1562 | goto out; | 1568 | goto out; |
| 1563 | } | 1569 | } |
| 1564 | /* Interpreting the returned information of FCF records */ | 1570 | /* Interpreting the returned information of FCF records */ |
diff --git a/drivers/scsi/lpfc/lpfc_hw4.h b/drivers/scsi/lpfc/lpfc_hw4.h index 09c8e362aee3..8a2a1c5935c6 100644..100755 --- a/drivers/scsi/lpfc/lpfc_hw4.h +++ b/drivers/scsi/lpfc/lpfc_hw4.h | |||
| @@ -1371,6 +1371,7 @@ struct lpfc_mbx_query_fw_cfg { | |||
| 1371 | #define STATUS_ERROR_ACITMAIN 0x2a | 1371 | #define STATUS_ERROR_ACITMAIN 0x2a |
| 1372 | #define STATUS_REBOOT_REQUIRED 0x2c | 1372 | #define STATUS_REBOOT_REQUIRED 0x2c |
| 1373 | #define STATUS_FCF_IN_USE 0x3a | 1373 | #define STATUS_FCF_IN_USE 0x3a |
| 1374 | #define STATUS_FCF_TABLE_EMPTY 0x43 | ||
| 1374 | 1375 | ||
| 1375 | struct lpfc_mbx_sli4_config { | 1376 | struct lpfc_mbx_sli4_config { |
| 1376 | struct mbox_header header; | 1377 | struct mbox_header header; |
diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c index d4da6bdd0e73..7083ef3b3878 100644 --- a/drivers/scsi/lpfc/lpfc_init.c +++ b/drivers/scsi/lpfc/lpfc_init.c | |||
| @@ -7507,6 +7507,9 @@ lpfc_pci_probe_one_s4(struct pci_dev *pdev, const struct pci_device_id *pid) | |||
| 7507 | error = -ENODEV; | 7507 | error = -ENODEV; |
| 7508 | goto out_free_sysfs_attr; | 7508 | goto out_free_sysfs_attr; |
| 7509 | } | 7509 | } |
| 7510 | /* Default to single FCP EQ for non-MSI-X */ | ||
| 7511 | if (phba->intr_type != MSIX) | ||
| 7512 | phba->cfg_fcp_eq_count = 1; | ||
| 7510 | /* Set up SLI-4 HBA */ | 7513 | /* Set up SLI-4 HBA */ |
| 7511 | if (lpfc_sli4_hba_setup(phba)) { | 7514 | if (lpfc_sli4_hba_setup(phba)) { |
| 7512 | lpfc_printf_log(phba, KERN_ERR, LOG_INIT, | 7515 | lpfc_printf_log(phba, KERN_ERR, LOG_INIT, |
diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c index 50f72bf18256..589549b2bf0e 100644 --- a/drivers/scsi/lpfc/lpfc_sli.c +++ b/drivers/scsi/lpfc/lpfc_sli.c | |||
| @@ -1383,7 +1383,7 @@ lpfc_sli_hbq_to_firmware_s4(struct lpfc_hba *phba, uint32_t hbqno, | |||
| 1383 | /* HBQ for ELS and CT traffic. */ | 1383 | /* HBQ for ELS and CT traffic. */ |
| 1384 | static struct lpfc_hbq_init lpfc_els_hbq = { | 1384 | static struct lpfc_hbq_init lpfc_els_hbq = { |
| 1385 | .rn = 1, | 1385 | .rn = 1, |
| 1386 | .entry_count = 200, | 1386 | .entry_count = 256, |
| 1387 | .mask_count = 0, | 1387 | .mask_count = 0, |
| 1388 | .profile = 0, | 1388 | .profile = 0, |
| 1389 | .ring_mask = (1 << LPFC_ELS_RING), | 1389 | .ring_mask = (1 << LPFC_ELS_RING), |
| @@ -1482,8 +1482,11 @@ err: | |||
| 1482 | int | 1482 | int |
| 1483 | lpfc_sli_hbqbuf_add_hbqs(struct lpfc_hba *phba, uint32_t qno) | 1483 | lpfc_sli_hbqbuf_add_hbqs(struct lpfc_hba *phba, uint32_t qno) |
| 1484 | { | 1484 | { |
| 1485 | return(lpfc_sli_hbqbuf_fill_hbqs(phba, qno, | 1485 | if (phba->sli_rev == LPFC_SLI_REV4) |
| 1486 | lpfc_hbq_defs[qno]->add_count)); | 1486 | return 0; |
| 1487 | else | ||
| 1488 | return lpfc_sli_hbqbuf_fill_hbqs(phba, qno, | ||
| 1489 | lpfc_hbq_defs[qno]->add_count); | ||
| 1487 | } | 1490 | } |
| 1488 | 1491 | ||
| 1489 | /** | 1492 | /** |
| @@ -1498,8 +1501,12 @@ lpfc_sli_hbqbuf_add_hbqs(struct lpfc_hba *phba, uint32_t qno) | |||
| 1498 | static int | 1501 | static int |
| 1499 | lpfc_sli_hbqbuf_init_hbqs(struct lpfc_hba *phba, uint32_t qno) | 1502 | lpfc_sli_hbqbuf_init_hbqs(struct lpfc_hba *phba, uint32_t qno) |
| 1500 | { | 1503 | { |
| 1501 | return(lpfc_sli_hbqbuf_fill_hbqs(phba, qno, | 1504 | if (phba->sli_rev == LPFC_SLI_REV4) |
| 1502 | lpfc_hbq_defs[qno]->init_count)); | 1505 | return lpfc_sli_hbqbuf_fill_hbqs(phba, qno, |
| 1506 | lpfc_hbq_defs[qno]->entry_count); | ||
| 1507 | else | ||
| 1508 | return lpfc_sli_hbqbuf_fill_hbqs(phba, qno, | ||
| 1509 | lpfc_hbq_defs[qno]->init_count); | ||
| 1503 | } | 1510 | } |
| 1504 | 1511 | ||
| 1505 | /** | 1512 | /** |
| @@ -4110,6 +4117,7 @@ lpfc_sli4_read_rev(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq, | |||
| 4110 | if (rc) { | 4117 | if (rc) { |
| 4111 | dma_free_coherent(&phba->pcidev->dev, dma_size, | 4118 | dma_free_coherent(&phba->pcidev->dev, dma_size, |
| 4112 | dmabuf->virt, dmabuf->phys); | 4119 | dmabuf->virt, dmabuf->phys); |
| 4120 | kfree(dmabuf); | ||
| 4113 | return -EIO; | 4121 | return -EIO; |
| 4114 | } | 4122 | } |
| 4115 | 4123 | ||
| @@ -11409,14 +11417,9 @@ lpfc_sli4_handle_received_buffer(struct lpfc_hba *phba, | |||
| 11409 | return; | 11417 | return; |
| 11410 | } | 11418 | } |
| 11411 | /* If not last frame in sequence continue processing frames. */ | 11419 | /* If not last frame in sequence continue processing frames. */ |
| 11412 | if (!lpfc_seq_complete(seq_dmabuf)) { | 11420 | if (!lpfc_seq_complete(seq_dmabuf)) |
| 11413 | /* | ||
| 11414 | * When saving off frames post a new one and mark this | ||
| 11415 | * frame to be freed when it is finished. | ||
| 11416 | **/ | ||
| 11417 | lpfc_sli_hbqbuf_fill_hbqs(phba, LPFC_ELS_HBQ, 1); | ||
| 11418 | return; | 11421 | return; |
| 11419 | } | 11422 | |
| 11420 | /* Send the complete sequence to the upper layer protocol */ | 11423 | /* Send the complete sequence to the upper layer protocol */ |
| 11421 | lpfc_sli4_send_seq_to_ulp(vport, seq_dmabuf); | 11424 | lpfc_sli4_send_seq_to_ulp(vport, seq_dmabuf); |
| 11422 | } | 11425 | } |
diff --git a/drivers/scsi/lpfc/lpfc_sli4.h b/drivers/scsi/lpfc/lpfc_sli4.h index 25d66d070cf8..44e5f574236b 100644 --- a/drivers/scsi/lpfc/lpfc_sli4.h +++ b/drivers/scsi/lpfc/lpfc_sli4.h | |||
| @@ -28,7 +28,7 @@ | |||
| 28 | /* Multi-queue arrangement for fast-path FCP work queues */ | 28 | /* Multi-queue arrangement for fast-path FCP work queues */ |
| 29 | #define LPFC_FN_EQN_MAX 8 | 29 | #define LPFC_FN_EQN_MAX 8 |
| 30 | #define LPFC_SP_EQN_DEF 1 | 30 | #define LPFC_SP_EQN_DEF 1 |
| 31 | #define LPFC_FP_EQN_DEF 1 | 31 | #define LPFC_FP_EQN_DEF 4 |
| 32 | #define LPFC_FP_EQN_MIN 1 | 32 | #define LPFC_FP_EQN_MIN 1 |
| 33 | #define LPFC_FP_EQN_MAX (LPFC_FN_EQN_MAX - LPFC_SP_EQN_DEF) | 33 | #define LPFC_FP_EQN_MAX (LPFC_FN_EQN_MAX - LPFC_SP_EQN_DEF) |
| 34 | 34 | ||
