Share via


비 RSS 수신 처리

RSS 핸들을 지원하지 않는 미니포트 드라이버는 이 항목에 설명된 대로 수신 처리를 처리합니다.

다음 그림에서는 RSS가 아닌 수신 처리를 보여 줍니다.

RSS 없이 송신 및 수신 처리를 보여 주는 다이어그램

그림에서 파선 경로는 송신 및 수신 처리에 대한 대체 경로를 나타냅니다. 시스템이 크기 조정을 제어하기 때문에 최상의 성능을 제공하는 CPU에서 처리가 항상 발생하는 것은 아닙니다. 연결은 연속된 인터럽트에서만 우연히 동일한 CPU에서 처리됩니다.

다음 프로세스는 RSS가 아닌 각 인터럽트 주기에 대해 반복됩니다.

  1. NIC는 DMA를 사용하여 수신된 데이터로 버퍼를 채우고 시스템을 중단합니다.

    미니포트 드라이버는 초기화 중에 공유 메모리에 수신 버퍼를 할당했습니다.

  2. NIC는 이 인터럽트 주기에서 언제든지 추가 수신 버퍼를 계속 채울 수 있습니다. 그러나 미니포트 드라이버에서 인터럽트 사용이 가능할 때까지 NIC는 다시 인터럽트되지 않습니다.

    시스템이 하나의 인터럽트 주기에서 처리하는 수신된 버퍼는 다양한 네트워크 연결과 연결할 수 있습니다.

  3. NDIS는 시스템 결정 CPU에서 미니포트 드라이버의 ISR( MiniportInterrupt 함수)을 호출합니다.

    이상적으로 ISR은 사용량이 가장 적은 CPU로 이동해야 합니다. 그러나 일부 시스템에서는 시스템에서 ISR을 사용 가능한 CPU 또는 NIC와 연결된 CPU에 할당합니다.

  4. ISR은 인터럽트 기능을 사용하지 않도록 설정하고 수신된 데이터를 처리하기 위해 DPC(지연 프로시저 호출)를 큐에 대기하도록 NDIS에 요청합니다.

  5. NDIS는 현재 CPU에서 MiniportInterruptDPC 함수(DPC)를 호출합니다.

  6. DPC 빌드는 수신된 모든 버퍼에 대한 설명자를 수신하고 드라이버 스택의 데이터를 나타냅니다. 자세한 내용은 네트워크 데이터 수신을 참조하세요.

    다양한 연결에 대한 많은 버퍼가 있을 수 있으며 완료해야 할 처리가 많을 수 있습니다. 후속 인터럽트 주기와 연결된 수신된 데이터는 다른 CPU에서 처리할 수 있습니다. 지정된 네트워크 연결에 대한 송신 처리는 다른 CPU에서도 실행할 수 있습니다.

  7. DPC는 인터럽트 사용을 설정합니다. 이 인터럽트 주기가 완료되고 프로세스가 다시 시작됩니다.