Lines Matching refs:vport

44 	struct vport *vport;  in netdev_port_receive()  local
46 vport = ovs_netdev_get_vport(skb->dev); in netdev_port_receive()
47 if (unlikely(!vport)) in netdev_port_receive()
62 ovs_vport_receive(vport, skb, skb_tunnel_info(skb)); in netdev_port_receive()
82 struct vport *local; in get_dpdev()
89 struct vport *ovs_netdev_link(struct vport *vport, const char *name) in ovs_netdev_link() argument
93 vport->dev = dev_get_by_name(ovs_dp_get_net(vport->dp), name); in ovs_netdev_link()
94 if (!vport->dev) { in ovs_netdev_link()
99 if (vport->dev->flags & IFF_LOOPBACK || in ovs_netdev_link()
100 vport->dev->type != ARPHRD_ETHER || in ovs_netdev_link()
101 ovs_is_internal_dev(vport->dev)) { in ovs_netdev_link()
107 err = netdev_master_upper_dev_link(vport->dev, in ovs_netdev_link()
108 get_dpdev(vport->dp)); in ovs_netdev_link()
112 err = netdev_rx_handler_register(vport->dev, netdev_frame_hook, in ovs_netdev_link()
113 vport); in ovs_netdev_link()
117 dev_disable_lro(vport->dev); in ovs_netdev_link()
118 dev_set_promiscuity(vport->dev, 1); in ovs_netdev_link()
119 vport->dev->priv_flags |= IFF_OVS_DATAPATH; in ovs_netdev_link()
122 return vport; in ovs_netdev_link()
125 netdev_upper_dev_unlink(vport->dev, get_dpdev(vport->dp)); in ovs_netdev_link()
129 dev_put(vport->dev); in ovs_netdev_link()
131 ovs_vport_free(vport); in ovs_netdev_link()
136 static struct vport *netdev_create(const struct vport_parms *parms) in netdev_create()
138 struct vport *vport; in netdev_create() local
140 vport = ovs_vport_alloc(0, &ovs_netdev_vport_ops, parms); in netdev_create()
141 if (IS_ERR(vport)) in netdev_create()
142 return vport; in netdev_create()
144 return ovs_netdev_link(vport, parms->name); in netdev_create()
149 struct vport *vport = container_of(rcu, struct vport, rcu); in vport_netdev_free() local
151 if (vport->dev) in vport_netdev_free()
152 dev_put(vport->dev); in vport_netdev_free()
153 ovs_vport_free(vport); in vport_netdev_free()
156 void ovs_netdev_detach_dev(struct vport *vport) in ovs_netdev_detach_dev() argument
159 vport->dev->priv_flags &= ~IFF_OVS_DATAPATH; in ovs_netdev_detach_dev()
160 netdev_rx_handler_unregister(vport->dev); in ovs_netdev_detach_dev()
161 netdev_upper_dev_unlink(vport->dev, in ovs_netdev_detach_dev()
162 netdev_master_upper_dev_get(vport->dev)); in ovs_netdev_detach_dev()
163 dev_set_promiscuity(vport->dev, -1); in ovs_netdev_detach_dev()
167 static void netdev_destroy(struct vport *vport) in netdev_destroy() argument
170 if (vport->dev->priv_flags & IFF_OVS_DATAPATH) in netdev_destroy()
171 ovs_netdev_detach_dev(vport); in netdev_destroy()
174 call_rcu(&vport->rcu, vport_netdev_free); in netdev_destroy()
177 void ovs_netdev_tunnel_destroy(struct vport *vport) in ovs_netdev_tunnel_destroy() argument
180 if (vport->dev->priv_flags & IFF_OVS_DATAPATH) in ovs_netdev_tunnel_destroy()
181 ovs_netdev_detach_dev(vport); in ovs_netdev_tunnel_destroy()
187 if (vport->dev->reg_state == NETREG_REGISTERED) in ovs_netdev_tunnel_destroy()
188 rtnl_delete_link(vport->dev); in ovs_netdev_tunnel_destroy()
189 dev_put(vport->dev); in ovs_netdev_tunnel_destroy()
190 vport->dev = NULL; in ovs_netdev_tunnel_destroy()
193 call_rcu(&vport->rcu, vport_netdev_free); in ovs_netdev_tunnel_destroy()
198 struct vport *ovs_netdev_get_vport(struct net_device *dev) in ovs_netdev_get_vport()
201 return (struct vport *) in ovs_netdev_get_vport()