Chemin D’accès TX WDI
Composants de chemin d’accès TX
Le diagramme suivant montre les composants de chemin TX.
Descripteurs TX
Le TAL utilise un descripteur TX cible (TTD) pour informer la cible de la taille et de l’emplacement de la trame.
Différents appareils WLAN cibles peuvent avoir des définitions différentes du TTD. Pour cette raison, la programmation TTD est effectuée dans le TAL, en fonction des informations fournies par WDI. Pour programmer un TTD, WDI spécifie une NET_BUFFER_LIST (NBL) à travers laquelle les métadonnées de trame, telles que l’ID de trame, le TID étendu, les déchargements de tâches applicables et l’action d’exemption de chiffrement, sont accessibles.
Le TAL transfère le TTD et le frame TX à la cible. À partir des métadonnées du TTD et des champs dans l’en-tête de l’image, la cible peut déterminer le destinataire prévu de la trame de transmission et la façon de le transmettre.
Finalement, la cible transmet l’image et avertit l’hôte lorsque le transfert (et éventuellement la transmission) est terminé. La cible utilise un message de saisie semi-automatique TX qui spécifie si la transmission a réussi et les ID des images dont la transmission a été terminée.
Fonctionnement de base
La transmission d’une trame de données implique les étapes suivantes dans le logiciel TX hôte WLAN.
- WDI obtient un NBL de NDIS et effectue la classification TX (si WDI fonctionne en mode file d’attente PeerTID).
- Le NBL est lié à un TTD obtenu en interrogeant le TAL. Pour plus d’efficacité, le TAL peut préallouer les TTD d’une liste de lookaside.
- Le TxMgr met en file d’attente l’image de transmission en fonction du peerTID ou du port, en fonction du mode TargetPriorityQueueing .
- TxMgr fournit le NBL et le TTD attaché au TxEngine, qui à son tour le transmet au TIL pour le transfert vers la cible. TxEngine/TIL ne met pas en file d’attente les trames (par exemple, avant de les rendre disponibles pour DMA).
- TxEngine indique la status TX mise à jour des images appartenant à txEngine/cible à l’aide de l’achèvement du transfert (et de l’indication d’achèvement de transmission, le cas échéant).
- Lorsqu’une trame est à la fois Transfert terminé (et si nécessaire, TX Complete), txMgr recherche le NBL à l’aide de l’ID de trame, retourne le TTD au pool de TxEngine et envoie-termine l’image à NDIS.
Hôte - Contrôle de flux TX cible
Le contrôle tx Flow est nécessaire pour éviter d’surcharger les ressources TIL et cibles.
Le régime de crédit cible et le mécanisme de pause/reprise
TxMgr met en file d’attente et transfère les trames TX vers la cible selon un schéma basé sur le crédit. La cible fournit au moteur TX des indications de mise à jour de crédit qui spécifient les ressources disponibles pour les images supplémentaires sur la cible. Le nombre de crédits utilisés par chaque image sur la cible est déterminé au moment de la programmation TTD. Le nombre d’images passées à TxEngine dans le cadre d’une opération d’envoi à partir d’une file d’attente donnée est limité par les crédits disponibles et le coût des images en tête de ligne dans l’ordre FIFO.
Pour txMgr, les crédits ont une unité abstraite. Target/TxEngine doit utiliser la définition de crédit la plus utile pour l’implémentation spécifique.
Le TAL utilise des indications de pause/reprise pour arrêter/reprendre le flux de trafic TX à partir d’un port donné ou destiné à un récepteur particulier avec un TID donné. Si txEngine obtient une demande d’envoi alors que le crédit disponible est inférieur au coût d’image maximal, txEngine interrompt le trafic à partir du TxMgr (sur tous les ports) jusqu’à la prochaine mise à jour du crédit à partir de la cible.
Lorsque WDI est en mode file d’attente de port (TargetPriorityQueueing est égal à TRUE), les indications de pause/reprise sont uniquement autorisées/définies au niveau du port ou de l’adaptateur en raison de l’absence de peer, de classification TID et de mise en file d’attente.
Limitation du nombre maximal d’images pour les opérations d’envoi
Pour éviter la nécessité de files d’attente temporaires dans le TIL (par exemple, file d’attente de correspondance de taux DMA), le nombre d’images que TxMgr passe à TxEngine dans une opération d’envoi est limité par un nombre maximal spécifié par TxEngine. Cette limite peut être spécifique à la file d’attente à partir de laquelle TxMgr tente d’envoyer et change au fil du temps, car plus d’espace est disponible dans le TIL.
Hôte - Planification du transfert TX cible
TxMgr utilise un seul thread TX pour envoyer des trames au TxEngine. Un thread TX envoie activement des trames à TxEngine tant qu’il existe des files d’attente en backlog.
TxMgr planifie les files d’attente de la manière suivante en fonction du mode de mise en file d’attente.
Pour la mise en file d’attente de port WDI (TargetPriorityQueueing est égal à TRUE), les services TxMgr file d’attente à l’aide du tourniquet de déficit (DRR) dans toutes les files d’attente de ports en souffrance.
Pour la mise en file d’attente WDI PeerTID (TargetPriorityQueueing est égal à FALSE), les services TxMgr font la file d’attente en fonction de la priorité ac sans affamer les files d’attente et s’assurent que les ressources goulot d’étranglement dans TIL et target sont partagées entre les flux RA-TID de manière équitable. Il empêche les flux lents de consommer une part disproportionnée de ces ressources.
En général, le planificateur utilise DRR pour choisir la file d’attente Peer-TID à partir de laquelle transmettre à un moment donné. Pour chaque file d’attente, DRR associe un paramètre quantique qui limite le nombre d’octets à envoyer à partir de la file d’attente dans chaque tour. TxEngine met à jour ce paramètre dans chaque opération d’envoi impliquant la file d’attente pour qu’il corresponde à la taille attendue d’une ou deux opportunités de transmission.
En règle générale, le planificateur drR ne traite que les files d’attente RA-TID associées au contrôle d’accès en attente de priorité la plus élevée. Pour éviter la famine, le planificateur effectue régulièrement une récupération d’urgence dans toutes les files d’attente en souffrance.
Mappage des priorités pour les TID étendus réservés IHV
Les trames injectées par l’IHV avec tid étendu dans la plage réservée IHV mappent aux AC étendus suivants à des fins de planification des priorités. La table est par ordre de priorité croissante.
TID étendu | C.A étendu |
---|---|
17 | AC_BK |
18 | AC_BE |
19 | AC_VI |
20 | AC_VO |
21 | AC_PR0 |
22 | AC_PR1 |
23 | AC_PR2 |
24 | AC_PR3 |
Pour la mise en file d’attente de port WDI, toutes les trames injectées sont traitées de la même manière, quel que soit le TID étendu.
interface TxMgr-TxEngine
Demandes adressées à TxEngine
- MINIPORT_WDI_TX_ABORT
- MINIPORT_WDI_TX_DATA_SEND
- MINIPORT_WDI_TX_TAL_QUEUE_IN_ORDER
- MINIPORT_WDI_TX_TAL_SEND
- MINIPORT_WDI_TX_TAL_SEND_COMPLETE
- MINIPORT_WDI_TX_TARGET_DESC_DEINIT
- MINIPORT_WDI_TX_TARGET_DESC_INIT
Indications de TxEngine
- NDIS_WDI_TX_DEQUEUE_IND
- NDIS_WDI_TX_TRANSFER_COMPLETE_IND
- NDIS_WDI_TX_SEND_COMPLETE_IND
- NDIS_WDI_TX_QUERY_RA_TID_STATE
Demandes de contrôle spécifiques TX
Indications de contrôle spécifiques TX
- NDIS_WDI_TX_SEND_PAUSE_IND
- NDIS_WDI_TX_SEND_RESTART_IND
- NDIS_WDI_TX_RELEASE_FRAMES_IND
- NDIS_WDI_TX_INJECT_FRAME_IND