Partager via


RSS avec interruptions signalées par message

Les pilotes miniport peuvent prendre en charge les interruptions signalées par message (MCI) pour améliorer les performances RSS. Les MSIs permettent à la carte réseau de demander une interruption sur le processeur qui traitera les données reçues. Pour plus d’informations sur la prise en charge de NDIS pour MSI, consultez NDIS MSI-X.

La figure suivante illustre RSS avec MSI-X.

Diagramme illustrant RSS avec MSI-X dans une pile réseau.

Dans la figure, les flèches en pointillés représentent le traitement sur une autre connexion. RSS avec MSI-X permet à la carte réseau d’interrompre le processeur approprié pour une connexion.

Le processus suivant se répète pour chaque interruption :

  1. Carte réseau :

    1. Utilise DMA pour remplir les mémoires tampons avec les données reçues.

      Le pilote miniport a alloué les mémoires tampons de réception dans la mémoire partagée lors de l’initialisation.

    2. Calcule une valeur de hachage.

    3. Met en file d’attente la mémoire tampon vers un processeur et fournit les affectations de file d’attente au pilote miniport. Par exemple, la carte réseau peut boucler les étapes 1 à 3 et DMA une liste d’attributions de processeur après la réception d’un certain nombre de paquets. Le mécanisme spécifique est laissé à la conception de la carte réseau.

    4. À l’aide de MSI-X, interrompt le processeur associé à une file d’attente non vide.

  2. La carte réseau peut remplir des mémoires tampons de réception supplémentaires et les ajouter à la file d’attente à tout moment, mais n’interrompt pas à nouveau ce processeur tant que le pilote miniport n’a pas activé les interruptions pour ce processeur.

  3. NDIS appelle l’ISR du pilote miniport ( MiniportInterrupt) sur le processeur actuel.

  4. L’ISR désactive les interruptions sur le processeur actuel et met en file d’attente un DPC sur le processeur actuel.

    Des interruptions peuvent toujours se produire sur les autres processeurs pendant que le DPC s’exécute sur le processeur actuel.

  5. NDIS appelle la fonction MiniportInterruptDPC pour chaque DPC mis en file d’attente. Chaque DPC :

    1. Génère des descripteurs de réception pour tous les tampons reçus dans sa file d’attente et indique les données dans la pile des pilotes. Pour plus d’informations, consultez Indication des données de réception RSS.
    2. Active les interruptions pour le processeur actuel. Cette interruption est terminée et le processus redémarre. Notez qu’aucune opération atomique n’est requise pour suivre la progression d’autres PDC.