From df9e1b59f9e4671930a7762b9518461df4ea85f5 Mon Sep 17 00:00:00 2001 From: James Smart Date: Tue, 13 Dec 2011 13:22:17 -0500 Subject: [SCSI] Lpfc 8.3.28: FC and SCSI Discovery Fixes FC and SCSI Discovery Fixes: - Clear the virtual fabrics bit (word 1 bit 30) when sending the FLOGI and FDISC. (CR 124339) - Return a MLQUEUE_DEVICE_BUSY if the driver detects that an I/O is being retried too quickly (CR 124668) - Remove NDLP reference put in lpfc_cmpl_els_logo_acc for all but fabric nodes (CR 123924) - Only retry FDISCs every second and stop retrying after devloss number of retries (CR 13939) - Check to see if vports are unloading before adding them to the vport work array. (CR 124996) - Fixed illegal state transition during driver unload (CR 124191) - Added missing protection on setting/clearing of vport->fc_flag bit (CR 126002) - Set NPIV flag in lpfc_mbx_process_link_up for all ports sli3 and above. (CR 126094) - Clear FCP command bytes that are not used. (CR 126209) Signed-off-by: Alex Iannicelli Signed-off-by: James Smart Signed-off-by: James Bottomley --- drivers/scsi/lpfc/lpfc_nportdisc.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'drivers/scsi/lpfc/lpfc_nportdisc.c') diff --git a/drivers/scsi/lpfc/lpfc_nportdisc.c b/drivers/scsi/lpfc/lpfc_nportdisc.c index 2ddd02f7c60..e8bb0055994 100644 --- a/drivers/scsi/lpfc/lpfc_nportdisc.c +++ b/drivers/scsi/lpfc/lpfc_nportdisc.c @@ -782,6 +782,14 @@ lpfc_device_rm_unused_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, return NLP_STE_FREED_NODE; } +static uint32_t +lpfc_device_recov_unused_node(struct lpfc_vport *vport, + struct lpfc_nodelist *ndlp, + void *arg, uint32_t evt) +{ + return ndlp->nlp_state; +} + static uint32_t lpfc_rcv_plogi_plogi_issue(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp, void *arg, uint32_t evt) @@ -2147,7 +2155,7 @@ static uint32_t (*lpfc_disc_action[NLP_STE_MAX_STATE * NLP_EVT_MAX_EVENT]) lpfc_disc_illegal, /* CMPL_ADISC */ lpfc_disc_illegal, /* CMPL_REG_LOGIN */ lpfc_device_rm_unused_node, /* DEVICE_RM */ - lpfc_disc_illegal, /* DEVICE_RECOVERY */ + lpfc_device_recov_unused_node, /* DEVICE_RECOVERY */ lpfc_rcv_plogi_plogi_issue, /* RCV_PLOGI PLOGI_ISSUE */ lpfc_rcv_prli_plogi_issue, /* RCV_PRLI */ -- cgit v1.2.3