Обработка получения, отличной от RSS
Драйверы miniport, которые не поддерживают RSS, обрабатывают обработку получения, как описано в этом разделе.
На следующем рисунке показана обработка получения, не относясь к RSS.
На рисунке пунктирные пути представляют альтернативный путь для обработки отправки и получения. Так как система управляет масштабированием, обработка не всегда выполняется на ЦП, который обеспечивает наилучшую производительность. Подключения обрабатываются на одном ЦП через последовательные прерывания только случайно.
Следующий процесс повторяется для каждого цикла прерывания, отличного от RSS:
Сетевой адаптер использует DMA для заполнения буфера полученными данными и прерывает работу системы.
Драйвер мини-порта выделил буферы приема в общей памяти во время инициализации.
Сетевой адаптер может продолжать заполнять дополнительные буферы приема в любой момент в этом цикле прерывания. Однако сетевой адаптер не прерывается снова, пока драйвер мини-порта не включит прерывания.
Полученные буферы, обрабатываемые системой в одном цикле прерываний, могут быть связаны с множеством различных сетевых подключений.
NDIS вызывает функцию MiniportInterrupt (ISR) драйвера miniport на системном ЦП.
В идеале ISR должен переходить к наименее загруженной ЦП. Однако в некоторых системах система назначает ISR доступному ЦП или ЦП, связанному с сетевым адаптером.
ISR отключает прерывания и запрашивает NDIS для постановки в очередь отложенного вызова процедуры (DPC) для обработки полученных данных.
NDIS вызывает функцию MiniportInterruptDPC (DPC) на текущем ЦП.
DPC создает дескрипторы получения для всех полученных буферов и указывает данные в стеке драйверов. Дополнительные сведения см. в разделе Получение сетевых данных.
Для множества различных подключений может быть много буферов, и, возможно, требуется выполнить много обработки. Полученные данные, связанные с последующими циклами прерывания, можно обрабатывать на других ЦП. Обработка отправки для данного сетевого подключения также может выполняться на другом ЦП.
DPC включает прерывания. Этот цикл прерывания завершен, и процесс запускается снова.