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