Lines Matching refs:vport

31 	struct vport *vport;  in netdev_port_receive()  local
33 vport = ovs_netdev_get_vport(skb->dev); in netdev_port_receive()
34 if (unlikely(!vport)) in netdev_port_receive()
51 ovs_vport_receive(vport, skb, skb_tunnel_info(skb)); in netdev_port_receive()
71 struct vport *local; in get_dpdev()
77 struct vport *ovs_netdev_link(struct vport *vport, const char *name) in ovs_netdev_link() argument
81 vport->dev = dev_get_by_name(ovs_dp_get_net(vport->dp), name); in ovs_netdev_link()
82 if (!vport->dev) { in ovs_netdev_link()
87 if (vport->dev->flags & IFF_LOOPBACK || in ovs_netdev_link()
88 (vport->dev->type != ARPHRD_ETHER && in ovs_netdev_link()
89 vport->dev->type != ARPHRD_NONE) || in ovs_netdev_link()
90 ovs_is_internal_dev(vport->dev)) { in ovs_netdev_link()
96 err = netdev_master_upper_dev_link(vport->dev, in ovs_netdev_link()
97 get_dpdev(vport->dp), in ovs_netdev_link()
102 err = netdev_rx_handler_register(vport->dev, netdev_frame_hook, in ovs_netdev_link()
103 vport); in ovs_netdev_link()
107 dev_disable_lro(vport->dev); in ovs_netdev_link()
108 dev_set_promiscuity(vport->dev, 1); in ovs_netdev_link()
109 vport->dev->priv_flags |= IFF_OVS_DATAPATH; in ovs_netdev_link()
112 return vport; in ovs_netdev_link()
115 netdev_upper_dev_unlink(vport->dev, get_dpdev(vport->dp)); in ovs_netdev_link()
119 dev_put(vport->dev); in ovs_netdev_link()
121 ovs_vport_free(vport); in ovs_netdev_link()
126 static struct vport *netdev_create(const struct vport_parms *parms) in netdev_create()
128 struct vport *vport; in netdev_create() local
130 vport = ovs_vport_alloc(0, &ovs_netdev_vport_ops, parms); in netdev_create()
131 if (IS_ERR(vport)) in netdev_create()
132 return vport; in netdev_create()
134 return ovs_netdev_link(vport, parms->name); in netdev_create()
139 struct vport *vport = container_of(rcu, struct vport, rcu); in vport_netdev_free() local
141 if (vport->dev) in vport_netdev_free()
142 dev_put(vport->dev); in vport_netdev_free()
143 ovs_vport_free(vport); in vport_netdev_free()
146 void ovs_netdev_detach_dev(struct vport *vport) in ovs_netdev_detach_dev() argument
149 vport->dev->priv_flags &= ~IFF_OVS_DATAPATH; in ovs_netdev_detach_dev()
150 netdev_rx_handler_unregister(vport->dev); in ovs_netdev_detach_dev()
151 netdev_upper_dev_unlink(vport->dev, in ovs_netdev_detach_dev()
152 netdev_master_upper_dev_get(vport->dev)); in ovs_netdev_detach_dev()
153 dev_set_promiscuity(vport->dev, -1); in ovs_netdev_detach_dev()
156 static void netdev_destroy(struct vport *vport) in netdev_destroy() argument
159 if (netif_is_ovs_port(vport->dev)) in netdev_destroy()
160 ovs_netdev_detach_dev(vport); in netdev_destroy()
163 call_rcu(&vport->rcu, vport_netdev_free); in netdev_destroy()
166 void ovs_netdev_tunnel_destroy(struct vport *vport) in ovs_netdev_tunnel_destroy() argument
169 if (netif_is_ovs_port(vport->dev)) in ovs_netdev_tunnel_destroy()
170 ovs_netdev_detach_dev(vport); in ovs_netdev_tunnel_destroy()
176 if (vport->dev->reg_state == NETREG_REGISTERED) in ovs_netdev_tunnel_destroy()
177 rtnl_delete_link(vport->dev); in ovs_netdev_tunnel_destroy()
178 dev_put(vport->dev); in ovs_netdev_tunnel_destroy()
179 vport->dev = NULL; in ovs_netdev_tunnel_destroy()
182 call_rcu(&vport->rcu, vport_netdev_free); in ovs_netdev_tunnel_destroy()
187 struct vport *ovs_netdev_get_vport(struct net_device *dev) in ovs_netdev_get_vport()
190 return (struct vport *) in ovs_netdev_get_vport()