[ovs-dev] [PATCH] [PATCH v4] datapath-windows: Output to multiple VXLAN ports

Sairam Venugopal vsairam at vmware.com
Mon Sep 14 18:09:01 UTC 2015


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


On 9/10/15, 3:09 PM, "Alin Serdean" <aserdean at cloudbasesolutions.com>
wrote:

>If we have a flow rule of the following form:
> actions=strip_vlan,set_tunnel:0x3e9,15,16,17 (Where port 15, 16 and 17
>are
> VXLAN OF ports with different tunnelling information)
>
>Current implementation is that if a packet will hit that specific flow,
>only one packet will be sent out with the first tunnelling information.
>
>This patch saves the initial packet source port for further use of the
>currently implemented pipeline and ignores the latter if it
>is the last tunnelling port.
>
>Signed-off-by: Alin Gabriel Serdean <aserdean at cloudbasesolutions.com>
>---
>This patch should also be applied on 2.4
>v5 Do not save the save the NIC index and source port ID.
>v4 Relax condition when saving ports.
>v3 Fix formatting.
>v2 Address comments.
>---
>---
> datapath-windows/ovsext/Actions.c | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
>
>diff --git a/datapath-windows/ovsext/Actions.c
>b/datapath-windows/ovsext/Actions.c
>index c8de7c5..bfe5d7f 100644
>--- a/datapath-windows/ovsext/Actions.c
>+++ b/datapath-windows/ovsext/Actions.c
>@@ -947,7 +947,6 @@ OvsOutputBeforeSetAction(OvsForwardingContext
>*ovsFwdCtx)
> {
>     PNET_BUFFER_LIST newNbl;
>     NDIS_STATUS status = NDIS_STATUS_SUCCESS;
>-    PNET_BUFFER nb;
> 
>     /*
>      * Create a copy and work on the copy after this point. The original
>NBL is
>@@ -967,14 +966,14 @@ OvsOutputBeforeSetAction(OvsForwardingContext
>*ovsFwdCtx)
>      * XXX Head room needs to include the additional encap.
>      * XXX copySize check is not considering multiple NBs.
>      */
>-    nb = NET_BUFFER_LIST_FIRST_NB(ovsFwdCtx->curNbl);
>     newNbl = OvsPartialCopyNBL(ovsFwdCtx->switchContext,
>ovsFwdCtx->curNbl,
>                                0, 0, TRUE /*copy NBL info*/);
> 
>     ASSERT(ovsFwdCtx->destPortsSizeOut > 0 ||
>            ovsFwdCtx->tunnelTxNic != NULL || ovsFwdCtx->tunnelRxNic !=
>NULL);
> 
>-    /* Send the original packet out */
>+    /* Send the original packet out and save the original source port
>number */
>+    UINT32 tempVportNo = ovsFwdCtx->srcVportNo;
>     status = OvsOutputForwardingCtx(ovsFwdCtx);
>     ASSERT(ovsFwdCtx->curNbl == NULL);
>     ASSERT(ovsFwdCtx->destPortsSizeOut == 0);
>@@ -992,7 +991,7 @@ OvsOutputBeforeSetAction(OvsForwardingContext
>*ovsFwdCtx)
>         OvsCompleteNBL(ovsFwdCtx->switchContext, newNbl, TRUE);
>     } else {
>         status = OvsInitForwardingCtx(ovsFwdCtx,
>ovsFwdCtx->switchContext,
>-                                      newNbl, ovsFwdCtx->srcVportNo, 0,
>+                                      newNbl, tempVportNo, 0,
>                  
>NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL(newNbl),
>                                       ovsFwdCtx->completionList,
>                                       &ovsFwdCtx->layers, FALSE);
>-- 
>1.9.5.msysgit.0
>_______________________________________________
>dev mailing list
>dev at openvswitch.org
>https://urldefense.proofpoint.com/v2/url?u=http-3A__openvswitch.org_mailma
>n_listinfo_dev&d=BQIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=Dc
>ruz40PROJ40ROzSpxyQSLw6fcrOWpJgEcEmNR3JEQ&m=iVd0wpAwaSfU5xL5Nbr4Y7eYotstyp
>AspBeloutEaVA&s=PktnT3avtbzDDgHPB4EcKAkjn5tgUrZgO-wP0-6II-c&e= 




More information about the dev mailing list