WiFiはMAC層とPHY層に分かれています。
(純粋に怖い)
フレーム(MPDU)は、次の部分に分かれています。
{MAC_HDR、{PHY_HDR、PSDU}}、FCS。
MAC_HDR:RA、TA、VHT / HT / HE、MU / SUグループID、BSSID、LENGTH、AMPDUまたはMPDUフラグ、CIPHER_TYPE、デフラグメントかどうか、期間、MANAGE / CONTROL / DATAタイムスタンプ等。
PHY_HDR:AMSDUまたはMSDU、PHY_MODE、PHY_RATE等。
対応するシーケンス:MAC_HDRを解析し、LENGTHを確認し、
対応するキャッシュメカニズム:RxPHY_FIFOを使用して、256深度x64ビットのデータをキャッシュします。
別のRxParseFIFO、64深度x 64ビットを使用します。これは、関連データをバッファリングするために使用され、解凍されるのを待ちます。フレームをキャッシュする必要があります。
次に、RxCacheを使用します。この部分は8196x64ビットです。これは、DMAの移動が遅いため、必要です。
出てくるデータには、RxCache、RxCmdFIFO、およびDescriptorのデータが含まれます。
RxCmdFIFOは、データ転送のためにMAC独自のDMA(Aribitor内)によって使用されます。これには、記述子(この記述子は以下の記述子と同じではありません)、バッファーが含まれます。バッファーには、現在のバッファーリストの記述子とバッファーも含まれます。バッファが継続的に更新されると記述子も更新されるため(データパケットは常に解析されます)、記述子は、PSDU全体が受信された後にのみ真に決定されます。次の構造になっています。
MPDUとMSDUの状況(どちらも集約されていません):
バッファーHDRPADDING MAC HDRmsduペイロードTRAILERFCS記述子
AMSDUの状況:
Buffer0 HDR PADDING MAC HDRsub-msduペイロード記述子
Buffer1 HDR PADDING MAC HDRsub-msduペイロード
Buffer2 HDR PADDING MAC HDRsub-msduペイロードTRAILERFCS
AMPDUの場合、バッファ配置は自己リンク形式であるため、AMSDUと異なる必要はありません。
同様に、MPDUとMSDUの場合、Aシリーズと完全に同様の方法を作成できるはずです。
記述子は、提供されるものとソフトウェアの間のインターフェースです。含まれるもの:AMSDUまたはMSDU、AMPDUまたはMPDU、BufferAddr。次のバッファまたは次の記述子。最後のMSDUかどうか。すべてのデータストレージはMAC自体によって定義されます。このようなインターフェイスの利点は、データスケジューリングへのソフトウェアの介入を減らし、効率を可能な限り向上させることです。