Determinar las funcionalidades de filtrado de recepción
En este tema se describe cómo NDIS y los controladores de forma excesiva determinan las funcionalidades de filtrado de recepción 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:
Funcionalidades de filtrado de recepción de informes durante MiniportInitializeEx
Consulta de funcionalidades de filtrado de recepción 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 filtrado. Los controladores de minipuerto para las funciones virtuales (VFs) PCIe no deben notificar las funcionalidades de filtrado de recepción del adaptador SR-IOV.
Funcionalidades de filtrado de recepción de informes durante MiniportInitializeEx
Cuando NDIS llama a la función MiniportInitializeEx del controlador de miniporte PF, el controlador proporciona las siguientes funcionalidades de filtrado de recepción:
El hardware completo recibe funcionalidades de filtrado que el adaptador de red puede admitir.
Funcionalidades de filtrado de recepción para las interfaces que están habilitadas actualmente en el adaptador de red.
El controlador de minipuerto informa de las capacidades de filtrado de recepción de hardware completas del adaptador de red subyacente a través de una estructura de NDIS_RECEIVE_FILTER_CAPABILITIES que se inicializa de la siguiente manera:
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_RECEIVE_FILTER_CAPABILITIES_REVISION_2 y el miembro Size en NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_2.
El controlador de minipuerto establece los demás miembros de la estructura NDIS_RECEIVE_FILTER_CAPABILITIES en el intervalo de valores para las capacidades de filtrado de recepción del adaptador de red SR-IOV. Por ejemplo, el controlador de minipuerto establece las marcas adecuadas en SupportedFilterTests para especificar las operaciones de prueba de filtro que admite el controlador de miniporte.
Además de SR-IOV, el filtrado de recepción también se usa en las siguientes interfaces:
Fusión de paquetes NDIS. Para obtener más información sobre cómo usar filtros de recepción en esta interfaz, consulte Administración de filtros de recepción de fusión de paquetes.
Virtual Machine Queue (VMQ). Para obtener más información sobre cómo usar filtros de recepción en esta interfaz, consulte Configuración y borrado de filtros de VMQ.
Si el controlador de minipuerto admite cualquiera de estas interfaces, también debe establecer los miembros de la estructura NDIS_RECEIVE_FILTER_CAPABILITIES en el intervalo de valores de funcionalidad de filtrado de recepción que son específicos de la interfaz. Por ejemplo, si el controlador admite la fusión de paquetes NDIS y SR-IOV, debe establecer la marca NDIS_RECEIVE_FILTER_PACKET_COALESCING_SUPPORTED_ON_DEFAULT_QUEUE en el miembro SupportedQueueProperties .
El controlador de minipuerto informa de las funcionalidades de filtrado de recepción habilitadas actualmente del adaptador de red subyacente a través de una estructura de NDIS_RECEIVE_FILTER_CAPABILITIES que se inicializa de la siguiente manera:
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_RECEIVE_FILTER_CAPABILITIES_REVISION_2 y el miembro Size en NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_2.
El controlador de minipuerto establece los demás miembros de la estructura de NDIS_RECEIVE_FILTER_CAPABILITIES en el intervalo de valores de las funcionalidades de filtrado de recepción de las interfaces que están habilitadas actualmente. Por ejemplo, si la fusión de paquetes NDIS está habilitada, el controlador solo debe establecer los miembros específicos de esta tecnología.
Las interfaces que usan el filtrado de recepción están habilitadas o deshabilitadas mediante palabras clave INF estandarizadas. Para obtener más información sobre cómo está habilitada la fusión de paquetes NDIS, vea Palabras clave INF estandarizadas para la fusión de paquetes. Para obtener más información sobre cómo se habilitan SR-IOV y VMQ, consulte Control de las palabras clave SR-IOV, VMQ y RSS estandarizadas inf.
Cuando NDIS llama a la función MiniportInitializeEx del controlador de miniporte, el controlador registra las funcionalidades de filtrado de recepción del adaptador de red siguiendo estos pasos:
El controlador de minipuerto inicializa una estructura de NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .
El controlador de minipuerto establece el miembro HardwareReceiveFilterCapabilities en la dirección de una estructura de NDIS_RECEIVE_FILTER_CAPABILITIES . Esta estructura se inicializó previamente con las funcionalidades completas de filtrado de recepción de hardware del adaptador de red.
Si la fusión de paquetes VMQ, SR-IOV y NDIS están deshabilitadas actualmente en el adaptador de red, el controlador de minipuerto establece el miembro CurrentReceiveFilterCapabilities en NULL.
Si la fusión de paquetes VMQ, SR-IOV o NDIS están habilitadas actualmente en el adaptador de red, el controlador de minipuerto debe hacer lo siguiente:
El controlador de minipuerto debe inicializar otra estructura de NDIS_RECEIVE_FILTER_CAPABILITIES con las funcionalidades de filtrado de recepción actuales para las interfaces que están habilitadas actualmente en el adaptador de red.
Si la interfaz SR-IOV está habilitada, hay situaciones en las que el controlador de minipuerto debe establecer los miembros de la estructura de NDIS_RECEIVE_FILTER_CAPABILITIES en los mismos valores o diferentes. Esto se debe a que la interfaz SR-IOV proporciona un mecanismo de puesta en cola similar a VMQ, pero usa puertos virtuales (VPorts) en lugar de colas de recepción de máquinas virtuales.
Por ejemplo, el controlador de minipuerto debe establecer la marca NDIS_RECEIVE_FILTER_VMQ_FILTERS_ENABLED en el miembro EnabledFilterTypes si la interfaz VMQ o SR-IOV está habilitada. Sin embargo, el controlador de minipuerto debe establecer el miembro NumQueues en cero si la interfaz SR-IOV está habilitada y un valor distinto de cero si la interfaz VMQ está habilitada.
El controlador de minipuerto establece el miembro CurrentReceiveFilterCapabilities en la dirección de la estructura de NDIS_RECEIVE_FILTER_CAPABILITIES que contiene las funcionalidades de filtrado de recepción actuales para la interfaz habilitada actualmente.
Si la fusión de paquetes VMQ, SR-IOV o NDIS están habilitadas actualmente en el adaptador de red, el controlador de minipuerto establece el miembro HardwareReceiveFilterCapabilities en la dirección de una estructura de NDIS_RECEIVE_FILTER_CAPABILITIES . Esta estructura se inicializó previamente con las funcionalidades de filtrado de recepción habilitadas actualmente del adaptador de red.
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.
Consulta de funcionalidades de filtrado de recepción mediante el uso excesivo de controladores
NDIS pasa las funcionalidades de filtrado de recepción habilitadas actualmente para el 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 ReceiveFilterCapabilities de esta estructura contiene un puntero a una estructura NDIS_RECEIVE_FILTER_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 ReceiveFilterCapabilities de esta estructura contiene un puntero a una estructura NDIS_RECEIVE_FILTER_CAPABILITIES .
NDIS también devuelve la estructura NDIS_RECEIVE_FILTER_CAPABILITIES cuando controla las solicitudes de consulta de identificador de objeto (OID) de OID_RECEIVE_FILTER_CURRENT_CAPABILITIES y OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES emitidas por controladores de filtro o protocolo excesivo.