Acked-by: Sairam Venugopal <vsai...@vmware.com>

On 5/17/16, 8:23 AM, "Paul Boca" <pb...@cloudbasesolutions.com> wrote:

>Add VLAN to STT header and on receive applyit to encapsulated packet
>
>Signed-off-by: Paul-Daniel Boca <pb...@cloudbasesolutions.com>
>---
> datapath-windows/ovsext/Stt.c | 22 +++++++++++++++++++++-
> 1 file changed, 21 insertions(+), 1 deletion(-)
>
>diff --git a/datapath-windows/ovsext/Stt.c b/datapath-windows/ovsext/Stt.c
>index 406e690..5b5d950 100644
>--- a/datapath-windows/ovsext/Stt.c
>+++ b/datapath-windows/ovsext/Stt.c
>@@ -156,6 +156,7 @@ OvsDoEncapStt(POVS_VPORT_ENTRY vport,
>     PUINT8 bufferStart;
>     ULONG mss = 0;
>     NDIS_TCP_LARGE_SEND_OFFLOAD_NET_BUFFER_LIST_INFO lsoInfo;
>+    PVOID vlanTagValue;
> 
>     curNb = NET_BUFFER_LIST_FIRST_NB(curNbl);
> 
>@@ -173,6 +174,7 @@ OvsDoEncapStt(POVS_VPORT_ENTRY vport,
>     NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO csumInfo;
>     csumInfo.Value = NET_BUFFER_LIST_INFO(curNbl,
>                  
>TcpIpChecksumNetBufferListInfo);
>+    vlanTagValue = NET_BUFFER_LIST_INFO(curNbl,
>Ieee8021QNetBufferListInfo);
>     *newNbl = OvsPartialCopyNBL(switchContext, curNbl, 0, headRoom,
>                                 FALSE /*copy NblInfo*/);
>     if (*newNbl == NULL) {
>@@ -313,8 +315,16 @@ OvsDoEncapStt(POVS_VPORT_ENTRY vport,
>         }
>     }
> 
>-    sttHdr->reserved = 0;
>+    /* Set VLAN tag */
>     sttHdr->vlanTCI = 0;
>+    if (vlanTagValue) {
>+        PNDIS_NET_BUFFER_LIST_8021Q_INFO vlanTag =
>+            (PNDIS_NET_BUFFER_LIST_8021Q_INFO)(PVOID *)&vlanTagValue;
>+        sttHdr->vlanTCI = htons(vlanTag->TagHeader.VlanId |
>OVSWIN_VLAN_CFI |
>+                                (vlanTag->TagHeader.UserPriority << 13));
>+    }
>+
>+    sttHdr->reserved = 0;
>     sttHdr->key = tunKey->tunnelId;
>     /* Zero out stt padding */
>     *(uint16 *)(sttHdr + 1) = 0;
>@@ -900,6 +910,16 @@ OvsDecapStt(POVS_SWITCH_CONTEXT switchContext,
>     tunKey->ttl = ipHdr->ttl;
>     tunKey->pad = 0;
> 
>+    /* Apply VLAN tag if present */
>+    if (ntohs(sttHdr->vlanTCI) & OVSWIN_VLAN_CFI) {
>+        NDIS_NET_BUFFER_LIST_8021Q_INFO vlanTag;
>+        vlanTag.Value = 0;
>+        vlanTag.TagHeader.VlanId = ntohs(sttHdr->vlanTCI) & 0xfff;
>+        vlanTag.TagHeader.UserPriority = ntohs(sttHdr->vlanTCI) >> 13;
>+        NET_BUFFER_LIST_INFO(*newNbl,
>+            Ieee8021QNetBufferListInfo) = vlanTag.Value;
>+    }
>+
>     /* Set Checksum and LSO offload flags */
>     OvsDecapSetOffloads(newNbl, sttHdr);
> 
>-- 
>2.7.2.windows.1
>_______________________________________________
>dev mailing list
>dev@openvswitch.org
>https://urldefense.proofpoint.com/v2/url?u=http-3A__openvswitch.org_mailma
>n_listinfo_dev&d=CwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=Dc
>ruz40PROJ40ROzSpxyQSLw6fcrOWpJgEcEmNR3JEQ&m=QvWslawbaDcox_mJS25wJEYrMz746s
>dvPy5kJgGNIIw&s=wn-bLozMCaqiKEqElD3Al-1ugBt-EaTqaTy60N3m-qo&e= 

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to