Путь WDI TX
Компоненты пути TX
На следующей схеме показаны компоненты пути TX.
Дескрипторы TX
TAL использует целевой дескриптор TX (TTD) для информирования целевого объекта о размере и расположении кадра.
Разные целевые устройства WLAN могут иметь разные определения TTD. Поэтому программирование TTD выполняется в TAL на основе информации, предоставляемой WDI. Чтобы запрограммировать TTD, WDI указывает NET_BUFFER_LIST (NBL), с помощью которого доступны метаданные кадра, такие как идентификатор кадра, расширенный TID, применимые разгрузки задач и действие исключения шифрования.
TAL передает TTD и кадр TX в целевой объект. На основе метаданных в TTD и полях в заголовке кадра целевой объект может определить получателя кадра передачи и способ его передачи.
В конечном итоге целевой объект передает кадр и уведомляет узел о завершении передачи (и, возможно, передачи). Целевой объект использует сообщение о завершении TX, указывающее, была ли передача успешной, и идентификаторы кадров, передача которых была завершена.
Базовые функции
Передача кадра данных включает следующие шаги в программном обеспечении TX узла WLAN.
- WDI получает NBL от NDIS и выполняет классификацию TX (если WDI работает в режиме очередей PeerTID).
- NBL связан с TTD, полученным путем запроса к TAL. Для повышения эффективности TAL может предварительно выделить TTD из списка lookaside.
- TxMgr помещает кадр передачи в очередь на основе PeerTID или порта в зависимости от режима TargetPriorityQueueing .
- TxMgr предоставляет NBL и присоединенный TTD к TxEngine, который, в свою очередь, передает его в TIL для передачи в целевой объект. TxEngine/TIL не помещать кадры в очередь (например, перед тем, как сделать их доступными для DMA).
- TxEngine указывает обновленное состояние TX кадров, принадлежащих TxEngine или целевому объекту, с помощью завершения передачи (и указание завершения передачи, если применимо).
- Если для кадра задано значение Transfer Complete (и, если требуется, TX Complete), TxMgr ищет NBL с помощью идентификатора кадра, возвращает TTD в пул TxEngine и отправляет кадр в NDIS.
Узел — целевой элемент управления потоком TX
Управление потоком TX необходимо, чтобы избежать перегрузки ресурсов TIL и целевых ресурсов.
Схема целевого кредита и механизм приостановки и возобновления
TxMgr помещает в очередь и передает кадры TX в целевой объект в соответствии со схемой на основе кредитов. Целевой объект предоставляет обработчику TX указания на обновление кредитов, которые указывают ресурсы, доступные для дополнительных кадров в целевом объекте. Количество кредитов, используемых каждым кадром на целевом объекте, определяется во время программирования TTD. Количество кадров, передаваемых в TxEngine в рамках операции отправки из заданной очереди, ограничено доступными кредитами и стоимостью кадров в начале строки в порядке FIFO.
Для TxMgr кредиты имеют абстрактную единицу. Target/TxEngine должен использовать любое определение кредита, наиболее полезное для конкретной реализации.
TAL использует указания приостановки и возобновления для остановки или возобновления потока трафика TX из заданного порта или предназначенного для определенного получателя с заданным TID. Если TxEngine получает запрос на отправку, в то время как доступный кредит меньше максимальной стоимости кадра, TxEngine приостанавливает трафик из TxMgr (через все порты) до следующего обновления кредита из целевого объекта.
Если WDI находится в режиме очереди портов (TargetPriorityQueueing равно TRUE), индикаторы приостановки и возобновления разрешены или определены только на уровне порта или адаптера из-за отсутствия одноранговой классификации, tiD и очередей.
Ограничение максимального числа кадров для операций отправки
Чтобы избежать необходимости во временных очередях в TIL (например, очередь сопоставления скорости DMA), количество кадров, которые TxMgr передает в TxEngine в операции отправки, ограничивается максимальным числом кадров, заданным параметром TxEngine. Это ограничение может быть связано с очередью, из который TxMgr пытается отправить, и изменяется с течением времени, так как в TIL доступно больше места.
Узел — целевое планирование передачи TX
TxMgr использует один поток TX для отправки кадров в TxEngine. Существует поток TX, который активно отправляет кадры в TxEngine, если есть очереди с невыполненной работой.
TxMgr планирует очереди следующим образом в зависимости от режима очередей.
Для очередей портов WDI (TargetPriorityQueueing равно TRUE) службы TxMgr выполняют очереди с использованием циклического перебора дефицита (DRR) во всех очередях портов с невыполненной работой.
Для очередей peerTID WDI (TargetPriorityQueueing равно FALSE) службы TxMgr помещаются в очередь в соответствии с приоритетом переменного тока без нехватки очередей и гарантирует, что все узкие ресурсы в TIL и целевом объекте распределяются между потоками RA-TID. Это предотвращает использование медленными потоками непропорционально большой доли таких ресурсов.
Как правило, планировщик использует DRR для выбора очереди Однорангового tiD для передачи данных в любой момент времени. Для каждой очереди DRR связывает квантовый параметр, который ограничивает количество октетов, отправляемых из очереди в каждом раунде. TxEngine обновляет этот параметр в каждой операции отправки, включающей очередь, в соответствии с ожидаемым размером одной или двух возможностей передачи.
Как правило, планировщик DRR обслуживает только очереди RA-TID, связанные с невыполненной работой ac с наивысшим приоритетом. Чтобы предотвратить нехватку ресурсов, планировщик периодически выполняет аварийное восстановление во всех очередях с невыполненной работой.
Сопоставление приоритетов для зарезервированных расширенных tiD IHV
Кадры, внедренные IHV с расширенным TID в зарезервированном диапазоне IHV, сопоставляются со следующими расширенными ACS для целей планирования приоритета. Таблица находится в порядке увеличения приоритета.
Расширенный TID | Расширенный ac |
---|---|
17 | AC_BK |
18 | AC_BE |
19 | AC_VI |
20 | AC_VO |
21 | AC_PR0 |
22 | AC_PR1 |
23 | AC_PR2 |
24 | AC_PR3 |
Для очереди портов WDI все внедренные кадры обрабатываются одинаково, независимо от расширенного TID.
интерфейс TxMgr-TxEngine
Запросы к 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
Указания из 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
Запросы элементов управления, относящиеся к TX
Указания элемента управления, относящиеся к 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