[ovs-dev] [PATCH] vxlan: Fix for the packet loop issue in vxlan

Neelakantam Gaddam neelugaddam at gmail.com
Tue Jun 12 05:02:49 UTC 2018


Any update on this patch ?

On Wed, 23 May 2018 at 10:46 AM, Neelakantam Gaddam <neelugaddam at gmail.com>
wrote:

> This patch fixes the kernel soft lockup issue with vxlan configuration
> where the tunneled packet is sent on the same bridge where vxlan port is
> attched to. It detects the loop in vxlan xmit functionb and drops if loop
> is
> detected.
>
> Signed-off-by: Neelakantam Gaddam <neelugaddam at gmail.com>
> ---
>  datapath/linux/compat/vxlan.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/datapath/linux/compat/vxlan.c b/datapath/linux/compat/vxlan.c
> index 287dad2..00562fa 100644
> --- a/datapath/linux/compat/vxlan.c
> +++ b/datapath/linux/compat/vxlan.c
> @@ -1115,7 +1115,8 @@ static void vxlan_xmit_one(struct sk_buff *skb,
> struct net_device *dev,
>                         goto tx_error;
>                 }
>
> -               if (rt->dst.dev == dev) {
> +               if ((rt->dst.dev == dev) ||
> +                       (OVS_CB(skb)->input_vport->dev == rt->dst.dev)) {
>                         netdev_dbg(dev, "circular route to %pI4\n",
>                                    &dst->sin.sin_addr.s_addr);
>                         dev->stats.collisions++;
> @@ -1174,7 +1175,8 @@ static void vxlan_xmit_one(struct sk_buff *skb,
> struct net_device *dev,
>                         goto tx_error;
>                 }
>
> -               if (ndst->dev == dev) {
> +               if ((ndst->dev == dev) ||
> +                       (OVS_CB(skb)->input_vport->dev == ndst->dev)) {
>                         netdev_dbg(dev, "circular route to %pI6\n",
>                                    &dst->sin6.sin6_addr);
>                         dst_release(ndst);
> --
> 1.8.3.1
>
>


More information about the dev mailing list