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


Определение возможностей SR-IOV

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

Создание отчетов о возможностях SR-IOV во время MiniportInitializeEx

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

Создание отчетов о возможностях SR-IOV во время MiniportInitializeEx

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

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

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

  • Указывает, управляет ли драйвер мини-порта физической функцией PCI Express (PCIe) или виртуальной функцией (VF) на сетевом адаптере.

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

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

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

  2. Драйвер мини-порта устанавливает соответствующие флаги в элементе SriovCapabilities , чтобы сообщить о возможностях SR-IOV.

    Если сетевой адаптер поддерживает SR-IOV, драйвер минипорта для физической функции PCI Express (PCIe) адаптера должен установить следующие флаги:

    • NDIS_SRIOV_CAPS_SRIOV_SUPPORTED

    • NDIS_SRIOV_CAPS_PF_MINIPORT

    Примечание

     Драйвер мини-порта для виртуальной функции PCIe (VF) сетевого адаптера должен установить флаг NDIS_SRIOV_CAPS_VF_MINIPORT и флаг NDIS_SRIOV_CAPS_SRIOV_SUPPORTED.  

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

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

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

    Если параметр реестра для *SRIOV INF ключевое слово имеет значение , равное одному, возможности SR-IOV в настоящее время включены на сетевом адаптере. Драйвер мини-порта задает для членов CurrentSriovCapabilities указатель на ту же NDIS_SRIOV_CAPABILITIES структуру.

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

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

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

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

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

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

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

  • Когда NDIS вызывает функцию ProtocolBindAdapterEx драйвера протокола, NDIS передает возможности SR-IOV сетевого адаптера через параметр BindParameters . Этот параметр содержит указатель на структуру NDIS_FILTER_ATTACH_PARAMETERS . Элемент SriovCapabilities этой структуры содержит указатель на NDIS_SRIOV_CAPABILITIES структуру.

NDIS также возвращает структуру NDIS_SRIOV_CAPABILITIES при обработке запросов идентификатора объекта (OID) OID_SRIOV_HARDWARE_CAPABILITIES и OID_SRIOV_CURRENT_CAPABILITIES , которые выдаются драйверами протокола или фильтра.