On 7/21/15 1:43 AM, Thomas Graf wrote:
This prepares the VXLAN device to be steered by the routing and other subsystems which allows to support encapsulation for a large number of tunnel endpoints and tunnel ids through a single net_device which improves the scalability.
+1. looks very useful. 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? -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html