Hey Nithin,

Thanks for the review. I will send out a V2 with the fix.

Sairam

On 11/2/15, 5:10 PM, "Nithin Raju" <nit...@vmware.com> wrote:

>Just a minor detail, but ConvertInterfaceLuidToAlias() seems to be
>returning something of type NETIO_STATUS, with NO_ERROR indicating
>success. We should probably use the appropriate type.
>
>Looks good otherwise. Thanks for doing this.
>
>Acked-by: Nithin Raju <nit...@vmware.com>
>
>
>-----Original Message-----
>From: Sairam Venugopal <vsai...@vmware.com>
>Date: Monday, November 2, 2015 at 5:05 PM
>To: "dev@openvswitch.org" <dev@openvswitch.org>
>Subject: [ovs-dev] [PATCH] datapath-windows: Updating an External
>Adapter        causes flow lookup failure
>
>>This patch fixes an issue with updating the propeties of an external
>>adapter in Windows. The issue causes flow lookups to fail until the
>>kernel is reinstalled.
>>
>>Associated bug - 
>>https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_openvswit
>>c
>>h_ovs-2Dissues_issues_102&d=BQIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMN
>>t
>>Xt-uEs&r=pNHQcdr7B40b4h6Yb7FIedI1dnBsxdDuTLBYD3JqV80&m=uzGKohGZgRODAcZXf_
>>e
>>RokVXtUFLDB5d0wjXmf4YDso&s=2qfpFBiaYnXUUwr5rtdDaoA_VofV0qetJrgkiHbXLvQ&e=
>>
>>Signed-off-by: Sairam Venugopal <vsai...@vmware.com>
>>---
>> datapath-windows/ovsext/Vport.c | 40
>>++++++++++++++++++++++++++++++++++++----
>> 1 file changed, 36 insertions(+), 4 deletions(-)
>>
>>diff --git a/datapath-windows/ovsext/Vport.c
>>b/datapath-windows/ovsext/Vport.c
>>index 4ade842..812e62b 100644
>>--- a/datapath-windows/ovsext/Vport.c
>>+++ b/datapath-windows/ovsext/Vport.c
>>@@ -322,19 +322,51 @@ HvCreateNic(POVS_SWITCH_CONTEXT switchContext,
>>         POVS_VPORT_ENTRY virtExtVport =
>>             (POVS_VPORT_ENTRY)switchContext->virtualExternalVport;
>> 
>>-        vport = (POVS_VPORT_ENTRY)OvsAllocateVport();
>>+        vport = OvsFindVportByPortIdAndNicIndex(switchContext,
>>+                                                nicParam->PortId,
>>+                                                nicParam->NicIndex);
>>         if (vport == NULL) {
>>-            status = NDIS_STATUS_RESOURCES;
>>-            goto add_nic_done;
>>+            /* Find by interface name */
>>+            WCHAR interfaceName[IF_MAX_STRING_SIZE] = { 0 };
>>+            NET_LUID interfaceLuid = { 0 };
>>+            size_t len = 0;
>>+            status =
>>ConvertInterfaceGuidToLuid(&nicParam->NetCfgInstanceId,
>>+                                                &interfaceLuid);
>>+            if (status == NDIS_STATUS_SUCCESS) {
>>+                status = ConvertInterfaceLuidToAlias(&interfaceLuid,
>>+                                                     interfaceName,
>>+                                                     IF_MAX_STRING_SIZE
>>+ 1);
>>+                if (status == NDIS_STATUS_SUCCESS) {
>>+                    RtlStringCbLengthW(interfaceName,
>>+                                       IF_MAX_STRING_SIZE,
>>+                                       &len);
>>+                    vport = OvsFindVportByHvNameW(switchContext,
>>+                                                  interfaceName,
>>+                                                  len);
>>+                }
>>+            }
>>+
>>+            if (vport == NULL) {
>>+                /* XXX: Handle this event appropriately */
>>+                vport = (POVS_VPORT_ENTRY)OvsAllocateVport();
>>+                if (vport == NULL) {
>>+                    status = NDIS_STATUS_RESOURCES;
>>+                    goto add_nic_done;
>>+                }
>>+            }
>>         }
>>+
>>         OvsInitPhysNicVport(vport, virtExtVport, nicParam->NicIndex);
>>+        OvsInitVportWithNicParam(switchContext, vport, nicParam);
>>         status = InitHvVportCommon(switchContext, vport, TRUE);
>>+        vport->isAbsentOnHv = FALSE;
>>         if (status != NDIS_STATUS_SUCCESS) {
>>             OvsFreeMemoryWithTag(vport, OVS_VPORT_POOL_TAG);
>>             goto add_nic_done;
>>         }
>>+    } else {
>>+        OvsInitVportWithNicParam(switchContext, vport, nicParam);
>>     }
>>-    OvsInitVportWithNicParam(switchContext, vport, nicParam);
>>     portNo = vport->portNo;
>>     if (vport->ovsState == OVS_STATE_CONNECTED) {
>>         event = OVS_EVENT_CONNECT | OVS_EVENT_LINK_UP;
>>-- 
>>1.9.5.msysgit.0
>>
>>_______________________________________________
>>dev mailing list
>>dev@openvswitch.org
>>https://urldefense.proofpoint.com/v2/url?u=http-3A__openvswitch.org_mailm
>>a
>>n_listinfo_dev&d=BQIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=p
>>N
>>HQcdr7B40b4h6Yb7FIedI1dnBsxdDuTLBYD3JqV80&m=uzGKohGZgRODAcZXf_eRokVXtUFLD
>>B
>>5d0wjXmf4YDso&s=nzNtvc9DhUaN4oQfMh7GTPzwdWw1TMB8xiGsYawULdA&e=
>

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

Reply via email to