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

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

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

    Переключатель сетевой карты (NIC) статически создается драйвером минипорта PF в контексте вызова MiniportInitializeEx. Драйвер выделяет ресурсы и создает коммутатор на основе параметров, прочитанных из настроек реестра.

  • Динамически создайте переключатель NIC на сетевом адаптере.

    Если драйвер минипорта 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 поддерживает создание и настройку статического коммутатора, он создает сетевой коммутатор при вызове NDIS MiniportInitializeEx. Когда драйвер обрабатывает этот запрос OID, он должен проверить параметры конфигурации в структуре NDIS_NIC_SWITCH_PARAMETERS. Параметры должны совпадать с параметрами, используемыми драйвером для создания коммутатора во время вызова MiniportInitializeEx. Если это не так, драйвер должен отклонить запрос OID.

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

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

    Дополнительные сведения см. в разделе , посвященном динамическому созданию NIC Switch.

  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 используются для создания и удаления нестандартных виртуальных портов (VPorts) на коммутаторе сетевого адаптера.

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

    Дополнительные сведения о пространстве конфигурации SR-IOV см. в спецификации PCI-SIG виртуализации единого корневого ввода-вывода и совместного использования 1.1.

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

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

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

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

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

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