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


Остановка драйвера минипорта PF

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

Диаграмма, показывающая процесс остановки PF Miniport Driver, иллюстрируя поток запросов и функций между верхним драйвером, NDIS и PF Miniport Driver.

В этом разделе содержатся следующие сведения:

Действия, выполняемые NDIS и верхними драйверами до вызова MiniportHaltEx

Прежде чем NDIS вызывает функцию драйвера минипорта PF MiniportHaltEx, сначала выполняет следующие действия:

  • NDIS отменяет привязку всех драйверов протокола, которые ранее привязаны к базовому драйверу минипорта PF. NDIS делает это путем вызова функции драйвера протокола ProtocolUnbindAdapterEx.

  • NDIS отсоединяет все драйверы фильтров, которые ранее привязаны к базовому драйверу минипорта PF. NDIS осуществляет это через вызов функции драйвера фильтра FilterDetach.

Если накладываемый протокол или фильтрующий драйвер отсоединяется или отключается от мини-порта PF, необходимо выполнить следующие действия:

  1. Драйвер должен отправить запрос установки идентификатора объекта (OID) OID_RECEIVE_FILTER_CLEAR_FILTER, чтобы очистить все фильтры получения, которые он ранее установил. Драйвер задает эти фильтры на виртуальном порту по умолчанию (VPort) или любых недефакционных VPorts коммутатора сетевого адаптера. Драйвер устанавливает эти фильтры посредством отправки запросов метода OID OID_RECEIVE_FILTER_SET_FILTER мини-порту PF.

  2. Драйвер должен выдать запрос на установку OID OID_NIC_SWITCH_DELETE_VPORT, чтобы удалить все неосновные VPorts, созданные ранее на коммутаторе сетевого адаптера. Драйвер задает данные VPorts путем отправки запросов метода OID OID_NIC_SWITCH_CREATE_VPORT в минипорт-драйвер PF.

  3. Драйвер должен отправить запрос на освобождение набора OID OID_NIC_SWITCH_FREE_VF, чтобы освободить ресурсы для любых PCIe виртуальных функций (VF), которые ранее выделялись на коммутаторе сетевого адаптера. Драйвер выделяет ресурсы для VF путем выдачи запросов метода OID OID_NIC_SWITCH_ALLOCATE_VF драйверу минипорта PF.

    Дополнительные сведения см. в разделе Освобождение ресурсов для виртуальной функции.

    Примечание Если ресурсы для VF освобождены, NDIS вызывает функцию MiniportHaltEx драйвера минипорта VF. Дополнительные сведения см. в разделе иПрекращение драйвера минипорта VF.

После удаления всех фильтров приема, нестандартных виртуальных портов и виртуальных функций из коммутатора сетевого адаптера, NDIS выполняет следующие действия:

  • NDIS удаляет все коммутаторы сетевого адаптера, выдавая пакет запросов OID OID_NIC_SWITCH_DELETE_SWITCH драйверу минипорта PF. Более подробно об удалении коммутатора сетевого адаптера смотрите в Удаление коммутатора сетевого адаптера.

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

  • После успешного удаления всех коммутаторов сетевого адаптера NDIS вызывает функцию MiniportHaltEx драйвера мини-порта PF.

Действия, выполняемые драйвером минипорта PF при вызове MiniportHaltEx

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

  1. Если драйвер мини-порта PF поддерживает статическое создание коммутаторов сетевого адаптера и все коммутаторы сетевого адаптера были удалены, драйвер должен отключить виртуализацию на адаптере, вызвав NdisMEnableVirtualizationс параметром enableVirtualization значение FALSE, а параметр numVFs имеет значение null.

    NdisMEnableVirtualization очищает член NumVFs и бит VF Enable в структуре расширенных возможностей SR-IOV в пространстве конфигурации PCIe физической функции сетевого адаптера.

    Примечание Если драйвер минипорта PF поддерживает динамическое создание и настройку коммутаторов сетевого адаптера, он должен вызывать NdisMEnableVirtualization, когда драйвер обрабатывает запрос набора OID OID_NIC_SWITCH_DELETE_SWITCH. Запрос OID выдается перед тем, как вызывается MiniportHaltEx.

  2. Драйвер минипорта PF выполняет другие задачи, связанные с операцией остановки мини-порта. Дополнительные сведения см. в разделе Приостановка адаптера минипорта.