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


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

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

Создание отчетов о возможностях коммутатора сетевого адаптера во время MiniportInitializeEx

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

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

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

Создание отчетов о возможностях коммутатора сетевого адаптера во время MiniportInitializeEx

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

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

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

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

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

  1. Драйвер мини-порта инициализирует элемент Header . Драйвер задает для элемента Typeзаголовка значение NDIS_OBJECT_TYPE_DEFAULT.

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

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

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

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

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

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

    Драйвер мини-порта задает член HardwareNicSwitchCapabilities в виде указателя на ранее инициализированную структуру NDIS_NIC_SWITCH_CAPABILITIES .

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

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

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

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

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

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

Драйверы miniport в 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 в члене NicSwitchCapabilitiesструктуры NDIS_NIC_SWITCH_CAPABILITIES .

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

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

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

  • Когда NDIS вызывает функцию ProtocolBindAdapterEx драйвера избыточного протокола, NDIS передает возможности коммутатора сетевой карты сетевого адаптера через параметр 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 , которые выдаются драйверами чрезмерного протокола или фильтра.