Commit f3da80e76142d63a6849556461906fbe118d1442

Authored by Yi Zou
Committed by James Bottomley
1 parent 2ec8493f96

[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)