/* Called with RTNL lock. */ void ovs_dp_detach_port(struct vport *p) { ASSERT_RTNL(); /* First drop references to device. */ hlist_del_rcu(&p->dp_hash_node); /* Then destroy it. */ ovs_vport_del(p); }
/* Called with RTNL lock. */ void ovs_dp_detach_port(struct vport *p) { ASSERT_RTNL(); /* First drop references to device. */ list_del(&p->node); rcu_assign_pointer(p->dp->ports[p->port_no], NULL); /* Then destroy it. */ ovs_vport_del(p); }
/* Called with RTNL lock. */ void ovs_dp_detach_port(struct vport *p) { ASSERT_RTNL(); if (p->port_no != OVSP_LOCAL) ovs_dp_sysfs_del_if(p); dp_ifinfo_notify(RTM_DELLINK, p); /* First drop references to device. */ list_del(&p->node); rcu_assign_pointer(p->dp->ports[p->port_no], NULL); /* Then destroy it. */ ovs_vport_del(p); }