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()
50 ovs_vport_receive(vport, skb, skb_tunnel_info(skb)); in netdev_port_receive()
70 struct vport *local; in get_dpdev()
76 struct vport *ovs_netdev_link(struct vport *vport, const char *name) in ovs_netdev_link() argument
80 vport->dev = dev_get_by_name(ovs_dp_get_net(vport->dp), name); in ovs_netdev_link()
81 if (!vport->dev) { in ovs_netdev_link()
85 netdev_tracker_alloc(vport->dev, &vport->dev_tracker, GFP_KERNEL); in ovs_netdev_link()
86 if (vport->dev->flags & IFF_LOOPBACK || in ovs_netdev_link()
87 (vport->dev->type != ARPHRD_ETHER && in ovs_netdev_link()
88 vport->dev->type != ARPHRD_NONE) || in ovs_netdev_link()
89 ovs_is_internal_dev(vport->dev)) { in ovs_netdev_link()
95 err = netdev_master_upper_dev_link(vport->dev, in ovs_netdev_link()
96 get_dpdev(vport->dp), in ovs_netdev_link()
101 err = netdev_rx_handler_register(vport->dev, netdev_frame_hook, in ovs_netdev_link()
102 vport); in ovs_netdev_link()
106 dev_disable_lro(vport->dev); in ovs_netdev_link()
107 dev_set_promiscuity(vport->dev, 1); in ovs_netdev_link()
108 vport->dev->priv_flags |= IFF_OVS_DATAPATH; in ovs_netdev_link()
111 return vport; in ovs_netdev_link()
114 netdev_upper_dev_unlink(vport->dev, get_dpdev(vport->dp)); in ovs_netdev_link()
118 netdev_put(vport->dev, &vport->dev_tracker); in ovs_netdev_link()
120 ovs_vport_free(vport); in ovs_netdev_link()
125 static struct vport *netdev_create(const struct vport_parms *parms) in netdev_create()
127 struct vport *vport; in netdev_create() local
129 vport = ovs_vport_alloc(0, &ovs_netdev_vport_ops, parms); in netdev_create()
130 if (IS_ERR(vport)) in netdev_create()
131 return vport; in netdev_create()
133 return ovs_netdev_link(vport, parms->name); in netdev_create()
138 struct vport *vport = container_of(rcu, struct vport, rcu); in vport_netdev_free() local
140 netdev_put(vport->dev, &vport->dev_tracker); in vport_netdev_free()
141 ovs_vport_free(vport); in vport_netdev_free()
144 void ovs_netdev_detach_dev(struct vport *vport) in ovs_netdev_detach_dev() argument
147 vport->dev->priv_flags &= ~IFF_OVS_DATAPATH; in ovs_netdev_detach_dev()
148 netdev_rx_handler_unregister(vport->dev); in ovs_netdev_detach_dev()
149 netdev_upper_dev_unlink(vport->dev, in ovs_netdev_detach_dev()
150 netdev_master_upper_dev_get(vport->dev)); in ovs_netdev_detach_dev()
151 dev_set_promiscuity(vport->dev, -1); in ovs_netdev_detach_dev()
154 static void netdev_destroy(struct vport *vport) in netdev_destroy() argument
157 if (netif_is_ovs_port(vport->dev)) in netdev_destroy()
158 ovs_netdev_detach_dev(vport); in netdev_destroy()
161 call_rcu(&vport->rcu, vport_netdev_free); in netdev_destroy()
164 void ovs_netdev_tunnel_destroy(struct vport *vport) in ovs_netdev_tunnel_destroy() argument
167 if (netif_is_ovs_port(vport->dev)) in ovs_netdev_tunnel_destroy()
168 ovs_netdev_detach_dev(vport); in ovs_netdev_tunnel_destroy()
174 if (vport->dev->reg_state == NETREG_REGISTERED) in ovs_netdev_tunnel_destroy()
175 rtnl_delete_link(vport->dev, 0, NULL); in ovs_netdev_tunnel_destroy()
176 netdev_put(vport->dev, &vport->dev_tracker); in ovs_netdev_tunnel_destroy()
177 vport->dev = NULL; in ovs_netdev_tunnel_destroy()
180 call_rcu(&vport->rcu, vport_netdev_free); in ovs_netdev_tunnel_destroy()
185 struct vport *ovs_netdev_get_vport(struct net_device *dev) in ovs_netdev_get_vport()
188 return (struct vport *) in ovs_netdev_get_vport()