Establecer los parámetros de un puerto virtual
Un controlador de exceso puede cambiar los parámetros de un puerto virtual (VPort) en un conmutador NIC en un adaptador de red que admita la virtualización de E/S raíz única (SR-IOV). El controlador emite una solicitud establecida de identificador de objeto (OID) de OID_NIC_SWITCH_VPORT_PARAMETERS para cambiar estos parámetros.
Antes de que el controlador sobrealice esta solicitud de conjunto de OID, debe inicializar una estructura de NDIS_NIC_SWITCH_VPORT_PARAMETERS con los parámetros que se van a cambiar en VPort. A continuación, el controlador inicializa una estructura de NDIS_OID_REQUEST para la solicitud OID y establece el miembro InformationBuffer en un puntero a la estructura NDIS_NIC_SWITCH_VPORT_PARAMETERS .
Solo se puede cambiar un subconjunto limitado de parámetros de configuración para una VPort. El controlador de sobreslización especifica el parámetro que se va a cambiar estableciendo los siguientes miembros de la estructura de NDIS_NIC_SWITCH_VPORT_PARAMETERS :
El miembro SwitchId debe establecerse en el identificador del conmutador NIC para el que se van a devolver los parámetros.
Nota A partir de Windows Server 2012, la interfaz SR-IOV solo admite un conmutador NIC en el adaptador de red. Este modificador se conoce como el conmutador NIC predeterminado. El miembro SwitchId debe establecerse en NDIS_DEFAULT_SWITCH_ID.
El miembro VPortId debe establecerse en el identificador asociado a VPort. El controlador de sobrestitución obtiene el identificador VPort a través de una de las siguientes maneras:
A partir de una solicitud de método OID anterior de OID_NIC_SWITCH_CREATE_VPORT.
A partir de una solicitud de método OID anterior de OID_NIC_SWITCH_ENUM_VPORTS.
Las marcas NDIS_NIC_SWITCH_VPORT_PARAMS_Xxx_CHANGED adecuadas deben establecerse en el miembro Flags . Los miembros de la estructura de NDIS_NIC_SWITCH_VPORT_PARAMETERS solo se pueden cambiar si se define una marca NDIS_NIC_SWITCH_VPORT_PARAMS_Xxx_CHANGED correspondiente en Ntddndis.h.
Los miembros de la estructura NDIS_NIC_SWITCH_VPORT_PARAMETERS , que corresponden a las marcas NDIS_NIC_SWITCH_VPORT_PARAMS_Xxx_CHANGED establecidas en el miembro Flags , se establecen con los parámetros de configuración de VPort que se van a cambiar.
A partir de Windows Server 2012, solo se pueden cambiar los siguientes miembros de la estructura de NDIS_NIC_SWITCH_VPORT_PARAMETERS a través de una solicitud de conjunto de OID de OID_NIC_SWITCH_VPORT_PARAMETERS:
PortName
Este miembro contiene una descripción fácil de usar de VPort.
InterruptModeration
Este miembro especifica la configuración de moderación de interrupciones de VPort.
ProcessorAffinity
Este miembro especifica el número de grupo y un mapa de bits de las CPU con las que se puede asociar esta VPort.
El controlador de exceso debe seguir estas directrices para cambiar el miembro ProcessorAffinity para una VPort:
Este miembro solo es válido para las VPorts conectadas al PF. Este campo no es válido para VPorts no predeterminados que están asociados a una VF.
Para VPorts no predeterminados que están conectados al PF, se debe especificar al menos un procesador cuando se crea la VPort. La afinidad de procesador asociada a la VPort no predeterminada se puede cambiar después de la creación de VPort.
Nota Las VPorts no predeterminadas se crean a través de solicitudes de método OID de OID_NIC_SWITCH_CREATE_VPORT.
VPortState
Este miembro especifica el estado actual de VPort.
El controlador de exceso debe seguir estas directrices para cambiar el miembro VPortState para una VPort:
Para un VPort no predeterminado que esté asociado a una VF, el miembro VPortState siempre debe establecerse en NdisNicSwitchVPortStateActivated.
Para un VPort no predeterminado que esté asociado al PF, el miembro VPortState debe establecerse en NdisNicSwitchVPortStateDeactivated cuando se crea la VPort. El VPort PF se activa solo después de que los controladores de exceso emita una solicitud de conjunto de OID de OID_NIC_SWITCH_VPORT_PARAMETERS para cambiar VPortState a un estado activado.
Cuando se activa la VPort no predeterminada, el controlador de miniport PF puede asignar recursos para la VPort, como la memoria compartida que se asigna a través de NdisAllocateSharedMemory. El controlador de minipuerto PF puede asignar recursos para VPort en cualquier momento después de activarlo hasta que el controlador elimine el VPort a través de una solicitud de conjunto de OID de OID_NIC_SWITCH_DELETE_VPORT.
El VPort predeterminado siempre está en un estado activado. El valor del miembro VPortState siempre debe establecerse en NdisNicSwitchVPortStateActivated para el VPort predeterminado.
Cuando una VPort está en un estado activado, no se puede desactivar. Un controlador de minipuerto PF puede recibir y transmitir paquetes desde una VPort solo si está en un estado activado y los filtros MAC correspondientes se establecen en la VPort. Sin embargo, después de eliminar VPort a través de una solicitud de conjunto de OID de OID_NIC_SWITCH_DELETE_VPORT, el controlador debe liberar los recursos que se asignaron para VPort. El controlador también debe cancelar todas las operaciones de transmisión o recepción pendientes para los paquetes de VPort.
Una vez que el controlador de miniporte PF recibe la solicitud de conjunto de OID de OID_NIC_SWITCH_VPORT_PARAMETERS, el controlador configura el hardware con los parámetros de configuración. El controlador solo puede cambiar los parámetros de configuración identificados por las marcas NDIS_NIC_SWITCH_VPORT_PARAMETERS_Xxx_CHANGED en el miembro Flags de la estructura NDIS_NIC_SWITCH_VPORT_PARAMETERS .