WDI TX 경로

TX 경로 구성 요소

다음 다이어그램에서는 TX 경로 구성 요소를 보여 줍니다.

wdi tx 경로입니다.

TX 설명자

TAL은 TTD(대상 TX 설명자)를 사용하여 프레임의 크기와 위치를 대상에 알릴 수 있습니다.

대상 WLAN 디바이스에 따라 TTD에 대한 정의가 다를 수 있습니다. 이로 인해 TTD 프로그래밍은 WDI에서 제공하는 정보를 기반으로 TAL 내에서 수행됩니다. TTD를 프로그래밍하기 위해 WDI는 프레임 ID, 확장 TID, 적용 가능한 작업 오프로드 및 암호화 예외 작업과 같은 프레임 메타데이터에 액세스할 수 있는 NBL(NET_BUFFER_LIST )을 지정합니다.

TAL은 TTD 및 TX 프레임을 대상으로 전송합니다. TTD의 메타데이터와 프레임 헤더 내의 필드에서 대상은 전송 프레임의 의도된 수신자와 전송 방법을 결정할 수 있습니다.

결국 대상은 프레임을 전송하고 전송(및 전송 가능)이 완료되면 호스트에 알린다. 대상은 전송이 성공했는지 여부와 전송이 완료된 프레임의 ID를 지정하는 TX 완성 메시지를 사용합니다.

기본 작업

데이터 프레임을 전송하려면 WLAN 호스트 TX 소프트웨어 내에서 다음 단계를 수행해야 합니다.

  1. WDI는 NDIS에서 NBL을 가져오고 TX 분류를 수행합니다(WDI가 PeerTID 큐 모드에서 작동하는 경우).
  2. NBL은 TAL을 쿼리하여 얻은 TTD에 연결됩니다. 효율성을 위해 TAL은 lookaside 목록에서 TTD를 미리 할당할 수 있습니다.
  3. TxMgr은 TargetPriorityQueueing 모드에 따라 PeerTID 또는 포트를 기반으로 전송 프레임을 큐에 대기합니다.
  4. TxMgr은 TxEngine에 NBL 및 연결된 TTD를 제공하며, TIL에 전달하여 대상으로 전송합니다. TxEngine/TIL은 프레임을 큐에 추가하지 않습니다(예: DMA에 사용할 수 있도록 하기 전).
  5. TxEngine은 전송 완료를 사용하여 TxEngine/target이 소유한 프레임의 업데이트된 TX 상태 나타냅니다(해당하는 경우 전송 완료 표시).
  6. 프레임이 전송 완료(그리고 필요한 경우 TX Complete)인 경우 TxMgr은 프레임 ID를 사용하여 NBL을 조회하고 TtD를 TxEngine의 풀로 반환하고 프레임을 NDIS로 보냅니다.

호스트 - 대상 TX 흐름 제어

TIL 및 대상 리소스를 압도하지 않으려면 TX 흐름 제어가 필요합니다.

대상-크레딧 체계 및 일시 중지/다시 시작 메커니즘

TxMgr은 신용 기반 스키마에 따라 TX 프레임을 큐에 대기하고 대상으로 전송합니다. 대상은 대상의 추가 프레임에 사용할 수 있는 리소스를 지정하는 크레딧 업데이트 표시를 TX 엔진에 제공합니다. 대상의 각 프레임에서 사용하는 크레딧 수는 TTD 프로그래밍 시 결정됩니다. 지정된 큐에서 전송 작업의 일부로 TxEngine에 전달되는 프레임 수는 FIFO 순서로 줄의 헤드에 있는 프레임의 사용 가능한 크레딧 및 비용에 의해 제한됩니다.

TxMgr에 대한 크레딧에는 추상 단위가 있습니다. Target/TxEngine은 특정 구현에 가장 유용한 크레딧 정의를 사용해야 합니다.

TAL은 일시 중지/다시 시작 표시를 사용하여 지정된 포트에서 또는 지정된 TID를 사용하여 특정 수신기로 향하는 TX 트래픽 흐름을 중지/다시 시작합니다. 사용 가능한 크레딧이 최대 프레임 비용보다 작은 동안 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(적자 라운드 로빈)을 사용하여 큐를 처리합니다.

WDI PeerTID 큐(TargetPriorityQueueing 이 FALSE와 같음)의 경우 TxMgr은 큐를 굶주리지 않고 AC 우선 순위에 따라 큐를 처리하고 TIL 및 대상의 병목 현상이 발생한 리소스가 RA-TID 스트림 간에 공정한 방식으로 공유되도록 합니다. 느린 스트림이 이러한 리소스의 불균형한 공유를 소비하는 것을 방지합니다.

일반적으로 스케줄러는 DRR을 사용하여 지정된 시간에 전송할 Peer-TID 큐를 선택합니다. 각 큐에 대해 DRR은 각 라운드의 큐에서 보낼 옥텟 수를 제한하는 양자 매개 변수를 연결합니다. TxEngine은 큐와 관련된 각 전송 작업에서 이 매개 변수를 하나 또는 두 개의 전송 기회의 예상 크기와 일치하도록 업데이트합니다.

일반적으로 DRR 스케줄러는 우선 순위가 가장 높은 백로그된 AC와 연결된 RA-TID 큐만 서비스합니다. 굶주림을 방지하기 위해 스케줄러는 백로그된 모든 큐에서 DRR을 주기적으로 수행합니다.

IHV 예약 확장 TID에 대한 우선 순위 매핑

우선 순위 예약을 위해 IHV 예약 범위 맵에서 확장된 TID를 사용하여 IHV에 의해 삽입된 프레임은 다음 확장된 AC에 매핑됩니다. 테이블은 우선 순위가 증가하는 순서입니다.

확장된 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에 대한 요청

TxEngine의 표시

TX 특정 제어 요청

TX 특정 컨트롤 표시

WDI TX 경로 함수

NET_BUFFER_LIST

WDI_TXRX_CAPABILITIES