X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fcfm.c;h=f9b3488636f36c19b8311d4e3358c390e55bec97;hb=9aa952b2dd7c091c63dbfc7becb3b3dcc9f7bfce;hp=f6cfb2e675ef2edfa5d2bf94cbf055e7312561a9;hpb=43675e260ccc26f8278fd751436af125a18bee38;p=sliver-openvswitch.git diff --git a/lib/cfm.c b/lib/cfm.c index f6cfb2e67..f9b348863 100644 --- a/lib/cfm.c +++ b/lib/cfm.c @@ -230,19 +230,24 @@ cfm_wait(struct cfm *cfm) bool cfm_configure(struct cfm *cfm) { - struct cfm_internal *cfmi; + struct cfm_internal *cfmi = cfm_to_internal(cfm); + uint8_t interval; if (!cfm_is_valid_mpid(cfm->mpid) || !cfm->interval) { return false; } - cfmi = cfm_to_internal(cfm); - cfmi->ccm_interval = ms_to_ccm_interval(cfm->interval); - cfmi->ccm_interval_ms = ccm_interval_to_ms(cfmi->ccm_interval); + interval = ms_to_ccm_interval(cfm->interval); + + if (interval != cfmi->ccm_interval) { + cfmi->ccm_interval = interval; + cfmi->ccm_interval_ms = ccm_interval_to_ms(interval); + + /* Force a resend and check in case anything changed. */ + timer_set_expired(&cfmi->tx_timer); + timer_set_expired(&cfmi->fault_timer); + } - /* Force a resend and check in case anything changed. */ - timer_set_expired(&cfmi->tx_timer); - timer_set_expired(&cfmi->fault_timer); return true; }