Looks good,

Acked-by: Jarno Rajahalme <[email protected]>

On Mar 18, 2014, at 1:53 PM, Pravin <[email protected]> wrote:

> DPDK Poll mode thread need to keep ref to dpif-port.
> 
> Signed-off-by: Pravin B Shelar <[email protected]>
> ---
> lib/dpif-netdev.c |   30 ++++++++++++++++++++++++------
> 1 file changed, 24 insertions(+), 6 deletions(-)
> 
> diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
> index 440561e..dda8fe5 100644
> --- a/lib/dpif-netdev.c
> +++ b/lib/dpif-netdev.c
> @@ -174,6 +174,7 @@ struct dp_netdev_port {
>     struct netdev *netdev;
>     struct netdev_saved_flags *sf;
>     struct netdev_rx *rx;
> +    struct ovs_refcount ref_cnt;
>     char *type;                 /* Port type as requested by user. */
> };
> 
> @@ -671,6 +672,7 @@ do_add_port(struct dp_netdev *dp, const char *devname, 
> const char *type,
> 
>     hmap_insert(&dp->ports, &port->node, hash_int(odp_to_u32(port_no), 0));
>     seq_change(dp->port_seq);
> +    ovs_refcount_init(&port->ref_cnt);
> 
>     return 0;
> }
> @@ -751,6 +753,27 @@ get_port_by_number(struct dp_netdev *dp,
>     }
> }
> 
> +static void
> +port_ref(struct dp_netdev_port *port)
> +{
> +    if (port) {
> +        ovs_refcount_ref(&port->ref_cnt);
> +    }
> +}
> +
> +static void
> +port_unref(struct dp_netdev_port *port)
> +{
> +    if (port && ovs_refcount_unref(&port->ref_cnt) == 1) {
> +
> +        netdev_close(port->netdev);
> +        netdev_restore_flags(port->sf);
> +        netdev_rx_close(port->rx);
> +        free(port->type);
> +        free(port);
> +    }
> +}
> +
> static int
> get_port_by_name(struct dp_netdev *dp,
>                  const char *devname, struct dp_netdev_port **portp)
> @@ -782,12 +805,7 @@ do_del_port(struct dp_netdev *dp, odp_port_t port_no)
>     hmap_remove(&dp->ports, &port->node);
>     seq_change(dp->port_seq);
> 
> -    netdev_close(port->netdev);
> -    netdev_restore_flags(port->sf);
> -    netdev_rx_close(port->rx);
> -    free(port->type);
> -    free(port);
> -
> +    port_unref(port);
>     return 0;
> }
> 
> -- 
> 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

Reply via email to