Поделиться через


структура NDIS_RECEIVE_FILTER_CAPABILITIES (ntddndis.h)

Структура NDIS_RECEIVE_FILTER_CAPABILITIES определяет возможности фильтрации приема сетевого адаптера.

Фильтры получения NDIS используются в следующих интерфейсах NDIS:

Синтаксис

typedef struct _NDIS_RECEIVE_FILTER_CAPABILITIES {
  NDIS_OBJECT_HEADER Header;
  ULONG              Flags;
  ULONG              EnabledFilterTypes;
  ULONG              EnabledQueueTypes;
  ULONG              NumQueues;
  ULONG              SupportedQueueProperties;
  ULONG              SupportedFilterTests;
  ULONG              SupportedHeaders;
  ULONG              SupportedMacHeaderFields;
  ULONG              MaxMacHeaderFilters;
  ULONG              MaxQueueGroups;
  ULONG              MaxQueuesPerQueueGroup;
  ULONG              MinLookaheadSplitSize;
  ULONG              MaxLookaheadSplitSize;
  ULONG              SupportedARPHeaderFields;
  ULONG              SupportedIPv4HeaderFields;
  ULONG              SupportedIPv6HeaderFields;
  ULONG              SupportedUdpHeaderFields;
  ULONG              MaxFieldTestsPerPacketCoalescingFilter;
  ULONG              MaxPacketCoalescingFilters;
  ULONG              NdisReserved;
} NDIS_RECEIVE_FILTER_CAPABILITIES, *PNDIS_RECEIVE_FILTER_CAPABILITIES;

Члены

Header

Структура NDIS_OBJECT_HEADER для структуры NDIS_RECEIVE_FILTER_CAPABILITIES . Драйвер задает элемент Type структуры, указанной в заголовке , для NDIS_OBJECT_TYPE_DEFAULT.

Чтобы указать версию структуры NDIS_RECEIVE_FILTER_CAPABILITIES , драйвер задает для элемента Revision одно из следующих значений:

NDIS_RECEIVE_FILTER_CAPABILITIES_REVISION_2

Добавлено
различные элементы для NDIS 6.30 и более поздних версий.

Драйвер задает для элемента Size значение NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_2.

NDIS_RECEIVE_FILTER_CAPABILITIES_REVISION_1

Исходная версия для NDIS 6.20.

Драйвер задает для элемента Size значение NDIS_SIZEOF_RECEIVE_FILTER_CAPABILITIES_REVISION_1.

Flags

Побитовое ИЛИ флагов. Этот элемент зарезервирован для NDIS.

EnabledFilterTypes

Побитовое ИЛИ флагов, указывающих типы включенных фильтров получения. Следующий флаг типа фильтра является допустимым.

NDIS_RECEIVE_FILTER_VMQ_FILTERS_ENABLED

Указывает, что фильтры VMQ включены.

Примечание Драйвер минипорта должен установить этот флаг, если драйверу минипорта разрешено использовать интерфейс SR-IOV.
 

NDIS_RECEIVE_FILTER_PACKET_COALESCING_FILTERS_ENABLED

Указывает, что включены фильтры получения объединения пакетов NDIS.

EnabledQueueTypes

Побитовое ИЛИ флагов, указывающих типы включенных очередей получения. Следующий флаг типа очереди является допустимым.

NDIS_RECEIVE_FILTER_VM_QUEUES_ENABLED

Указывает, что очереди виртуальных машин включены. Очереди виртуальных машин используются, когда драйвер мини-порта включен для использования интерфейса VMQ.

Примечание Драйвер мини-порта не должен устанавливать этот флаг, если драйверу минипорта разрешено использовать только интерфейс SR-IOV. Дополнительные сведения о включении этих интерфейсов см. в разделе Обработка стандартизированных ключевых слов INF SR-IOV, VMQ и RSS.
 

NumQueues

Количество очередей виртуальных машин, поддерживаемых сетевым адаптером.

Примечание Если драйверу мини-порта разрешено использовать интерфейс SR-IOV, он должен задать для этого элемента значение 0. Если включен интерфейс SR-IOV, NDIS использует виртуальные порты (VPorts) для очередей приема и передачи вместо очередей виртуальных машин.
 

SupportedQueueProperties

Побитовое ИЛИ флагов, которые указывают свойства очереди виртуальных машин, поддерживаемые сетевым адаптером. Определены следующие флаги:

NDIS_RECEIVE_FILTER_MSI_X_SUPPORTED

Сетевой адаптер использует MSI-X для создания прерываний очереди получения. Этот флаг является обязательным для драйверов мини-портов, поддерживающих интерфейс VMQ или SR-IOV.

NDIS_RECEIVE_FILTER_VM_QUEUE_SUPPORTED

Сетевой адаптер предоставляет минимальные требования для поддержки фильтрации пакетов очередей виртуальных машин.

Драйвер мини-порта должен установить этот флаг, если он включен для использования интерфейса VMQ или SR-IOV.

Дополнительные сведения о требованиях VMQ для фильтрации пакетов очередей виртуальных машин см. в разделе Настройка и очистка фильтров VMQ.

Дополнительные сведения о требованиях SR-IOV для фильтрации пакетов очередей виртуальных машин см. в статье Настройка фильтра получения для виртуального порта.

NDIS_RECEIVE_FILTER_LOOKAHEAD_SPLIT_SUPPORTED

Сетевой адаптер поддерживает очереди виртуальных машин, которые разделяют входящий полученный пакет по смещению lookahead. Это смещение равно или больше запрошенного размера lookahead. Сетевой адаптер использует DMA для передачи данных lookahead и post-lookahead в отдельные сегменты общей памяти.

Примечание Начиная с версии NDIS 6.30 разделение данных пакетов на отдельные буферы lookahead больше не поддерживается. Драйверы miniport, поддерживающие эту версию NDIS, не должны устанавливать этот флаг.
 

NDIS_RECEIVE_FILTER_DYNAMIC_PROCESSOR_AFFINITY_CHANGE_SUPPORTED

Сетевой адаптер поддерживает возможность динамического изменения одного из следующих атрибутов сходства процессора:

  • Сходство процессоров очереди виртуальных машин в интерфейсе VMQ. Сходство процессоров изменяется с помощью запроса на набор OID OID_RECEIVE_FILTER_QUEUE_PARAMETERS.
  • Сходство процессоров для виртуального порта без изменений (VPort), который был создан в интерфейсе SR-IOV и подключен к физической функции (PF) PCI Express (PCIe) сетевого адаптера. Сходство процессоров изменяется с помощью запроса на набор OID OID_NIC_SWITCH_VPORT_PARAMETERS.
Примечание Этот флаг поддерживается в NDIS 6.30 и более поздних версиях. Драйверы мини-портов, поддерживающие интерфейс VMQ или SR-IOV, должны установить этот флаг.
 

NDIS_RECEIVE_FILTER_INTERRUPT_VECTOR_COALESCING_SUPPORTED

Сетевой адаптер поддерживает объединение прерываний для полученных пакетов в любом из следующих вариантов:

  • Несколько очередей виртуальных машин в интерфейсе VMQ.
  • Несколько виртуальных портов, подключенных к PF в интерфейсе SR-IOV.
Если этот флаг установлен, сетевой адаптер должен объединить прерывания приема для очередей виртуальных машин или виртуальных портов с одинаковым сходством процессоров.
Примечание Этот флаг поддерживается в NDIS 6.30 и более поздних версиях. Драйверы мини-портов, поддерживающие интерфейс VMQ или SR-IOV, должны установить этот флаг.
 

NDIS_RECEIVE_FILTER_IMPLAT_MIN_OF_QUEUES_MODE

Указывает, что количество доступных очередей виртуальных машин — это минимальное количество очередей, доступных для любого участника группы отработки отказа балансировки нагрузки (LBFO). Этот флаг применяется только к фильтрам LBFO. Этот флаг не установлен для минипортов.

NDIS_RECEIVE_FILTER_IMPLAT_SUM_OF_QUEUES_MODE

Указывает, что количество доступных очередей виртуальных машин — это сумма всех очередей, доступных каждому участнику команды LBFO. Этот флаг применяется только к фильтрам LBFO. Этот флаг не установлен для минипортов.

NDIS_RECEIVE_FILTER_PACKET_COALESCING_SUPPORTED_ON_DEFAULT_QUEUE

Сетевой адаптер поддерживает объединение пакетов NDIS. Объединение пакетов поддерживается только в очереди получения по умолчанию сетевого адаптера. Эта очередь получения имеет идентификатор NDIS_DEFAULT_RECEIVE_QUEUE_ID.

Примечание Этот флаг поддерживается в NDIS 6.30 и более поздних версиях.
 

SupportedFilterTests

Побитовое ИЛИ флагов, задающее операции тестирования, поддерживаемые драйвером мини-порта. Определены следующие флаги:

NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_EQUAL_SUPPORTED

Сетевой адаптер поддерживает тестирование выбранного поля заголовка, чтобы определить, равно ли оно заданному значению.

Примечание Если драйвер мини-порта поддерживает интерфейсы VMQ или SR-IOV, он должен установить этот флаг.
 

NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_MASK_EQUAL_SUPPORTED

Сетевой адаптер поддерживает маскирование (то есть побитовое И) выбранного поля заголовка, чтобы определить, равен ли результат указанному значению.

NDIS_RECEIVE_FILTER_TEST_HEADER_FIELD_NOT_EQUAL_SUPPORTED

Сетевой адаптер поддерживает тестирование выбранного поля заголовка, чтобы определить, не равно ли оно указанному значению.

Примечание Этот флаг поддерживается в NDIS 6.30 и более поздних версиях.
 

SupportedHeaders

Побитовое ИЛИ флагов, указывающих типы заголовков сетевых пакетов, которые может проверять драйвер минипорта. Определены следующие флаги:

NDIS_RECEIVE_FILTER_MAC_HEADER_SUPPORTED

Сетевой адаптер может проверить заголовок управления доступом к мультимедиа (MAC) сетевого пакета. Элемент SupportedMacHeaderFields определяет различные поля из mac-заголовка, которые можно проверить.

NDIS_RECEIVE_FILTER_ARP_HEADER_SUPPORTED

Сетевой адаптер может проверить заголовок ARP сетевого пакета. Элемент SupportedArpHeaderFields определяет различные поля из заголовка ARP, которые можно проверить.

Примечание Этот флаг поддерживается в NDIS 6.30 и более поздних версиях.
 

NDIS_RECEIVE_FILTER_IPV4_HEADER_SUPPORTED

Сетевой адаптер может проверить заголовок IP-адреса версии 4 (IPv4) сетевого пакета. Элемент SupportedIPv4HeaderFields определяет различные поля из заголовка IPv4, которые можно проверить.

Примечание Этот флаг поддерживается в NDIS 6.30 и более поздних версиях.
 

NDIS_RECEIVE_FILTER_IPV6_HEADER_SUPPORTED

Сетевой адаптер может проверить заголовок IP-адреса версии 6 (IPv6) сетевого пакета. Элемент SupportedIPv6HeaderFields определяет различные поля из заголовка IPv6, которые можно проверить.

Примечание Этот флаг поддерживается в NDIS 6.30 и более поздних версиях.
 

NDIS_RECEIVE_FILTER_UDP_HEADER_SUPPORTED

Сетевой адаптер может проверить заголовок UDP сетевого пакета. Элемент SupportedIPv6HeaderFields определяет различные поля из заголовка UDP, которые можно проверить.

Примечание Этот флаг поддерживается в NDIS 6.30 и более поздних версиях.
 

SupportedMacHeaderFields

Побитовое ИЛИ флагов, указывающих типы полей заголовков MAC, которые может проверять драйвер минипорта. Определены следующие флаги:

NDIS_RECEIVE_FILTER_MAC_HEADER_DEST_ADDR_SUPPORTED

Сетевой адаптер поддерживает проверку и фильтрацию на основе MAC-адреса назначения в заголовке MAC.

Примечание Начиная с версии NDIS 6.30, этот флаг необходимо установить для драйверов miniport, поддерживающих интерфейс VMQ или SR-IOV.
 

NDIS_RECEIVE_FILTER_MAC_HEADER_SOURCE_ADDR_SUPPORTED

Сетевой адаптер поддерживает проверку и фильтрацию на основе исходного MAC-адреса в заголовке MAC.

NDIS_RECEIVE_FILTER_MAC_HEADER_PROTOCOL_SUPPORTED

Сетевой адаптер поддерживает проверку и фильтрацию на основе идентификатора EtherType в заголовке MAC. Например, идентификатор EtherType для пакетов IPv4 0x0800.

NDIS_RECEIVE_FILTER_MAC_HEADER_VLAN_ID_SUPPORTED

Сетевой адаптер поддерживает проверку и фильтрацию на основе идентификатора виртуальной локальной сети в заголовке MAC.

Примечание Начиная с NDIS 6.30 этот флаг является необязательным. Если драйвер мини-порта не устанавливает этот флаг, сетевой адаптер должен проверить и отфильтровать указанные поля MAC-адреса. Если тег виртуальной ЛС присутствует в полученном пакете, сетевой адаптер должен удалить его из данных пакета. Драйвер мини-порта должен поместить тег виртуальной локальной сети в структуру NDIS_NET_BUFFER_LIST_8021Q_INFO , связанную со структурой NET_BUFFER_LIST пакета.
 

NDIS_RECEIVE_FILTER_MAC_HEADER_PRIORITY_SUPPORTED

Сетевой адаптер поддерживает проверку и фильтрацию на основе тега priority в заголовке MAC.

NDIS_RECEIVE_FILTER_MAC_HEADER_PACKET_TYPE_SUPPORTED

Сетевой адаптер поддерживает проверку и фильтрацию, основанные на поле типа пакета заголовка ПРОТОКОЛА ДОСТУПА IEEE 802.2 к подсети (SNAP) в mac-заголовке 802.3.

Примечание Этот флаг поддерживается в NDIS 6.30 и более поздних версиях.
 

MaxMacHeaderFilters

Максимальное количество фильтров заголовков MAC, поддерживаемых драйвером мини-порта.

MaxQueueGroups

Этот элемент зарезервирован для NDIS.

MaxQueuesPerQueueGroup

Этот элемент зарезервирован для NDIS.

MinLookaheadSplitSize

Минимальный размер в байтах, поддерживаемый сетевым адаптером для буферов пакетов lookahead.

Примечание Начиная с версии NDIS 6.30 разделение данных пакетов на отдельные буферы lookahead больше не поддерживается. Драйверы miniport, поддерживающие эту версию NDIS, должны установить для этого элемента значение 0.
 

MaxLookaheadSplitSize

Максимальный размер в байтах, поддерживаемый сетевым адаптером для буферов пакетов lookahead.

Примечание Начиная с версии NDIS 6.30 разделение данных пакетов на отдельные буферы lookahead больше не поддерживается. Драйверы miniport, поддерживающие эту версию NDIS, должны установить для этого элемента значение 0.
 

SupportedARPHeaderFields

Побитовое ИЛИ флагов, указывающих типы полей заголовков ARP, которые может проверять драйвер минипорта. Определены следующие флаги:

NDIS_RECEIVE_FILTER_ARP_HEADER_OPERATION_SUPPORTED

Сетевой адаптер поддерживает фильтрацию приема в поле операции ARP.

NDIS_RECEIVE_FILTER_ARP_HEADER_SPA_SUPPORTED

Сетевой адаптер поддерживает фильтрацию приема в поле Адрес исходного протокола ARP (SPA).

NDIS_RECEIVE_FILTER_ARP_HEADER_TPA_SUPPORTED

Сетевой адаптер поддерживает фильтрацию приема в поле Адрес целевого протокола ARP (TPA).

SupportedIPv4HeaderFields

Побитовое ИЛИ флагов, указывающих типы полей заголовков IPv4, которые может проверить драйвер мини-порта. Определены следующие флаги:

NDIS_RECEIVE_FILTER_IPV4_HEADER_PROTOCOL_SUPPORTED

Сетевой адаптер поддерживает фильтрацию приема в поле протокола IPv4.

SupportedIPv6HeaderFields

Побитовое ИЛИ флагов, указывающих типы полей заголовков IPv6, которые может проверять драйвер мини-порта. Определены следующие флаги:

NDIS_RECEIVE_FILTER_IPV6_HEADER_PROTOCOL_SUPPORTED

Сетевой адаптер поддерживает фильтрацию приема в поле протокола IPv6.

SupportedUdpHeaderFields

Побитовое ИЛИ флагов, указывающих типы полей заголовков IPv6, которые может проверять драйвер мини-порта. Определены следующие флаги:

NDIS_RECEIVE_FILTER_UDP_HEADER_DEST_PORT_SUPPORTED

Сетевой адаптер поддерживает фильтрацию приема в поле порта назначения UDP.

Примечание Если полученный UDP-пакет содержит параметры IPv4 или заголовки расширения IPv6, сетевой адаптер может автоматически удалить полученный пакет и обрабатывать его так, как если бы он не прошел проверку фильтра UDP.
 

MaxFieldTestsPerPacketCoalescingFilter

Максимальное количество тестов в полях заголовков пакетов, которое можно указать для одного фильтра объединения пакетов. Дополнительные сведения о объединениях пакетов см. в разделе Объединение пакетов NDIS.

Примечание Сетевые адаптеры, поддерживающие объединение пакетов, должны поддерживать пять или более полей заголовков пакетов, которые можно указать для одного фильтра объединения пакетов. Если адаптер не поддерживает объединение пакетов, драйвер минипорта должен задать для этого значения нулевое значение.
 

MaxPacketCoalescingFilters

Максимальное количество фильтров приема для объединения пакетов, поддерживаемых сетевым адаптером.

Примечание Сетевые адаптеры, поддерживающие объединение пакетов, должны поддерживать десять или более фильтров объединения пакетов. Если адаптер не поддерживает объединение пакетов, драйвер минипорта должен задать для этого значения нулевое значение.
 

NdisReserved

Зарезервировано. Задайте значение 0.

Комментарии

Структура NDIS_RECEIVE_FILTER_CAPABILITIES используется в элементе ReceiveFilterCapabilities NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES, NDIS_FILTER_ATTACH_PARAMETERS и NDIS_BIND_PARAMETERS структур и возвращаемый результат OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES Запрос OID.

Многие элементы и параметры флагов структуры NDIS_RECEIVE_FILTER_CAPABILITIES действительны, только если драйверу мини-порта разрешено использовать интерфейс VMQ или SR-IOV. Драйвер мини-порта может использовать эти интерфейсы с помощью стандартизированных ключевых слов INF. Дополнительные сведения см. в разделе Обработка стандартизированных ключевых слов INF SR-IOV, VMQ и RSS.

Требования

Требование Значение
Минимальная версия клиента Поддерживается в NDIS 6.20 и более поздних версиях.
Верхняя часть ntddndis.h (включая Ndis.h)

См. также раздел

NDIS_BIND_PARAMETERS

NDIS_FILTER_ATTACH_PARAMETERS

NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES

NDIS_OBJECT_HEADER

NDIS_RECEIVE_QUEUE_INFO

NDIS_RECEIVE_QUEUE_PARAMETERS

OID_RECEIVE_FILTER_HARDWARE_CAPABILITIES