Commit f3da80e76142d63a6849556461906fbe118d1442
Committed by
James Bottomley
1 parent
2ec8493f96
Exists in
master
and in
7 other branches
[SCSI] libfcoe: add tracking FIP Missing Discovery Advertisement count
Add tracking the Missing Discovery Advertisement count for FIP Fiber Channel Forwarder (FCF) as described in FC-BB-5 Rev2.0 for LESB. The time is 1.5 times the FKA_ADV_PERIOD of the corresponding FCF. Signed-off-by: Yi Zou <yi.zou@intel.com> Signed-off-by: Robert Love <robert.w.love@intel.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Showing 1 changed file with 14 additions and 0 deletions Side-by-side Diff
drivers/scsi/fcoe/libfcoe.c
... | ... | @@ -562,14 +562,28 @@ |
562 | 562 | * times its keep-alive period including fuzz. |
563 | 563 | * |
564 | 564 | * In addition, determine the time when an FCF selection can occur. |
565 | + * | |
566 | + * Also, increment the MissDiscAdvCount when no advertisement is received | |
567 | + * for the corresponding FCF for 1.5 * FKA_ADV_PERIOD (FC-BB-5 LESB). | |
565 | 568 | */ |
566 | 569 | static void fcoe_ctlr_age_fcfs(struct fcoe_ctlr *fip) |
567 | 570 | { |
568 | 571 | struct fcoe_fcf *fcf; |
569 | 572 | struct fcoe_fcf *next; |
570 | 573 | unsigned long sel_time = 0; |
574 | + unsigned long mda_time = 0; | |
571 | 575 | |
572 | 576 | list_for_each_entry_safe(fcf, next, &fip->fcfs, list) { |
577 | + mda_time = fcf->fka_period + (fcf->fka_period >> 1); | |
578 | + if ((fip->sel_fcf == fcf) && | |
579 | + (time_after(jiffies, fcf->time + mda_time))) { | |
580 | + mod_timer(&fip->timer, jiffies + mda_time); | |
581 | + fc_lport_get_stats(fip->lp)->MissDiscAdvCount++; | |
582 | + printk(KERN_INFO "libfcoe: host%d: Missing Discovery " | |
583 | + "Advertisement for fab %llx count %lld\n", | |
584 | + fip->lp->host->host_no, fcf->fabric_name, | |
585 | + fc_lport_get_stats(fip->lp)->MissDiscAdvCount); | |
586 | + } | |
573 | 587 | if (time_after(jiffies, fcf->time + fcf->fka_period * 3 + |
574 | 588 | msecs_to_jiffies(FIP_FCF_FUZZ * 3))) { |
575 | 589 | if (fip->sel_fcf == fcf) |