This patch should also remove the call to rtnetlink_link_notifier_wait() in dpif_linix_port_poll_wait(). I've added that to my repo, I can resend it if requested.
Ethan On Fri, Aug 19, 2011 at 18:11, Ethan Jackson <et...@nicira.com> wrote: > I don't think this actually fixes a bug, as netdev-linux calls this > function. However, it seems stylistically more correct. > --- > lib/dpif-linux.c | 25 +++++++++++++++++++++++-- > 1 files changed, 23 insertions(+), 2 deletions(-) > > diff --git a/lib/dpif-linux.c b/lib/dpif-linux.c > index 9a90801..a793cda 100644 > --- a/lib/dpif-linux.c > +++ b/lib/dpif-linux.c > @@ -146,6 +146,9 @@ struct dpif_linux { > > static struct vlog_rate_limit error_rl = VLOG_RATE_LIMIT_INIT(9999, 5); > > +/* Guard for dpif_linux_run() and dpif_linux_wait(). */ > +static bool has_run = false; > + > /* Generic Netlink family numbers for ODP. */ > static int odp_datapath_family; > static int odp_vport_family; > @@ -308,6 +311,24 @@ dpif_linux_destroy(struct dpif *dpif_) > return dpif_linux_dp_transact(&dp, NULL, NULL); > } > > +static void > +dpif_linux_run(struct dpif *dpif OVS_UNUSED) > +{ > + /* We only need to run once for all dpif_linux instances. Hence the > + * 'has_run' guard. */ > + if (!has_run) { > + has_run = true; > + rtnetlink_link_notifier_run(); > + } > +} > + > +static void > +dpif_linux_wait(struct dpif *dpif OVS_UNUSED) > +{ > + has_run = false; > + rtnetlink_link_notifier_wait(); > +} > + > static int > dpif_linux_get_stats(const struct dpif *dpif_, struct odp_stats *stats) > { > @@ -1048,8 +1069,8 @@ const struct dpif_class dpif_linux_class = { > dpif_linux_open, > dpif_linux_close, > dpif_linux_destroy, > - NULL, /* run */ > - NULL, /* wait */ > + dpif_linux_run, > + dpif_linux_wait, > dpif_linux_get_stats, > dpif_linux_get_drop_frags, > dpif_linux_set_drop_frags, > -- > 1.7.6 > > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev