Compartir a través de


Determinación de las funcionalidades del conmutador NIC

En este tema se describe cómo NDIS y los controladores de forma excesiva determinan las funcionalidades del conmutador NIC de un adaptador de red que admite la virtualización de E/S raíz única (SR-IOV). Este tema contiene la información siguiente:

Generación de informes de funcionalidades de conmutador NIC durante MiniportInitializeEx

Consulta de funcionalidades de conmutador de NIC mediante el uso excesivo de controladores

Nota Solo el controlador de minipuerto para la función física PCI Express (PCIe) de un adaptador de red SR-IOV puede notificar funcionalidades de conmutador NIC. Los controladores de minipuerto para las funciones virtuales (VFs) pcIe no deben notificar las capacidades del conmutador NIC del adaptador SR-IOV.

Para obtener más información sobre los conmutadores NIC, consulte Conmutadores NIC.

Generación de informes de funcionalidades de conmutador NIC durante MiniportInitializeEx

Cuando NDIS llama a la función MiniportInitializeEx del controlador de miniporte, el controlador proporciona las siguientes funcionalidades de conmutador NIC:

  • Conjunto completo de funcionalidades de hardware para un conmutador NIC que el adaptador de red puede admitir.

    Nota A partir de NDIS 6.30, solo se crea un conmutador NIC en el adaptador de red. Este modificador se conoce como el conmutador NIC predeterminado.

  • Las funcionalidades del conmutador NIC que están habilitadas actualmente en el adaptador de red.

El controlador de minipuerto informa de las funcionalidades de hardware del conmutador NIC del adaptador de red subyacente a través de una estructura de NDIS_NIC_SWITCH_CAPABILITIES que se inicializa de la siguiente manera:

  1. El controlador de minipuerto inicializa el miembro Header . El controlador establece el miembro Type de Header en NDIS_OBJECT_TYPE_DEFAULT.

    A partir de NDIS 6.30, el controlador de minipuerto establece el miembro Revision de Header en NDIS_NIC_SWITCH_CAPABILITIES_REVISION_2 y el miembro Size en NDIS_SIZEOF_NIC_SWITCH_CAPABILITIES_REVISION_2.

  2. El controlador de minipuerto establece las marcas adecuadas en el miembro NicSwitchCapabilities de la estructura NDIS_NIC_SWITCH_CAPABILITIES en las funcionalidades de conmutador NIC del adaptador de red SR-IOV. Por ejemplo, el controlador de minipuerto establece la marca NDIS_NIC_SWITCH_CAPS_PER_VPORT_INTERRUPT_MODERATION_SUPPORTED si el conmutador NIC admite la moderación de interrupciones en cada puerto virtual (VPort) que se crea en el conmutador.

  3. El controlador de minipuerto establece los demás miembros de la estructura de NDIS_NIC_SWITCH_CAPABILITIES en el intervalo de valores de las funcionalidades de conmutador NIC del adaptador de red SR-IOV. Por ejemplo, el controlador de minipuerto establece los miembros MaxNumVFs y MaxNumVPorts en el número máximo de VFs y VPorts que el adaptador puede admitir.

    Nota Según los recursos de hardware disponibles en el adaptador de red, el controlador de minipuerto puede establecer el miembro MaxNumVFs en un valor menor que su palabra clave *NumVFs . Para obtener más información sobre esta palabra clave, vea Palabras clave INF estandarizadas para SR-IOV.

Cuando NDIS llama a la función MiniportInitializeEx del controlador de miniporte, el controlador registra las funcionalidades del conmutador NIC del adaptador de red siguiendo estos pasos:

  1. El controlador de minipuerto inicializa una estructura de NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .

    El controlador de minipuerto establece el miembro HardwareNicSwitchCapabilities en un puntero a una estructura de NDIS_NIC_SWITCH_CAPABILITIES inicializada previamente.

    Si la configuración del Registro para la palabra clave *SRIOV INF tiene un valor de uno, el adaptador de red está habilitado actualmente para la creación y configuración del conmutador NIC. El controlador de minipuerto establece los miembros CurrentNicSwitchCapabilities en un puntero a la misma estructura NDIS_NIC_SWITCH_CAPABILITIES .

    Si la configuración del Registro para la palabra clave *SRIOV INF tiene un valor de cero, el adaptador de red no está habilitado actualmente para la creación y configuración del conmutador NIC. El controlador de minipuerto debe establecer el miembro CurrentNicSwitchCapabilities en NULL.

    Para obtener más información sobre la palabra clave *SRIOV INF, vea Palabras clave INF estandarizadas para SR-IOV.

  2. El controlador llama a NdisMSetMiniportAttributes y establece el parámetro MiniportAttributes en un puntero a la estructura NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .

Para obtener más información sobre el proceso de inicialización del adaptador, consulte Inicialización de un adaptador de minipuerto.

Creación de un conmutador NIC sin SR-IOV

Los controladores de minipuerto en NDIS 6.60 y versiones posteriores deben cumplir los siguientes requisitos para la coexistencia de un conmutador NIC y funcionalidades de VMQ cuando SR-IOV no está habilitado. Cuando SR-IOV está habilitado, el controlador de minipuerto debe cumplir los requisitos existentes en la sección anterior.

  • El controlador de minipuerto anuncia tanto el conmutador NIC como las funcionalidades de VMQ.
  • La NIC puede alternar entre el conmutador NIC y el modo VMQ sin reiniciar la NIC.
    • Cuando la NIC se inicia inicialmente, está lista para estar en modo (ya sea creando un conmutador de NIC o creando colas de VMQ).
      • Si se crea un conmutador de NIC, se produce un error en la minipuerto en las devoluciones de llamada de asignación de colas de VMQ posteriores.
      • Si primero se crea una cola de VMQ, el controlador de minipuerto realiza correctamente la asignación de cola de VMQ y produce un error en las llamadas de asignación de conmutadores de NIC.
    • Cuando se elimina el conmutador NIC o se eliminan todas las colas de VMQ, el controlador de minipuerto vuelve al estado inicial y está listo para volver a entrar en cualquiera de estos modos.

Para anunciar que se puede crear un conmutador NIC sin el uso de SR-IOV, el controlador de minipuerto establece la marca NDIS_NIC_SWITCH_CAPS_NIC_SWITCH_WITHOUT_IOV_SUPPORTED en el miembro NicSwitchCapabilities de la estructura NDIS_NIC_SWITCH_CAPABILITIES .

Consulta de funcionalidades de conmutador de NIC mediante el uso excesivo de controladores

NDIS pasa las funcionalidades del conmutador NIC habilitado actualmente del adaptador de red a controladores que se enlazan al adaptador de red de la siguiente manera:

  • Cuando NDIS llama a una función FilterAttach del controlador de filtro excesivo, NDIS pasa las funcionalidades del conmutador NIC del adaptador de red a través del parámetro AttachParameters . Este parámetro contiene un puntero a una estructura de NDIS_FILTER_ATTACH_PARAMETERS . El miembro NicSwitchCapabilities de esta estructura contiene un puntero a una estructura NDIS_NIC_SWITCH_CAPABILITIES .

  • Cuando NDIS llama a una función protocolbindAdapterEx del controlador de protocolo excesivo, NDIS pasa las funcionalidades del conmutador NIC del adaptador de red a través del parámetro BindParameters . Este parámetro contiene un puntero a una estructura de NDIS_FILTER_ATTACH_PARAMETERS . El miembro NicSwitchCapabilities de esta estructura contiene un puntero a una estructura NDIS_NIC_SWITCH_CAPABILITIES .

NDIS también devuelve la estructura NDIS_NIC_SWITCH_CAPABILITIES cuando controla las solicitudes de consulta de identificador de objeto (OID) de OID_NIC_SWITCH_HARDWARE_CAPABILITIES y OID_NIC_SWITCH_CURRENT_CAPABILITIES emitidas por controladores de filtro o protocolo excesivo.