|
@@ -2200,10 +2200,13 @@ lpfc_sli_handle_mb_event(struct lpfc_hba *phba)
|
|
|
/* Unknown mailbox command compl */
|
|
|
lpfc_printf_log(phba, KERN_ERR, LOG_MBOX | LOG_SLI,
|
|
|
"(%d):0323 Unknown Mailbox command "
|
|
|
- "x%x (x%x) Cmpl\n",
|
|
|
+ "x%x (x%x/x%x) Cmpl\n",
|
|
|
pmb->vport ? pmb->vport->vpi : 0,
|
|
|
pmbox->mbxCommand,
|
|
|
- lpfc_sli4_mbox_opcode_get(phba, pmb));
|
|
|
+ lpfc_sli_config_mbox_subsys_get(phba,
|
|
|
+ pmb),
|
|
|
+ lpfc_sli_config_mbox_opcode_get(phba,
|
|
|
+ pmb));
|
|
|
phba->link_state = LPFC_HBA_ERROR;
|
|
|
phba->work_hs = HS_FFER3;
|
|
|
lpfc_handle_eratt(phba);
|
|
@@ -2215,17 +2218,19 @@ lpfc_sli_handle_mb_event(struct lpfc_hba *phba)
|
|
|
if (pmbox->mbxStatus == MBXERR_NO_RESOURCES) {
|
|
|
/* Mbox cmd cmpl error - RETRYing */
|
|
|
lpfc_printf_log(phba, KERN_INFO,
|
|
|
- LOG_MBOX | LOG_SLI,
|
|
|
- "(%d):0305 Mbox cmd cmpl "
|
|
|
- "error - RETRYing Data: x%x "
|
|
|
- "(x%x) x%x x%x x%x\n",
|
|
|
- pmb->vport ? pmb->vport->vpi :0,
|
|
|
- pmbox->mbxCommand,
|
|
|
- lpfc_sli4_mbox_opcode_get(phba,
|
|
|
- pmb),
|
|
|
- pmbox->mbxStatus,
|
|
|
- pmbox->un.varWords[0],
|
|
|
- pmb->vport->port_state);
|
|
|
+ LOG_MBOX | LOG_SLI,
|
|
|
+ "(%d):0305 Mbox cmd cmpl "
|
|
|
+ "error - RETRYing Data: x%x "
|
|
|
+ "(x%x/x%x) x%x x%x x%x\n",
|
|
|
+ pmb->vport ? pmb->vport->vpi : 0,
|
|
|
+ pmbox->mbxCommand,
|
|
|
+ lpfc_sli_config_mbox_subsys_get(phba,
|
|
|
+ pmb),
|
|
|
+ lpfc_sli_config_mbox_opcode_get(phba,
|
|
|
+ pmb),
|
|
|
+ pmbox->mbxStatus,
|
|
|
+ pmbox->un.varWords[0],
|
|
|
+ pmb->vport->port_state);
|
|
|
pmbox->mbxStatus = 0;
|
|
|
pmbox->mbxOwner = OWN_HOST;
|
|
|
rc = lpfc_sli_issue_mbox(phba, pmb, MBX_NOWAIT);
|
|
@@ -2236,11 +2241,12 @@ lpfc_sli_handle_mb_event(struct lpfc_hba *phba)
|
|
|
|
|
|
/* Mailbox cmd <cmd> Cmpl <cmpl> */
|
|
|
lpfc_printf_log(phba, KERN_INFO, LOG_MBOX | LOG_SLI,
|
|
|
- "(%d):0307 Mailbox cmd x%x (x%x) Cmpl x%p "
|
|
|
+ "(%d):0307 Mailbox cmd x%x (x%x/x%x) Cmpl x%p "
|
|
|
"Data: x%x x%x x%x x%x x%x x%x x%x x%x x%x\n",
|
|
|
pmb->vport ? pmb->vport->vpi : 0,
|
|
|
pmbox->mbxCommand,
|
|
|
- lpfc_sli4_mbox_opcode_get(phba, pmb),
|
|
|
+ lpfc_sli_config_mbox_subsys_get(phba, pmb),
|
|
|
+ lpfc_sli_config_mbox_opcode_get(phba, pmb),
|
|
|
pmb->mbox_cmpl,
|
|
|
*((uint32_t *) pmbox),
|
|
|
pmbox->un.varWords[0],
|
|
@@ -4754,7 +4760,7 @@ lpfc_sli4_get_avail_extnt_rsrc(struct lpfc_hba *phba, uint16_t type,
|
|
|
if (!phba->sli4_hba.intr_enable)
|
|
|
rc = lpfc_sli_issue_mbox(phba, mbox, MBX_POLL);
|
|
|
else {
|
|
|
- mbox_tmo = lpfc_mbox_tmo_val(phba, MBX_SLI4_CONFIG);
|
|
|
+ mbox_tmo = lpfc_mbox_tmo_val(phba, mbox);
|
|
|
rc = lpfc_sli_issue_mbox_wait(phba, mbox, mbox_tmo);
|
|
|
}
|
|
|
if (unlikely(rc)) {
|
|
@@ -4911,7 +4917,7 @@ lpfc_sli4_cfg_post_extnts(struct lpfc_hba *phba, uint16_t *extnt_cnt,
|
|
|
if (!phba->sli4_hba.intr_enable)
|
|
|
rc = lpfc_sli_issue_mbox(phba, mbox, MBX_POLL);
|
|
|
else {
|
|
|
- mbox_tmo = lpfc_mbox_tmo_val(phba, MBX_SLI4_CONFIG);
|
|
|
+ mbox_tmo = lpfc_mbox_tmo_val(phba, mbox);
|
|
|
rc = lpfc_sli_issue_mbox_wait(phba, mbox, mbox_tmo);
|
|
|
}
|
|
|
|
|
@@ -5194,7 +5200,7 @@ lpfc_sli4_dealloc_extent(struct lpfc_hba *phba, uint16_t type)
|
|
|
if (!phba->sli4_hba.intr_enable)
|
|
|
rc = lpfc_sli_issue_mbox(phba, mbox, MBX_POLL);
|
|
|
else {
|
|
|
- mbox_tmo = lpfc_mbox_tmo_val(phba, mbox_tmo);
|
|
|
+ mbox_tmo = lpfc_mbox_tmo_val(phba, mbox);
|
|
|
rc = lpfc_sli_issue_mbox_wait(phba, mbox, mbox_tmo);
|
|
|
}
|
|
|
if (unlikely(rc)) {
|
|
@@ -5619,7 +5625,7 @@ lpfc_sli4_get_allocated_extnts(struct lpfc_hba *phba, uint16_t type,
|
|
|
if (!phba->sli4_hba.intr_enable)
|
|
|
rc = lpfc_sli_issue_mbox(phba, mbox, MBX_POLL);
|
|
|
else {
|
|
|
- mbox_tmo = lpfc_mbox_tmo_val(phba, MBX_SLI4_CONFIG);
|
|
|
+ mbox_tmo = lpfc_mbox_tmo_val(phba, mbox);
|
|
|
rc = lpfc_sli_issue_mbox_wait(phba, mbox, mbox_tmo);
|
|
|
}
|
|
|
|
|
@@ -6322,7 +6328,7 @@ lpfc_sli_issue_mbox_s3(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmbox,
|
|
|
}
|
|
|
/* timeout active mbox command */
|
|
|
mod_timer(&psli->mbox_tmo, (jiffies +
|
|
|
- (HZ * lpfc_mbox_tmo_val(phba, mb->mbxCommand))));
|
|
|
+ (HZ * lpfc_mbox_tmo_val(phba, pmbox))));
|
|
|
}
|
|
|
|
|
|
/* Mailbox cmd <cmd> issue */
|
|
@@ -6446,9 +6452,8 @@ lpfc_sli_issue_mbox_s3(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmbox,
|
|
|
drvr_flag);
|
|
|
goto out_not_finished;
|
|
|
}
|
|
|
- timeout = msecs_to_jiffies(lpfc_mbox_tmo_val(phba,
|
|
|
- mb->mbxCommand) *
|
|
|
- 1000) + jiffies;
|
|
|
+ timeout = msecs_to_jiffies(lpfc_mbox_tmo_val(phba, pmbox) *
|
|
|
+ 1000) + jiffies;
|
|
|
i = 0;
|
|
|
/* Wait for command to complete */
|
|
|
while (((word0 & OWN_CHIP) == OWN_CHIP) ||
|
|
@@ -6559,21 +6564,21 @@ static int
|
|
|
lpfc_sli4_async_mbox_block(struct lpfc_hba *phba)
|
|
|
{
|
|
|
struct lpfc_sli *psli = &phba->sli;
|
|
|
- uint8_t actcmd = MBX_HEARTBEAT;
|
|
|
int rc = 0;
|
|
|
- unsigned long timeout;
|
|
|
+ unsigned long timeout = 0;
|
|
|
|
|
|
/* Mark the asynchronous mailbox command posting as blocked */
|
|
|
spin_lock_irq(&phba->hbalock);
|
|
|
psli->sli_flag |= LPFC_SLI_ASYNC_MBX_BLK;
|
|
|
- if (phba->sli.mbox_active)
|
|
|
- actcmd = phba->sli.mbox_active->u.mb.mbxCommand;
|
|
|
- spin_unlock_irq(&phba->hbalock);
|
|
|
/* Determine how long we might wait for the active mailbox
|
|
|
* command to be gracefully completed by firmware.
|
|
|
*/
|
|
|
- timeout = msecs_to_jiffies(lpfc_mbox_tmo_val(phba, actcmd) * 1000) +
|
|
|
- jiffies;
|
|
|
+ if (phba->sli.mbox_active)
|
|
|
+ timeout = msecs_to_jiffies(lpfc_mbox_tmo_val(phba,
|
|
|
+ phba->sli.mbox_active) *
|
|
|
+ 1000) + jiffies;
|
|
|
+ spin_unlock_irq(&phba->hbalock);
|
|
|
+
|
|
|
/* Wait for the outstnading mailbox command to complete */
|
|
|
while (phba->sli.mbox_active) {
|
|
|
/* Check active mailbox complete status every 2ms */
|
|
@@ -6668,11 +6673,12 @@ lpfc_sli4_post_sync_mbox(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq)
|
|
|
if (psli->sli_flag & LPFC_SLI_MBOX_ACTIVE) {
|
|
|
spin_unlock_irqrestore(&phba->hbalock, iflag);
|
|
|
lpfc_printf_log(phba, KERN_ERR, LOG_MBOX | LOG_SLI,
|
|
|
- "(%d):2532 Mailbox command x%x (x%x) "
|
|
|
+ "(%d):2532 Mailbox command x%x (x%x/x%x) "
|
|
|
"cannot issue Data: x%x x%x\n",
|
|
|
mboxq->vport ? mboxq->vport->vpi : 0,
|
|
|
mboxq->u.mb.mbxCommand,
|
|
|
- lpfc_sli4_mbox_opcode_get(phba, mboxq),
|
|
|
+ lpfc_sli_config_mbox_subsys_get(phba, mboxq),
|
|
|
+ lpfc_sli_config_mbox_opcode_get(phba, mboxq),
|
|
|
psli->sli_flag, MBX_POLL);
|
|
|
return MBXERR_ERROR;
|
|
|
}
|
|
@@ -6695,7 +6701,7 @@ lpfc_sli4_post_sync_mbox(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq)
|
|
|
dma_address = &phba->sli4_hba.bmbx.dma_address;
|
|
|
writel(dma_address->addr_hi, phba->sli4_hba.BMBXregaddr);
|
|
|
|
|
|
- timeout = msecs_to_jiffies(lpfc_mbox_tmo_val(phba, mbx_cmnd)
|
|
|
+ timeout = msecs_to_jiffies(lpfc_mbox_tmo_val(phba, mboxq)
|
|
|
* 1000) + jiffies;
|
|
|
do {
|
|
|
bmbx_reg.word0 = readl(phba->sli4_hba.BMBXregaddr);
|
|
@@ -6711,7 +6717,7 @@ lpfc_sli4_post_sync_mbox(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq)
|
|
|
|
|
|
/* Post the low mailbox dma address to the port. */
|
|
|
writel(dma_address->addr_lo, phba->sli4_hba.BMBXregaddr);
|
|
|
- timeout = msecs_to_jiffies(lpfc_mbox_tmo_val(phba, mbx_cmnd)
|
|
|
+ timeout = msecs_to_jiffies(lpfc_mbox_tmo_val(phba, mboxq)
|
|
|
* 1000) + jiffies;
|
|
|
do {
|
|
|
bmbx_reg.word0 = readl(phba->sli4_hba.BMBXregaddr);
|
|
@@ -6750,11 +6756,12 @@ lpfc_sli4_post_sync_mbox(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq)
|
|
|
lpfc_sli4_swap_str(phba, mboxq);
|
|
|
|
|
|
lpfc_printf_log(phba, KERN_INFO, LOG_MBOX | LOG_SLI,
|
|
|
- "(%d):0356 Mailbox cmd x%x (x%x) Status x%x "
|
|
|
+ "(%d):0356 Mailbox cmd x%x (x%x/x%x) Status x%x "
|
|
|
"Data: x%x x%x x%x x%x x%x x%x x%x x%x x%x x%x x%x"
|
|
|
" x%x x%x CQ: x%x x%x x%x x%x\n",
|
|
|
- mboxq->vport ? mboxq->vport->vpi : 0,
|
|
|
- mbx_cmnd, lpfc_sli4_mbox_opcode_get(phba, mboxq),
|
|
|
+ mboxq->vport ? mboxq->vport->vpi : 0, mbx_cmnd,
|
|
|
+ lpfc_sli_config_mbox_subsys_get(phba, mboxq),
|
|
|
+ lpfc_sli_config_mbox_opcode_get(phba, mboxq),
|
|
|
bf_get(lpfc_mqe_status, mb),
|
|
|
mb->un.mb_words[0], mb->un.mb_words[1],
|
|
|
mb->un.mb_words[2], mb->un.mb_words[3],
|
|
@@ -6800,11 +6807,12 @@ lpfc_sli_issue_mbox_s4(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq,
|
|
|
rc = lpfc_mbox_dev_check(phba);
|
|
|
if (unlikely(rc)) {
|
|
|
lpfc_printf_log(phba, KERN_ERR, LOG_MBOX | LOG_SLI,
|
|
|
- "(%d):2544 Mailbox command x%x (x%x) "
|
|
|
+ "(%d):2544 Mailbox command x%x (x%x/x%x) "
|
|
|
"cannot issue Data: x%x x%x\n",
|
|
|
mboxq->vport ? mboxq->vport->vpi : 0,
|
|
|
mboxq->u.mb.mbxCommand,
|
|
|
- lpfc_sli4_mbox_opcode_get(phba, mboxq),
|
|
|
+ lpfc_sli_config_mbox_subsys_get(phba, mboxq),
|
|
|
+ lpfc_sli_config_mbox_opcode_get(phba, mboxq),
|
|
|
psli->sli_flag, flag);
|
|
|
goto out_not_finished;
|
|
|
}
|
|
@@ -6818,20 +6826,25 @@ lpfc_sli_issue_mbox_s4(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq,
|
|
|
if (rc != MBX_SUCCESS)
|
|
|
lpfc_printf_log(phba, KERN_WARNING, LOG_MBOX | LOG_SLI,
|
|
|
"(%d):2541 Mailbox command x%x "
|
|
|
- "(x%x) cannot issue Data: x%x x%x\n",
|
|
|
+ "(x%x/x%x) cannot issue Data: "
|
|
|
+ "x%x x%x\n",
|
|
|
mboxq->vport ? mboxq->vport->vpi : 0,
|
|
|
mboxq->u.mb.mbxCommand,
|
|
|
- lpfc_sli4_mbox_opcode_get(phba, mboxq),
|
|
|
+ lpfc_sli_config_mbox_subsys_get(phba,
|
|
|
+ mboxq),
|
|
|
+ lpfc_sli_config_mbox_opcode_get(phba,
|
|
|
+ mboxq),
|
|
|
psli->sli_flag, flag);
|
|
|
return rc;
|
|
|
} else if (flag == MBX_POLL) {
|
|
|
lpfc_printf_log(phba, KERN_WARNING, LOG_MBOX | LOG_SLI,
|
|
|
"(%d):2542 Try to issue mailbox command "
|
|
|
- "x%x (x%x) synchronously ahead of async"
|
|
|
+ "x%x (x%x/x%x) synchronously ahead of async"
|
|
|
"mailbox command queue: x%x x%x\n",
|
|
|
mboxq->vport ? mboxq->vport->vpi : 0,
|
|
|
mboxq->u.mb.mbxCommand,
|
|
|
- lpfc_sli4_mbox_opcode_get(phba, mboxq),
|
|
|
+ lpfc_sli_config_mbox_subsys_get(phba, mboxq),
|
|
|
+ lpfc_sli_config_mbox_opcode_get(phba, mboxq),
|
|
|
psli->sli_flag, flag);
|
|
|
/* Try to block the asynchronous mailbox posting */
|
|
|
rc = lpfc_sli4_async_mbox_block(phba);
|
|
@@ -6840,16 +6853,18 @@ lpfc_sli_issue_mbox_s4(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq,
|
|
|
rc = lpfc_sli4_post_sync_mbox(phba, mboxq);
|
|
|
if (rc != MBX_SUCCESS)
|
|
|
lpfc_printf_log(phba, KERN_ERR,
|
|
|
- LOG_MBOX | LOG_SLI,
|
|
|
- "(%d):2597 Mailbox command "
|
|
|
- "x%x (x%x) cannot issue "
|
|
|
- "Data: x%x x%x\n",
|
|
|
- mboxq->vport ?
|
|
|
- mboxq->vport->vpi : 0,
|
|
|
- mboxq->u.mb.mbxCommand,
|
|
|
- lpfc_sli4_mbox_opcode_get(phba,
|
|
|
- mboxq),
|
|
|
- psli->sli_flag, flag);
|
|
|
+ LOG_MBOX | LOG_SLI,
|
|
|
+ "(%d):2597 Mailbox command "
|
|
|
+ "x%x (x%x/x%x) cannot issue "
|
|
|
+ "Data: x%x x%x\n",
|
|
|
+ mboxq->vport ?
|
|
|
+ mboxq->vport->vpi : 0,
|
|
|
+ mboxq->u.mb.mbxCommand,
|
|
|
+ lpfc_sli_config_mbox_subsys_get(phba,
|
|
|
+ mboxq),
|
|
|
+ lpfc_sli_config_mbox_opcode_get(phba,
|
|
|
+ mboxq),
|
|
|
+ psli->sli_flag, flag);
|
|
|
/* Unblock the async mailbox posting afterward */
|
|
|
lpfc_sli4_async_mbox_unblock(phba);
|
|
|
}
|
|
@@ -6860,11 +6875,12 @@ lpfc_sli_issue_mbox_s4(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq,
|
|
|
rc = lpfc_mbox_cmd_check(phba, mboxq);
|
|
|
if (rc) {
|
|
|
lpfc_printf_log(phba, KERN_ERR, LOG_MBOX | LOG_SLI,
|
|
|
- "(%d):2543 Mailbox command x%x (x%x) "
|
|
|
+ "(%d):2543 Mailbox command x%x (x%x/x%x) "
|
|
|
"cannot issue Data: x%x x%x\n",
|
|
|
mboxq->vport ? mboxq->vport->vpi : 0,
|
|
|
mboxq->u.mb.mbxCommand,
|
|
|
- lpfc_sli4_mbox_opcode_get(phba, mboxq),
|
|
|
+ lpfc_sli_config_mbox_subsys_get(phba, mboxq),
|
|
|
+ lpfc_sli_config_mbox_opcode_get(phba, mboxq),
|
|
|
psli->sli_flag, flag);
|
|
|
goto out_not_finished;
|
|
|
}
|
|
@@ -6876,10 +6892,11 @@ lpfc_sli_issue_mbox_s4(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq,
|
|
|
spin_unlock_irqrestore(&phba->hbalock, iflags);
|
|
|
lpfc_printf_log(phba, KERN_INFO, LOG_MBOX | LOG_SLI,
|
|
|
"(%d):0354 Mbox cmd issue - Enqueue Data: "
|
|
|
- "x%x (x%x) x%x x%x x%x\n",
|
|
|
+ "x%x (x%x/x%x) x%x x%x x%x\n",
|
|
|
mboxq->vport ? mboxq->vport->vpi : 0xffffff,
|
|
|
bf_get(lpfc_mqe_command, &mboxq->u.mqe),
|
|
|
- lpfc_sli4_mbox_opcode_get(phba, mboxq),
|
|
|
+ lpfc_sli_config_mbox_subsys_get(phba, mboxq),
|
|
|
+ lpfc_sli_config_mbox_opcode_get(phba, mboxq),
|
|
|
phba->pport->port_state,
|
|
|
psli->sli_flag, MBX_NOWAIT);
|
|
|
/* Wake up worker thread to transport mailbox command from head */
|
|
@@ -6956,13 +6973,14 @@ lpfc_sli4_post_async_mbox(struct lpfc_hba *phba)
|
|
|
|
|
|
/* Start timer for the mbox_tmo and log some mailbox post messages */
|
|
|
mod_timer(&psli->mbox_tmo, (jiffies +
|
|
|
- (HZ * lpfc_mbox_tmo_val(phba, mbx_cmnd))));
|
|
|
+ (HZ * lpfc_mbox_tmo_val(phba, mboxq))));
|
|
|
|
|
|
lpfc_printf_log(phba, KERN_INFO, LOG_MBOX | LOG_SLI,
|
|
|
- "(%d):0355 Mailbox cmd x%x (x%x) issue Data: "
|
|
|
+ "(%d):0355 Mailbox cmd x%x (x%x/x%x) issue Data: "
|
|
|
"x%x x%x\n",
|
|
|
mboxq->vport ? mboxq->vport->vpi : 0, mbx_cmnd,
|
|
|
- lpfc_sli4_mbox_opcode_get(phba, mboxq),
|
|
|
+ lpfc_sli_config_mbox_subsys_get(phba, mboxq),
|
|
|
+ lpfc_sli_config_mbox_opcode_get(phba, mboxq),
|
|
|
phba->pport->port_state, psli->sli_flag);
|
|
|
|
|
|
if (mbx_cmnd != MBX_HEARTBEAT) {
|
|
@@ -6986,11 +7004,12 @@ lpfc_sli4_post_async_mbox(struct lpfc_hba *phba)
|
|
|
rc = lpfc_sli4_mq_put(phba->sli4_hba.mbx_wq, mqe);
|
|
|
if (rc != MBX_SUCCESS) {
|
|
|
lpfc_printf_log(phba, KERN_ERR, LOG_MBOX | LOG_SLI,
|
|
|
- "(%d):2533 Mailbox command x%x (x%x) "
|
|
|
+ "(%d):2533 Mailbox command x%x (x%x/x%x) "
|
|
|
"cannot issue Data: x%x x%x\n",
|
|
|
mboxq->vport ? mboxq->vport->vpi : 0,
|
|
|
mboxq->u.mb.mbxCommand,
|
|
|
- lpfc_sli4_mbox_opcode_get(phba, mboxq),
|
|
|
+ lpfc_sli_config_mbox_subsys_get(phba, mboxq),
|
|
|
+ lpfc_sli_config_mbox_opcode_get(phba, mboxq),
|
|
|
psli->sli_flag, MBX_NOWAIT);
|
|
|
goto out_not_finished;
|
|
|
}
|
|
@@ -9407,23 +9426,24 @@ void
|
|
|
lpfc_sli_mbox_sys_shutdown(struct lpfc_hba *phba)
|
|
|
{
|
|
|
struct lpfc_sli *psli = &phba->sli;
|
|
|
- uint8_t actcmd = MBX_HEARTBEAT;
|
|
|
unsigned long timeout;
|
|
|
|
|
|
+ timeout = msecs_to_jiffies(LPFC_MBOX_TMO * 1000) + jiffies;
|
|
|
spin_lock_irq(&phba->hbalock);
|
|
|
psli->sli_flag |= LPFC_SLI_ASYNC_MBX_BLK;
|
|
|
spin_unlock_irq(&phba->hbalock);
|
|
|
|
|
|
if (psli->sli_flag & LPFC_SLI_ACTIVE) {
|
|
|
spin_lock_irq(&phba->hbalock);
|
|
|
- if (phba->sli.mbox_active)
|
|
|
- actcmd = phba->sli.mbox_active->u.mb.mbxCommand;
|
|
|
- spin_unlock_irq(&phba->hbalock);
|
|
|
/* Determine how long we might wait for the active mailbox
|
|
|
* command to be gracefully completed by firmware.
|
|
|
*/
|
|
|
- timeout = msecs_to_jiffies(lpfc_mbox_tmo_val(phba, actcmd) *
|
|
|
- 1000) + jiffies;
|
|
|
+ if (phba->sli.mbox_active)
|
|
|
+ timeout = msecs_to_jiffies(lpfc_mbox_tmo_val(phba,
|
|
|
+ phba->sli.mbox_active) *
|
|
|
+ 1000) + jiffies;
|
|
|
+ spin_unlock_irq(&phba->hbalock);
|
|
|
+
|
|
|
while (phba->sli.mbox_active) {
|
|
|
/* Check active mailbox complete status every 2ms */
|
|
|
msleep(2);
|
|
@@ -12532,7 +12552,7 @@ lpfc_sli4_post_sgl(struct lpfc_hba *phba,
|
|
|
if (!phba->sli4_hba.intr_enable)
|
|
|
rc = lpfc_sli_issue_mbox(phba, mbox, MBX_POLL);
|
|
|
else {
|
|
|
- mbox_tmo = lpfc_mbox_tmo_val(phba, MBX_SLI4_CONFIG);
|
|
|
+ mbox_tmo = lpfc_mbox_tmo_val(phba, mbox);
|
|
|
rc = lpfc_sli_issue_mbox_wait(phba, mbox, mbox_tmo);
|
|
|
}
|
|
|
/* The IOCTL status is embedded in the mailbox subheader. */
|
|
@@ -12747,7 +12767,7 @@ lpfc_sli4_post_els_sgl_list(struct lpfc_hba *phba)
|
|
|
if (!phba->sli4_hba.intr_enable)
|
|
|
rc = lpfc_sli_issue_mbox(phba, mbox, MBX_POLL);
|
|
|
else {
|
|
|
- mbox_tmo = lpfc_mbox_tmo_val(phba, MBX_SLI4_CONFIG);
|
|
|
+ mbox_tmo = lpfc_mbox_tmo_val(phba, mbox);
|
|
|
rc = lpfc_sli_issue_mbox_wait(phba, mbox, mbox_tmo);
|
|
|
}
|
|
|
shdr = (union lpfc_sli4_cfg_shdr *) &sgl->cfg_shdr;
|
|
@@ -12910,7 +12930,7 @@ lpfc_sli4_post_els_sgl_list_ext(struct lpfc_hba *phba)
|
|
|
if (!phba->sli4_hba.intr_enable)
|
|
|
rc = lpfc_sli_issue_mbox(phba, mbox, MBX_POLL);
|
|
|
else {
|
|
|
- mbox_tmo = lpfc_mbox_tmo_val(phba, MBX_SLI4_CONFIG);
|
|
|
+ mbox_tmo = lpfc_mbox_tmo_val(phba, mbox);
|
|
|
rc = lpfc_sli_issue_mbox_wait(phba, mbox, mbox_tmo);
|
|
|
}
|
|
|
shdr = (union lpfc_sli4_cfg_shdr *) &sgl->cfg_shdr;
|
|
@@ -13034,7 +13054,7 @@ lpfc_sli4_post_scsi_sgl_block(struct lpfc_hba *phba, struct list_head *sblist,
|
|
|
if (!phba->sli4_hba.intr_enable)
|
|
|
rc = lpfc_sli_issue_mbox(phba, mbox, MBX_POLL);
|
|
|
else {
|
|
|
- mbox_tmo = lpfc_mbox_tmo_val(phba, MBX_SLI4_CONFIG);
|
|
|
+ mbox_tmo = lpfc_mbox_tmo_val(phba, mbox);
|
|
|
rc = lpfc_sli_issue_mbox_wait(phba, mbox, mbox_tmo);
|
|
|
}
|
|
|
shdr = (union lpfc_sli4_cfg_shdr *) &sgl->cfg_shdr;
|
|
@@ -13190,7 +13210,7 @@ lpfc_sli4_post_scsi_sgl_blk_ext(struct lpfc_hba *phba, struct list_head *sblist,
|
|
|
if (!phba->sli4_hba.intr_enable)
|
|
|
rc = lpfc_sli_issue_mbox(phba, mbox, MBX_POLL);
|
|
|
else {
|
|
|
- mbox_tmo = lpfc_mbox_tmo_val(phba, MBX_SLI4_CONFIG);
|
|
|
+ mbox_tmo = lpfc_mbox_tmo_val(phba, mbox);
|
|
|
rc = lpfc_sli_issue_mbox_wait(phba, mbox, mbox_tmo);
|
|
|
}
|
|
|
shdr = (union lpfc_sli4_cfg_shdr *) &sgl->cfg_shdr;
|
|
@@ -14356,7 +14376,7 @@ lpfc_sli4_init_vpi(struct lpfc_vport *vport)
|
|
|
if (!mboxq)
|
|
|
return -ENOMEM;
|
|
|
lpfc_init_vpi(phba, mboxq, vport->vpi);
|
|
|
- mbox_tmo = lpfc_mbox_tmo_val(phba, MBX_INIT_VPI);
|
|
|
+ mbox_tmo = lpfc_mbox_tmo_val(phba, mboxq);
|
|
|
rc = lpfc_sli_issue_mbox_wait(phba, mboxq, mbox_tmo);
|
|
|
if (rc != MBX_SUCCESS) {
|
|
|
lpfc_printf_vlog(vport, KERN_ERR, LOG_SLI,
|
|
@@ -15232,7 +15252,7 @@ lpfc_wr_object(struct lpfc_hba *phba, struct list_head *dmabuf_list,
|
|
|
if (!phba->sli4_hba.intr_enable)
|
|
|
rc = lpfc_sli_issue_mbox(phba, mbox, MBX_POLL);
|
|
|
else {
|
|
|
- mbox_tmo = lpfc_mbox_tmo_val(phba, MBX_SLI4_CONFIG);
|
|
|
+ mbox_tmo = lpfc_mbox_tmo_val(phba, mbox);
|
|
|
rc = lpfc_sli_issue_mbox_wait(phba, mbox, mbox_tmo);
|
|
|
}
|
|
|
/* The IOCTL status is embedded in the mailbox subheader. */
|