Acked-by: Ethan Jackson <[email protected]>
On Fri, Oct 11, 2013 at 5:16 PM, Alex Wang <[email protected]> wrote: > This commit adds a new function "bfd_wake_time()" that returns the > next wakeup time associated with the "struct bfd". > > Signed-off-by: Alex Wang <[email protected]> > --- > > v3 -> v4: > - rebase to master. > > v2 -> v3: > - fix the code duplication. > > v1 -> v2: > - rebase to master. > > --- > lib/bfd.c | 26 ++++++++++++++++++++------ > lib/bfd.h | 2 +- > 2 files changed, 21 insertions(+), 7 deletions(-) > > diff --git a/lib/bfd.c b/lib/bfd.c > index 6c9e920..115053b 100644 > --- a/lib/bfd.c > +++ b/lib/bfd.c > @@ -446,16 +446,30 @@ bfd_unref(struct bfd *bfd) OVS_EXCLUDED(mutex) > void > bfd_wait(const struct bfd *bfd) OVS_EXCLUDED(mutex) > { > - ovs_mutex_lock(&mutex); > - if (bfd->flags & FLAG_FINAL) { > - poll_immediate_wake(); > + poll_timer_wait_until(bfd_wake_time(bfd)); > +} > + > +/* Returns the next wake up time. */ > +long long int > +bfd_wake_time(const struct bfd *bfd) OVS_EXCLUDED(mutex) > +{ > + long long int retval; > + > + if (!bfd) { > + return LLONG_MAX; > } > > - poll_timer_wait_until(bfd->next_tx); > - if (bfd->state > STATE_DOWN) { > - poll_timer_wait_until(bfd->detect_time); > + ovs_mutex_lock(&mutex); > + if (bfd->flags & FLAG_FINAL) { > + retval = 0; > + } else { > + retval = bfd->next_tx; > + if (bfd->state > STATE_DOWN) { > + retval = MIN(bfd->detect_time, retval); > + } > } > ovs_mutex_unlock(&mutex); > + return retval; > } > > void > diff --git a/lib/bfd.h b/lib/bfd.h > index 0e1e33d..f49a3d6 100644 > --- a/lib/bfd.h > +++ b/lib/bfd.h > @@ -49,5 +49,5 @@ void bfd_unref(struct bfd *); > bool bfd_forwarding(const struct bfd *); > void bfd_get_status(const struct bfd *, struct smap *); > void bfd_set_netdev(struct bfd *, const struct netdev *); > - > +long long int bfd_wake_time(const struct bfd *); > #endif /* bfd.h */ > -- > 1.7.9.5 > > _______________________________________________ > dev mailing list > [email protected] > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
