diff mbox

[ovs-dev,1/2] datapath: backport: net: vxlan: lwt: Fix vxlan local traffic.

Message ID 1470693281-39358-1-git-send-email-pshelar@ovn.org
State Accepted
Headers show

Commit Message

Pravin Shelar Aug. 8, 2016, 9:54 p.m. UTC
Upstream commit:
    commit bbec7802c6948c8626b71a4fe31283cb4691c358
    Author: pravin shelar <pshelar@ovn.org>
    Date:   Fri Aug 5 17:45:37 2016 -0700

    net: vxlan: lwt: Fix vxlan local traffic.

    vxlan driver has bypass for local vxlan traffic, but that
    depends on information about all VNIs on local system in
    vxlan driver. This is not available in case of LWT.
    Therefore following patch disable encap bypass for LWT
    vxlan traffic.

    Fixes: ee122c79d42 ("vxlan: Flow based tunneling").
    Reported-by: Jakub Libosvar <jlibosva@redhat.com>
    Signed-off-by: Pravin B Shelar <pshelar@ovn.org>
    Acked-by: Jiri Benc <jbenc@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

Signed-off-by: Pravin B Shelar <pshelar@ovn.org>
---
 datapath/linux/compat/vxlan.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Jesse Gross Aug. 9, 2016, 5:48 p.m. UTC | #1
On Mon, Aug 8, 2016 at 2:54 PM, Pravin B Shelar <pshelar@ovn.org> wrote:
> Upstream commit:
>     commit bbec7802c6948c8626b71a4fe31283cb4691c358
>     Author: pravin shelar <pshelar@ovn.org>
>     Date:   Fri Aug 5 17:45:37 2016 -0700
>
>     net: vxlan: lwt: Fix vxlan local traffic.
>
>     vxlan driver has bypass for local vxlan traffic, but that
>     depends on information about all VNIs on local system in
>     vxlan driver. This is not available in case of LWT.
>     Therefore following patch disable encap bypass for LWT
>     vxlan traffic.
>
>     Fixes: ee122c79d42 ("vxlan: Flow based tunneling").
>     Reported-by: Jakub Libosvar <jlibosva@redhat.com>
>     Signed-off-by: Pravin B Shelar <pshelar@ovn.org>
>     Acked-by: Jiri Benc <jbenc@redhat.com>
>     Signed-off-by: David S. Miller <davem@davemloft.net>
>
> Signed-off-by: Pravin B Shelar <pshelar@ovn.org>

Acked-by: Jesse Gross <jesse@kernel.org>
diff mbox

Patch

diff --git a/datapath/linux/compat/vxlan.c b/datapath/linux/compat/vxlan.c
index 75b811b..8ea8d4d 100644
--- a/datapath/linux/compat/vxlan.c
+++ b/datapath/linux/compat/vxlan.c
@@ -1113,7 +1113,7 @@  static void vxlan_xmit_one(struct sk_buff *skb, struct net_device *dev,
 		}
 
 		/* Bypass encapsulation if the destination is local */
-		if (rt->rt_flags & RTCF_LOCAL &&
+		if (!info && rt->rt_flags & RTCF_LOCAL &&
 		    !(rt->rt_flags & (RTCF_BROADCAST | RTCF_MULTICAST))) {
 			struct vxlan_dev *dst_vxlan;
 
@@ -1173,7 +1173,7 @@  static void vxlan_xmit_one(struct sk_buff *skb, struct net_device *dev,
 
 		/* Bypass encapsulation if the destination is local */
 		rt6i_flags = ((struct rt6_info *)ndst)->rt6i_flags;
-		if (rt6i_flags & RTF_LOCAL &&
+		if (!info && rt6i_flags & RTF_LOCAL &&
 		    !(rt6i_flags & (RTCF_BROADCAST | RTCF_MULTICAST))) {
 			struct vxlan_dev *dst_vxlan;