datapath-windows: We don't need to keep validation ports in ovs
authorAlin Serdean <aserdean@cloudbasesolutions.com>
Thu, 9 Oct 2014 17:46:55 +0000 (17:46 +0000)
committerBen Pfaff <blp@nicira.com>
Thu, 9 Oct 2014 22:47:17 +0000 (15:47 -0700)
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@cloudbasesolutions.com>
Co-authored-by: Alin Gabriel Serdean <aserdean@cloudbasesolutions.com>
Acked-by: Ankur Sharma <ankursharma@vmware.com>
Acked-by: Eitan Eliahu <eliahue@vmware.com>
Acked-by: Nithin Raju <nithin@vmware.com>
Tested-by: Nithin Raju <nithin@vmware.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
datapath-windows/ovsext/Oid.c
datapath-windows/ovsext/Vport.c
datapath-windows/ovsext/Vport.h

index 487739f..9659af7 100644 (file)
@@ -159,6 +159,14 @@ OvsProcessSetOidPort(POVS_SWITCH_CONTEXT switchObject,
         goto done;
     }
 
+    if (portParam->IsValidationPort) {
+        /* Validation ports are used internally by the Hyper-V switch
+         * to validate and verify settings. We must skip handling them,
+         * and return STATUS_SUCCESS as the OID result
+         */
+        return NDIS_STATUS_SUCCESS;
+    }
+
     switch(setInfo->Oid) {
     case OID_SWITCH_PORT_CREATE:
         status = HvCreatePort(switchObject, portParam);
index 7bcb16f..942bad0 100644 (file)
@@ -609,7 +609,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;
@@ -698,7 +697,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;
@@ -838,6 +836,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;
@@ -954,7 +957,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);
index e606e1f..0061b0f 100644 (file)
@@ -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];