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()
64 ovs_vport_receive(vport, skb, skb_tunnel_info(skb)); in netdev_port_receive()
84 struct vport *local; in get_dpdev()
91 struct vport *ovs_netdev_link(struct vport *vport, const char *name) in ovs_netdev_link() argument
95 vport->dev = dev_get_by_name(ovs_dp_get_net(vport->dp), name); in ovs_netdev_link()
96 if (!vport->dev) { in ovs_netdev_link()
101 if (vport->dev->flags & IFF_LOOPBACK || in ovs_netdev_link()
102 (vport->dev->type != ARPHRD_ETHER && in ovs_netdev_link()
103 vport->dev->type != ARPHRD_NONE) || in ovs_netdev_link()
104 ovs_is_internal_dev(vport->dev)) { in ovs_netdev_link()
110 err = netdev_master_upper_dev_link(vport->dev, in ovs_netdev_link()
111 get_dpdev(vport->dp), in ovs_netdev_link()
116 err = netdev_rx_handler_register(vport->dev, netdev_frame_hook, in ovs_netdev_link()
117 vport); in ovs_netdev_link()
121 dev_disable_lro(vport->dev); in ovs_netdev_link()
122 dev_set_promiscuity(vport->dev, 1); in ovs_netdev_link()
123 vport->dev->priv_flags |= IFF_OVS_DATAPATH; in ovs_netdev_link()
126 return vport; in ovs_netdev_link()
129 netdev_upper_dev_unlink(vport->dev, get_dpdev(vport->dp)); in ovs_netdev_link()
133 dev_put(vport->dev); in ovs_netdev_link()
135 ovs_vport_free(vport); in ovs_netdev_link()
140 static struct vport *netdev_create(const struct vport_parms *parms) in netdev_create()
142 struct vport *vport; in netdev_create() local
144 vport = ovs_vport_alloc(0, &ovs_netdev_vport_ops, parms); in netdev_create()
145 if (IS_ERR(vport)) in netdev_create()
146 return vport; in netdev_create()
148 return ovs_netdev_link(vport, parms->name); in netdev_create()
153 struct vport *vport = container_of(rcu, struct vport, rcu); in vport_netdev_free() local
155 if (vport->dev) in vport_netdev_free()
156 dev_put(vport->dev); in vport_netdev_free()
157 ovs_vport_free(vport); in vport_netdev_free()
160 void ovs_netdev_detach_dev(struct vport *vport) in ovs_netdev_detach_dev() argument
163 vport->dev->priv_flags &= ~IFF_OVS_DATAPATH; in ovs_netdev_detach_dev()
164 netdev_rx_handler_unregister(vport->dev); in ovs_netdev_detach_dev()
165 netdev_upper_dev_unlink(vport->dev, in ovs_netdev_detach_dev()
166 netdev_master_upper_dev_get(vport->dev)); in ovs_netdev_detach_dev()
167 dev_set_promiscuity(vport->dev, -1); in ovs_netdev_detach_dev()
170 static void netdev_destroy(struct vport *vport) in netdev_destroy() argument
173 if (vport->dev->priv_flags & IFF_OVS_DATAPATH) in netdev_destroy()
174 ovs_netdev_detach_dev(vport); in netdev_destroy()
177 call_rcu(&vport->rcu, vport_netdev_free); in netdev_destroy()
180 void ovs_netdev_tunnel_destroy(struct vport *vport) in ovs_netdev_tunnel_destroy() argument
183 if (vport->dev->priv_flags & IFF_OVS_DATAPATH) in ovs_netdev_tunnel_destroy()
184 ovs_netdev_detach_dev(vport); in ovs_netdev_tunnel_destroy()
190 if (vport->dev->reg_state == NETREG_REGISTERED) in ovs_netdev_tunnel_destroy()
191 rtnl_delete_link(vport->dev); in ovs_netdev_tunnel_destroy()
192 dev_put(vport->dev); in ovs_netdev_tunnel_destroy()
193 vport->dev = NULL; in ovs_netdev_tunnel_destroy()
196 call_rcu(&vport->rcu, vport_netdev_free); in ovs_netdev_tunnel_destroy()
201 struct vport *ovs_netdev_get_vport(struct net_device *dev) in ovs_netdev_get_vport()
204 return (struct vport *) in ovs_netdev_get_vport()