Обработка запроса OID_NIC_SWITCH_CREATE_SWITCH

NDIS отправляет запрос метода идентификатора объекта (OID) OID_NIC_SWITCH_CREATE_SWITCH для выполнения следующих действий:

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

    Коммутатор сетевой карты статически создается драйвером мини-порта PF из контекста для вызова MiniportInitializeEx. Драйвер выделяет ресурсы и создает параметр на основе параметров, считанных из параметров реестра.

  • Динамическое создание коммутатора сетевой карты на сетевом адаптере.

    Если драйвер мини-порта PF не поддерживает создание статического коммутатора сетевого адаптера, драйвер мини-порта выделяет ресурсы и создает коммутатор на основе параметров, указанных в запросе OID.

Драйвер минипорта PF объявляет о поддержке интерфейса SR-IOV, когда NDIS вызывает функцию MiniportInitializeEx драйвера. Если драйвер мини-порта PF поддерживает SR-IOV, NDIS считывает конфигурацию коммутатора сетевого адаптера из реестра. Перед тем как NDIS выдает запрос метода OID OID_NIC_SWITCH_CREATE_SWITCH в драйвер минипорта PF, NDIS форматирует структуру NDIS_NIC_SWITCH_PARAMETERS со сведениями реестра следующим образом:

  • NDIS задает для элемента SwitchType тип коммутатора сетевой карты.

    Начиная с Windows Server 2012, Windows поддерживает только тип коммутатора NdisNicSwitchTypeExternal. Внешний коммутатор указывает, что виртуальные порты (VPorts), подключенные к этому типу коммутатора, могут получить доступ к внешней сети через физический порт сетевого адаптера.

    Дополнительные сведения о коммутаторе сетевого адаптера см. в разделе Архитектура SR-IOV.

  • NDIS задает для элемента SwitchId значение идентификатора для коммутатора сетевой карты. Идентификатор коммутатора — это целое число от нуля до числа коммутаторов, поддерживаемых сетевым адаптером. Значение NDIS_DEFAULT_SWITCH_ID указывает на переключатель сетевого адаптера по умолчанию.

    Примечание Начиная с Windows Server 2012 интерфейс SR-IOV поддерживает только сетевой коммутатор по умолчанию на сетевом адаптере.

  • NDIS задает элемент NumVFs , указывающий количество виртуальных функций PCIe, которые могут быть выделены в коммутаторе сетевого адаптера.

Когда он получает запрос метода OID OID_NIC_SWITCH_CREATE_SWITCH, драйвер мини-порта PF должен выполнить следующие действия:

  1. Если драйвер PF miniport поддерживает создание и настройку статического коммутатора, он создает коммутатор сетевой карты, когда NDIS вызывает MiniportInitializeEx. Когда драйвер обрабатывает этот запрос OID, он должен проверить параметры конфигурации в структуре NDIS_NIC_SWITCH_PARAMETERS . Параметры должны совпадать с параметрами, используемыми драйвером для создания коммутатора во время вызова MiniportInitializeEx. Если это не так, драйвер должен завершить запрос OID.

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

  2. Если драйвер минипорта PF поддерживает создание и настройку динамического коммутатора, драйвер должен проверить значения конфигурации NDIS_NIC_SWITCH_PARAMETERS структуры и создать коммутатор сетевого адаптера на основе этих значений.

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

  3. Драйвер мини-порта PF должен выделить необходимые аппаратные и программные ресурсы для VPort по умолчанию на коммутаторе сетевого адаптера.

    Примечание VPort по умолчанию всегда создается с помощью запроса OID OID_NIC_SWITCH_CREATE_SWITCH и удаляется с помощью запроса OID OID_NIC_SWITCH_DELETE_SWITCH. Запросы OID OID_NIC_SWITCH_CREATE_VPORT и OID_NIC_SWITCH_DELETE_VPORT используются для создания и удаления неотделимых виртуальных портов в коммутаторе сетевого адаптера.

  4. Драйвер мини-порта PF, поддерживающий создание и настройку динамического коммутатора, должен включать виртуализацию SR-IOV на коммутаторе путем вызова NdisMEnableVirtualization. Этот вызов настраивает член NumVFs и бит VF Enable в структуре расширенных возможностей SR-IOV в пространстве конфигурации PCI Express (PCIe) адаптера.

    Дополнительные сведения о пространстве конфигурации SR-IOV см. в спецификации PCI-SIG Single Root I/O Virtualization and Sharing 1.1 .

    Примечание Если драйвер мини-порта PF поддерживает создание статического коммутатора, он включает виртуализацию SR-IOV после создания коммутатора при вызове MiniportInitializeEx .

Если драйвер мини-порта PF успешно завершает запрос метода OID OID_NIC_SWITCH_CREATE_SWITCH, это позволяет выполнить следующее:

  • Виртуальные функции можно выделить в коммутаторе сетевого адаптера с помощью запросов метода OID OID_NIC_SWITCH_ALLOCATE_VF.

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

    Драйвер мини-порта отвечает за управление своим пулом неисключаемых виртуальных портов. Драйвер указывает количество неисключаемых виртуальных портов в пуле с помощью элемента NumVPortsструктуры NDIS_NIC_SWITCH_INFO . Драйвер возвращает эту структуру с помощью запроса OID OID_NIC_SWITCH_ENUM_SWITCHES.

    Примечание Сетевой адаптер всегда должен создавать VPort по умолчанию из своего пула для PF.