|
@@ -1046,7 +1046,7 @@ lpfc_sli_next_iotag(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq)
|
|
|
} else
|
|
|
spin_unlock_irq(&phba->hbalock);
|
|
|
|
|
|
- lpfc_printf_log(phba, KERN_ERR,LOG_SLI,
|
|
|
+ lpfc_printf_log(phba, KERN_WARNING, LOG_SLI,
|
|
|
"0318 Failed to allocate IOTAG.last IOTAG is %d\n",
|
|
|
psli->last_iotag);
|
|
|
|
|
@@ -3914,7 +3914,8 @@ lpfc_sli_config_port(struct lpfc_hba *phba, int sli_mode)
|
|
|
phba->sli3_options &= ~(LPFC_SLI3_NPIV_ENABLED |
|
|
|
LPFC_SLI3_HBQ_ENABLED |
|
|
|
LPFC_SLI3_CRP_ENABLED |
|
|
|
- LPFC_SLI3_BG_ENABLED);
|
|
|
+ LPFC_SLI3_BG_ENABLED |
|
|
|
+ LPFC_SLI3_DSS_ENABLED);
|
|
|
if (rc != MBX_SUCCESS) {
|
|
|
lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
|
|
|
"0442 Adapter failed to init, mbxCmd x%x "
|
|
@@ -3949,8 +3950,23 @@ lpfc_sli_config_port(struct lpfc_hba *phba, int sli_mode)
|
|
|
|
|
|
} else
|
|
|
phba->max_vpi = 0;
|
|
|
- if (pmb->u.mb.un.varCfgPort.gdss)
|
|
|
+ phba->fips_level = 0;
|
|
|
+ phba->fips_spec_rev = 0;
|
|
|
+ if (pmb->u.mb.un.varCfgPort.gdss) {
|
|
|
phba->sli3_options |= LPFC_SLI3_DSS_ENABLED;
|
|
|
+ phba->fips_level = pmb->u.mb.un.varCfgPort.fips_level;
|
|
|
+ phba->fips_spec_rev = pmb->u.mb.un.varCfgPort.fips_rev;
|
|
|
+ lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
|
|
|
+ "2850 Security Crypto Active. FIPS x%d "
|
|
|
+ "(Spec Rev: x%d)",
|
|
|
+ phba->fips_level, phba->fips_spec_rev);
|
|
|
+ }
|
|
|
+ if (pmb->u.mb.un.varCfgPort.sec_err) {
|
|
|
+ lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
|
|
|
+ "2856 Config Port Security Crypto "
|
|
|
+ "Error: x%x ",
|
|
|
+ pmb->u.mb.un.varCfgPort.sec_err);
|
|
|
+ }
|
|
|
if (pmb->u.mb.un.varCfgPort.gerbm)
|
|
|
phba->sli3_options |= LPFC_SLI3_HBQ_ENABLED;
|
|
|
if (pmb->u.mb.un.varCfgPort.gcrp)
|
|
@@ -9040,6 +9056,7 @@ lpfc_sli4_sp_handle_cqe(struct lpfc_hba *phba, struct lpfc_queue *cq,
|
|
|
switch (bf_get(lpfc_cqe_code, &cqevt)) {
|
|
|
case CQE_CODE_COMPL_WQE:
|
|
|
/* Process the WQ/RQ complete event */
|
|
|
+ phba->last_completion_time = jiffies;
|
|
|
workposted = lpfc_sli4_sp_handle_els_wcqe(phba,
|
|
|
(struct lpfc_wcqe_complete *)&cqevt);
|
|
|
break;
|
|
@@ -9050,11 +9067,13 @@ lpfc_sli4_sp_handle_cqe(struct lpfc_hba *phba, struct lpfc_queue *cq,
|
|
|
break;
|
|
|
case CQE_CODE_XRI_ABORTED:
|
|
|
/* Process the WQ XRI abort event */
|
|
|
+ phba->last_completion_time = jiffies;
|
|
|
workposted = lpfc_sli4_sp_handle_abort_xri_wcqe(phba, cq,
|
|
|
(struct sli4_wcqe_xri_aborted *)&cqevt);
|
|
|
break;
|
|
|
case CQE_CODE_RECEIVE:
|
|
|
/* Process the RQ event */
|
|
|
+ phba->last_completion_time = jiffies;
|
|
|
workposted = lpfc_sli4_sp_handle_rcqe(phba,
|
|
|
(struct lpfc_rcqe *)&cqevt);
|
|
|
break;
|
|
@@ -9276,7 +9295,6 @@ lpfc_sli4_fp_handle_wcqe(struct lpfc_hba *phba, struct lpfc_queue *cq,
|
|
|
{
|
|
|
struct lpfc_wcqe_release wcqe;
|
|
|
bool workposted = false;
|
|
|
- unsigned long iflag;
|
|
|
|
|
|
/* Copy the work queue CQE and convert endian order if needed */
|
|
|
lpfc_sli_pcimem_bcopy(cqe, &wcqe, sizeof(struct lpfc_cqe));
|
|
@@ -9285,9 +9303,7 @@ lpfc_sli4_fp_handle_wcqe(struct lpfc_hba *phba, struct lpfc_queue *cq,
|
|
|
switch (bf_get(lpfc_wcqe_c_code, &wcqe)) {
|
|
|
case CQE_CODE_COMPL_WQE:
|
|
|
/* Process the WQ complete event */
|
|
|
- spin_lock_irqsave(&phba->hbalock, iflag);
|
|
|
phba->last_completion_time = jiffies;
|
|
|
- spin_unlock_irqrestore(&phba->hbalock, iflag);
|
|
|
lpfc_sli4_fp_handle_fcp_wcqe(phba,
|
|
|
(struct lpfc_wcqe_complete *)&wcqe);
|
|
|
break;
|
|
@@ -9298,6 +9314,7 @@ lpfc_sli4_fp_handle_wcqe(struct lpfc_hba *phba, struct lpfc_queue *cq,
|
|
|
break;
|
|
|
case CQE_CODE_XRI_ABORTED:
|
|
|
/* Process the WQ XRI abort event */
|
|
|
+ phba->last_completion_time = jiffies;
|
|
|
workposted = lpfc_sli4_sp_handle_abort_xri_wcqe(phba, cq,
|
|
|
(struct sli4_wcqe_xri_aborted *)&wcqe);
|
|
|
break;
|