Compartir a través de


Funcionalidades de VMMQ de publicidad

Los controladores de minipuerto registran la funcionalidad De varias colas de máquina virtual (VMMQ) de una NIC durante la inicialización del adaptador de miniporte.

Nota

Si la NIC admite VMMQ, la VPort predeterminada y al menos una VPort no predeterminada debe admitir VMMQ.

Durante la inicialización, el controlador de minipuerto debe examinar la palabra clave INF *RssOnHostVPorts para determinar si debe habilitar la característica VMMQ en la NIC. Para obtener más información sobre el control de palabras clave RSS para VMMQ, consulte Palabras clave INF estandarizadas para VMMQ.

Además, la pila solo puede activar VMMQ en la NIC si el adaptador de miniporte admite la creación de un conmutador NIC. NDIS puede crear un conmutador NIC en el adaptador de miniporte cuando la palabra clave *SriovPreferred INF se establece en uno o *SriovPreferred se establece en cero y *RssOrVmqPreference se establece en uno. Para obtener más información, vea Palabras clave INF estandarizadas para SR-IOV y palabras clave INF estandarizadas para VMQ.

Cuando el controlador de miniporte configura los parámetros para el conmutador NIC, debe establecer los campos de la estructura NDIS_NIC_SWITCH_PARAMETERS de la siguiente manera:

  1. Establezca el miembro Revision de Headeren NDIS_NIC_SWITCH_PARAMETERS_REVISION_2.

  2. Establezca NumQueuePairsForDefaultVPort en el número de pares de cola asignados a un VPort predeterminado.

Los controladores de minipuerto anuncian la funcionalidad VMMQ de la NIC a través de la estructura NDIS_NIC_SWITCH_CAPABILITIES . El controlador de minipuerto debe inicializar NDIS_NIC_SWITCH_CAPABILITIES de la siguiente manera:

  1. Establezca el miembro Revision de Headeren NDIS_NIC_SWITCH_CAPABILITIES_REVISION_3.

  2. Establezca las marcas NicSwitchCapabilities de la siguiente manera:

    • Establezca NDIS_NIC_SWITCH_CAPS_SINGLE_VPORT_POOL en uno para indicar que se pueden crear VPorts no predeterminados en el PF. Esta marca debe establecerse.

    • Establezca NDIS_NIC_SWITCH_CAPS_ASYMMETRIC_QUEUE_PAIRS_FOR_NONDEFAULT_VPORT_SUPPORTED para indicar que NDIS puede asignar un número arbitrario de colas de VMMQ en cada VPort. De lo contrario, todas las VPort no predeterminadas tienen el mismo número máximo de colas de VMMQ que el campo MaxNumQueuePairsPerNonDefaultVPort define.

    • Establezca NDIS_NIC_SWITCH_CAPS_RSS_ON_PF_VPORTS_SUPPORTED en uno para indicar que la NIC admite VMMQ para VPorts PF.

    Nota

    Si no se establecen cualquiera de los cuatro siguientes marcadores VPort por PF, los controladores de nivel superior usarán los valores especificados cuando se establezcan los parámetros RSS de las VPort pf (incluido el VPort predeterminado). Para obtener más información , consulte Habilitación, deshabilitación y actualización de VMMQ en una instancia de VPort.

    • Establezca NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_INDIRECTION_TABLE_SUPPORTED en uno para indicar que la NIC puede mantener las tablas indirectas de VPort pf. Esta marca debe establecerse.

    Nota

    Las tres marcas siguientes NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_FUNCTION_SUPPORTED, NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_TYPE_SUPPORTED y NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_KEY_SUPPORTED deben establecerse en cero o todas en una. Si todos están establecidos en cero, el software volverá a calcular el hash.

    • Establezca NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_FUNCTION_SUPPORTED en uno si la NIC admite la configuración de una función hash diferente por VPort PF.

    • Establezca NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_TYPE_SUPPORTED en uno si la NIC admite la configuración de un tipo hash diferente por VPort PF.

    • Establezca NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_HASH_KEY_SUPPORTED en uno si la NIC admite la configuración de una clave secreta hash diferente por VPort PF.

    • Establezca NDIS_NIC_SWITCH_CAPS_RSS_PER_PF_VPORT_INDIRECTION_TABLE_SIZE_RESTRICTED en uno si la NIC tiene una limitación en el tamaño de la tabla de direccionamiento indirecto para VPorts PF. Esta marca obliga al emisor de un OID RSS a usar un tamaño de tabla indirecto VPort por PF igual al número de colas de VPort redondeadas hasta la siguiente potencia de dos. Esta marca se puede combinar con la marca de NDIS_NIC_SWITCH_CAPS_ASYMMETRIC_QUEUE_PAIRS_FOR_NONDEFAULT_VPORT_SUPPORTED (diferentes VPorts PF pueden tener diferentes números de colas). Esta marca impide que los usuarios de VMMQ realicen una dirección de cola específica.

  3. Establezca MaxNumVPorts para especificar el número máximo de VPorts.

  4. Establezca MaxNumQueuePairs para especificar el número máximo de pares de cola que se pueden asignar a todas las VPorts. Esto incluye el VPort predeterminado que está asociado al PF. Este número debe reflejar las funcionalidades de hardware reales.

  5. Establezca MaxNumQueuePairsPerNonDefaultVPort para especificar el número máximo de pares de cola que se pueden asignar a una VPort no predeterminada.

  6. Establezca MaxNumRssCapableNonDefaultPFVPorts para especificar el número máximo de VPorts PF no predeterminados que pueden admitir VMMQ.

  7. Establezca NumberOfIndirectionTableEntriesForDefaultVPort para especificar el número de entradas de tabla de direccionamiento indirecto para el VPort predeterminado.

  8. Establezca NumberOfIndirectionTableEntriesPerNonDefaultPFVPort para especificar el número de entradas de tabla de direccionamiento indirecto para cada VPort PF no predeterminado. El tamaño de la tabla de direccionamiento indirecto debe ser el mismo para todas las VPorts PF no predeterminadas.

  9. Establezca MaxNumQueuePairsForDefaultVPort para especificar el número máximo de pares de cola que se pueden asignar a una VPort predeterminada durante la creación del conmutador de NIC.

Una vez anunciadas las funcionalidades de VMMQ, NDIS es responsable de controlar el OID de OID_GEN_RECEIVE_SCALE_CAPABILITIES cuando se llama a en la VPort predeterminada o en una VPort no predeterminada. Cuando el controlador de miniporte devuelve las funcionalidades RSS en la estructura NDIS_RECEIVE_SCALE_CAPABILITIES , no debe restringir los campos NumberOfInterruptMessages por ninguna de las palabras clave RSS estándar (como *MaxRssProcessors). El controlador de nivel superior incorporará este número en el algoritmo de asignación de CPU del host.