- 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);
- OvsInitVportWithNicParam(switchContext, vport, nicParam);
- status = InitHvVportCommon(switchContext, vport, TRUE);
- if (status != NDIS_STATUS_SUCCESS) {
- OvsFreeMemoryWithTag(vport, OVS_VPORT_POOL_TAG);
- vport = NULL;
- }
- } else {
- OVS_LOG_ERROR("Fail to allocate vport.");
- continue;
- }
- } else {
- vport = OvsFindVportByPortIdAndNicIndex(switchContext,
- nicParam->PortId,
- nicParam->NicIndex);
- if (vport == NULL) {
- OVS_LOG_ERROR(
- "Could not found vport with portId: %d and nicIndex: %d.",
- nicParam->PortId, nicParam->NicIndex);
- continue;
- }
- OvsInitVportWithNicParam(switchContext, vport, nicParam);
- }
-
- if (nicParam->NicType == NdisSwitchNicTypeInternal) {
- /*
- * Overwrite the 'portFriendlyName' of the internal vport.
- * Note:
- * The call to AssignNicNameSpecial() is needed here, because the
- * necessary 'netCfgInstanceId' of the vport is available.
- * On port creation the latter information is missing and the
- * 'portFriendlyName' of the vport fails to be overwritten with the
- * correct information.
- */
- AssignNicNameSpecial(vport);
- OvsInternalAdapterUp(vport->portNo, &nicParam->NetCfgInstanceId);