|
@@ -145,8 +145,10 @@ lpfc_config_port_prep(struct lpfc_hba *phba)
|
|
|
return -ERESTART;
|
|
|
}
|
|
|
|
|
|
- if (phba->sli_rev == 3 && !mb->un.varRdRev.v3rsp)
|
|
|
+ if (phba->sli_rev == 3 && !mb->un.varRdRev.v3rsp) {
|
|
|
+ mempool_free(pmb, phba->mbox_mem_pool);
|
|
|
return -EINVAL;
|
|
|
+ }
|
|
|
|
|
|
/* Save information as VPD data */
|
|
|
vp->rev.rBit = 1;
|
|
@@ -1197,8 +1199,7 @@ lpfc_get_hba_model_desc(struct lpfc_hba *phba, uint8_t *mdp, uint8_t *descp)
|
|
|
/* Returns the number of buffers NOT posted. */
|
|
|
/**************************************************/
|
|
|
int
|
|
|
-lpfc_post_buffer(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, int cnt,
|
|
|
- int type)
|
|
|
+lpfc_post_buffer(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, int cnt)
|
|
|
{
|
|
|
IOCB_t *icmd;
|
|
|
struct lpfc_iocbq *iocb;
|
|
@@ -1298,7 +1299,7 @@ lpfc_post_rcv_buf(struct lpfc_hba *phba)
|
|
|
struct lpfc_sli *psli = &phba->sli;
|
|
|
|
|
|
/* Ring 0, ELS / CT buffers */
|
|
|
- lpfc_post_buffer(phba, &psli->ring[LPFC_ELS_RING], LPFC_BUF_RING0, 1);
|
|
|
+ lpfc_post_buffer(phba, &psli->ring[LPFC_ELS_RING], LPFC_BUF_RING0);
|
|
|
/* Ring 2 - FCP no buffers needed */
|
|
|
|
|
|
return 0;
|
|
@@ -1457,6 +1458,15 @@ lpfc_cleanup(struct lpfc_vport *vport)
|
|
|
|
|
|
lpfc_disc_state_machine(vport, ndlp, NULL,
|
|
|
NLP_EVT_DEVICE_RM);
|
|
|
+
|
|
|
+ /* nlp_type zero is not defined, nlp_flag zero also not defined,
|
|
|
+ * nlp_state is unused, this happens when
|
|
|
+ * an initiator has logged
|
|
|
+ * into us so cleanup this ndlp.
|
|
|
+ */
|
|
|
+ if ((ndlp->nlp_type == 0) && (ndlp->nlp_flag == 0) &&
|
|
|
+ (ndlp->nlp_state == 0))
|
|
|
+ lpfc_nlp_put(ndlp);
|
|
|
}
|
|
|
|
|
|
/* At this point, ALL ndlp's should be gone
|