Compartir a través de


RSS con interrupciones señaladas de mensaje

Los controladores de minipuerto pueden admitir interrupciones señaladas de mensajes (MSA) para mejorar el rendimiento rss. Las NIC permiten que la NIC solicite una interrupción en la CPU que procesará los datos recibidos. Para obtener más información sobre la compatibilidad de NDIS con MSI, consulte MSI-X de NDIS.

En la ilustración siguiente se muestra RSS con MSI-X.

Diagrama que ilustra RSS con MSI-X en una pila de red.

En la ilustración, las flechas discontinuas representan el procesamiento en una conexión diferente. RSS con MSI-X permite que la NIC interrumpa la CPU correcta para una conexión.

El siguiente proceso se repite para cada interrupción:

  1. La NIC:

    1. Usa DMA para rellenar búferes con datos recibidos.

      El controlador de minipuerto asignó los búferes de recepción en memoria compartida durante la inicialización.

    2. Calcula un valor hash.

    3. Pone en cola el búfer en una CPU y proporciona las asignaciones de cola al controlador de miniporte. Por ejemplo, la NIC podría recorrer en bucle los pasos 1-3 y DMA una lista de asignaciones de CPU después de recibir algún número de paquetes. El mecanismo específico se deja en el diseño de la NIC.

    4. Con MSI-X, interrumpe la CPU asociada a una cola no vacía.

  2. La NIC puede rellenar búferes de recepción adicionales y agregarlos a la cola en cualquier momento, pero no interrumpe esa CPU de nuevo hasta que el controlador de miniporte habilita las interrupciones para esa CPU.

  3. NDIS llama al ISR del controlador de miniporte ( MiniportInterrupt) en la CPU actual.

  4. El ISR deshabilita las interrupciones en la CPU actual y pone en cola un DPC en la CPU actual.

    Las interrupciones todavía pueden producirse en las demás CPU mientras el DPC se ejecuta en la CPU actual.

  5. NDIS llama a la función MiniportInterruptDPC para cada DPC en cola. Cada DPC:

    1. Las compilaciones reciben descriptores para todos los búferes recibidos en su cola e indican los datos de la pila de controladores. Para obtener más información, vea Indicación de datos de recepción RSS.
    2. Habilita interrupciones para la CPU actual. Esta interrupción se completa y el proceso se inicia de nuevo. Tenga en cuenta que no se requiere ninguna operación atómica para realizar un seguimiento del progreso de otros DPC.