[SCSI] libfcoe: Do not sends FDISCs before FLOGI during CVL

When handling CVL with no Vx port descriptors, lports for NPIV ports are reset
before issuing the ctlr_reset. This causes FDISCs to be issued before
successful FLOGI. Fix it by resetting the controller before resetting the
lports.

Signed-off-by: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
Bhanu Prakash Gollapudi 2012-03-09 14:49:53 -08:00 committed by James Bottomley
parent 5e70c4c43e
commit 14619ea689
1 changed files with 5 additions and 5 deletions

View File

@ -1273,11 +1273,6 @@ static void fcoe_ctlr_recv_clr_vlink(struct fcoe_ctlr *fip,
* No Vx_Port description. Clear all NPIV ports, * No Vx_Port description. Clear all NPIV ports,
* followed by physical port * followed by physical port
*/ */
mutex_lock(&lport->lp_mutex);
list_for_each_entry(vn_port, &lport->vports, list)
fc_lport_reset(vn_port);
mutex_unlock(&lport->lp_mutex);
mutex_lock(&fip->ctlr_mutex); mutex_lock(&fip->ctlr_mutex);
per_cpu_ptr(lport->dev_stats, per_cpu_ptr(lport->dev_stats,
get_cpu())->VLinkFailureCount++; get_cpu())->VLinkFailureCount++;
@ -1285,6 +1280,11 @@ static void fcoe_ctlr_recv_clr_vlink(struct fcoe_ctlr *fip,
fcoe_ctlr_reset(fip); fcoe_ctlr_reset(fip);
mutex_unlock(&fip->ctlr_mutex); mutex_unlock(&fip->ctlr_mutex);
mutex_lock(&lport->lp_mutex);
list_for_each_entry(vn_port, &lport->vports, list)
fc_lport_reset(vn_port);
mutex_unlock(&lport->lp_mutex);
fc_lport_reset(fip->lp); fc_lport_reset(fip->lp);
fcoe_ctlr_solicit(fip, NULL); fcoe_ctlr_solicit(fip, NULL);
} else { } else {