Traitement des réceptions non RSS

Les pilotes Miniport qui ne prennent pas en charge les handles RSS reçoivent le traitement, comme décrit dans cette rubrique.

La figure suivante illustre le traitement de la réception non RSS.

Diagramme illustrant le traitement de l’envoi et de la réception sans RSS.

Dans la figure, les chemins en pointillés représentent un autre chemin pour le traitement d’envoi et de réception. Étant donné que le système contrôle la mise à l’échelle, le traitement n’a pas toujours lieu sur le processeur qui offre les meilleures performances. Les connexions sont traitées sur le même processeur sur des interruptions successives uniquement par hasard.

Le processus suivant se répète pour chaque cycle d’interruption non RSS :

  1. La carte réseau utilise DMA pour remplir une mémoire tampon avec les données reçues et interrompt le système.

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

  2. La carte réseau peut continuer à remplir des mémoires tampons de réception supplémentaires à tout moment dans ce cycle d’interruption. Toutefois, la carte réseau n’interrompt pas à nouveau tant que le pilote miniport n’active pas les interruptions.

    Les mémoires tampons reçues que le système gère dans un cycle d’interruption peuvent être associées à de nombreuses connexions réseau différentes.

  3. NDIS appelle la fonction MiniportInterrupt (ISR) du pilote miniport sur un processeur déterminé par le système.

    Dans l’idéal, l’ISR doit accéder au processeur le moins occupé. Toutefois, dans certains systèmes, le système affecte l’ISR à un processeur disponible ou à un processeur associé à la carte réseau.

  4. L’ISR désactive les interruptions et demande à NDIS de mettre en file d’attente un appel de procédure différée (DPC) pour traiter les données reçues.

  5. NDIS appelle la fonction MiniportInterruptDPC (la DPC) sur le processeur actuel.

  6. Le DPC génère des descripteurs de réception pour toutes les mémoires tampons reçues et indique les données dans la pile des pilotes. Pour plus d’informations, consultez Réception de données réseau.

    Il peut y avoir de nombreuses mémoires tampons pour de nombreuses connexions différentes et il y a potentiellement beaucoup de traitement à effectuer. Les données reçues associées aux cycles d’interruption suivants peuvent être traitées sur d’autres processeurs. Le traitement d’envoi pour une connexion réseau donnée peut également s’exécuter sur un autre processeur.

  7. Le DPC active les interruptions. Ce cycle d’interruption est terminé et le processus redémarre.