[ovs-dev] [PATCH] dpif-linux: Call rtnetlink_notifier_run() as required.

Ethan Jackson ethan at nicira.com
Sat Aug 20 01:28:29 UTC 2011


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 <ethan at 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
>
>



More information about the dev mailing list