Skip to content

Commit

Permalink
[SCSI] libfcoe: reorder FCF list to put latest advertiser first
Browse files Browse the repository at this point in the history
When there are several FCFs to choose from, the one most likely
to accept a FLOGI on certian switches is the one that last
answered a multicast solicit.

So, when receiving an advertisement, move the FCF to the front
of the list so that it gets chosen first among those with the
same priority.

Without this, more FLOGIs need to be sent in a test with
multiple FCFs and a switch in NPV mode, but it still
eventually finds one that accepts the FLOGI.

Signed-off-by: Joe Eykholt <jeykholt@cisco.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
  • Loading branch information
Joe Eykholt authored and James Bottomley committed Dec 21, 2010
1 parent 9069f5c commit 981c115
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions drivers/scsi/fcoe/libfcoe.c
Original file line number Diff line number Diff line change
Expand Up @@ -999,6 +999,17 @@ static void fcoe_ctlr_recv_adv(struct fcoe_ctlr *fip, struct sk_buff *skb)
if (first && time_after(jiffies, fip->sol_time + sol_tov))
fcoe_ctlr_solicit(fip, NULL);

/*
* Put this FCF at the head of the list for priority among equals.
* This helps in the case of an NPV switch which insists we use
* the FCF that answers multicast solicitations, not the others that
* are sending periodic multicast advertisements.
*/
if (mtu_valid) {
list_del(&fcf->list);
list_add(&fcf->list, &fip->fcfs);
}

/*
* If this is the first validated FCF, note the time and
* set a timer to trigger selection.
Expand Down

0 comments on commit 981c115

Please sign in to comment.