diff options
Diffstat (limited to 'drivers/scsi/fcoe')
-rw-r--r-- | drivers/scsi/fcoe/fcoe_ctlr.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/scsi/fcoe/fcoe_ctlr.c b/drivers/scsi/fcoe/fcoe_ctlr.c index 75834255bf07..aff3c44a1cdc 100644 --- a/drivers/scsi/fcoe/fcoe_ctlr.c +++ b/drivers/scsi/fcoe/fcoe_ctlr.c | |||
@@ -1291,8 +1291,16 @@ static void fcoe_ctlr_recv_clr_vlink(struct fcoe_ctlr *fip, | |||
1291 | 1291 | ||
1292 | LIBFCOE_FIP_DBG(fip, "Clear Virtual Link received\n"); | 1292 | LIBFCOE_FIP_DBG(fip, "Clear Virtual Link received\n"); |
1293 | 1293 | ||
1294 | if (!fcf || !lport->port_id) | 1294 | if (!fcf || !lport->port_id) { |
1295 | /* | ||
1296 | * We are yet to select best FCF, but we got CVL in the | ||
1297 | * meantime. reset the ctlr and let it rediscover the FCF | ||
1298 | */ | ||
1299 | mutex_lock(&fip->ctlr_mutex); | ||
1300 | fcoe_ctlr_reset(fip); | ||
1301 | mutex_unlock(&fip->ctlr_mutex); | ||
1295 | return; | 1302 | return; |
1303 | } | ||
1296 | 1304 | ||
1297 | /* | 1305 | /* |
1298 | * mask of required descriptors. Validating each one clears its bit. | 1306 | * mask of required descriptors. Validating each one clears its bit. |