Emisión de solicitudes de OID_NIC_SWITCH_ALLOCATE_VF
Antes de que emite la solicitud de método de identificador de objeto (OID) de OID_NIC_SWITCH_ALLOCATE_VF al controlador de minipuerto para la función física PCI Express (PCIe) (PF), el controlador de exceso da formato a una estructura de NDIS_NIC_SWITCH_VF_PARAMETERS . Esta estructura contiene los parámetros de configuración de los recursos que se van a asignar para una función virtual PCIe (VF) en el adaptador de red. El controlador de sobreslización debe establecer los miembros de esta estructura de la siguiente manera:
El miembro SwitchId debe establecerse en el identificador de un conmutador NIC que se creó anteriormente en el adaptador de red. Se crea un conmutador NIC a través de una solicitud de método OID de OID_NIC_SWITCH_CREATE_SWITCH.
Cuando controla la solicitud de método OID de OID_NIC_SWITCH_ALLOCATE_VF, el controlador de minipuerto para la función física PCIe (PF) asigna recursos para el VF. Si los recursos se asignan correctamente, el controlador de minipuerto PF asigna el VF al conmutador NIC especificado.
Nota A partir de NDIS 6.30 en Windows Server 2012, la interfaz SR-IOV solo admite el conmutador NIC predeterminado en el adaptador de red. El valor del miembro SwitchId debe establecerse en NDIS_DEFAULT_SWITCH_ID.
Para obtener más información sobre un conmutador NIC, consulte Conmutadores NIC.
El miembro VFId debe establecerse en NDIS_INVALID_VF_FUNCTION_ID.
El miembro RequestorId debe establecerse en NDIS_INVALID_RID.
Los miembros VMFriendlyName y VMName deben establecerse en los parámetros de una partición secundaria de Hyper-V. El controlador de miniporte PF solo usa estos miembros con fines informativos.
Nota La partición secundaria de Hyper-V también se conoce como máquina virtual (VM).
La VF está asociada a la máquina virtual especificada antes de que el controlador de sobrestituye la solicitud de OID_NIC_SWITCH_CREATE_SWITCH .
El miembro NicName debe establecerse en el identificador del adaptador de red de la máquina virtual (VM). Este adaptador virtual se expone en el sistema operativo invitado que se ejecuta en la máquina virtual. El controlador de miniporte PF solo usa este miembro con fines informativos.
Cuando se asignan recursos para la VF y se adjunta a la partición secundaria, se expone un adaptador de red VF en el sistema operativo invitado. Los equipos de adaptadores de red de máquina virtual con el adaptador de red VF para la transferencia de paquetes a través de la ruta de acceso de datos de VF basada en hardware.
Sin embargo, la VF se podría desasociar de la partición secundaria, como durante la migración en vivo. Cuando esto sucede, la transferencia de paquetes se produce a través de la ruta de acceso de datos sintéticos basada en software. Para obtener más información sobre estas rutas de acceso de datos, consulte RUTAS de acceso de datos SR-IOV.
Los miembros PermanentMacAddress y CurrentMacAddress deben establecerse en las direcciones de control de acceso multimedia (MAC) para el adaptador de red virtual del VF. Estas direcciones se exponen a la pila de red que se ejecuta en el sistema operativo invitado de la partición secundaria de Hyper-V.
El controlador de sobreslización emite la solicitud del método OID de OID_NIC_SWITCH_ALLOCATE_VF siguiendo estos pasos:
El controlador de sobreslización inicializa una estructura de NDIS_OID_REQUEST para la solicitud del método OID. El controlador establece el miembro InformationBuffer en un puntero a una estructura de NDIS_NIC_SWITCH_VF_PARAMETERS inicializada.
El controlador de sobreslización llama a NdisOidRequest para emitir la solicitud OID al controlador de miniporte PF subyacente.
Nota Cuando el controlador de sobreslización llama a NdisOidRequest, NDIS intercepta la solicitud OID y comprueba los parámetros de VF especificados en la estructura de NDIS_NIC_SWITCH_VF_PARAMETERS . Si los parámetros se comprueban correctamente, NDIS reenvía el OID al controlador de miniporte PF. De lo contrario, NDIS produce un error en la solicitud OID con NDIS_STATUS_INVALID_PARAMETER.
Después de que un controlador sobreasignación de recursos solicita una asignación de recursos para una VF, ese controlador es el único componente que puede solicitar la libreción de los recursos para la misma VF. El controlador de exceso debe emitir una solicitud de conjunto de OID de OID_NIC_SWITCH_FREE_VF para liberar los recursos de VF. Antes de que se pueda detener el controlador de sobreslización, debe liberar los recursos de cada VF asignado por la solicitud de OID_NIC_SWITCH_ALLOCATE_VF del controlador.