On 07/21/15 at 10:30am, Alexei Starovoitov wrote: > RX: > >+ info->mode = IP_TUNNEL_INFO_RX; > >+ info->key.tun_flags = TUNNEL_KEY; > >+ info->key.tun_id = cpu_to_be64(vni >> 8); > ... > TX: > >+ dst_port = info->key.tp_dst ? : vxlan->dst_port; > >+ vni = be64_to_cpu(info->key.tun_id); > > I think the copy paste of ovs_tunnel_info into ip_tunnel_info > can be improved. In particular instead of '__be64 tun_id' > we can use '__u64 tun_id' which will avoid extra byteswaps for rx/tx > paths. > > netlink for this part also seems inconsistent. > In the patch 16: > +static const struct nla_policy ip_tun_policy[IP_TUN_MAX + 1] = { > + [IP_TUN_ID] = { .type = NLA_U64 }, > ... > + if (tb[IP_TUN_ID]) > + tun_info->key.tun_id = nla_get_u64(tb[IP_TUN_ID]); > > I think nla_get_be64 should be there? > and with my suggestion we can add be64_to_cpu() here instead > of doing it per packet. > Thoughts?
I like this. The be64 originates from how OVS stores the tun_id in the flow key. I agree that it makes sense to limit and delay the byteswaps to when OVS inherits the flow key from the ip_tunnel_info. I will send a follow-up. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev