Обработка приема данных не в формате RSS

Минипорт-драйверы, которые не поддерживают RSS, обрабатывают получение данных, как описано в этом разделе.

На следующем рисунке показан процесс обработки приёма, не использующий RSS.

схема, иллюстрирующая отправку и получение обработки без RSS.

На рисунке пунктирные линии представляют собой альтернативные пути для обработки отправки и получения. Так как система управляет масштабированием, обработка не всегда выполняется на ЦП, который обеспечивает лучшую производительность. Соединения обрабатываются на одном ЦП при последовательных прерываниях только случайно.

Следующий процесс повторяется для каждого цикла прерывания, не связанного с RSS.

  1. Сетевой адаптер использует DMA для заполнения буфера полученными данными и прерывания системы.

    Минипорт-драйвер выделил буферы приема в общей памяти во время инициализации.

  2. Сетевой адаптер может продолжать заполнять дополнительные буферы приёма в любое время в ходе этого цикла прерывания. Однако сетевой адаптер не прерывает работу до тех пор, пока драйвер мини-порта не включает прерывания.

    Полученные буферы, которые система обрабатывает в одном цикле прерываний, могут быть связаны с множеством различных сетевых подключений.

  3. NDIS вызывает функцию MiniportInterrupt (ISR) минипорта на центральном процессоре, определяемом системой.

    В идеале ISR должен перейти к наименее занятой ЦП. Однако в некоторых системах система назначает ISR доступному ЦП или ЦП, связанному с сетевой интерфейсной картой.

  4. ISR отключает прерывания и запрашивает NDIS поставить в очередь отложенный вызов процедуры (DPC) для обработки полученных данных.

  5. NDIS вызывает функцию MiniportInterruptDPC (DPC) на текущем ЦП.

  6. DPC создает дескрипторы для всех полученных буферов и передает данные по стэку драйверов. Дополнительные сведения см. в разделе Получение сетевых данных.

    Существует множество буферов для многих разных подключений, и может быть много обработки для завершения. Полученные данные, связанные с последующими циклами прерываний, можно обрабатывать на других ЦП. Обработка отправки для заданного сетевого подключения также может выполняться на другом ЦП.

  7. DPC включает прерывания. Этот цикл прерывания завершен и процесс начинается снова.