Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
[sfrench/cifs-2.6.git] / drivers / scsi / lpfc / lpfc_els.c
index 0dd6c21433fe531de8110c8e040ea3f10c4abcda..39d5b146202ec6719b1c9433cc35876e59e56a38 100644 (file)
@@ -5394,10 +5394,6 @@ lpfc_els_rdp_cmpl(struct lpfc_hba *phba, struct lpfc_rdp_context *rdp_context,
                                        (len + pcmd), vport, ndlp);
        len += lpfc_rdp_res_fec_desc((struct fc_fec_rdp_desc *)(len + pcmd),
                        &rdp_context->link_stat);
-       /* Check if nport is logged, BZ190632 */
-       if (!(ndlp->nlp_flag & NLP_RPI_REGISTERED))
-               goto lpfc_skip_descriptor;
-
        len += lpfc_rdp_res_bbc_desc((struct fc_rdp_bbc_desc *)(len + pcmd),
                                     &rdp_context->link_stat, vport);
        len += lpfc_rdp_res_oed_temp_desc(phba,
@@ -5418,7 +5414,6 @@ lpfc_els_rdp_cmpl(struct lpfc_hba *phba, struct lpfc_rdp_context *rdp_context,
        len += lpfc_rdp_res_opd_desc((struct fc_rdp_opd_sfp_desc *)(len + pcmd),
                                     rdp_context->page_a0, vport);
 
-lpfc_skip_descriptor:
        rdp_res->length = cpu_to_be32(len - 8);
        elsiocb->iocb_cmpl = lpfc_cmpl_els_rsp;
 
@@ -5540,7 +5535,6 @@ lpfc_els_rcv_rdp(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb,
        pcmd = (struct lpfc_dmabuf *) cmdiocb->context2;
        rdp_req = (struct fc_rdp_req_frame *) pcmd->virt;
 
-
        lpfc_printf_vlog(vport, KERN_INFO, LOG_ELS,
                         "2422 ELS RDP Request "
                         "dec len %d tag x%x port_id %d len %d\n",
@@ -5549,12 +5543,6 @@ lpfc_els_rcv_rdp(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb,
                         be32_to_cpu(rdp_req->nport_id_desc.nport_id),
                         be32_to_cpu(rdp_req->nport_id_desc.length));
 
-       if (!(ndlp->nlp_flag & NLP_RPI_REGISTERED) &&
-           !phba->cfg_enable_SmartSAN) {
-               rjt_err = LSRJT_UNABLE_TPC;
-               rjt_expl = LSEXP_PORT_LOGIN_REQ;
-               goto error;
-       }
        if (sizeof(struct fc_rdp_nport_desc) !=
                        be32_to_cpu(rdp_req->rdp_des_length))
                goto rjt_logerr;
@@ -7430,6 +7418,8 @@ lpfc_els_timeout_handler(struct lpfc_vport *vport)
        timeout = (uint32_t)(phba->fc_ratov << 1);
 
        pring = lpfc_phba_elsring(phba);
+       if (unlikely(!pring))
+               return;
 
        if ((phba->pport->load_flag & FC_UNLOADING))
                return;
@@ -9310,6 +9300,9 @@ void lpfc_fabric_abort_nport(struct lpfc_nodelist *ndlp)
 
        pring = lpfc_phba_elsring(phba);
 
+       if (unlikely(!pring))
+               return;
+
        spin_lock_irq(&phba->hbalock);
        list_for_each_entry_safe(piocb, tmp_iocb, &phba->fabric_iocb_list,
                                 list) {
@@ -9416,7 +9409,7 @@ lpfc_sli4_els_xri_aborted(struct lpfc_hba *phba,
                                rxid, 1);
 
                        /* Check if TXQ queue needs to be serviced */
-                       if (!(list_empty(&pring->txq)))
+                       if (pring && !list_empty(&pring->txq))
                                lpfc_worker_wake_up(phba);
                        return;
                }