インテルのみ表示可能 — GUID: gnx1481130249742
Ixiasoft
インテルのみ表示可能 — GUID: gnx1481130249742
Ixiasoft
17.6.2.4. バッファーサイズの計算
DMAは、送信および受信記述子のサイズフィールドを更新しません。DMAは、記述子のステータスフィールド (RDESおよびTDES) のみを更新します。ドライバーでは、サイズの計算を行う必要があります。
送信DMAは、TDES1のバッファー・サイズ・フィールドで示されているサイズに等しいバイト数をMACに転送します。記述子が1番目としてマークされている (TDES1のFSビットが設定されている) 場合、DMAは、バッファーからの最初の転送をフレームの開始としてマークします。記述子が最後 (TDES1のLSビット) としてマークされている場合、DMAは、そのデータバッファーからの最後の転送をMTLへのフレームの終わりとしてマークします。
受信DMAは、バッファーがフルになるまで、もしくはMTLからフレームの終わりを受信するまで、データをバッファーに転送します。記述子が最後としてマーク (RDES0のLSビット) されていない場合、記述子の対応するバッファーはフルです。また、バッファー内の有効なデータの量は、その記述子のFSビットが設定されている場合に、そのバッファー・サイズ・フィールドからデータ・バッファー・ポインターのオフセットを引くことで正確に示されます。データ・バッファー・ポインターがデータバス幅にアライメントされている場合、オフセットは0です。記述子が最後としてマークされている場合に、バッファーがフルではないことがあります (バッファーのサイズはRDES1で示されます)。この最終バッファー内の有効なデータの量を計算するには、ドライバーでフレーム長 (RDES0のFLビット [29:16]) を読み出し、このフレームの先行するバッファーの合計バッファーサイズを引く必要があります。受信DMAは常に、次のフレームの開始を新しい記述子で転送します。