Recursos de união de pacotes de relatório

Os drivers de miniport registram os seguintes recursos com o NDIS durante a inicialização do adaptador de rede:

  • Os recursos de união de pacotes aos quais o adaptador de rede dá suporte.

  • Os recursos de união de pacotes que estão atualmente habilitados no adaptador de rede.

  • A união de pacotes recebe recursos de filtragem que estão atualmente habilitados no adaptador de rede.

Nota O suporte de um driver de miniporta para a união de pacotes pode ser habilitado ou desabilitado por meio da configuração *PacketCoalescing INF palavra-chave. Essa configuração é exibida na página de propriedades Avançado para o adaptador de rede. Para obter mais informações sobre a configuração de arquivo INF de união de pacotes, consulte Palavras-chave INF padronizadas para união de pacotes.

O driver de miniporta relata os recursos de união e filtragem de pacotes do adaptador de rede subjacente por meio de uma estrutura NDIS_RECEIVE_FILTER_CAPABILITIES . Se a configuração *PacketCoalescing palavra-chave no Registro tiver um valor igual a um, a união de pacotes será habilitada e o driver de miniporto inicializará a estrutura NDIS_RECEIVE_FILTER_CAPABILITIES da seguinte maneira:

  1. O driver de miniporta inicializa o membro Header . O driver define o membro Type de Header como NDIS_OBJECT_TYPE_DEFAULT.

    Se o driver der suporte à união de pacotes, ele definirá o membro Revision de Header como o NDIS_RECEIVE_FILTER_CAPABILITIES_REVISION_2 e o membro Size como NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_2.

  2. O driver de miniporta define o sinalizador NDIS_RECEIVE_FILTER_PACKET_COALESCING_SUPPORTED_ON_DEFAULT_QUEUE no membro SupportedQueueProperties .

    Se esse sinalizador for definido, o adaptador de rede deverá dar suporte à filtragem de pacotes multicast recebidos no hardware. Essa filtragem baseia-se nos endereços multicast que o NDIS descarregou para o adaptador de rede enviando-o OID_802_3_MULTICAST_LIST solicitações de conjunto de OID.

    Nota Os drivers de protocolo também podem alterar o conteúdo da lista de endereços multicast enviando solicitações de OID_802_3_ADD_MULTICAST_ADDRESS e OID_802_3_DELETE_MULTICAST_ADDRESS . O NDIS combina essas solicitações em OID_802_3_MULTICAST_LIST solicitações de conjunto de OID.

Nota O adaptador é necessário para rejeitar qualquer pacote multicast de entrada cujo endereço MAC (controle de acesso à mídia de destino) não corresponda a nenhum dos endereços multicast especificados por essas solicitações de conjunto de OID.

  1. O driver de miniporta define o sinalizador NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED no membro EnabledFilterTypes .

    Nota Se o driver definir esse sinalizador, ele também deverá definir o sinalizador NDIS_RECEIVE_FILTER_PACKET_COALESCING_SUPPORTED_ON_DEFAULT_QUEUE no membro SupportedQueueProperties . Caso contrário, o NDIS falhará na chamada para NdisMSetMiniportAttributes retornando NDIS_STATUS_BAD_CHARACTERISTICS.

  2. Se o driver de miniporta definir o sinalizador NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, o driver deverá dar suporte a todos os critérios de teste de filtro de recebimento. O driver anuncia esse suporte definindo os seguintes sinalizadores no membro 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 Se o driver de miniporto não definir o sinalizador NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, o driver deverá definir o membro SupportedFilterTests como zero.

  3. Se o driver de miniporto definir o sinalizador NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, o driver de miniporto deverá dar suporte à filtragem de dados em vários campos dos cabeçalhos MAC (controle de acesso de mídia), IP versão 4 (IPv4) e IP versão 6 (IPv6). O driver anuncia esse suporte definindo os seguintes sinalizadores no membro 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 Se o driver de miniporta não definir o sinalizador NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, o driver deverá definir o membro SupportedHeaders como zero.

  4. Se o driver de miniporto definir o sinalizador NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, o driver de miniporto deverá dar suporte à filtragem de dados no cabeçalho MAC (controle de acesso à mídia) do pacote recebido. O driver anuncia esse suporte definindo os seguintes sinalizadores no membro 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 Se o driver de miniporta não definir o sinalizador NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, o driver deverá definir o membro SupportedMacHeaderFields como zero.

  5. Se o driver de miniporto definir o sinalizador NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, o driver de miniporto deverá dar suporte à filtragem de dados dentro do cabeçalho de um pacote ARP (Protocolo de Resolução de Endereços) recebido. O driver anuncia esse suporte definindo os seguintes sinalizadores no membro SupportedARPHeaderFields :

    • NDIS_RECEIVE_FILTER_ARP_HEADER_OPERATION_SUPPORTED

    • NDIS_RECEIVE_FILTER_ARP_HEADER_SPA_SUPPORTED

    • NDIS_RECEIVE_FILTER_ARP_HEADER_TPA_SUPPORTED

    Nota Se o driver de miniporto não definir o sinalizador NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, o driver deverá definir o membro SupportedARPHeaderFields como zero.

  6. Se o driver de miniporto definir o sinalizador de NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, o driver de miniporto deverá dar suporte à filtragem de dados dentro do cabeçalho L3 (Open Systems Interconnection) camada 3 (L3) de um pacote IPv4 (IP versão 4) recebido. O driver anuncia esse suporte definindo os seguintes sinalizadores no membro SupportedIPv4HeaderFields :

    • NDIS_RECEIVE_FILTER_IPV4_HEADER_PROTOCOL_SUPPORTED

    Nota Se o driver de miniporto não definir o sinalizador NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, o driver deverá definir o membro SupportedIPv4HeaderFields como zero.

  7. Se o driver de miniporto definir o sinalizador NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, o driver de miniporto deverá dar suporte à filtragem de dados dentro do cabeçalho L3 de um pacote IPv6 (IP versão 6) recebido. O driver anuncia esse suporte definindo os seguintes sinalizadores no membro SupportedIPv6HeaderFields :

    • NDIS_RECEIVE_FILTER_IPV6_HEADER_PROTOCOL_SUPPORTED

    Nota Se o driver de miniporto não definir o sinalizador NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, o driver deverá definir o membro SupportedIPv6HeaderFields como zero.

  8. Se o driver de miniporto definir o sinalizador NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, o driver de miniporto deverá dar suporte à filtragem de dados dentro do cabeçalho L4 (camada OSI 4) de um pacote UDP (User Datagram Protocol) recebido. O driver anuncia esse suporte definindo os seguintes sinalizadores no membro SupportedIUdpHeaderFields :

    • NDIS_RECEIVE_FILTER_UDP_HEADER_DEST_PORT_SUPPORTED

    Nota Se o pacote UDP recebido contiver opções IPv4 ou cabeçalhos de extensão IPv6, o adaptador de rede poderá manipular o pacote como se tivesse falhado no teste de filtro UDP. Dessa forma, o adaptador pode remover automaticamente o pacote recebido.

Nota Se o driver de miniporta não definir o sinalizador NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED, o driver deverá definir o membro SupportedIUdpHeaderFields como zero.

  1. O driver de miniporta deve relatar o número máximo de testes em campos de cabeçalho de pacote que podem ser especificados para um único filtro de união de pacotes. O driver especifica esse valor no membro MaxFieldTestsPerPacketCoalescingFilter .

    Nota Os adaptadores de rede que dão suporte à união de pacotes devem dar suporte a cinco ou mais campos de cabeçalho de pacote que podem ser especificados para um único filtro de união de pacotes. Se o adaptador não der suporte à união de pacotes, o driver de miniporto deverá definir esse valor como zero.

  2. O driver de miniporta deve relatar o número máximo de filtros de união de pacotes compatíveis com o adaptador de rede. O driver especifica esse valor no membro MaxPacketCoalescingFilters .

    Nota Os adaptadores de rede que dão suporte à união de pacotes devem dar suporte a dez ou mais filtros de união de pacotes. Se o adaptador não der suporte à união de pacotes, o driver de miniporto deverá definir esse valor como zero.

Quando o NDIS chama a função MiniportInitializeEx do driver de miniport, o driver relata os recursos de união e filtragem de pacotes do adaptador de rede subjacente seguindo estas etapas:

O método usado pelos drivers de miniporto para relatar os recursos de união e filtragem de pacotes do adaptador de rede subjacente baseia-se no método NDIS 6.20 para relatar recursos de gerenciamento de energia. Para obter mais informações sobre esse método, consulte Reporting Power Management Capabilities.

Para obter mais informações sobre o processo de inicialização do adaptador, consulte Inicializando um adaptador miniport.