インテル® Agilex™ ハード・プロセッサー・システムのテクニカル・リファレンス・マニュアル

ID 683567
日付 1/19/2023
Public
ドキュメント目次

17.6.3.1. 送信記述子

アプリケーション・ソフトウェアは、送信記述子の初期化時に、制御ビットのTDES0[31:18] をプログラミングする必要があります。DMAは記述子を更新すると、OWNビット (クリアされる) を除くすべての制御ビットを書き戻し、ステータスビット[7:0] を更新します。

高度なタイムスタンプのサポートにより、TDES0のビット25 (TTSE) を設定することで、取得するタイムスタンプのスナップショットを特定のフレームに対して有効にすることができます。記述子が閉じられる (つまり、OWNビットがクリアされる) と、タイムスタンプは、TDES6とTDES7に書き込まれます (TDES0のステータスビット17 (TTSS) で示されます)。

注: 拡張記述子の形式 (4または8 DWORD) のみがサポートされています。
注: 高度なタイムスタンプ機能が有効になっている場合は、ソフトウェアでレジスター0 (Bus Mode Register) のビット7を設定し、DMAが拡張記述子サイズで動作できるようにする必要があります。この制御ビットがクリアされている場合は、TDES4からTDES7の記述子スペースは無効です。
図 72. 送信拡張記述子フィールドの形式


DMAは常に、記述子の4 DWORDをシステムメモリーから読み出しまたはフェッチし、バッファーおよび制御情報を取得します。

図 73. 送信記述子のフェッチ (読み出し) 形式


表 170.  Transmit Descriptor Word 0 (TDES0)
ビット 説明

31

OWN: Ownビット

設定されている場合、このビットは、記述子がDMAによって所有されていることを示します。このビットがクリアされると、記述子がホストによって所有されていることを示します。DMAは、フレーム送信を完了した際、もしくは記述子に割り当てられたバッファーが完全に読み出された際にこのビットをクリアします。フレームの最初の記述子のオーナーシップ・ビットは、同じフレームに属する後続の記述子がすべて設定された後に設定し、記述子のフェッチとオーナーシップ・ビットの設定を行うドライバーとの間で起こり得る競合状態を回避する必要があります。

30

IC: Interrupt on Completion

このビットが設定されている場合は、現在のフレームが送信された後に、Transmit Interrupt (レジスター5[0]) が設定されるようになります。

29

LS: Last Segment

設定されている場合、このビットは、バッファーにフレームの最後のセグメントが含まれていることを示します。このビットが設定されている場合、TDES1のTBS1フィールドまたはTBS2フィールドは、0以外の値になります。

28

FS: First Segment

設定されている場合、このビットは、バッファーにフレームの最初のセグメントが含まれていることを示します。

27

DC: Disable CRC

このビットが設定されている場合、MACは、送信されるフレームの最後にCRCを追加しません。このビットは、First Segment (TDES0[28]) が設定されている場合にのみ有効です。

26

DP: Disable Pad

設定されている場合、MACは64バイトより短いフレームに自動的にパディングを追加しません。このビットがクリアされている場合は、DMAは64バイトより短いフレームにパディングとCRCを自動的に追加します。CRCフィールドは、DC (TDES0[27]) ビットの状態にかかわらず追加されます。このビットは、First Segment (TDES0[28]) が設定されている場合にのみ有効です。

25

TTSE: Transmit Timestamp Enable

設定されている場合、このビットは、記述子で参照されている送信フレームのIEEE1588ハードウェア・タイムスタンプを有効にします。このフィールドは、First Segment制御ビット (TDES0[28]) が設定されている場合にのみ有効です。

24

予約済み

23:22

CIC: Checksum Insertion Control。これらのビットは、チェックサムの計算と挿入を制御します。次のリストは、ビットのエンコーディングについて説明しています。

■ 0x0: チェックサムの挿入は無効です。

■ 0x1: IPヘッダー・チェックサムの計算と挿入のみが有効です。

■ 0x2: IPヘッダー・チェックサムとペイロード・チェックサムの計算と挿入は有効ですが、疑似ヘッダー・チェックサムはハードウェアで計算されません。

■ 0x3: IPヘッダー・チェックサムとペイロード・チェックサムの計算と挿入が有効であり、疑似ヘッダー・チェックサムはハードウェアで計算されます。

このフィールドは、First Segment制御ビット (TDES0[28]) が設定されている場合に有効です。

21 TER: Transmit End of Ring

設定されている場合、このビットは、記述子リストの最終記述子に達したことを示します。DMAはリストのベースアドレスに戻り、記述子リングを形成します。

20

TCH: Second Address Chained

設定されている場合、このビットは、記述子の2番目のアドレスが2番目のバッファーアドレスではなく、Next記述子のアドレスであることを示します。TDES0[20] が設定されている場合、TBS2 (TDES1[28:16]) は「Don’t Care」値です。

TDES0[21] はTDES0[20] よりも優先されます。

19:18

予約済み

17

TTSS: Transmit Timestamp Status

このフィールドはステータスビットとして使用され、記述されている送信フレームのタイムスタンプがキャプチャーされたことを示します。このビットが設定されている場合、TDES2およびTDES3は、送信フレームにキャプチャーされたタイムスタンプの値を保有します。このフィールドは、記述子のLast Segment制御ビット (TDES0[29]) が設定されている場合にのみ有効です。

16

IHE: IP Header Error

設定されている場合、このビットは、MACトランスミッターがIPデータグラム・ヘッダーでエラーを検出したことを示します。トランスミッターは、IPv4パケットのヘッダー長をアプリケーションから受信したヘッダーバイト数と照合し、不一致がある場合はエラーステータスを示します。IPv6フレームの場合、メインヘッダー長が40バイトではない場合にヘッダーエラーが報告されます。さらに、IPv4またはIPv6フレームのEthernet LengthおよびTypeフィールドの値は、パケットで受信したIPヘッダーのバージョンと一致する必要があります。IPv4フレームの場合は、Header Lengthフィールドの値が0x5未満の場合もエラーステータスが示されます。

このビットは、Tx Checksum Offloadが有効な場合にのみ有効です。COEは、IPヘッダーエラーを検出した場合でも、Ethernet TypeフィールドでIPv4ペイロードが示されている場合は、IPv4ヘッダー・チェックサムを挿入します。

15

ES: Error Summary

次のビットの論理ORを示します。

■ TDES0[14]: Jabber Timeout

■ TDES0[13]: Frame Flush

■ TDES0[11]: Loss of Carrier

■ TDES0[10]: No Carrier

■ TDES0[9]: Late Collision

■ TDES0[8]: Excessive Collision

■ TDES0[2]: Excessive Deferral

■ TDES0[1]: Underflow Error

■ TDES0[16]: IP Header Error

■ TDES0[12]: IP Payload Error

14

JT: Jabber Timeout

設定されている場合、このビットは、MACトランスミッターにJabberのタイムアウトがあったことを示します。このビットは、レジスター0 (MAC Configuration Register) のビット22 (Jabber Disable) が設定されていない場合にのみ設定されます。

13

FF: Frame Flushed

設定されている場合、このビットは、CPUからのソフトウェア・フラッシュ・コマンドにより、DMAまたはMTLがフレームをフラッシュしたことを示します。

12

IPE: IP Payload Error

設定されている場合、このビットは、MACトランスミッターがTCP、UDP、またはICMP IPのデータグラム・ペイロードでエラーを検出したことを示します。トランスミッターは、IPv4またはIPv6ヘッダーで受信したペイロード長を、アプリケーションから受信したTCP、UDP、またはICMPパケットの実際のバイト数と照合し、不一致の場合はエラーステータスを発行します。

11

LC: Loss of Carrier

設定されている場合、このビットは、フレーム送信中にキャリアの損失が発生した (つまり、フレーム送信中にgmii_crs_i信号が1送信クロック周期以上の間非アクティブだった) ことを示します。このビットは、MACが半二重モードで動作している際に、衝突することなく送信されたフレームに対してのみ有効です。

10

NC: No Carrier

設定されている場合、このビットは、送信中にPHYからのCarrier Sense信号がアサートされなかったことを示します。

9

LC: Late Collision

設定されている場合、このビットは、衝突ウィンドウ (MIIモードではプリアンブルを含めて64バイト時間、GMIIモードではプリアンブルとキャリア拡張を含めて512バイト時間) の後に衝突が発生したことにより、フレームの送信が中断されたことを示します。Underflow Errorビットが設定されている場合、このビットは無効です。

8

EC: Excessive Collision

設定されている場合、このビットは、現在のフレームの送信を試みている際に16回の連続した衝突が発生し、送信が中断されたことを示します。レジスター0 (MAC Configuration Register) のビット9 (Disable Retry) が設定されている場合は、このビットは最初の衝突後に設定され、フレームの送信は中断されます。

7

VF: VLAN Frame

設定されている場合、このビットは、送信されたフレームがVLANタイプのフレームであることを示します。

6:3

CC: Collision Count (ステータスフィールド)

これらのステータスビットは、フレームが送信される前に発生した衝突の数を示します。このカウントは、Excessive Collisionsビット (TDES0[8]) が設定されている場合は無効です。EMACは、半二重モードの場合にのみこのステータスフィールドを更新します。

2

ED: Excessive Deferral

設定されている場合、このビットは、レジスター0 (MAC Configuration Register) のビット4 (Deferral Check) が設定されている際に、24,288ビット時間 (1,000Mbpsモード、またはジャンボフレームが有効な場合は155,680ビット時間) を超える超過遅延によって送信が終了したことを示します。

1

UF: Underflow Error

設定されている場合、このビットは、ホストメモリーからデータが遅れて到着したため、MACがフレームを中断したことを示します。Underflow Errorは、フレームの送信時にDMAが空の送信バッファーを検出したことを示します。送信プロセスはSuspended状態に入り、Transmit Underflow (レジスター5[5]) とTransmit Interrupt (レジスター5[0]) の両方が設定されます。

0

DB: Deferred Bit

設定されている場合、このビットは、キャリアの存在によって送信前にMACが遅延することを示します。このビットは、半二重モードでのみ有効です。

表 171.  Transmit Descriptor Word 1 (TDES1)
ビット 説明
31:29 予約済み
28:16 TBS2: Transmit Buffer 2 Size

このフィールドは、2番目のデータバッファーのサイズをバイト単位で示します。TDES0[20] が設定されている場合、このフィールドは無効です。

15:13 予約済み
12:0 TBS1: Transmit Buffer 1 Size

このフィールドは、最初のデータバッファーのバイトサイズをバイト単位で示します。このフィールドが0の場合、DMAはこのバッファーを無視し、TCH (TDES0[20]) の値に応じてバッファー2またはNext記述子を使用します。

表 172.  Transmit Descriptor 2 (TDES2)
ビット 説明
31:0 Buffer 1 Address Pointer

これらのビットは、バッファー1の物理アドレスを示します。バッファーアドレスのアライメントに制限はありません。

表 173.  Transmit Descriptor 3 (TDES3)
ビット 説明
31:0 Buffer 2 Address Pointer (Next Descriptor Address)

記述子のリング構造が使用されている際は、バッファー2の物理アドレスを示します。Second Address Chained (TDES0[20]) ビットが設定されている場合、このアドレスには、Next記述子が存在する物理メモリーへのポインターが含まれます。バッファーのアドレスポインターは、TDES0[20] が設定されている場合にのみバス幅に合わせる必要があります。(LSBは内部で無視されます。)

表 174.  Transmit Descriptor 6 (TDES6)
ビット 説明
31:0 TTSL: Transmit Frame Timestamp Low

このフィールドは、対応する送信フレームにキャプチャーされたタイムスタンプの最下位32ビットで、DMAによって更新されます。このフィールドは、記述子でLast Segment (LS) ビットが設定され、Timestamp Status (TTSS) ビットが設定されている場合にのみタイムスタンプを保有します。

表 175.  Transmit Descriptor 7 (TDES7)
ビット 説明
31:0 TTSH: Transmit Frame Timestamp High

このフィールドは、対応する受信フレームにキャプチャーされたタイムスタンプの最上位32ビットで、DMAによって更新されます。このフィールドは、記述子でLast Segment (LS) ビットが設定され、Timestamp Status (TTSS) ビットが設定されている場合にのみタイムスタンプを保有します。