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


Выдача запросов OID_NIC_SWITCH_ALLOCATE_VF

Перед выполнением запроса метода идентификатора объекта (OID) OID_NIC_SWITCH_ALLOCATE_VF драйверу минипорта для физической функции PCI Express (PCIe) (PF), вышещий драйвер форматирует структуру NDIS_NIC_SWITCH_VF_PARAMETERS . Эта структура содержит параметры конфигурации для ресурсов, выделяемых для виртуальной функции PCIe (VF) на сетевом адаптере. В драйвере выше должен быть заданы члены этой структуры следующим образом:

  • Член SwitchId должен иметь идентификатор коммутатора сетевого адаптера, созданного ранее на сетевом адаптере. Коммутатор сетевой карты создается с помощью запроса метода OID OID_NIC_SWITCH_CREATE_SWITCH.

    Когда он обрабатывает запрос метода OID OID_NIC_SWITCH_ALLOCATE_VF, драйвер мини-порта для физической функции PCIe (PF) выделяет ресурсы для VF. Если ресурсы выделены успешно, драйвер мини-порта PF назначает VF указанному коммутатору сетевой карты.

    Примечание Начиная с NDIS 6.30 в Windows Server 2012 интерфейс SR-IOV поддерживает только коммутатор сетевого адаптера по умолчанию. Для элемента SwitchId необходимо задать значение NDIS_DEFAULT_SWITCH_ID.

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

  • Для элемента VFId необходимо задать значение NDIS_INVALID_VF_FUNCTION_ID.

  • Элемент RequestorId должен иметь значение NDIS_INVALID_RID.

  • Для элементов VMFriendlyName и VMName необходимо задать параметры дочернего раздела Hyper-V. Драйвер мини-порта PF использует эти элементы только в информационных целях.

    Примечание Дочерний раздел Hyper-V также называется виртуальной машиной.

    Виртуальная машина связана с указанной виртуальной машиной до того, как драйвер выполняет запрос OID_NIC_SWITCH_CREATE_SWITCH .

  • Член NicName должен иметь идентификатор сетевого адаптера виртуальной машины. Этот виртуальный адаптер предоставляется в гостевой операционной системе, работающей на виртуальной машине. Драйвер мини-порта PF использует этот член только в информационных целях.

    Если ресурсы выделены для виртуальной машины и подключены к дочернему разделу, сетевой адаптер VF предоставляется в операционной системе на виртуальной машине. Сетевой адаптер виртуальной машины использует сетевой адаптер VF для передачи пакетов по аппаратному пути данных VF.

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

  • Для членов PermanentMacAddress и CurrentMacAddress должны быть заданы MAC-адреса для виртуального сетевого адаптера VF. Эти адреса предоставляются сетевому стеку, который выполняется в гостевой операционной системе дочернего раздела Hyper-V.

Драйвер overlying выдает запрос метода OID для OID_NIC_SWITCH_ALLOCATE_VF , выполнив следующие действия:

  1. Драйвер overlying инициализирует структуру NDIS_OID_REQUEST для запроса метода OID. Драйвер задает элементу InformationBuffer указатель на инициализированную структуру NDIS_NIC_SWITCH_VF_PARAMETERS .

  2. Драйвер overlying вызывает NdisOidRequest , чтобы отправить запрос OID базовому драйверу мини-порта PF.

    Примечание Когда драйвер с превышением вызывает NdisOidRequest, NDIS перехватывает запрос OID и проверяет параметры VF, указанные в структуре NDIS_NIC_SWITCH_VF_PARAMETERS . Если параметры успешно проверены, NDIS перенаправит OID в драйвер мини-порта PF. В противном случае NDIS завершится сбоем запроса OID с NDIS_STATUS_INVALID_PARAMETER.

После того как избыточный драйвер запрашивает выделение ресурсов для VF, этот драйвер является единственным компонентом, который может запросить освобождение ресурсов для того же VF. Чтобы освободить ресурсы VF, драйвер должен выдать запрос на набор OID OID_NIC_SWITCH_FREE_VF . Прежде чем остановить драйвер с превышением, он должен освободить ресурсы для каждого VF, выделенного запросом OID_NIC_SWITCH_ALLOCATE_VF драйвера.