[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