mirror of
https://github.com/torvalds/linux.git
synced 2024-12-04 18:13:04 +00:00
[SCSI] libfcoe: update FIP FCF D flag from advertisments
Allow the D flag (indicating that keep-alives are not needed) to be updated dynamically from received FIP advertisements. 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>
This commit is contained in:
parent
d99ee45b7c
commit
c600fea2d8
@ -769,18 +769,21 @@ static void fcoe_ctlr_recv_adv(struct fcoe_ctlr *fip, struct sk_buff *skb)
|
||||
list_add(&fcf->list, &fip->fcfs);
|
||||
} else {
|
||||
/*
|
||||
* Flags in advertisements are ignored once the FCF is
|
||||
* selected. Flags in unsolicited advertisements are
|
||||
* ignored after a usable solicited advertisement
|
||||
* has been received.
|
||||
* Update the FCF's keep-alive descriptor flags.
|
||||
* Other flag changes from new advertisements are
|
||||
* ignored after a solicited advertisement is
|
||||
* received and the FCF is selectable (usable).
|
||||
*/
|
||||
fcf->fd_flags = new.fd_flags;
|
||||
if (!fcoe_ctlr_fcf_usable(fcf))
|
||||
fcf->flags = new.flags;
|
||||
|
||||
if (fcf == fip->sel_fcf && !fcf->fd_flags) {
|
||||
fip->ctlr_ka_time -= fcf->fka_period;
|
||||
fip->ctlr_ka_time += new.fka_period;
|
||||
if (time_before(fip->ctlr_ka_time, fip->timer.expires))
|
||||
mod_timer(&fip->timer, fip->ctlr_ka_time);
|
||||
} else if (!fcoe_ctlr_fcf_usable(fcf))
|
||||
fcf->flags = new.flags;
|
||||
}
|
||||
fcf->fka_period = new.fka_period;
|
||||
memcpy(fcf->fcf_mac, new.fcf_mac, ETH_ALEN);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user