Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Plusieurs filtres de réception sont téléchargés vers un pilote de miniport par le biais des requêtes de méthode OID de type OID_RECEIVE_FILTER_SET_FILTER. Chaque filtre peut spécifier un ou plusieurs tests (tests de champ d’en-tête) que la carte réseau utilise pour déterminer si un paquet reçu doit être fusionné dans une mémoire tampon de fusion matérielle sur la carte.
Avant que le pilote miniport configure la carte réseau avec les filtres de réception, le pilote doit optimiser les filtres de réception en fonction des fonctionnalités matérielles de l’adaptateur. Par exemple, tous les filtres de réception nécessitent un test de champ d’en-tête pour l’en-tête MAC. Par conséquent, le pilote peut optimiser les règles de filtre en fonction des résultats de ce test. Cela permet à la carte de déterminer quels tests de champ d’en-tête des couches 3 (L3) et 4 (L4) d’OSI (Open Systems Interconnexion) sont à effectuer ensuite.
Dès que la carte réseau a été configurée avec des filtres de réception, elle doit effectuer les opérations suivantes :
Tous les paramètres de test du champ d’en-tête d’un filtre particulier doivent correspondre au paquet reçu pour qu'il soit fusionné dans la mémoire tampon de coalescence.
La carte réseau combine les résultats de tous les tests de champ d’en-tête d’un filtre de réception à l’aide d’une opération AND logique. Autrement dit, si un test de champ d’en-tête inclus dans le tableau de structures de NDIS_RECEIVE_FILTER_FIELD_PARAMETERS pour un filtre de réception échoue, le paquet reçu ne répond pas au critère de filtre spécifié et ne doit pas être regroupé.
La carte réseau inspecte uniquement les données des paquets en fonction des paramètres de test de champ d’en-tête spécifiés. L’adaptateur doit ignorer tous les champs d’en-tête du paquet pour lesquels les tests de champ d’en-tête ne sont pas spécifiés.
Si un paquet reçu correspond à tous les tests de champ d’en-tête pour l’un des filtres de réception, la carte réseau doit fusionner le paquet dans la mémoire tampon de fusion matérielle. Dès que le premier paquet est fusionné, la carte réseau doit démarrer un minuteur matériel et définir le temps d’expiration sur la valeur du membre MaxCoalescingDelay de la structure NDIS_RECEIVE_FILTER_PARAMETERS pour le filtre de réception correspondant.
À mesure que d'autres paquets sont reçus et correspondent à un filtre de réception fusionné, la carte réseau les place dans la mémoire tampon de coalescence.
Si le temporisateur matériel est déjà actif, l'adaptateur ne doit pas arrêter ou redémarrer le temporisateur pour le filtre de réception correspondant. Toutefois, l’adaptateur peut configurer le minuteur matériel avec la plus petite valeur d’expiration des filtres de réception correspondants. Par exemple, lorsque le pilote reçoit un paquet qui correspond au filtre de réception X, l’adaptateur démarre le minuteur avec la valeur d’expiration spécifiée pour ce filtre de réception. Si l’adaptateur reçoit ensuite un paquet qui correspond au filtre de réception Y, l’adaptateur peut reconfigurer le minuteur matériel avec la valeur d’expiration spécifiée pour ce filtre de réception.
Remarque La carte réseau ne doit pas reconfigurer le minuteur matériel si l’heure restante sur le minuteur est inférieure à l’heure d’expiration d’un filtre de réception.
Dès que les paquets reçus sont coalescés, la carte réseau génère une interruption si l’un des événements suivants se produit :
Si l'espace disponible dans le tampon de fusion atteint un seuil de bas niveau spécifique au matériel, la carte réseau doit générer une interruption de réception afin que le pilote miniport puisse traiter les paquets de réception fusionnés.
Si le minuteur matériel utilisé pour la mémoire tampon de fusion matérielle expire, la carte réseau doit générer une interruption de réception afin que le pilote miniport puisse traiter les paquets de réception coalescés.
Si un filtre de réception est effacé et que des paquets correspondant à ce filtre ont été fusionnés, la carte réseau doit générer une interruption de réception pour que le pilote miniport puisse traiter les paquets de réception fusionnés.
Si un paquet reçu ne correspond à aucun des filtres de réception, la carte réseau doit générer une interruption de réception afin que le pilote miniport puisse traiter le paquet reçu. Si des paquets ont été coalescés, le pilote miniport doit également traiter ces paquets.
Si la carte réseau génère une interruption pour un état autre qu'une interruption de réception, elle doit également signaler un état d'interruption de réception afin que le pilote miniport puisse traiter les paquets reçus regroupés.
Dès que l’interruption est générée, la carte réseau doit arrêter le minuteur matériel s’il n’a pas expiré et doit effacer la mémoire tampon de fusion matérielle.
Le pilote miniport doit conserver un compteur de paquets agrégés, qui contient une valeur pour le nombre de paquets reçus correspondant à un filtre d'agrégation de paquets. NDIS consulte ce compteur via une requête OID de type OID_PACKET_COALESCING_FILTER_MATCH_COUNT.
La carte réseau effectue uniquement la fusion des paquets pendant que le matériel fonctionne dans un état de pleine puissance. Lorsque le matériel est dans un état de faible consommation, la carte doit uniquement filtrer les paquets reçus en fonction des modèles de mise en éveil qui ont été transférés à l’adaptateur via des requêtes OID de type OID_PNP_ENABLE_WAKE_UP.
Lorsque la carte réseau passe à un état d’alimentation complète, le pilote miniport doit suivre les étapes suivantes :
Le pilote de miniport doit configurer la carte réseau pour ignorer les paquets fusionnés au sein de la mémoire tampon de fusion matérielle. La carte réseau peut avoir fusionné ces paquets lorsqu’elle a été transférée vers un état à faible alimentation.
Le pilote de miniport doit configurer la carte réseau avec l’ensemble des filtres de réception de fusion de paquets téléchargés sur le pilote avant la transition vers l’état de faible consommation.
Le pilote de miniport doit effacer le compteur de paquets fusionnés.