Определение возможностей 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 , которая инициализирована следующим образом:
Драйвер мини-порта инициализирует элемент Header . Драйвер задает для элемента Typeзаголовка значение NDIS_OBJECT_TYPE_DEFAULT.
Начиная с версии NDIS 6.30 драйвер минипорта устанавливает для элемента Revisionзаголовка значение NDIS_SRIOV_CAPABILITIES _REVISION_1, а для элемента Size — NDIS_SIZEOF_SRIOV_CAPABILITIES_REVISION_1.
Драйвер мини-порта устанавливает соответствующие флаги в элементе 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 сетевого адаптера, выполнив следующие действия.
Драйвер мини-порта инициализирует структуру 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.
Драйвер вызывает 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 , которые выдаются драйверами протокола или фильтра.