[ovs-dev] [PATCH v2] datapath-windows: Update OvsIPv4TunnelKey flags in geneve decap.

Sairam Venugopal vsairam at vmware.com
Thu Oct 19 21:14:46 UTC 2017


Thanks for fixing this.

Alin/Guru - Can we back port this to 2.8 too? This causes flow misses when geneve options are present.

Acked-by: Sairam Venugopal <vsairam at vmware.com>






On 10/19/17, 1:26 PM, "ovs-dev-bounces at openvswitch.org on behalf of Anand Kumar" <ovs-dev-bounces at openvswitch.org on behalf of kumaranand at vmware.com> wrote:

>Currently, the OvsLookupFlow fails for the decap packet,
>when the Geneve options are present in the packet as the OvsIPv4TunnelKey
>flags are not set in the Geneve decap.
>
>Set the OvsIPv4TunnelKey flags OVS_TNL_F_OAM and OVS_TNL_F_CRT_OPT
>in OvsDecapGeneve based on the geneve header. Also set OVS_TNL_F_GENEVE_OPT
>if the packet has geneve options.
>
>Signed-off-by: Anand Kumar <kumaranand at vmware.com>
>---
> datapath-windows/ovsext/Geneve.c | 9 +++++----
> 1 file changed, 5 insertions(+), 4 deletions(-)
>
>diff --git a/datapath-windows/ovsext/Geneve.c b/datapath-windows/ovsext/Geneve.c
>index 43374e2..6dca69b 100644
>--- a/datapath-windows/ovsext/Geneve.c
>+++ b/datapath-windows/ovsext/Geneve.c
>@@ -324,10 +324,10 @@ NDIS_STATUS OvsDecapGeneve(POVS_SWITCH_CONTEXT switchContext,
>         status = STATUS_NDIS_INVALID_PACKET;
>         goto dropNbl;
>     }
>-    tunKey->flags = OVS_TNL_F_KEY;
>-    if (geneveHdr->oam) {
>-        tunKey->flags |= OVS_TNL_F_OAM;
>-    }
>+    /* Update tunnelKey flags. */
>+    tunKey->flags = OVS_TNL_F_KEY | (geneveHdr->oam ? OVS_TNL_F_OAM : 0) |
>+                    (geneveHdr->critical ? OVS_TNL_F_CRT_OPT : 0);
>+
>     tunKey->tunnelId = GENEVE_VNI_TO_TUNNELID(geneveHdr->vni);
>     tunKey->tunOptLen = (uint8)geneveHdr->optLen * 4;
>     if (tunKey->tunOptLen > TUN_OPT_MAX_LEN ||
>@@ -349,6 +349,7 @@ NDIS_STATUS OvsDecapGeneve(POVS_SWITCH_CONTEXT switchContext,
>             memcpy(TunnelKeyGetOptions(tunKey), optStart, tunKey->tunOptLen);
>         }
>         NdisAdvanceNetBufferDataStart(curNb, tunKey->tunOptLen, FALSE, NULL);
>+        tunKey->flags |= OVS_TNL_F_GENEVE_OPT;
>     }
> 
>     return NDIS_STATUS_SUCCESS;
>-- 
>2.9.3.windows.1
>
>_______________________________________________
>dev mailing list
>dev at openvswitch.org
>https://urldefense.proofpoint.com/v2/url?u=https-3A__mail.openvswitch.org_mailman_listinfo_ovs-2Ddev&d=DwICAg&c=uilaK90D4TOVoH58JNXRgQ&r=Z6vowHUOjP5ysP_g372c49Nqc1vEKqHKNBkR5Q5Z7uo&m=BRjHHHPFJJP1H7BWHjwF0OS4UFpTbBiTQNM1SPvh51w&s=JCowvVY7CQ4CxJWnx8dPPqUbvS346xU066Dd0DnMI8A&e=


More information about the dev mailing list