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


Инициализация драйвера Минипорта VF

В этом разделе описываются рекомендации по написанию функции MiniportInitializeEx для минипорт-драйвера виртуальной функции PCI Express (PCIe). VF представлен сетевым адаптером, поддерживающим одно-корневую виртуализацию операций ввода-вывода (SR-IOV).

Заметка

 Эти рекомендации применяются только к драйверам минипорта VF SR-IOV сетевого адаптера. Руководство по инициализации для минипорт-драйвера физической функции PCIe (PF) адаптера см. в разделе Инициализация минипорт-драйвера PF

Драйвер минипорта VF выполняет те же действия, что и любой драйвер минипорта NDIS при вызове функции MiniportInitializeEx. Дополнительные сведения об этих шагах см. в разделе Инициализациядрайвера минипорта.

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

  • Драйвер мини-порта VF вызывает функцию NdisGetHypervisorInfo, чтобы убедиться, что она выполняется в дочерней секции Hyper-V. Эта функция возвращает NDIS_HYPERVISOR_INFO структуру, которая определяет тип секции. Если тип раздела сообщается как NdisHypervisorPartitionMsHvChild, минипорт-драйвер выполняется в Hyper-V дочернем разделе, подключенном к PF адаптера.

    Заметка

    Если тип раздела сообщается как NdisHypervisorPartitionMsHvParent, драйвер минипорта работает в родительском разделе Hyper-V, который подключен к PF на адаптере. В этом случае минипорт-драйвер не должен инициализироваться в качестве драйвера VF. Если это возможно, драйвер должен инициализироваться как драйвер PF, согласно описанию в последовательности инициализации для драйверов минипорта PF.

  • В отличие от драйвера минипорта PF, драйвер минипорта VF не должен быть установлен с SR-IOV стандартизированными ключевыми словами и не должен пытаться прочитать эти ключевые слова. Дополнительные сведения об этих ключевых словах см. в разделе Стандартные ключевые слова INF для SR-IOV.

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

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

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

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

      Заметка

      Драйвер минипорта VF должен установить как флаг NDIS_SRIOV_CAPS_VF_MINIPORT, так и флаг NDIS_SRIOV_CAPS_SRIOV_SUPPORTED.

    Драйвер минипорта VF, выполняя следующие действия, регистрирует возможности сетевого адаптера SR-IOV.

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

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

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

  • Минипорт-драйвер VF не должен рекламировать возможности очереди виртуальных машин (VMQ). Однако драйвер может объявить поддержку других технологий NDIS, таких как управление питанием и масштабирование на стороне получения (RSS).

    Дополнительную информацию о RSS можно узнать в разделе Масштабирование на стороне получения.