Lines Matching refs:vport
136 static struct vport *new_vport(const struct vport_parms *);
149 struct vport *vport = ovs_vport_ovsl_rcu(dp, OVSP_LOCAL); in ovs_dp_name() local
150 return ovs_vport_name(vport); in ovs_dp_name()
155 struct vport *local; in get_dpifindex()
189 struct vport *ovs_lookup_vport(const struct datapath *dp, u16 port_no) in ovs_lookup_vport()
191 struct vport *vport; in ovs_lookup_vport() local
195 hlist_for_each_entry_rcu(vport, head, dp_hash_node) { in ovs_lookup_vport()
196 if (vport->port_no == port_no) in ovs_lookup_vport()
197 return vport; in ovs_lookup_vport()
203 static struct vport *new_vport(const struct vport_parms *parms) in new_vport()
205 struct vport *vport; in new_vport() local
207 vport = ovs_vport_add(parms); in new_vport()
208 if (!IS_ERR(vport)) { in new_vport()
210 struct hlist_head *head = vport_hash_bucket(dp, vport->port_no); in new_vport()
212 hlist_add_head_rcu(&vport->dp_hash_node, head); in new_vport()
214 return vport; in new_vport()
217 void ovs_dp_detach_port(struct vport *p) in ovs_dp_detach_port()
231 const struct vport *p = OVS_CB(skb)->input_vport; in ovs_dp_process_packet()
537 struct vport *input_vport; in ovs_packet_cmd_execute()
1519 struct vport *vport; in lookup_datapath() local
1521 vport = ovs_vport_locate(net, nla_data(a[OVS_DP_ATTR_NAME])); in lookup_datapath()
1522 dp = vport && vport->port_no == OVSP_LOCAL ? vport->dp : NULL; in lookup_datapath()
1551 struct vport *vport; in ovs_dp_cmd_new() local
1609 vport = new_vport(&parms); in ovs_dp_cmd_new()
1610 if (IS_ERR(vport)) { in ovs_dp_cmd_new()
1611 err = PTR_ERR(vport); in ovs_dp_cmd_new()
1662 struct vport *vport; in __dp_destroy() local
1665 hlist_for_each_entry_safe(vport, n, &dp->ports[i], dp_hash_node) in __dp_destroy()
1666 if (vport->port_no != OVSP_LOCAL) in __dp_destroy()
1667 ovs_dp_detach_port(vport); in __dp_destroy()
1844 static int ovs_vport_cmd_fill_info(struct vport *vport, struct sk_buff *skb, in ovs_vport_cmd_fill_info() argument
1857 ovs_header->dp_ifindex = get_dpifindex(vport->dp); in ovs_vport_cmd_fill_info()
1859 if (nla_put_u32(skb, OVS_VPORT_ATTR_PORT_NO, vport->port_no) || in ovs_vport_cmd_fill_info()
1860 nla_put_u32(skb, OVS_VPORT_ATTR_TYPE, vport->ops->type) || in ovs_vport_cmd_fill_info()
1862 ovs_vport_name(vport)) || in ovs_vport_cmd_fill_info()
1863 nla_put_u32(skb, OVS_VPORT_ATTR_IFINDEX, vport->dev->ifindex)) in ovs_vport_cmd_fill_info()
1866 if (!net_eq(net, dev_net(vport->dev))) { in ovs_vport_cmd_fill_info()
1867 int id = peernet2id_alloc(net, dev_net(vport->dev)); in ovs_vport_cmd_fill_info()
1873 ovs_vport_get_stats(vport, &vport_stats); in ovs_vport_cmd_fill_info()
1879 if (ovs_vport_get_upcall_portids(vport, skb)) in ovs_vport_cmd_fill_info()
1882 err = ovs_vport_get_options(vport, skb); in ovs_vport_cmd_fill_info()
1902 struct sk_buff *ovs_vport_cmd_build_info(struct vport *vport, struct net *net, in ovs_vport_cmd_build_info() argument
1912 retval = ovs_vport_cmd_fill_info(vport, skb, net, portid, seq, 0, cmd); in ovs_vport_cmd_build_info()
1919 static struct vport *lookup_vport(struct net *net, in lookup_vport()
1924 struct vport *vport; in lookup_vport() local
1929 vport = ovs_vport_locate(net, nla_data(a[OVS_VPORT_ATTR_NAME])); in lookup_vport()
1930 if (!vport) in lookup_vport()
1933 ovs_header->dp_ifindex != get_dpifindex(vport->dp)) in lookup_vport()
1935 return vport; in lookup_vport()
1946 vport = ovs_vport_ovsl_rcu(dp, port_no); in lookup_vport()
1947 if (!vport) in lookup_vport()
1949 return vport; in lookup_vport()
1960 struct vport *vport; in update_headroom() local
1964 hlist_for_each_entry_rcu(vport, &dp->ports[i], dp_hash_node) { in update_headroom()
1965 dev = vport->dev; in update_headroom()
1974 hlist_for_each_entry_rcu(vport, &dp->ports[i], dp_hash_node) in update_headroom()
1975 netdev_set_rx_headroom(vport->dev, max_headroom); in update_headroom()
1984 struct vport *vport; in ovs_vport_cmd_new() local
2012 vport = ovs_vport_ovsl(dp, port_no); in ovs_vport_cmd_new()
2014 if (vport) in ovs_vport_cmd_new()
2022 vport = ovs_vport_ovsl(dp, port_no); in ovs_vport_cmd_new()
2023 if (!vport) in ovs_vport_cmd_new()
2035 vport = new_vport(&parms); in ovs_vport_cmd_new()
2036 err = PTR_ERR(vport); in ovs_vport_cmd_new()
2037 if (IS_ERR(vport)) { in ovs_vport_cmd_new()
2043 err = ovs_vport_cmd_fill_info(vport, reply, genl_info_net(info), in ovs_vport_cmd_new()
2047 if (netdev_get_fwd_headroom(vport->dev) > dp->max_headroom) in ovs_vport_cmd_new()
2050 netdev_set_rx_headroom(vport->dev, dp->max_headroom); in ovs_vport_cmd_new()
2068 struct vport *vport; in ovs_vport_cmd_set() local
2076 vport = lookup_vport(sock_net(skb->sk), info->userhdr, a); in ovs_vport_cmd_set()
2077 err = PTR_ERR(vport); in ovs_vport_cmd_set()
2078 if (IS_ERR(vport)) in ovs_vport_cmd_set()
2082 nla_get_u32(a[OVS_VPORT_ATTR_TYPE]) != vport->ops->type) { in ovs_vport_cmd_set()
2088 err = ovs_vport_set_options(vport, a[OVS_VPORT_ATTR_OPTIONS]); in ovs_vport_cmd_set()
2097 err = ovs_vport_set_upcall_portids(vport, ids); in ovs_vport_cmd_set()
2102 err = ovs_vport_cmd_fill_info(vport, reply, genl_info_net(info), in ovs_vport_cmd_set()
2123 struct vport *vport; in ovs_vport_cmd_del() local
2131 vport = lookup_vport(sock_net(skb->sk), info->userhdr, a); in ovs_vport_cmd_del()
2132 err = PTR_ERR(vport); in ovs_vport_cmd_del()
2133 if (IS_ERR(vport)) in ovs_vport_cmd_del()
2136 if (vport->port_no == OVSP_LOCAL) { in ovs_vport_cmd_del()
2141 err = ovs_vport_cmd_fill_info(vport, reply, genl_info_net(info), in ovs_vport_cmd_del()
2147 dp = vport->dp; in ovs_vport_cmd_del()
2148 if (netdev_get_fwd_headroom(vport->dev) == dp->max_headroom) in ovs_vport_cmd_del()
2150 netdev_reset_rx_headroom(vport->dev); in ovs_vport_cmd_del()
2151 ovs_dp_detach_port(vport); in ovs_vport_cmd_del()
2171 struct vport *vport; in ovs_vport_cmd_get() local
2179 vport = lookup_vport(sock_net(skb->sk), ovs_header, a); in ovs_vport_cmd_get()
2180 err = PTR_ERR(vport); in ovs_vport_cmd_get()
2181 if (IS_ERR(vport)) in ovs_vport_cmd_get()
2183 err = ovs_vport_cmd_fill_info(vport, reply, genl_info_net(info), in ovs_vport_cmd_get()
2211 struct vport *vport; in ovs_vport_cmd_dump() local
2214 hlist_for_each_entry_rcu(vport, &dp->ports[i], dp_hash_node) { in ovs_vport_cmd_dump()
2216 ovs_vport_cmd_fill_info(vport, skb, in ovs_vport_cmd_dump()
2343 struct vport *vport; in list_vports_from_net() local
2345 hlist_for_each_entry(vport, &dp->ports[i], dp_hash_node) { in list_vports_from_net()
2346 if (vport->ops->type != OVS_VPORT_TYPE_INTERNAL) in list_vports_from_net()
2349 if (dev_net(vport->dev) == dnet) in list_vports_from_net()
2350 list_add(&vport->detach_list, head); in list_vports_from_net()
2360 struct vport *vport, *vport_next; in ovs_exit_net() local
2375 list_for_each_entry_safe(vport, vport_next, &head, detach_list) { in ovs_exit_net()
2376 list_del(&vport->detach_list); in ovs_exit_net()
2377 ovs_dp_detach_port(vport); in ovs_exit_net()