Lines Matching refs:vport

107 struct vport *ovs_vport_locate(const struct net *net, const char *name)  in ovs_vport_locate()
110 struct vport *vport; in ovs_vport_locate() local
112 hlist_for_each_entry_rcu(vport, bucket, hash_node) in ovs_vport_locate()
113 if (!strcmp(name, ovs_vport_name(vport)) && in ovs_vport_locate()
114 net_eq(ovs_dp_get_net(vport->dp), net)) in ovs_vport_locate()
115 return vport; in ovs_vport_locate()
131 struct vport *ovs_vport_alloc(int priv_size, const struct vport_ops *ops, in ovs_vport_alloc()
134 struct vport *vport; in ovs_vport_alloc() local
137 alloc_size = sizeof(struct vport); in ovs_vport_alloc()
143 vport = kzalloc(alloc_size, GFP_KERNEL); in ovs_vport_alloc()
144 if (!vport) in ovs_vport_alloc()
147 vport->dp = parms->dp; in ovs_vport_alloc()
148 vport->port_no = parms->port_no; in ovs_vport_alloc()
149 vport->ops = ops; in ovs_vport_alloc()
150 INIT_HLIST_NODE(&vport->dp_hash_node); in ovs_vport_alloc()
152 if (ovs_vport_set_upcall_portids(vport, parms->upcall_portids)) { in ovs_vport_alloc()
153 kfree(vport); in ovs_vport_alloc()
157 return vport; in ovs_vport_alloc()
171 void ovs_vport_free(struct vport *vport) in ovs_vport_free() argument
176 kfree(rcu_dereference_raw(vport->upcall_portids)); in ovs_vport_free()
177 kfree(vport); in ovs_vport_free()
200 struct vport *ovs_vport_add(const struct vport_parms *parms) in ovs_vport_add()
203 struct vport *vport; in ovs_vport_add() local
212 vport = ops->create(parms); in ovs_vport_add()
213 if (IS_ERR(vport)) { in ovs_vport_add()
215 return vport; in ovs_vport_add()
218 bucket = hash_bucket(ovs_dp_get_net(vport->dp), in ovs_vport_add()
219 ovs_vport_name(vport)); in ovs_vport_add()
220 hlist_add_head_rcu(&vport->hash_node, bucket); in ovs_vport_add()
221 return vport; in ovs_vport_add()
247 int ovs_vport_set_options(struct vport *vport, struct nlattr *options) in ovs_vport_set_options() argument
249 if (!vport->ops->set_options) in ovs_vport_set_options()
251 return vport->ops->set_options(vport, options); in ovs_vport_set_options()
262 void ovs_vport_del(struct vport *vport) in ovs_vport_del() argument
266 hlist_del_rcu(&vport->hash_node); in ovs_vport_del()
267 module_put(vport->ops->owner); in ovs_vport_del()
268 vport->ops->destroy(vport); in ovs_vport_del()
281 void ovs_vport_get_stats(struct vport *vport, struct ovs_vport_stats *stats) in ovs_vport_get_stats() argument
286 dev_stats = dev_get_stats(vport->dev, &temp); in ovs_vport_get_stats()
314 int ovs_vport_get_options(const struct vport *vport, struct sk_buff *skb) in ovs_vport_get_options() argument
319 if (!vport->ops->get_options) in ovs_vport_get_options()
326 err = vport->ops->get_options(vport, skb); in ovs_vport_get_options()
349 int ovs_vport_set_upcall_portids(struct vport *vport, const struct nlattr *ids) in ovs_vport_set_upcall_portids() argument
356 old = ovsl_dereference(vport->upcall_portids); in ovs_vport_set_upcall_portids()
367 rcu_assign_pointer(vport->upcall_portids, vport_portids); in ovs_vport_set_upcall_portids()
388 int ovs_vport_get_upcall_portids(const struct vport *vport, in ovs_vport_get_upcall_portids() argument
393 ids = rcu_dereference_ovsl(vport->upcall_portids); in ovs_vport_get_upcall_portids()
395 if (vport->dp->user_features & OVS_DP_F_VPORT_PIDS) in ovs_vport_get_upcall_portids()
413 u32 ovs_vport_find_upcall_portid(const struct vport *vport, struct sk_buff *skb) in ovs_vport_find_upcall_portid() argument
419 ids = rcu_dereference(vport->upcall_portids); in ovs_vport_find_upcall_portid()
439 int ovs_vport_receive(struct vport *vport, struct sk_buff *skb, in ovs_vport_receive() argument
445 OVS_CB(skb)->input_vport = vport; in ovs_vport_receive()
447 if (unlikely(dev_net(skb->dev) != ovs_dp_get_net(vport->dp))) { in ovs_vport_receive()
469 struct vport *vport = container_of(rcu, struct vport, rcu); in free_vport_rcu() local
471 ovs_vport_free(vport); in free_vport_rcu()
474 void ovs_vport_deferred_free(struct vport *vport) in ovs_vport_deferred_free() argument
476 if (!vport) in ovs_vport_deferred_free()
479 call_rcu(&vport->rcu, free_vport_rcu); in ovs_vport_deferred_free()
493 void ovs_vport_send(struct vport *vport, struct sk_buff *skb) in ovs_vport_send() argument
495 int mtu = vport->dev->mtu; in ovs_vport_send()
499 vport->dev->name, in ovs_vport_send()
501 vport->dev->stats.tx_errors++; in ovs_vport_send()
505 skb->dev = vport->dev; in ovs_vport_send()
506 vport->ops->send(skb); in ovs_vport_send()