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


OID_SRIOV_READ_VF_CONFIG_SPACE

Избыточный драйвер выдает запрос метода идентификатора объекта (OID) OID_SRIOV_READ_VF_CONFIG_SPACE для чтения данных из пространства конфигурации PCI Express (PCIe) для указанной виртуальной функции PCIe (VF) на сетевом адаптере.

После успешного возврата из этого запроса метода OID элемент InformationBuffer структуры NDIS_OID_REQUEST содержит указатель на буфер, выделенный вызывающим объектом. Этот буфер имеет следующий формат:

  • Структура NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS , содержащая параметры для операции чтения пространства конфигурации PCI виртуальной машины.

  • Дополнительное буферное пространство для считывания данных из пространства конфигурации PCI.

Комментарии

Драйвер мини-порта VF выполняется в гостевой операционной системе дочернего раздела Hyper-V. Из-за этого драйвер мини-порта VF не может напрямую получить доступ к аппаратным ресурсам, таким как пространство конфигурации PCI VF. Только драйвер мини-порта для физической функции PCIe (PF) может получить доступ к пространству конфигурации PCI для VF. Драйвер мини-порта PF работает в операционной системе управления родительского раздела Hyper-V и имеет привилегированный доступ к ресурсам VF.

Чтобы считывать пространство конфигурации PCI VF, драйверы, работающие в операционной системе управления, выполняют запрос метода OID OID_SRIOV_READ_VF_CONFIG_SPACE драйверу мини-порта PF. Этот запрос метода OID необходим для драйверов мини-портов PF, поддерживающих интерфейс sr-IOV.

Например, стек виртуализации, работающий в операционной системе управления, выполняет запрос метода OID OID_SRIOV_READ_VF_CONFIG_SPACE, когда драйвер мини-порта VF вызывает NdisMGetBusData для чтения из пространства конфигурации PCI VF.

При обработке запроса метода OID OID_SRIOV_READ_VF_CONFIG_SPACE драйвер мини-порта PF должен следовать следующим рекомендациям:

  • Драйвер мини-порта должен убедиться, что VF, указанный членом VFIdструктуры NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS , содержит ресурсы, которые были ранее выделены. Драйвер мини-порта выделяет ресурсы для VF с помощью запроса метода OID OID_NIC_SWITCH_ALLOCATE_VF. Если ресурсы для указанного виртуальногоf не выделены, драйвер должен завершить запрос OID.

  • Драйвер мини-порта должен убедиться, что буфер (на который ссылается элемент InformationBuffer структуры NDIS_OID_REQUEST ) достаточно велик, чтобы вернуть запрошенное пространство конфигурации PCIe. Если это не так, драйвер должен завершить запрос OID.

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

    Примечание Если независимый поставщик оборудования (IHV) предоставляет драйвер виртуальной шины (VBD) в составе пакета драйверов SR-IOV, драйвер мини-порта не должен вызывать NdisMGetVirtualFunctionBusData. Вместо этого драйвер должен выполнять интерфейс с VBD через частный канал связи и запрашивать вызов readVfConfigBlock для VBD. Эта функция предоставляется из интерфейса GUID_VPCI_INTERFACE_STANDARD , поддерживаемого базовым драйвером виртуальной шины PCI (VPCI).

Если драйвер минипорта PF может успешно выполнить запрос OID, драйвер должен скопировать запрошенные данные пространства конфигурации PCI в буфер, на который ссылается элемент InformationBufferструктуры NDIS_OID_REQUEST . Драйвер копирует данные в буфер со смещением, заданным элементом BufferOffsetNDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS структуры.

Дополнительные сведения см. в статье Запрос данных конфигурации PCI виртуальной функции.

Коды состояния возврата

Драйвер мини-порта PF возвращает один из следующих кодов состояния для запроса метода OID OID_SRIOV_READ_VF_CONFIG_SPACE.

Код состояния Описание

NDIS_STATUS_SUCCESS

Запрос OID успешно завершен.

NDIS_STATUS_NOT_SUPPORTED

Драйвер мини-порта либо не поддерживает интерфейс SR-IOV, либо не поддерживает интерфейс sr-IOV.

NDIS_STATUS_INVALID_PARAMETER

Один или несколько членов структуры NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS имеют недопустимые значения.

NDIS_STATUS_INVALID_LENGTH

Буфер сведений был слишком коротким. Драйвер мини-порта должен задать data. METHOD_INFORMATION. Элемент BytesNeeded в NDIS_OID_REQUEST структуру до минимального требуемого размера буфера.

NDIS_STATUS_FAILURE

Сбой запроса по другим причинам.

Требования

Версия

Поддерживается в NDIS 6.30 и более поздних версиях.

Заголовок

Ntddndis.h (включая Ndis.h)

См. также раздел


GUID_VPCI_INTERFACE_STANDARD

NDIS_OID_REQUEST

NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS

NdisMGetBusData

NdisMGetVirtualFunctionBusData

OID_NIC_SWITCH_ALLOCATE_VF

ReadVfConfigBlock