Funcionalidades de fusión de paquetes de informes
Los controladores de minipuerto registran las siguientes funcionalidades con NDIS durante la inicialización del adaptador de red:
Las funcionalidades de fusión de paquetes que admite el adaptador de red.
Las funcionalidades de fusión de paquetes que están habilitadas actualmente en el adaptador de red.
La fusión de paquetes recibe funcionalidades de filtrado que están habilitadas actualmente en el adaptador de red.
Nota La compatibilidad de un controlador miniporte para la fusión de paquetes se puede habilitar o deshabilitar a través de la configuración de la palabra clave INF *PacketCoalescing . Esta configuración se muestra en la página de propiedades Avanzadas del adaptador de red. Para obtener más información sobre la configuración del archivo INF de fusión de paquetes, vea Palabras clave INF estandarizadas para la fusión de paquetes.
El controlador de minipuerto informa de las capacidades de fusión y filtrado de paquetes del adaptador de red subyacente a través de una estructura de NDIS_RECEIVE_FILTER_CAPABILITIES . Si la configuración de la palabra clave *PacketCoalescing en el Registro tiene un valor de uno, la fusión de paquetes está habilitada y el controlador de miniporte inicializa la estructura NDIS_RECEIVE_FILTER_CAPABILITIES 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.
Si el controlador admite la fusión de paquetes, establece el miembro Revision de Header en el NDIS_RECEIVE_FILTER_CAPABILITIES_REVISION_2 y el miembro Size en NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_2.
El controlador de minipuerto establece la marca NDIS_RECEIVE_FILTER_PACKET_COALESCING_SUPPORTED_ON_DEFAULT_QUEUE en el miembro SupportedQueueProperties .
Si se establece esta marca, el adaptador de red debe admitir el filtrado de paquetes de multidifusión recibidos en hardware. Este filtrado se basa en las direcciones de multidifusión que NDIS descargan en el adaptador de red enviando OID_802_3_MULTICAST_LIST solicitudes de conjunto de OID.
Nota Los controladores de protocolo también pueden cambiar el contenido de la lista de direcciones de multidifusión enviando solicitudes OID_802_3_ADD_MULTICAST_ADDRESS y OID_802_3_DELETE_MULTICAST_ADDRESS . NDIS combina estas solicitudes en OID_802_3_MULTICAST_LIST solicitudes de conjunto de OID.
Nota El adaptador es necesario para rechazar cualquier paquete de multidifusión entrante cuya dirección de control de acceso multimedia de destino (MAC) no coincida con ninguna de las direcciones de multidifusión especificadas por estas solicitudes de conjunto de OID.
El controlador de minipuerto establece la marca NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED en el miembro EnabledFilterTypes .
Nota Si el controlador establece esta marca, también debe establecer la marca NDIS_RECEIVE_FILTER_PACKET_COALESCING_SUPPORTED_ON_DEFAULT_QUEUE en el miembro SupportedQueueProperties . De lo contrario, NDIS producirá un error en la llamada a NdisMSetMiniportAttributes devolviendo NDIS_STATUS_BAD_CHARACTERISTICS.
Si el controlador de minipuerto establece la marca NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, el controlador debe admitir todos los criterios de prueba de filtro de recepción. El controlador anuncia esta compatibilidad estableciendo las marcas siguientes en el miembro SupportedFilterTests :
NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_EQUAL_SUPPORTED
NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_MASK_EQUAL_SUPPORTED
NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_NOT_EQUAL_SUPPORTED
Nota Si el controlador de minipuerto no establece la marca NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, el controlador debe establecer el miembro SupportedFilterTests en cero.
Si el controlador de minipuerto establece la marca NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, el controlador de minipuerto debe admitir el filtrado de datos dentro de varios campos del control de acceso multimedia (MAC), ip versión 4 (IPv4) y encabezados ip versión 6 (IPv6). El controlador anuncia esta compatibilidad estableciendo las marcas siguientes en el miembro SupportedHeaders :
NDIS_RECEIVE_FILTER_MAC_HEADER_SUPPORTED
NDIS_RECEIVE_FILTER_ARP_HEADER_SUPPORTED
NDIS_RECEIVE_FILTER_IPV4_HEADER_SUPPORTED
NDIS_RECEIVE_FILTER_IPV6_HEADER_SUPPORTED
NDIS_RECEIVE_FILTER_UDP_HEADER_SUPPORTED
Nota Si el controlador de minipuerto no establece la marca NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, el controlador debe establecer el miembro SupportedHeaders en cero.
Si el controlador de minipuerto establece la marca NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, el controlador de minipuerto debe admitir el filtrado de datos dentro del encabezado de control de acceso multimedia (MAC) del paquete recibido. El controlador anuncia esta compatibilidad estableciendo las marcas siguientes en el miembro SupportedMacHeaderFields :
NDIS_RECEIVE_FILTER_MAC_HEADER_DEST_ADDR_SUPPORTED
NDIS_RECEIVE_FILTER_MAC_HEADER_PROTOCOL_SUPPORTED
NDIS_RECEIVE_FILTER_MAC_HEADER_PACKET_TYPE_SUPPORTED
Nota Si el controlador de minipuerto no establece la marca NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, el controlador debe establecer el miembro SupportedMacHeaderFields en cero.
Si el controlador de minipuerto establece la marca NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, el controlador de minipuerto debe admitir el filtrado de datos dentro del encabezado de un paquete del Protocolo de resolución de direcciones (ARP) recibido. El controlador anuncia esta compatibilidad estableciendo las marcas siguientes en el miembro SupportedARPHeaderFields :
NDIS_RECEIVE_FILTER_ARP_HEADER_OPERATION_SUPPORTED
NDIS_RECEIVE_FILTER_ARP_HEADER_SPA_SUPPORTED
NDIS_RECEIVE_FILTER_ARP_HEADER_TPA_SUPPORTED
Nota Si el controlador de minipuerto no establece la marca NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, el controlador debe establecer el miembro SupportedARPHeaderFields en cero.
Si el controlador de minipuerto establece la marca NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, el controlador de minipuerto debe admitir el filtrado de datos dentro del encabezado de capa 3 (L3) de interconexión de sistemas abiertos (OSI) de un paquete IP recibido versión 4 (IPv4). El controlador anuncia esta compatibilidad estableciendo las marcas siguientes en el miembro SupportedIPv4HeaderFields :
- NDIS_RECEIVE_FILTER_IPV4_HEADER_PROTOCOL_SUPPORTED
Nota Si el controlador de minipuerto no establece la marca NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, el controlador debe establecer el miembro SupportedIPv4HeaderFields en cero.
Si el controlador de minipuerto establece la marca NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, el controlador de minipuerto debe admitir el filtrado de datos dentro del encabezado L3 de un paquete ip recibido versión 6 (IPv6). El controlador anuncia esta compatibilidad estableciendo las marcas siguientes en el miembro SupportedIPv6HeaderFields :
- NDIS_RECEIVE_FILTER_IPV6_HEADER_PROTOCOL_SUPPORTED
Nota Si el controlador de minipuerto no establece la marca NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, el controlador debe establecer el miembro SupportedIPv6HeaderFields en cero.
Si el controlador de minipuerto establece la marca NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, el controlador de minipuerto debe admitir el filtrado de datos dentro del encabezado OSI layer 4 (L4) de un paquete de Protocolo de datagramas de usuario (UDP) recibido. El controlador anuncia esta compatibilidad estableciendo las marcas siguientes en el miembro SupportedIUdpHeaderFields :
- NDIS_RECEIVE_FILTER_UDP_HEADER_DEST_PORT_SUPPORTED
Nota Si el paquete UDP recibido contiene opciones IPv4 o encabezados de extensión IPv6, el adaptador de red puede controlar el paquete como si se hubiera producido un error en la prueba de filtro UDP. De este modo, el adaptador puede quitar automáticamente el paquete recibido.
Nota Si el controlador de minipuerto no establece la marca NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, el controlador debe establecer el miembro SupportedIUdpHeaderFields en cero.
El controlador de minipuerto debe notificar el número máximo de pruebas en los campos de encabezado de paquete que se pueden especificar para un único filtro de fusión de paquetes. El controlador especifica este valor en el miembro MaxFieldTestsPerPacketCoalescingFilter .
Nota Los adaptadores de red que admiten la fusión de paquetes deben admitir cinco o más campos de encabezado de paquete que se pueden especificar para un único filtro de fusión de paquetes. Si el adaptador no admite la fusión de paquetes, el controlador de minipuerto debe establecer este valor en cero.
El controlador de minipuerto debe notificar el número máximo de filtros de fusión de paquetes admitidos por el adaptador de red. El controlador especifica este valor en el miembro MaxPacketCoalescingFilters .
Nota Los adaptadores de red que admiten la fusión de paquetes deben admitir diez o más filtros de fusión de paquetes. Si el adaptador no admite la fusión de paquetes, el controlador de minipuerto debe establecer este valor en cero.
Cuando NDIS llama a la función MiniportInitializeEx del controlador de miniporte, el controlador notifica las funcionalidades de fusión y filtrado de paquetes del adaptador de red subyacente siguiendo estos pasos:
El controlador de minipuerto inicializa una estructura de NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .
Si el valor de la palabra clave *PacketCoalescing del Registro tiene un valor de uno, el controlador de minipuerto establece el miembro HardwareReceiveFilterCapabilities en un puntero a la estructura de NDIS_RECEIVE_FILTER_CAPABILITIES inicializada anteriormente.
Si la configuración de la palabra clave *PacketCoalescing en el Registro tiene un valor de cero, el controlador de minipuerto no anuncia la compatibilidad con la fusión de paquetes. Debe establecer el miembro HardwareReceiveFilterCapabilities en NULL.
El controlador llama a NdisMSetMiniportAttributes y establece el parámetro MiniportAttributes en un puntero a la estructura NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES .
El método que usan los controladores de minipuerto para informar de las capacidades de fusión y filtrado de paquetes del adaptador de red subyacente se basa en el método NDIS 6.20 para notificar las funcionalidades de administración de energía. Para obtener más información sobre este método, vea Reporting Power Management Capabilities.
Para obtener más información sobre el proceso de inicialización del adaptador, consulte Inicialización de un adaptador de minipuerto.