Merge patch series "Update lpfc to revision 14.4.0.14"
Justin Tee <justintee8345@gmail.com> says: Update lpfc to revision 14.4.0.14 This patch set contains updates to log messaging, trivial typecast and pointer changes, bug fixes related to kref accounting and cleanup handling, an update to a WQE submission bitfield, and restriction of first burst to specific HBAs only. The patches were cut against Martin's 6.20/scsi-queue tree. Link: https://patch.msgid.link/20260212213008.149873-1-justintee8345@gmail.com Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>master
commit
2a433bf17c
|
|
@ -1,7 +1,7 @@
|
|||
/*******************************************************************
|
||||
* This file is part of the Emulex Linux Device Driver for *
|
||||
* Fibre Channel Host Bus Adapters. *
|
||||
* Copyright (C) 2017-2024 Broadcom. All Rights Reserved. The term *
|
||||
* Copyright (C) 2017-2026 Broadcom. All Rights Reserved. The term *
|
||||
* “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. *
|
||||
* Copyright (C) 2004-2016 Emulex. All rights reserved. *
|
||||
* EMULEX and SLI are trademarks of Emulex. *
|
||||
|
|
@ -660,6 +660,7 @@ void lpfc_wqe_cmd_template(void);
|
|||
void lpfc_nvmet_cmd_template(void);
|
||||
void lpfc_nvme_cancel_iocb(struct lpfc_hba *phba, struct lpfc_iocbq *pwqeIn,
|
||||
uint32_t stat, uint32_t param);
|
||||
void lpfc_nvme_flush_abts_list(struct lpfc_hba *phba);
|
||||
void lpfc_nvmels_flush_cmd(struct lpfc_hba *phba);
|
||||
extern int lpfc_enable_nvmet_cnt;
|
||||
extern unsigned long long lpfc_enable_nvmet[];
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*******************************************************************
|
||||
* This file is part of the Emulex Linux Device Driver for *
|
||||
* Fibre Channel Host Bus Adapters. *
|
||||
* Copyright (C) 2017-2025 Broadcom. All Rights Reserved. The term *
|
||||
* Copyright (C) 2017-2026 Broadcom. All Rights Reserved. The term *
|
||||
* “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. *
|
||||
* Copyright (C) 2004-2016 Emulex. All rights reserved. *
|
||||
* EMULEX and SLI are trademarks of Emulex. *
|
||||
|
|
@ -2427,13 +2427,14 @@ lpfc_cmpl_ct_disc_fdmi(struct lpfc_hba *phba, struct lpfc_iocbq *cmdiocb,
|
|||
|
||||
/* CGN is only for the physical port, no vports */
|
||||
if (lpfc_fdmi_cmd(vport, ndlp, cmd,
|
||||
LPFC_FDMI_VENDOR_ATTR_mi) == 0)
|
||||
LPFC_FDMI_VENDOR_ATTR_mi) == 0) {
|
||||
phba->link_flag |= LS_CT_VEN_RPA;
|
||||
lpfc_printf_log(phba, KERN_INFO,
|
||||
lpfc_printf_log(phba, KERN_INFO,
|
||||
LOG_DISCOVERY | LOG_ELS,
|
||||
"6458 Send MI FDMI:%x Flag x%x\n",
|
||||
phba->sli4_hba.pc_sli4_params.mi_ver,
|
||||
phba->link_flag);
|
||||
}
|
||||
} else {
|
||||
lpfc_printf_log(phba, KERN_INFO,
|
||||
LOG_DISCOVERY | LOG_ELS,
|
||||
|
|
@ -3214,7 +3215,7 @@ lpfc_fdmi_cmd(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
|
|||
struct lpfc_iocbq *rspiocb);
|
||||
|
||||
if (!ndlp)
|
||||
return 0;
|
||||
goto fdmi_cmd_exit;
|
||||
|
||||
cmpl = lpfc_cmpl_ct_disc_fdmi; /* called from discovery */
|
||||
|
||||
|
|
@ -3320,7 +3321,7 @@ hba_out:
|
|||
if (vport->port_type != LPFC_PHYSICAL_PORT) {
|
||||
ndlp = lpfc_findnode_did(phba->pport, FDMI_DID);
|
||||
if (!ndlp)
|
||||
return 0;
|
||||
goto fdmi_cmd_free_rspvirt;
|
||||
}
|
||||
fallthrough;
|
||||
case SLI_MGMT_RPA:
|
||||
|
|
@ -3396,7 +3397,7 @@ port_out:
|
|||
if (vport->port_type != LPFC_PHYSICAL_PORT) {
|
||||
ndlp = lpfc_findnode_did(phba->pport, FDMI_DID);
|
||||
if (!ndlp)
|
||||
return 0;
|
||||
goto fdmi_cmd_free_rspvirt;
|
||||
}
|
||||
fallthrough;
|
||||
case SLI_MGMT_DPA:
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*******************************************************************
|
||||
* This file is part of the Emulex Linux Device Driver for *
|
||||
* Fibre Channel Host Bus Adapters. *
|
||||
* Copyright (C) 2017-2025 Broadcom. All Rights Reserved. The term *
|
||||
* Copyright (C) 2017-2026 Broadcom. All Rights Reserved. The term *
|
||||
* “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. *
|
||||
* Copyright (C) 2004-2013 Emulex. All rights reserved. *
|
||||
* EMULEX and SLI are trademarks of Emulex. *
|
||||
|
|
@ -137,7 +137,8 @@ struct lpfc_nodelist {
|
|||
uint16_t nlp_maxframe; /* Max RCV frame size */
|
||||
uint8_t nlp_class_sup; /* Supported Classes */
|
||||
uint8_t nlp_retry; /* used for ELS retries */
|
||||
uint8_t nlp_fcp_info; /* class info, bits 0-3 */
|
||||
uint8_t nlp_fcp_info; /* class info, bits 0-2 */
|
||||
#define NLP_FCP_CLASS_MASK 0x07 /* class info bitmask */
|
||||
#define NLP_FCP_2_DEVICE 0x10 /* FCP-2 device */
|
||||
u8 nlp_nvme_info; /* NVME NSLER Support */
|
||||
uint8_t vmid_support; /* destination VMID support */
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*******************************************************************
|
||||
* This file is part of the Emulex Linux Device Driver for *
|
||||
* Fibre Channel Host Bus Adapters. *
|
||||
* Copyright (C) 2017-2025 Broadcom. All Rights Reserved. The term *
|
||||
* Copyright (C) 2017-2026 Broadcom. All Rights Reserved. The term *
|
||||
* “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. *
|
||||
* Copyright (C) 2004-2016 Emulex. All rights reserved. *
|
||||
* EMULEX and SLI are trademarks of Emulex. *
|
||||
|
|
@ -1107,7 +1107,7 @@ stop_rr_fcf_flogi:
|
|||
vport->vmid_flag = 0;
|
||||
}
|
||||
if (sp->cmn.priority_tagging)
|
||||
vport->phba->pport->vmid_flag |= (LPFC_VMID_ISSUE_QFPA |
|
||||
vport->vmid_flag |= (LPFC_VMID_ISSUE_QFPA |
|
||||
LPFC_VMID_TYPE_PRIO);
|
||||
|
||||
/*
|
||||
|
|
@ -1303,8 +1303,12 @@ lpfc_issue_els_flogi(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
|
|||
elsiocb = lpfc_prep_els_iocb(vport, 1, cmdsize, retry, ndlp,
|
||||
ndlp->nlp_DID, ELS_CMD_FLOGI);
|
||||
|
||||
if (!elsiocb)
|
||||
if (!elsiocb) {
|
||||
lpfc_vport_set_state(vport, FC_VPORT_FAILED);
|
||||
lpfc_printf_vlog(vport, KERN_WARNING, LOG_ELS | LOG_DISCOVERY,
|
||||
"4296 Unable to prepare FLOGI iocb\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
wqe = &elsiocb->wqe;
|
||||
pcmd = (uint8_t *)elsiocb->cmd_dmabuf->virt;
|
||||
|
|
@ -1394,10 +1398,8 @@ lpfc_issue_els_flogi(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
|
|||
phba->sli3_options, 0, 0);
|
||||
|
||||
elsiocb->ndlp = lpfc_nlp_get(ndlp);
|
||||
if (!elsiocb->ndlp) {
|
||||
lpfc_els_free_iocb(phba, elsiocb);
|
||||
return 1;
|
||||
}
|
||||
if (!elsiocb->ndlp)
|
||||
goto err_out;
|
||||
|
||||
/* Avoid race with FLOGI completion and hba_flags. */
|
||||
set_bit(HBA_FLOGI_ISSUED, &phba->hba_flag);
|
||||
|
|
@ -1407,9 +1409,8 @@ lpfc_issue_els_flogi(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
|
|||
if (rc == IOCB_ERROR) {
|
||||
clear_bit(HBA_FLOGI_ISSUED, &phba->hba_flag);
|
||||
clear_bit(HBA_FLOGI_OUTSTANDING, &phba->hba_flag);
|
||||
lpfc_els_free_iocb(phba, elsiocb);
|
||||
lpfc_nlp_put(ndlp);
|
||||
return 1;
|
||||
goto err_out;
|
||||
}
|
||||
|
||||
/* Clear external loopback plug detected flag */
|
||||
|
|
@ -1474,6 +1475,13 @@ lpfc_issue_els_flogi(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
|
|||
}
|
||||
|
||||
return 0;
|
||||
|
||||
err_out:
|
||||
lpfc_els_free_iocb(phba, elsiocb);
|
||||
lpfc_vport_set_state(vport, FC_VPORT_FAILED);
|
||||
lpfc_printf_vlog(vport, KERN_WARNING, LOG_ELS | LOG_DISCOVERY,
|
||||
"4297 Issue FLOGI: Cannot send IOCB\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -2641,7 +2649,9 @@ lpfc_issue_els_prli(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
|
|||
}
|
||||
npr->estabImagePair = 1;
|
||||
npr->readXferRdyDis = 1;
|
||||
if (vport->cfg_first_burst_size)
|
||||
if (phba->sli_rev == LPFC_SLI_REV4 &&
|
||||
!test_bit(HBA_FCOE_MODE, &phba->hba_flag) &&
|
||||
vport->cfg_first_burst_size)
|
||||
npr->writeXferRdyDis = 1;
|
||||
|
||||
/* For FCP support */
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*******************************************************************
|
||||
* This file is part of the Emulex Linux Device Driver for *
|
||||
* Fibre Channel Host Bus Adapters. *
|
||||
* Copyright (C) 2017-2025 Broadcom. All Rights Reserved. The term *
|
||||
* Copyright (C) 2017-2026 Broadcom. All Rights Reserved. The term *
|
||||
* “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. *
|
||||
* Copyright (C) 2004-2016 Emulex. All rights reserved. *
|
||||
* EMULEX and SLI are trademarks of Emulex. *
|
||||
|
|
@ -425,7 +425,6 @@ lpfc_check_nlp_post_devloss(struct lpfc_vport *vport,
|
|||
{
|
||||
if (test_and_clear_bit(NLP_IN_RECOV_POST_DEV_LOSS, &ndlp->save_flags)) {
|
||||
clear_bit(NLP_DROPPED, &ndlp->nlp_flag);
|
||||
lpfc_nlp_get(ndlp);
|
||||
lpfc_printf_vlog(vport, KERN_INFO, LOG_DISCOVERY | LOG_NODE,
|
||||
"8438 Devloss timeout reversed on DID x%x "
|
||||
"refcnt %d ndlp %p flag x%lx "
|
||||
|
|
@ -3174,7 +3173,11 @@ lpfc_init_vfi_cmpl(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq)
|
|||
return;
|
||||
}
|
||||
|
||||
lpfc_initial_flogi(vport);
|
||||
if (!lpfc_initial_flogi(vport)) {
|
||||
lpfc_printf_vlog(vport, KERN_ERR, LOG_MBOX | LOG_ELS,
|
||||
"2345 Can't issue initial FLOGI\n");
|
||||
lpfc_vport_set_state(vport, FC_VPORT_FAILED);
|
||||
}
|
||||
mempool_free(mboxq, phba->mbox_mem_pool);
|
||||
return;
|
||||
}
|
||||
|
|
@ -3247,8 +3250,14 @@ lpfc_init_vpi_cmpl(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq)
|
|||
return;
|
||||
}
|
||||
|
||||
if (phba->link_flag & LS_NPIV_FAB_SUPPORTED)
|
||||
lpfc_initial_fdisc(vport);
|
||||
if (phba->link_flag & LS_NPIV_FAB_SUPPORTED) {
|
||||
if (!lpfc_initial_fdisc(vport)) {
|
||||
lpfc_printf_vlog(vport, KERN_WARNING,
|
||||
LOG_MBOX | LOG_ELS,
|
||||
"2346 Can't issue initial FDISC\n");
|
||||
lpfc_vport_set_state(vport, FC_VPORT_FAILED);
|
||||
}
|
||||
}
|
||||
else {
|
||||
lpfc_vport_set_state(vport, FC_VPORT_NO_FABRIC_SUPP);
|
||||
lpfc_printf_vlog(vport, KERN_ERR, LOG_TRACE_EVENT,
|
||||
|
|
@ -6599,11 +6608,6 @@ lpfc_nlp_get(struct lpfc_nodelist *ndlp)
|
|||
unsigned long flags;
|
||||
|
||||
if (ndlp) {
|
||||
lpfc_debugfs_disc_trc(ndlp->vport, LPFC_DISC_TRC_NODE,
|
||||
"node get: did:x%x flg:x%lx refcnt:x%x",
|
||||
ndlp->nlp_DID, ndlp->nlp_flag,
|
||||
kref_read(&ndlp->kref));
|
||||
|
||||
/* The check of ndlp usage to prevent incrementing the
|
||||
* ndlp reference count that is in the process of being
|
||||
* released.
|
||||
|
|
@ -6611,9 +6615,8 @@ lpfc_nlp_get(struct lpfc_nodelist *ndlp)
|
|||
spin_lock_irqsave(&ndlp->lock, flags);
|
||||
if (!kref_get_unless_zero(&ndlp->kref)) {
|
||||
spin_unlock_irqrestore(&ndlp->lock, flags);
|
||||
lpfc_printf_vlog(ndlp->vport, KERN_WARNING, LOG_NODE,
|
||||
"0276 %s: ndlp:x%px refcnt:%d\n",
|
||||
__func__, (void *)ndlp, kref_read(&ndlp->kref));
|
||||
pr_info("0276 %s: NDLP x%px has zero reference count. "
|
||||
"Exiting\n", __func__, ndlp);
|
||||
return NULL;
|
||||
}
|
||||
spin_unlock_irqrestore(&ndlp->lock, flags);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*******************************************************************
|
||||
* This file is part of the Emulex Linux Device Driver for *
|
||||
* Fibre Channel Host Bus Adapters. *
|
||||
* Copyright (C) 2017-2025 Broadcom. All Rights Reserved. The term *
|
||||
* Copyright (C) 2017-2026 Broadcom. All Rights Reserved. The term *
|
||||
* “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. *
|
||||
* Copyright (C) 2004-2016 Emulex. All rights reserved. *
|
||||
* EMULEX and SLI are trademarks of Emulex. *
|
||||
|
|
@ -1087,7 +1087,6 @@ lpfc_hba_down_post_s4(struct lpfc_hba *phba)
|
|||
struct lpfc_async_xchg_ctx *ctxp, *ctxp_next;
|
||||
struct lpfc_sli4_hdw_queue *qp;
|
||||
LIST_HEAD(aborts);
|
||||
LIST_HEAD(nvme_aborts);
|
||||
LIST_HEAD(nvmet_aborts);
|
||||
struct lpfc_sglq *sglq_entry = NULL;
|
||||
int cnt, idx;
|
||||
|
|
@ -1946,6 +1945,7 @@ lpfc_sli4_port_sta_fn_reset(struct lpfc_hba *phba, int mbx_action,
|
|||
|
||||
lpfc_offline_prep(phba, mbx_action);
|
||||
lpfc_sli_flush_io_rings(phba);
|
||||
lpfc_nvme_flush_abts_list(phba);
|
||||
lpfc_nvmels_flush_cmd(phba);
|
||||
lpfc_offline(phba);
|
||||
/* release interrupt for possible resource change */
|
||||
|
|
@ -8283,7 +8283,7 @@ lpfc_sli4_driver_resource_setup(struct lpfc_hba *phba)
|
|||
phba->cfg_total_seg_cnt, phba->cfg_scsi_seg_cnt,
|
||||
phba->cfg_nvme_seg_cnt);
|
||||
|
||||
i = min(phba->cfg_sg_dma_buf_size, SLI4_PAGE_SIZE);
|
||||
i = min_t(u32, phba->cfg_sg_dma_buf_size, SLI4_PAGE_SIZE);
|
||||
|
||||
phba->lpfc_sg_dma_buf_pool =
|
||||
dma_pool_create("lpfc_sg_dma_buf_pool",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*******************************************************************
|
||||
* This file is part of the Emulex Linux Device Driver for *
|
||||
* Fibre Channel Host Bus Adapters. *
|
||||
* Copyright (C) 2017-2025 Broadcom. All Rights Reserved. The term *
|
||||
* Copyright (C) 2017-2026 Broadcom. All Rights Reserved. The term *
|
||||
* “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. *
|
||||
* Copyright (C) 2004-2016 Emulex. All rights reserved. *
|
||||
* EMULEX and SLI are trademarks of Emulex. *
|
||||
|
|
@ -2846,6 +2846,54 @@ lpfc_nvme_cancel_iocb(struct lpfc_hba *phba, struct lpfc_iocbq *pwqeIn,
|
|||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* lpfc_nvme_flush_abts_list - Clean up nvme commands from the abts list
|
||||
* @phba: Pointer to HBA context object.
|
||||
*
|
||||
**/
|
||||
void
|
||||
lpfc_nvme_flush_abts_list(struct lpfc_hba *phba)
|
||||
{
|
||||
#if (IS_ENABLED(CONFIG_NVME_FC))
|
||||
struct lpfc_io_buf *psb, *psb_next;
|
||||
struct lpfc_sli4_hdw_queue *qp;
|
||||
LIST_HEAD(aborts);
|
||||
int i;
|
||||
|
||||
/* abts_xxxx_buf_list_lock required because worker thread uses this
|
||||
* list.
|
||||
*/
|
||||
spin_lock_irq(&phba->hbalock);
|
||||
for (i = 0; i < phba->cfg_hdw_queue; i++) {
|
||||
qp = &phba->sli4_hba.hdwq[i];
|
||||
|
||||
spin_lock(&qp->abts_io_buf_list_lock);
|
||||
list_for_each_entry_safe(psb, psb_next,
|
||||
&qp->lpfc_abts_io_buf_list, list) {
|
||||
if (!(psb->cur_iocbq.cmd_flag & LPFC_IO_NVME))
|
||||
continue;
|
||||
list_move(&psb->list, &aborts);
|
||||
qp->abts_nvme_io_bufs--;
|
||||
}
|
||||
spin_unlock(&qp->abts_io_buf_list_lock);
|
||||
}
|
||||
spin_unlock_irq(&phba->hbalock);
|
||||
|
||||
list_for_each_entry_safe(psb, psb_next, &aborts, list) {
|
||||
list_del_init(&psb->list);
|
||||
lpfc_printf_log(phba, KERN_INFO, LOG_NVME_ABTS,
|
||||
"6195 %s: lpfc_ncmd x%px flags x%x "
|
||||
"cmd_flag x%x xri x%x\n", __func__,
|
||||
psb, psb->flags,
|
||||
psb->cur_iocbq.cmd_flag,
|
||||
psb->cur_iocbq.sli4_xritag);
|
||||
psb->flags &= ~LPFC_SBUF_XBUSY;
|
||||
psb->status = IOSTAT_SUCCESS;
|
||||
lpfc_sli4_nvme_pci_offline_aborted(phba, psb);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* lpfc_nvmels_flush_cmd - Clean up outstanding nvmels commands for a port
|
||||
* @phba: Pointer to HBA context object.
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*******************************************************************
|
||||
* This file is part of the Emulex Linux Device Driver for *
|
||||
* Fibre Channel Host Bus Adapters. *
|
||||
* Copyright (C) 2017-2025 Broadcom. All Rights Reserved. The term *
|
||||
* Copyright (C) 2017-2026 Broadcom. All Rights Reserved. The term *
|
||||
* “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. *
|
||||
* Copyright (C) 2004-2016 Emulex. All rights reserved. *
|
||||
* EMULEX and SLI are trademarks of Emulex. *
|
||||
|
|
@ -4665,7 +4665,7 @@ static int lpfc_scsi_prep_cmnd_buf_s3(struct lpfc_vport *vport,
|
|||
else
|
||||
piocbq->iocb.ulpFCP2Rcvy = 0;
|
||||
|
||||
piocbq->iocb.ulpClass = (pnode->nlp_fcp_info & 0x0f);
|
||||
piocbq->iocb.ulpClass = (pnode->nlp_fcp_info & NLP_FCP_CLASS_MASK);
|
||||
piocbq->io_buf = lpfc_cmd;
|
||||
if (!piocbq->cmd_cmpl)
|
||||
piocbq->cmd_cmpl = lpfc_scsi_cmd_iocb_cmpl;
|
||||
|
|
@ -4777,7 +4777,7 @@ static int lpfc_scsi_prep_cmnd_buf_s4(struct lpfc_vport *vport,
|
|||
bf_set(wqe_erp, &wqe->generic.wqe_com, 1);
|
||||
|
||||
bf_set(wqe_class, &wqe->generic.wqe_com,
|
||||
(pnode->nlp_fcp_info & 0x0f));
|
||||
(pnode->nlp_fcp_info & NLP_FCP_CLASS_MASK));
|
||||
|
||||
/* Word 8 */
|
||||
wqe->generic.wqe_com.abort_tag = pwqeq->iotag;
|
||||
|
|
@ -4877,7 +4877,7 @@ lpfc_scsi_prep_task_mgmt_cmd_s3(struct lpfc_vport *vport,
|
|||
piocb->ulpCommand = CMD_FCP_ICMND64_CR;
|
||||
piocb->ulpContext = ndlp->nlp_rpi;
|
||||
piocb->ulpFCP2Rcvy = (ndlp->nlp_fcp_info & NLP_FCP_2_DEVICE) ? 1 : 0;
|
||||
piocb->ulpClass = (ndlp->nlp_fcp_info & 0x0f);
|
||||
piocb->ulpClass = (ndlp->nlp_fcp_info & NLP_FCP_CLASS_MASK);
|
||||
piocb->ulpPU = 0;
|
||||
piocb->un.fcpi.fcpi_parm = 0;
|
||||
|
||||
|
|
@ -4945,7 +4945,7 @@ lpfc_scsi_prep_task_mgmt_cmd_s4(struct lpfc_vport *vport,
|
|||
bf_set(wqe_erp, &wqe->fcp_icmd.wqe_com,
|
||||
((ndlp->nlp_fcp_info & NLP_FCP_2_DEVICE) ? 1 : 0));
|
||||
bf_set(wqe_class, &wqe->fcp_icmd.wqe_com,
|
||||
(ndlp->nlp_fcp_info & 0x0f));
|
||||
(ndlp->nlp_fcp_info & NLP_FCP_CLASS_MASK));
|
||||
|
||||
/* ulpTimeout is only one byte */
|
||||
if (lpfc_cmd->timeout > 0xff) {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*******************************************************************
|
||||
* This file is part of the Emulex Linux Device Driver for *
|
||||
* Fibre Channel Host Bus Adapters. *
|
||||
* Copyright (C) 2017-2025 Broadcom. All Rights Reserved. The term *
|
||||
* Copyright (C) 2017-2026 Broadcom. All Rights Reserved. The term *
|
||||
* “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. *
|
||||
* Copyright (C) 2004-2016 Emulex. All rights reserved. *
|
||||
* EMULEX and SLI are trademarks of Emulex. *
|
||||
|
|
@ -4572,59 +4572,41 @@ void
|
|||
lpfc_sli_abort_iocb_ring(struct lpfc_hba *phba, struct lpfc_sli_ring *pring)
|
||||
{
|
||||
LIST_HEAD(tx_completions);
|
||||
LIST_HEAD(txcmplq_completions);
|
||||
spinlock_t *plock; /* for transmit queue access */
|
||||
struct lpfc_iocbq *iocb, *next_iocb;
|
||||
int offline;
|
||||
|
||||
if (pring->ringno == LPFC_ELS_RING) {
|
||||
if (phba->sli_rev >= LPFC_SLI_REV4)
|
||||
plock = &pring->ring_lock;
|
||||
else
|
||||
plock = &phba->hbalock;
|
||||
|
||||
if (pring->ringno == LPFC_ELS_RING)
|
||||
lpfc_fabric_abort_hba(phba);
|
||||
}
|
||||
|
||||
offline = pci_channel_offline(phba->pcidev);
|
||||
|
||||
/* Error everything on txq and txcmplq
|
||||
* First do the txq.
|
||||
*/
|
||||
if (phba->sli_rev >= LPFC_SLI_REV4) {
|
||||
spin_lock_irq(&pring->ring_lock);
|
||||
list_splice_init(&pring->txq, &tx_completions);
|
||||
pring->txq_cnt = 0;
|
||||
|
||||
if (offline) {
|
||||
list_splice_init(&pring->txcmplq,
|
||||
&txcmplq_completions);
|
||||
} else {
|
||||
/* Next issue ABTS for everything on the txcmplq */
|
||||
list_for_each_entry_safe(iocb, next_iocb,
|
||||
&pring->txcmplq, list)
|
||||
lpfc_sli_issue_abort_iotag(phba, pring,
|
||||
iocb, NULL);
|
||||
}
|
||||
spin_unlock_irq(&pring->ring_lock);
|
||||
} else {
|
||||
spin_lock_irq(&phba->hbalock);
|
||||
list_splice_init(&pring->txq, &tx_completions);
|
||||
pring->txq_cnt = 0;
|
||||
|
||||
if (offline) {
|
||||
list_splice_init(&pring->txcmplq, &txcmplq_completions);
|
||||
} else {
|
||||
/* Next issue ABTS for everything on the txcmplq */
|
||||
list_for_each_entry_safe(iocb, next_iocb,
|
||||
&pring->txcmplq, list)
|
||||
lpfc_sli_issue_abort_iotag(phba, pring,
|
||||
iocb, NULL);
|
||||
}
|
||||
spin_unlock_irq(&phba->hbalock);
|
||||
}
|
||||
/* Cancel everything on txq */
|
||||
spin_lock_irq(plock);
|
||||
list_splice_init(&pring->txq, &tx_completions);
|
||||
pring->txq_cnt = 0;
|
||||
|
||||
if (offline) {
|
||||
/* Cancel all the IOCBs from the completions list */
|
||||
lpfc_sli_cancel_iocbs(phba, &txcmplq_completions,
|
||||
IOSTAT_LOCAL_REJECT, IOERR_SLI_ABORTED);
|
||||
/* Cancel everything on txcmplq */
|
||||
list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, list)
|
||||
iocb->cmd_flag &= ~LPFC_IO_ON_TXCMPLQ;
|
||||
list_splice_init(&pring->txcmplq, &tx_completions);
|
||||
pring->txcmplq_cnt = 0;
|
||||
} else {
|
||||
/* Make sure HBA is alive */
|
||||
lpfc_issue_hb_tmo(phba);
|
||||
/* Issue ABTS for everything on the txcmplq */
|
||||
list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, list)
|
||||
lpfc_sli_issue_abort_iotag(phba, pring, iocb, NULL);
|
||||
}
|
||||
spin_unlock_irq(plock);
|
||||
|
||||
if (!offline)
|
||||
lpfc_issue_hb_tmo(phba);
|
||||
|
||||
/* Cancel all the IOCBs from the completions list */
|
||||
lpfc_sli_cancel_iocbs(phba, &tx_completions, IOSTAT_LOCAL_REJECT,
|
||||
IOERR_SLI_ABORTED);
|
||||
|
|
@ -14736,11 +14718,22 @@ lpfc_sli4_sp_handle_rcqe(struct lpfc_hba *phba, struct lpfc_rcqe *rcqe)
|
|||
atomic_read(&tgtp->rcv_fcp_cmd_out),
|
||||
atomic_read(&tgtp->xmt_fcp_release));
|
||||
}
|
||||
hrq->RQ_discard_frm++;
|
||||
fallthrough;
|
||||
|
||||
case FC_STATUS_INSUFF_BUF_NEED_BUF:
|
||||
/* Unexpected event - bump the counter for support. */
|
||||
hrq->RQ_no_posted_buf++;
|
||||
/* Post more buffers if possible */
|
||||
|
||||
lpfc_log_msg(phba, KERN_WARNING,
|
||||
LOG_ELS | LOG_DISCOVERY | LOG_SLI,
|
||||
"6423 RQE completion Status x%x, needed x%x "
|
||||
"discarded x%x\n", status,
|
||||
hrq->RQ_no_posted_buf - hrq->RQ_discard_frm,
|
||||
hrq->RQ_discard_frm);
|
||||
|
||||
/* For SLI3, post more buffers if possible. No action for SLI4.
|
||||
* SLI4 is reposting immediately after processing the RQE.
|
||||
*/
|
||||
set_bit(HBA_POST_RECEIVE_BUFFER, &phba->hba_flag);
|
||||
workposted = true;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*******************************************************************
|
||||
* This file is part of the Emulex Linux Device Driver for *
|
||||
* Fibre Channel Host Bus Adapters. *
|
||||
* Copyright (C) 2017-2025 Broadcom. All Rights Reserved. The term *
|
||||
* Copyright (C) 2017-2026 Broadcom. All Rights Reserved. The term *
|
||||
* “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. *
|
||||
* Copyright (C) 2009-2016 Emulex. All rights reserved. *
|
||||
* EMULEX and SLI are trademarks of Emulex. *
|
||||
|
|
@ -246,6 +246,8 @@ struct lpfc_queue {
|
|||
uint32_t q_cnt_2;
|
||||
uint32_t q_cnt_3;
|
||||
uint64_t q_cnt_4;
|
||||
uint32_t q_cnt_5;
|
||||
|
||||
/* defines for EQ stats */
|
||||
#define EQ_max_eqe q_cnt_1
|
||||
#define EQ_no_entry q_cnt_2
|
||||
|
|
@ -268,6 +270,7 @@ struct lpfc_queue {
|
|||
#define RQ_no_buf_found q_cnt_2
|
||||
#define RQ_buf_posted q_cnt_3
|
||||
#define RQ_rcv_buf q_cnt_4
|
||||
#define RQ_discard_frm q_cnt_5
|
||||
|
||||
struct work_struct irqwork;
|
||||
struct work_struct spwork;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/*******************************************************************
|
||||
* This file is part of the Emulex Linux Device Driver for *
|
||||
* Fibre Channel Host Bus Adapters. *
|
||||
* Copyright (C) 2017-2025 Broadcom. All Rights Reserved. The term *
|
||||
* Copyright (C) 2017-2026 Broadcom. All Rights Reserved. The term *
|
||||
* “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. *
|
||||
* Copyright (C) 2004-2016 Emulex. All rights reserved. *
|
||||
* EMULEX and SLI are trademarks of Emulex. *
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
* included with this package. *
|
||||
*******************************************************************/
|
||||
|
||||
#define LPFC_DRIVER_VERSION "14.4.0.13"
|
||||
#define LPFC_DRIVER_VERSION "14.4.0.14"
|
||||
#define LPFC_DRIVER_NAME "lpfc"
|
||||
|
||||
/* Used for SLI 2/3 */
|
||||
|
|
@ -32,6 +32,6 @@
|
|||
|
||||
#define LPFC_MODULE_DESC "Emulex LightPulse Fibre Channel SCSI driver " \
|
||||
LPFC_DRIVER_VERSION
|
||||
#define LPFC_COPYRIGHT "Copyright (C) 2017-2025 Broadcom. All Rights " \
|
||||
#define LPFC_COPYRIGHT "Copyright (C) 2017-2026 Broadcom. All Rights " \
|
||||
"Reserved. The term \"Broadcom\" refers to Broadcom Inc. " \
|
||||
"and/or its subsidiaries."
|
||||
|
|
|
|||
Loading…
Reference in New Issue