> When a CVL is received while we wait to select best FCF, we drop it
> without handling it. This causes initiator and the switch to go
> out-of-sync. Initiator proceeds selecting one of the FCFs and tries to
> send FIP FLOGI. However the switch may reject the FLOGI, as it has
> cleared its internal state, and expects the initiator to start FIP
> discovery protocol. Fix this condition by resetting the fcoe
> controller.
> 
> Signed-off-by: Bhanu Prakash Gollapudi <[email protected]>

Looks good...do we care to update the stats in this case? I guess not, as the
link failure is already happened...

Thanks,
Yi

Reviewed-by: Yi Zou <[email protected]>

> ---
>  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 505ee73..08c3bc3 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,
> 
>       LIBFCOE_FIP_DBG(fip, "Clear Virtual Link received\n");
> 
> -     if (!fcf || !lport->port_id)
> +     if (!fcf || !lport->port_id) {
> +             /*
> +              * We are yet to select best FCF, but we got CVL in the
> +              * meantime. reset the ctlr and let it rediscover the FCF
> +              */
> +             mutex_lock(&fip->ctlr_mutex);
> +             fcoe_ctlr_reset(fip);
> +             mutex_unlock(&fip->ctlr_mutex);
>               return;
> +     }
> 
>       /*
>        * mask of required descriptors.  Validating each one clears its bit.
> --
> 1.7.1
> 
> 
> _______________________________________________
> fcoe-devel mailing list
> [email protected]
> http://lists.open-fcoe.org/mailman/listinfo/fcoe-devel
_______________________________________________
fcoe-devel mailing list
[email protected]
http://lists.open-fcoe.org/mailman/listinfo/fcoe-devel

Reply via email to