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


Обработка запросов OID_NIC_SWITCH_ALLOCATE_VF

Когда драйвер мини-порта для физической функции PCI Express (PCIe) на сетевом адаптере обрабатывает запрос метода идентификатора объекта (OID) OID_NIC_SWITCH_ALLOCATE_VF, он выполняет следующие действия:

  • Драйвер минипорта PF выделяет программные ресурсы для виртуальной функции PCIe (VF) на сетевом адаптере. Эти ресурсы настраиваются на основе параметров, указанных в структуре NDIS_NIC_SWITCH_VF_PARAMETERS .

  • Драйвер мини-порта PF назначает VF коммутатору сетевого адаптера на сетевом адаптере. Коммутатор сетевого адаптера определяется элементом SwitchIdструктуры NDIS_NIC_SWITCH_VF_PARAMETERS .

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

  • Драйвер мини-порта PF обновляет член VFId идентификатором VF. Этот идентификатор является отсчитываемым от нуля индексом и должен быть уникальным для всех виртуальных машин, выделенных на коммутаторе сетевого адаптера драйвером мини-порта PF.

    Драйвер overlying использует значение члена VFId в последовательных запросах OID OID_NIC_SWITCH_FREE_VF или OID_NIC_SWITCH_VF_PARAMETERS.

  • Драйвер мини-порта PF обновляет элемент RequestorId с помощью идентификатора запрашивателя PCIe (RID) для VF.

    Драйвер мини-порта вызывает NdisMGetVirtualFunctionLocation , чтобы получить сведения RID, соответствующие VF. Затем драйвер создает RID с помощью макроса NDIS_MAKE_RID на основе сведений, возвращенных вызовом NdisMGetVirtualFunctionLocation.

    Rid используется стеком виртуализации для переназначения DMA и прерываний между PF и VF. RID также позволяет аппаратной единице управления памятью ввода-вывода (IOMMU) преобразовывать физические адреса гостевых гостей в физические адреса размещения.

  • Драйвер мини-порта PF инициализирует и предоставляет VF. Это делает VF готовым к использованию стеком виртуализации.

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

Примечание При выделении ресурсов для виртуальной машины виртуальныйf находится в неподключаемом состоянии, так как виртуальный порт (VPort) не подключен к VF. Драйвер может отправить OID-запрос OID_NIC_SWITCH_CREATE_VPORT , чтобы создать и подключить VPort к VF. Дополнительные сведения см. в разделе Создание виртуального порта.