diff options
author | Bhanu Prakash Gollapudi <bprakash@broadcom.com> | 2012-03-09 17:49:53 -0500 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2012-03-28 04:03:30 -0400 |
commit | 14619ea689cc0b257cf998469005d0515133d7bc (patch) | |
tree | 3f2108dfe3134ecd9840113969d60c23d4ae7257 /drivers | |
parent | 5e70c4c43e559ea6a1bf1edc0eb7d284ea7f16b4 (diff) |
[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>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/scsi/fcoe/fcoe_ctlr.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/scsi/fcoe/fcoe_ctlr.c b/drivers/scsi/fcoe/fcoe_ctlr.c index e7522dcc296e..a43dad2238d0 100644 --- a/drivers/scsi/fcoe/fcoe_ctlr.c +++ b/drivers/scsi/fcoe/fcoe_ctlr.c | |||
@@ -1273,11 +1273,6 @@ static void fcoe_ctlr_recv_clr_vlink(struct fcoe_ctlr *fip, | |||
1273 | * No Vx_Port description. Clear all NPIV ports, | 1273 | * No Vx_Port description. Clear all NPIV ports, |
1274 | * followed by physical port | 1274 | * followed by physical port |
1275 | */ | 1275 | */ |
1276 | mutex_lock(&lport->lp_mutex); | ||
1277 | list_for_each_entry(vn_port, &lport->vports, list) | ||
1278 | fc_lport_reset(vn_port); | ||
1279 | mutex_unlock(&lport->lp_mutex); | ||
1280 | |||
1281 | mutex_lock(&fip->ctlr_mutex); | 1276 | mutex_lock(&fip->ctlr_mutex); |
1282 | per_cpu_ptr(lport->dev_stats, | 1277 | per_cpu_ptr(lport->dev_stats, |
1283 | get_cpu())->VLinkFailureCount++; | 1278 | get_cpu())->VLinkFailureCount++; |
@@ -1285,6 +1280,11 @@ static void fcoe_ctlr_recv_clr_vlink(struct fcoe_ctlr *fip, | |||
1285 | fcoe_ctlr_reset(fip); | 1280 | fcoe_ctlr_reset(fip); |
1286 | mutex_unlock(&fip->ctlr_mutex); | 1281 | mutex_unlock(&fip->ctlr_mutex); |
1287 | 1282 | ||
1283 | mutex_lock(&lport->lp_mutex); | ||
1284 | list_for_each_entry(vn_port, &lport->vports, list) | ||
1285 | fc_lport_reset(vn_port); | ||
1286 | mutex_unlock(&lport->lp_mutex); | ||
1287 | |||
1288 | fc_lport_reset(fip->lp); | 1288 | fc_lport_reset(fip->lp); |
1289 | fcoe_ctlr_solicit(fip, NULL); | 1289 | fcoe_ctlr_solicit(fip, NULL); |
1290 | } else { | 1290 | } else { |