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
