diff options
| author | Paolo Abeni <pabeni@redhat.com> | 2016-02-12 09:43:57 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2016-02-16 20:21:48 -0500 |
| commit | d71785ffc7e7cae3fbdc4ea8a9d05b7a1c59f7b8 (patch) | |
| tree | 142081880ca68e3f066df14ecfb2371b229e76fd /net/openvswitch | |
| parent | 0c1d70af924b966cc71e9e48920b2b635441aa50 (diff) | |
net: add dst_cache to ovs vxlan lwtunnel
In case of UDP traffic with datagram length
below MTU this give about 2% performance increase
when tunneling over ipv4 and about 60% when tunneling
over ipv6
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Suggested-and-acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/openvswitch')
| -rw-r--r-- | net/openvswitch/Kconfig | 1 | ||||
| -rw-r--r-- | net/openvswitch/flow_netlink.c | 6 |
2 files changed, 7 insertions, 0 deletions
diff --git a/net/openvswitch/Kconfig b/net/openvswitch/Kconfig index d143aa9f6654..cd5fd9d728a7 100644 --- a/net/openvswitch/Kconfig +++ b/net/openvswitch/Kconfig | |||
| @@ -10,6 +10,7 @@ config OPENVSWITCH | |||
| 10 | select LIBCRC32C | 10 | select LIBCRC32C |
| 11 | select MPLS | 11 | select MPLS |
| 12 | select NET_MPLS_GSO | 12 | select NET_MPLS_GSO |
| 13 | select DST_CACHE | ||
| 13 | ---help--- | 14 | ---help--- |
| 14 | Open vSwitch is a multilayer Ethernet switch targeted at virtualized | 15 | Open vSwitch is a multilayer Ethernet switch targeted at virtualized |
| 15 | environments. In addition to supporting a variety of features | 16 | environments. In addition to supporting a variety of features |
diff --git a/net/openvswitch/flow_netlink.c b/net/openvswitch/flow_netlink.c index d1bd4a45ca2d..58b8efc23668 100644 --- a/net/openvswitch/flow_netlink.c +++ b/net/openvswitch/flow_netlink.c | |||
| @@ -1959,6 +1959,12 @@ static int validate_and_copy_set_tun(const struct nlattr *attr, | |||
| 1959 | if (!tun_dst) | 1959 | if (!tun_dst) |
| 1960 | return -ENOMEM; | 1960 | return -ENOMEM; |
| 1961 | 1961 | ||
| 1962 | err = dst_cache_init(&tun_dst->u.tun_info.dst_cache, GFP_KERNEL); | ||
| 1963 | if (err) { | ||
| 1964 | dst_release((struct dst_entry *)tun_dst); | ||
| 1965 | return err; | ||
| 1966 | } | ||
| 1967 | |||
| 1962 | a = __add_action(sfa, OVS_KEY_ATTR_TUNNEL_INFO, NULL, | 1968 | a = __add_action(sfa, OVS_KEY_ATTR_TUNNEL_INFO, NULL, |
| 1963 | sizeof(*ovs_tun), log); | 1969 | sizeof(*ovs_tun), log); |
| 1964 | if (IS_ERR(a)) { | 1970 | if (IS_ERR(a)) { |
