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


Определение возможностей коммутатора сетевых адаптеров

В этом разделе описывается, как NDIS и вышележащие драйверы определяют возможности коммутатора сетевого интерфейса адаптера, поддерживающего виртуализацию единого корневого ввода-вывода (SR-IOV). В этом разделе содержатся следующие сведения:

Отчет о возможностях переключения NIC в ходе MiniportInitializeEx

Запрос возможностей переключения сетевых адаптеров драйверами верхнего уровня

Примечание Только минипорт-драйвер физической функции PCI Express (PCIe) сетевого адаптера SR-IOV может сообщать о возможностях коммутатора сетевого адаптера. Минипорт драйверы для виртуальных функций PCIe (VFs) не должны сообщать о возможностях коммутатора сетевого интерфейсного контроллера SR-IOV.

Дополнительные сведения о коммутаторах сетевого адаптера см. в .

Отчет о возможностях переключения сетевых адаптеров во время MiniportInitializeEx

Когда NDIS вызывает функцию минипорта MiniportInitializeEx, драйвер предоставляет следующие возможности коммутатора сетевого адаптера:

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

    Примечание Начиная с NDIS 6.30, на сетевом адаптере создается только один переключатель сетевого интерфейса (NIC). Этот переключатель называется переключателем сетевого адаптера по умолчанию .

  • Возможности коммутатора сетевого адаптера, которые в настоящее время активированы.

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

  1. Драйвер минипорта инициализирует элемент заголовка. Драйвер задает элемент typeзаголовка NDIS_OBJECT_TYPE_DEFAULT.

    Начиная с версии NDIS 6.30, драйвер минипорта задает элемент редакции заголовка значение NDIS_NIC_SWITCH_CAPABILITIES_REVISION_2 и член размера NDIS_SIZEOF_NIC_SWITCH_CAPABILITIES_REVISION_2.

  2. Драйвер минипорта устанавливает соответствующие флаги в члене NicSwitchCapabilities структуры NDIS_NIC_SWITCH_CAPABILITIES в соответствии с возможностями коммутатора сетевого адаптера SR-IOV. Например, драйвер минипорта задает флаг NDIS_NIC_SWITCH_CAPS_PER_VPORT_INTERRUPT_MODERATION_SUPPORTED, если коммутатор NIC поддерживает модерацию прерываний на каждом виртуальном порту (VPort), созданном на коммутаторе.

  3. Драйвер минипорта задает другим членам структуры NDIS_NIC_SWITCH_CAPABILITIES диапазон значений для возможностей коммутатора сетевого адаптера SR-IOV. Например, драйвер минипорта устанавливает MaxNumVFs и MaxNumVPorts в максимальное количество виртуальных функций и виртуальных портов, которые может поддерживать адаптер.

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

Когда NDIS вызывает функцию минипорта MiniportInitializeEx, драйвер регистрирует возможности коммутатора сетевого адаптера, выполнив следующие действия.

  1. Драйвер минипорта инициализирует структуру NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES.

    Драйвер минипорта задает элемент HardwareNicSwitchCapabilities как указатель на структуру NDIS_NIC_SWITCH_CAPABILITIES, которая была ранее инициализирована.

    Если параметр реестра для ключевого слова INF *SRIOV INF равен единице, сетевой адаптер сейчас включен для создания и настройки коммутатора. Драйвер минипорта задает CurrentNicSwitchCapabilities элементам указатель на ту же NDIS_NIC_SWITCH_CAPABILITIES структуру.

    Если параметр реестра для ключевого слова INF *SRIOV INF имеет значение нуля, сетевой адаптер в настоящее время не включен для создания и настройки коммутатора сетевого адаптера. Минипорт-драйвер должен задать для CurrentNicSwitchCapabilities значение NULL.

    Дополнительные сведения о ключевом слове INF *SRIOV см. в разделе Стандартные INF-ключевые слова дляSR-IOV.

  2. Драйвер вызывает NdisMSetMiniportAttributes и устанавливает параметр MiniportAttributes как указатель на структуру NDIS_MINIPORT_ADAPTER_HARDWARE_ASSIST_ATTRIBUTES.

Дополнительные сведения о процессе инициализации адаптера см. в разделе «Инициализация минипорт-адаптера».

Создание коммутатора сетевого адаптера без SR-IOV

Драйверы минипорта в NDIS 6.60 и более поздних версиях должны соответствовать следующим требованиям для сосуществования коммутатора сетевого адаптера и возможностей VMQ, если SR-IOV не включен. Если включена SR-IOV, минипорт-драйвер должен соответствовать существующим требованиям в предыдущем разделе.

  • Драйвер минипорта рекламирует поддержку как коммутатора сетевого адаптера, так и функций виртуальной очереди машин (VMQ).
  • Сетевой адаптер может переключаться между коммутатором сетевого адаптера и режимом VMQ без перезапуска сетевого адаптера.
    • При первоначальном запуске сетевого адаптера он готов к работе в любом режиме (создание коммутатора сетевого адаптера или создание очередей VMQ).
      • Если создан коммутатор сетевого интерфейса, минипорт завершает ошибкой все последующие обратные вызовы распределения очередей VMQ.
      • Если очередь VMQ создается сначала, драйвер минипорта успешно выполняет выделение очереди VMQ, но не удается выполнить вызовы выделения для переключения сетевых адаптеров.
    • При удалении коммутатора сетевого адаптера или удаления всех очередей VMQ драйвер минипорта возвращается в исходное состояние и готов снова перейти в любой из этих режимов.

Чтобы указать, что коммутатор сетевого адаптера может быть создан без использования SR-IOV, драйвер минипорта устанавливает флаг NDIS_NIC_SWITCH_CAPS_NIC_SWITCH_WITHOUT_IOV_SUPPORTED в члене структуры NicSwitchCapabilitiesNDIS_NIC_SWITCH_CAPABILITIES.

Запрос возможностей коммутатора сетевых интерфейсов с использованием накладывающих драйверов

NDIS передает возможности коммутатора NIC, которые в данный момент включены, вышележащим драйверам, которые привязываются к сетевому адаптеру следующим образом:

  • Когда NDIS вызывает функцию фильтра верхнего уровня FilterAttach, он передает возможности коммутатора сетевого адаптера через параметр AttachParameters. Этот параметр содержит указатель на структуру NDIS_FILTER_ATTACH_PARAMETERS. Элемент этой структуры NicSwitchCapabilities содержит указатель на структуру NDIS_NIC_SWITCH_CAPABILITIES.

  • Когда NDIS вызывает функцию ProtocolBindAdapterEx драйвера верхнего уровня , NDIS передает возможности NIC коммутатора сетевого адаптера через параметр BindParameters. Этот параметр содержит указатель на структуру NDIS_FILTER_ATTACH_PARAMETERS. Элемент этой структуры NicSwitchCapabilities содержит указатель на структуру NDIS_NIC_SWITCH_CAPABILITIES.

NDIS также возвращает структуру NDIS_NIC_SWITCH_CAPABILITIES при обработке запросов идентификатора объекта (OID) OID_NIC_SWITCH_HARDWARE_CAPABILITIES и OID_NIC_SWITCH_CURRENT_CAPABILITIES, выдаваемых вышележащими протоколами или драйверами фильтров.