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


Настройка параметров виртуального порта

Переопределяющий драйвер может изменить параметры виртуального порта (VPort) на коммутаторе сетевого адаптера, который поддерживает виртуализацию ввода-вывода с единственным корнем (SR-IOV). Драйвер делает запрос на установку идентификатора объекта (OID) OID_NIC_SWITCH_VPORT_PARAMETERS для изменения этих параметров.

Прежде чем верхний драйвер отправляет этот запрос на установку OID, он должен инициализировать структуру NDIS_NIC_SWITCH_VPORT_PARAMETERS с параметрами, которые необходимо изменить на VPort. Затем драйвер инициализирует структуру NDIS_OID_REQUEST для запроса OID и задает в элементе InformationBuffer указатель на структуру NDIS_NIC_SWITCH_VPORT_PARAMETERS.

Можно изменить только ограниченное подмножество параметров конфигурации для VPort. Верхний драйвер указывает параметр для изменения, задав следующие члены структуры NDIS_NIC_SWITCH_VPORT_PARAMETERS;

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

    Примечание В версии Windows Server 2012 интерфейс SR-IOV поддерживает всего один переключатель сети на сетевом адаптере. Этот переключатель называется коммутатором сетевого адаптера по умолчанию. Элемент SwitchId должен иметь значение NDIS_DEFAULT_SWITCH_ID.

  • Элемент VPortId должен иметь идентификатор, связанный с VPort. Драйвер верхнего уровня получает идентификатор VPort одним из следующих способов:

  • Соответствующие флаги NDIS_NIC_SWITCH_VPORT_PARAMS_Xxx_CHANGED должны быть заданы в элементе Flags. Элементы структуры NDIS_NIC_SWITCH_VPORT_PARAMETERS можно изменить только в том случае, если в Ntddndis.h определен соответствующий флаг NDIS_NIC_SWITCH_VPORT_PARAMS_Xxx_CHANGED.

  • Элементы структуры NDIS_NIC_SWITCH_VPORT_PARAMETERS, соответствующие флагам NDIS_NIC_SWITCH_VPORT_PARAMS_Xxx_CHANGED, заданным в элементе флагов, задаются с параметрами конфигурации VPort, которые необходимо изменить.

Начиная с Windows Server 2012, можно изменить только следующие члены структуры NDIS_NIC_SWITCH_VPORT_PARAMETERS с помощью запроса набора OID OID_NIC_SWITCH_VPORT_PARAMETERS:

ИмяПорта
Этот член содержит понятное описание VPort.

МодерацияПрерываний
Этот член задает параметр модерации прерываний VPort.

ProcessorAffinity
Этот член указывает номер группы и растровое изображение ЦП, с которым может быть связан этот VPort.

Драйвер верхнего уровня должен следовать приведенным ниже рекомендациям для изменения элемента ProcessorAffinity в VPort.

  • Этот элемент действителен только для VPorts, подключенных к PF. Это поле недопустимо для виртуальных портов, не установленных по умолчанию, подключенных к VF.

  • Для нестандартных виртуальных портов (VPorts), подключенных к физическому функционалу (PF), необходимо указать как минимум один процессор при создании виртуального порта. Привязка процессора, связанная с непоумолчательным VPort, может быть изменена после создания VPort.

    Примечание Не-дефолтные VPorts создаются с помощью запросов метода OID OID_NIC_SWITCH_CREATE_VPORT.

VPortState
Этот элемент указывает текущее состояние VPort.

Для изменения VPortState для VPort драйвер должен следовать приведенным ниже рекомендациям.

  • Для VPort, отличного от используемого по умолчанию, который присоединен к VF, элемент VPortState всегда должен быть установлен на NdisNicSwitchVPortStateActivated.

  • Для VPort, не являющегося стандартным и подключенного к PF, элемент VPortState должен иметь значение NdisNicSwitchVPortStateDeactivated при создании VPort. VPort PF активируется только после того, как драйверы верхнего уровня выдают запрос установки OID OID_NIC_SWITCH_VPORT_PARAMETERS для изменения VPortState на активное состояние.

    При активации VPort, не по умолчанию, драйвер минипорт PF может выделить ресурсы для VPort, например, общую память, предоставляемую через NdisAllocateSharedMemory. Драйвер минипорта PF может выделять ресурсы для VPort в любое время после активации, пока драйвер не удаляет VPort через запрос набора OID OID_NIC_SWITCH_DELETE_VPORT.

  • VPort по умолчанию всегда находится в активированном состоянии. Значение члена VPortState всегда должно быть задано как NdisNicSwitchVPortStateActivated для порта по умолчанию.

  • Если VPort находится в активированном состоянии, его нельзя отключить. Мини-драйвер PF может получать и передавать пакеты из VPort, только если он находится в активированном состоянии, а соответствующие фильтры MAC устанавливаются в VPort. Однако после удаления VPort через запрос набора OID OID_NIC_SWITCH_DELETE_VPORTдрайвер должен освободить ресурсы, выделенные для VPort. Драйвер должен также отменить все незавершённые операции передачи или получения пакетов на VPort.

Когда драйвер мини-порта PF получает запрос набора OID OID_NIC_SWITCH_VPORT_PARAMETERS, драйвер настраивает оборудование в соответствии с параметрами конфигурации. Драйвер может изменять только те параметры конфигурации, которые определяются флагами NDIS_NIC_SWITCH_VPORT_PARAMETERS_Xxx_CHANGED в члене Flags структуры NDIS_NIC_SWITCH_VPORT_PARAMETERS.