[ovs-dev] [PATCH 03/14] datapath-windows: We don't need to keep validation ports in ovs

Samuel Ghinet sghinet at cloudbasesolutions.com
Tue Sep 30 14:45:51 UTC 2014


Validation ports are used internally by the hyper-v switch to validate
and verify settings for the real hyper-v switch ports that will be
connected to the VNic. The validation ports are of no use to us - we
must skip handling them, and return STATUS_SUCCESS as the OID result.

Signed-off-by: Samuel Ghinet <sghinet at cloudbasesolutions.com>
---
 datapath-windows/ovsext/Oid.c   | 4 ++++
 datapath-windows/ovsext/Vport.c | 8 +++++---
 datapath-windows/ovsext/Vport.h | 1 -
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/datapath-windows/ovsext/Oid.c b/datapath-windows/ovsext/Oid.c
index 39e47c2..f67bf11 100644
--- a/datapath-windows/ovsext/Oid.c
+++ b/datapath-windows/ovsext/Oid.c
@@ -159,6 +159,10 @@ OvsProcessSetOidPort(POVS_SWITCH_CONTEXT switchObject,
         goto done;
     }
 
+    if (portParam->IsValidationPort) {
+        return NDIS_STATUS_SUCCESS;
+    }
+
     switch(setInfo->Oid) {
     case OID_SWITCH_PORT_CREATE:
         status = HvOnCreatePort(switchObject, portParam);
diff --git a/datapath-windows/ovsext/Vport.c b/datapath-windows/ovsext/Vport.c
index 198acdf..b480e69 100644
--- a/datapath-windows/ovsext/Vport.c
+++ b/datapath-windows/ovsext/Vport.c
@@ -601,7 +601,6 @@ static VOID
 OvsInitVportWithPortParam(POVS_VPORT_ENTRY vport,
                           PNDIS_SWITCH_PORT_PARAMETERS portParam)
 {
-    vport->isValidationPort = portParam->IsValidationPort;
     vport->portType = portParam->PortType;
     vport->portState = portParam->PortState;
     vport->portId = portParam->PortId;
@@ -690,7 +689,6 @@ OvsInitPhysNicVport(POVS_VPORT_ENTRY vport,
                     POVS_VPORT_ENTRY virtVport,
                     UINT32 nicIndex)
 {
-    vport->isValidationPort = virtVport->isValidationPort;
     vport->portType = virtVport->portType;
     vport->portState = virtVport->portState;
     vport->portId = virtVport->portId;
@@ -830,6 +828,11 @@ OvsAddConfiguredSwitchPorts(POVS_SWITCH_CONTEXT switchContext)
 
     for (arrIndex = 0; arrIndex < portArray->NumElements; arrIndex++) {
          portParam = NDIS_SWITCH_PORT_AT_ARRAY_INDEX(portArray, arrIndex);
+
+         if (portParam->IsValidationPort) {
+             continue;
+         }
+
          vport = (POVS_VPORT_ENTRY)OvsAllocateVport();
          if (vport == NULL) {
              status = NDIS_STATUS_RESOURCES;
@@ -946,7 +949,6 @@ OvsInitTunnelVport(POVS_VPORT_ENTRY vport,
     size_t len;
     NTSTATUS status = STATUS_SUCCESS;
 
-    vport->isValidationPort = FALSE;
     vport->ovsType = addReq->type;
     vport->ovsState = OVS_STATE_PORT_CREATED;
     RtlCopyMemory(vport->ovsName, addReq->name, OVS_MAX_PORT_NAME_LENGTH);
diff --git a/datapath-windows/ovsext/Vport.h b/datapath-windows/ovsext/Vport.h
index b65b4ed..1e5346f 100644
--- a/datapath-windows/ovsext/Vport.h
+++ b/datapath-windows/ovsext/Vport.h
@@ -82,7 +82,6 @@ typedef struct _OVS_VPORT_ENTRY {
     NDIS_SWITCH_PORT_STATE portState;
     NDIS_SWITCH_NIC_STATE  nicState;
     NDIS_SWITCH_PORT_TYPE  portType;
-    BOOLEAN                isValidationPort;
 
     UINT8                  permMacAddress[MAC_ADDRESS_LEN];
     UINT8                  currMacAddress[MAC_ADDRESS_LEN];
-- 
1.8.3.msysgit.0




More information about the dev mailing list