Percorso WDI TX
Componenti del percorso TX
Il diagramma seguente illustra i componenti del percorso TX.
Descrittori TX
Tal usa un descrittore TX di destinazione (TTD) per informare la destinazione delle dimensioni e della posizione del frame.
I dispositivi WLAN di destinazione diversi possono avere definizioni diverse del TTD. A causa di questo, la programmazione TTD viene eseguita all'interno del TAL, in base alle informazioni fornite da WDI. Per programmare un TTD, WDI specifica un NET_BUFFER_LIST (NBL), tramite il quale i metadati del frame, ad esempio l'ID fotogramma, il TID esteso, gli offload delle attività applicabili e l'azione di esenzione della crittografia, sono accessibili.
Tal trasferisce il TTD e il frame TX alla destinazione. Dai metadati nei campi e TTD all'interno dell'intestazione del frame, la destinazione può determinare il destinatario previsto del frame di trasmissione e come trasmetterlo.
Alla fine, la destinazione trasmette il frame e notifica all'host quando viene eseguito il trasferimento (e possibilmente la trasmissione). La destinazione usa un messaggio di completamento TX che specifica se la trasmissione ha avuto esito positivo e gli ID dei fotogrammi la cui trasmissione è stata completata.
Funzionamento di base
La trasmissione di un frame di dati comporta i passaggi seguenti all'interno del software TX host WLAN.
- WDI ottiene un NBL da NDIS ed esegue la classificazione TX (se WDI è operativo in modalità di accodamento PeerTID).
- La NBL è collegata a un TTD ottenuto eseguendo una query su TAL. Per l'efficienza, tal può preallocare i TTD da un elenco lookaside.
- Il TxMgr accoda il frame di trasmissione in base al peerTID o alla porta, a seconda della modalità TargetPriorityQueueing .
- TxMgr fornisce il NBL e il TTD collegato al TxEngine, che a sua volta lo passa al TIL per il trasferimento alla destinazione. TxEngine/TIL non esegue la coda dei fotogrammi, ad esempio prima di renderli disponibili per DMA.
- TxEngine indica lo stato TX aggiornato dei fotogrammi di proprietà del TxEngine/target usando il completamento del trasferimento (e trasmettere l'indicazione di completamento se applicabile).
- Quando un frame è sia Transfer Complete (che, se necessario, TX Complete), txMgr cerca il NBL usando l'ID cornice, restituisce il TTD al pool di TxEngine e invia il frame a NDIS.
Host - Controllo flusso TX di destinazione
Il controllo del flusso TX è necessario per evitare di sovraccaricare le risorse TIL e di destinazione.
Schema di credito di destinazione e meccanismo di sospensione/ripresa
Le code TxMgr e trasferisce i frame TX alla destinazione in base a uno schema basato sul credito. La destinazione fornisce al motore TX le indicazioni di aggiornamento del credito che specificano le risorse disponibili per fotogrammi aggiuntivi nella destinazione. Il numero di crediti usati da ogni frame nella destinazione viene determinato al momento della programmazione TTD. Il numero di fotogrammi passati al TxEngine come parte di un'operazione di invio da una determinata coda è limitata dai crediti disponibili e dal costo dei fotogrammi alla testa della linea nell'ordine FIFO.
Per TxMgr, i crediti hanno un'unità astratta. Target/TxEngine deve usare qualsiasi definizione di credito sia più utile per l'implementazione specifica.
Tal usa indicazioni di sospensione/ripresa per arrestare/riprendere il flusso del traffico TX da una determinata porta o destinato a un determinato ricevitore con un determinato TID. Se txEngine ottiene una richiesta di invio mentre il credito disponibile è minore del costo massimo del frame, txEngine sospende il traffico da TxMgr (in tutte le porte) fino al successivo aggiornamento del credito dalla destinazione.
Quando WDI è in modalità di accodamento delle porte (TargetPriorityQueueing uguale a TRUE), le indicazioni di sospensione/ripresa sono consentite solo/definite a livello di porta o adattatore a causa dell'assenza di classificazione Peer,TID e accodamento.
Limitazione del numero massimo di fotogrammi per le operazioni di invio
Per evitare la necessità di code temporanee nell'TIL (ad esempio, coda di corrispondenza della frequenza DMA), il numero di frame che TxMgr passa a TxEngine in un'operazione di invio è limitato da un numero massimo specificato dal TxEngine. Questo limite può essere specifico per la coda che il TxMgr tenta di inviare da e le modifiche nel tempo perché più spazio è disponibile nel TIL.
Host - Pianificazione del trasferimento TX di destinazione
TxMgr usa un singolo thread TX per inviare frame al TxEngine. È presente un thread TX che invia attivamente i frame al TxEngine, purché siano presenti code registrate di nuovo.
Le code TxMgr pianificano le code in modo seguente a seconda della modalità di accodamento.
Per l'accodamento delle porte WDI (TargetPriorityQueueing uguale a TRUE), le code dei servizi TxMgr che usano Deficit Round Robin (DRR) in tutte le code di porte registrate di nuovo.
Per l'accodamento peerTID WDI (TargetPriorityQueueing uguale a FALSE), le code dei servizi TxMgr in base alla priorità AC senza morire di code e garantisce che qualsiasi risorsa con colli di bottiglia nel TIL e la destinazione siano condivise tra flussi RA-TID in modo equo. Impedisce ai flussi lenti di usare una quota sproporzionata di tali risorse.
In generale, l'utilità di pianificazione usa il ripristino di emergenza per scegliere la coda Peer-TID da cui trasmettere in qualsiasi momento. Per ogni coda, DRR associa un parametro quantistico che limita il numero di ottetti da inviare dalla coda in ogni round. TxEngine aggiorna questo parametro in ogni operazione di invio che coinvolge la coda per corrispondere alle dimensioni previste di una o due opportunità di trasmissione.
In generale, l'utilità di pianificazione del ripristino di emergenza esegue solo le code RA-TID associate all'ac registrato con priorità più alta. Per evitare la fame, l'utilità di pianificazione esegue periodicamente il ripristino di emergenza in tutte le code registrate di nuovo.
Mapping delle priorità per i TID riservati IHV
Fotogrammi inseriti dall'IHV con TID esteso nell'intervallo riservato IHV vengono mappati ai seguenti ACS estesi ai fini della pianificazione della priorità. La tabella è in ordine di priorità crescente.
TID esteso | Ac esteso |
---|---|
17 | AC_BK |
18 | AC_BE |
19 | AC_VI |
20 | AC_VO |
21 | AC_PR0 |
22 | AC_PR1 |
23 | AC_PR2 |
24 | AC_PR3 |
Per l'accodamento delle porte WDI, tutti i fotogrammi inseriti vengono trattati ugualmente indipendentemente dal TID esteso.
interfaccia TxMgr-TxEngine
Richieste a 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
Indicazioni da 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
Richieste di controllo specifiche TX
Indicazioni specifiche del controllo 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