- if (nicParam->NicType == NdisSwitchNicTypeExternal &&
- nicParam->NicIndex != 0) {
- POVS_VPORT_ENTRY virtExtVport =
- (POVS_VPORT_ENTRY)switchContext->virtualExternalVport;
-
- vport = OvsAllocateVport();
- if (vport) {
- OvsInitPhysNicVport(vport, virtExtVport,
- nicParam->NicIndex);
- status = InitHvVportCommon(switchContext, vport, TRUE);
- if (status != NDIS_STATUS_SUCCESS) {
- OvsFreeMemoryWithTag(vport, OVS_VPORT_POOL_TAG);
- vport = NULL;
- }
- }
- } else {
- vport = OvsFindVportByPortIdAndNicIndex(switchContext,
- nicParam->PortId,
- nicParam->NicIndex);
- }
- if (vport == NULL) {
- OVS_LOG_ERROR("Fail to allocate vport");
- continue;
- }
- OvsInitVportWithNicParam(switchContext, vport, nicParam);
- if (nicParam->NicType == NdisSwitchNicTypeInternal) {
- OvsInternalAdapterUp(vport->portNo, &nicParam->NetCfgInstanceId);
+ status = HvCreateNic(switchContext, nicParam);
+ if (status == NDIS_STATUS_SUCCESS) {
+ HvConnectNic(switchContext, nicParam);