Commit d2f80952 authored by Vasu Dev's avatar Vasu Dev Committed by James Bottomley

[SCSI] fcoe: fix broken fcoe interface reset

Reset using "fcoeadm -r" also needs to restart FIP before
doing libfc lport reset, this is needed for new switch firmware
requiring FIP solicitation before doing FLOGI again during reset.
So this patch does this by doing fcoe_ctlr_link_down and then
fcoe_ctlr_link_up to reset the interface.

The fcoe_ctlr_link_down call path also does lport reset
and then fcoe_ctlr_link_up re-starts the fabric login after
doing FIP solicitation first to get reset feature working
again.
Signed-off-by: default avatarVasu Dev <vasu.dev@intel.com>
Tested-by: default avatarRoss Brattain <ross.b.brattain@intel.com>
Signed-off-by: default avatarRobert Love <robert.w.love@intel.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent f2f96d20
...@@ -2130,7 +2130,13 @@ void fcoe_percpu_clean(struct fc_lport *lport) ...@@ -2130,7 +2130,13 @@ void fcoe_percpu_clean(struct fc_lport *lport)
int fcoe_reset(struct Scsi_Host *shost) int fcoe_reset(struct Scsi_Host *shost)
{ {
struct fc_lport *lport = shost_priv(shost); struct fc_lport *lport = shost_priv(shost);
fc_lport_reset(lport); struct fcoe_port *port = lport_priv(lport);
struct fcoe_interface *fcoe = port->priv;
fcoe_ctlr_link_down(&fcoe->ctlr);
fcoe_clean_pending_queue(fcoe->ctlr.lp);
if (!fcoe_link_ok(fcoe->ctlr.lp))
fcoe_ctlr_link_up(&fcoe->ctlr);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment