aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/libfc/fc_rport.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/scsi/libfc/fc_rport.c b/drivers/scsi/libfc/fc_rport.c
index 49e1ccca09d..3b669377406 100644
--- a/drivers/scsi/libfc/fc_rport.c
+++ b/drivers/scsi/libfc/fc_rport.c
@@ -801,6 +801,20 @@ static void fc_rport_recv_flogi_req(struct fc_lport *lport,
801 801
802 switch (rdata->rp_state) { 802 switch (rdata->rp_state) {
803 case RPORT_ST_INIT: 803 case RPORT_ST_INIT:
804 /*
805 * If received the FLOGI request on RPORT which is INIT state
806 * (means not transition to FLOGI either fc_rport timeout
807 * function didn;t trigger or this end hasn;t received
808 * beacon yet from other end. In that case only, allow RPORT
809 * state machine to continue, otherwise fall through which
810 * causes the code to send reject response.
811 * NOTE; Not checking for FIP->state such as VNMP_UP or
812 * VNMP_CLAIM because if FIP state is not one of those,
813 * RPORT wouldn;t have created and 'rport_lookup' would have
814 * failed anyway in that case.
815 */
816 if (lport->point_to_multipoint)
817 break;
804 case RPORT_ST_DELETE: 818 case RPORT_ST_DELETE:
805 mutex_unlock(&rdata->rp_mutex); 819 mutex_unlock(&rdata->rp_mutex);
806 rjt_data.reason = ELS_RJT_FIP; 820 rjt_data.reason = ELS_RJT_FIP;