本文轉自公眾號歡迎關注
https://mp.weixin.qq.com/s/SU4xDurm-y-PFIE-3y_-hw
一.描述符格式
1.1 前言
前面我們介紹了描述符鏈表的工作模式,重點是了解環(huán)形鏈表是如何環(huán)形的,以及相關的寄存器。驅動編寫就需要更進一步,了解描述符的具體內容,即4個描述符的每個字段的含義。
描述符包含兩個緩沖區(qū)指針和長度信息,以及一些其他的控制信息。
下面的讀取格式指的是硬件讀,軟件寫的格式,回寫格式相反。
1.2發(fā)送描述符
讀取格式
這里的讀取指的硬件去讀取,即軟件寫硬件讀。
TDES0
位 | 名字 | 描述 |
---|---|---|
31:0 | BUF1AP | 緩沖區(qū)1地址指針或TSO頭地址指針這些位表示緩沖區(qū)1的物理地址。當設置以下位時,這些位指示TSO標頭地址指針:■ TSE bit of TDES3■ FD bit of TDES3 |
TDES1
位 | 名字 | 描述 |
---|---|---|
31:0 | BUF2AP | 緩沖區(qū)2或緩沖區(qū)1地址指針.當使用描述符環(huán)結構時,該位指示緩沖區(qū)2的物理地址。緩沖區(qū)地址對齊沒有限制。在40或48位尋址模式中,這些位表示緩沖區(qū)1地址指針的最高有效8或16位. |
TDES2
位 | 名字 | 描述 |
---|---|---|
31 | IOC | 本描述符處理完產生中斷 |
30 | TTSE/TMWD | 傳輸時間戳啟用或外部TSO內存寫入禁用,如果TSE位未置位,則此位啟用描述符引用的傳輸數(shù)據(jù)包的IEEE1588時間戳如果TSE位被置位并且外部TSO存儲器被啟用,則設置該位將禁用該數(shù)據(jù)包的外部TSO內存寫入。 |
29:16 | B2L | 緩沖區(qū)2長度,驅動程序設置此字段。設置后,此字段指示緩沖區(qū)2的長度。 |
15:14 | VTIR | VLAN標記插入或替換這些位請求MAC在傳輸數(shù)據(jù)包之前執(zhí)行VLAN標記或取消標記。當為數(shù)據(jù)包啟用VLAN標簽插入、替換或刪除時,應用程序必須適當設置CRC填充控制位。以下列表描述了這些位的值:■ 2'b00:不要添加VLAN標記?!?2'b01:在傳輸之前從數(shù)據(jù)包中刪除VLAN標簽。此選項應僅用于VLAN數(shù)據(jù)包?!?2'b10:插入一個VLAN標簽,標簽值編程在MAC_VLAN_Incl寄存器或上下文描述符中。■ 2'b11:用MAC_VLAN_Incl寄存器或上下文描述符中編程的標簽值替換數(shù)據(jù)包中的VLAN標簽。此選項應僅用于VLAN數(shù)據(jù)包。當在配置核心時選擇啟用SA和VLAN插入Tx選項時,這些位有效 |
13:0 | HL或B1L | 標頭長度或緩沖區(qū)1長度對于標頭長度,只取位[9:0]。大小13:0僅適用于解釋緩沖區(qū)1長度時。如果通過TDES3的TSE位啟用TCP分段卸載功能,則此字段等于標頭長度。當TSE位在TDES3中設置時,報頭長度包括從以太網源地址到TCP報頭結束的長度(以字節(jié)為單位)。TSO功能支持的最大標頭長度為1023字節(jié)。TSO功能支持的最大標頭長度為1023字節(jié)。如果未啟用TCP分段卸載功能,則此字段等于緩沖區(qū)1長度。 |
TDES3
位 | 名字 | 描述 |
---|---|---|
31 | OWN | 軟件準備完描述符后,置位該位,表示DMA擁有該描述符,DMA處理完該描述符后清零該位,此時軟件擁有該描述符。注意該位軟件要在描述符準備完后最后置位。該位實際是硬件和軟件的讀寫互斥量,硬件和軟件都是R-M-W的操作次序。 |
30 | CTXT | 設置為1表示Context類型的描述符,正常設置為0. |
29 | FD | 設置為1表示本描述符對應的緩沖區(qū)數(shù)據(jù)是MAC幀的第一段。 |
28 | LD | 設置為1表示本描述符對應的緩沖區(qū)數(shù)據(jù)是MAC幀的最后段。此時B1L或B2L不能為0. |
27:26 | CPC | CRC和填充控制該字段控制Tx數(shù)據(jù)包的CRC和填充插入。僅當設置了第一個描述符位(TDES3[29])FD時,此字段才有效。以下列表描述了位[27:26]的值:■ 2’b00:CRC和填充插入,MAC在長度大于或等于60字節(jié)的傳輸數(shù)據(jù)包的末尾附加循環(huán)冗余校驗(CRC)。MAC自動將填充和CRC附加到長度小于60字節(jié)的數(shù)據(jù)包中?!?2'b01:CRC插入(禁用填充插入)MAC在傳輸數(shù)據(jù)包的末尾附加CRC,但不附加填充。應用程序應確保從傳輸緩沖區(qū)傳輸?shù)臄?shù)據(jù)包中存在填充字節(jié),也就是說,從傳輸緩沖區(qū)時傳輸?shù)臄?shù)據(jù)包包長大于或等于60字節(jié)?!?2’b10:禁用CRC插入MAC不會在傳輸數(shù)據(jù)包的末尾附加CRC。應用程序應確保填充和CRC字節(jié)存在于從傳輸緩沖區(qū)傳輸?shù)臄?shù)據(jù)包中?!?2'b11:CRC替換MAC用重新計算的CRC字節(jié)替換傳輸數(shù)據(jù)包的最后四個字節(jié)。應用程序應確保填充和CRC字節(jié)存在于從傳輸緩沖區(qū)傳輸?shù)臄?shù)據(jù)包中。此字段僅對第一個描述符有效。注意:設置TSE位時,MAC會忽略此字段,因為CRC和填充插入總是用于分段。 |
25:23 | SAIC | SA源MAC地址插入控制這些位請求MAC將以太網數(shù)據(jù)包中的源地址字段添加或替換為MAC地址0寄存器中給定的值。當為數(shù)據(jù)包啟用SA插入控制時,應用程序必須適當設置CRC填充控制位。位25指定用于插入或替換源地址的MAC地址寄存器(1或0)值。以下列表描述了位[24:23]的值:■ 2'b00:不包括源地址■ 2'b01:包括或插入源地址。為了實現(xiàn)可靠的傳輸,應用程序必須提供沒有源地址的幀?!?2'b10:替換源地址。為了實現(xiàn)可靠的傳輸,應用程序必須為幀提供源地址?!?2'b11:保留當在配置核心時選擇Enable SA and VLAN Insertion on Tx(啟用SA和VLAN插入Tx)選項并且設置了First Segment control bit(TDES3[29])時,這些位在EQOS-DMA、EQOS-AXI和EQOS-AHB配置中有效。此字段僅對第一個描述符有效。 |
22:19 | SOLTNUM或THL | SOLTNUM:AV模式下的插槽號控制位這些位指示應從TDES0或TDES1尋址的相應緩沖器中取出數(shù)據(jù)的時隙間隔當提取傳輸描述符時,DMA將該字段中的時隙號值與RSN字段DMA_CH#_slot_Function_Control_Status中保持的時隙間隔進行比較。只有當值匹配時,它才會從緩沖區(qū)中獲取數(shù)據(jù)。這些位僅對AV頻道有效THL:TCP標頭長度如果設置了TSE位,則此字段包含TCP標頭的長度。此字段的最小值必須為5。此字段僅對第一個描述符有效。 |
18 | TSE | TCP分段啟用當該位被設置時,DMA對數(shù)據(jù)包執(zhí)行TCP分段。僅當FD位被設置時,此位才有效 |
17:16 | CIC/TPL | 校驗和插入控制或TCP有效負載長度這些位控制校驗和計算和插入。以下列表描述了位編碼:■2'b00:校驗和插入已禁用。■ 2'b01:僅啟用IP標頭校驗和計算和插入?!?2'b10:啟用IP標頭校驗和和有效負載校驗和計算和插入,但硬件中不計算偽標頭校驗和?!?2'b11:IP報頭校驗和和有效載荷校驗和計算和插入啟用,偽報頭校驗和在硬件中計算。當選擇Enable Transmit TCP/IP Checksum Offload(啟用傳輸TCP/IP校驗和卸載)選項并重置TSE位時,此字段有效。設置TSE位時,此字段包含TCP有效負載長度的高位[17:16]。這允許TCP數(shù)據(jù)包長度字段跨越TDES3[17:0],以提供256KB的數(shù)據(jù)包長度支持。此字段僅對第一個描述符有效。 |
15 | TPL | 保留或TCP有效負載長度當TSE位被重置時,該位被保留。設置TSE位時,這是TCP有效載荷長度[17:0]的第15位只有在配置核心時選擇了Enable TCP Segmentation Offloading for TCP/IP Packets(為TCP/IP數(shù)據(jù)包啟用TCP分段卸載)選項時,此字段才有效。 |
14:0 | FL/TPL | 數(shù)據(jù)包長度或TCP有效負載長度此字段等于要傳輸?shù)臄?shù)據(jù)包的長度(以字節(jié)為單位)。當TSE位未設置時,此字段等于要發(fā)送的數(shù)據(jù)包的總長度:Ethernet Header Length + TCP /IP Header Length – Preamble Length –SFD Length + Ethernet Payload Length當TSE位被設置時,該字段等于TCP有效載荷長度的低15位。此長度不包括以太網標頭或TCP/IP標頭長度。 |
回寫格式
這里的回寫指的硬件回寫,即軟件讀硬件寫。
注意:回寫格式僅適用于相應數(shù)據(jù)包的最后一個描述符。即LD位(TDES3[28])置位的描述符中,DMA在描述符中回寫相應傳輸數(shù)據(jù)包的狀態(tài)和時間戳信息
TDES0
位 | 名字 | 描述 |
---|---|---|
31:0 | TTSL | 傳輸數(shù)據(jù)包時間戳低DMA使用為相應傳輸數(shù)據(jù)包捕獲的時間戳的最低有效32位來更新此字段。只有在數(shù)據(jù)包的第一個描述符中設置了TDES2的TTSE位時,DMA才會寫入時間戳。僅當描述符中的Last Segment位(LS)已設置并且timestamp status(TTSS)位已設置時,此字段才具有時間戳。 |
TDES1
位 | 名字 | 描述 |
---|---|---|
31:0 | TTSH | 傳輸數(shù)據(jù)包時間戳高DMA使用為相應接收數(shù)據(jù)包捕獲的時間戳的最高有效32位來更新此字段。只有當TDES2的TTSE位設置在數(shù)據(jù)包的第一個描述符中時,DMA才寫入時間戳。僅當描述符中的Last Segment位(LS)已設置并且timestamp status(TTSS)位已設置時,此字段才具有時間戳。 |
TDES2
保留
TDES3
位 | 名字 | 描述 |
---|---|---|
31 | OWN | 見讀取格式 |
30 | CTXT | |
29 | FD | |
28 | LD | |
27:16 | 保留 | |
17 | TTSS | Tx時間戳狀態(tài)此狀態(tài)位指示已捕獲對應傳輸數(shù)據(jù)包的時間戳。當設置該位時,TDES2和TDES3具有為傳輸數(shù)據(jù)包捕獲的時間戳值。僅當描述符中的最后一段控制位(TDES3[28])設置時,此字段才有效。此位僅在啟用IEEE1588時間戳功能時有效;否則,它將被保留。 |
16 | 保留 | |
15 | ES | 錯誤摘要,此位表示以下位的邏輯或:■ TDES3[0]: IP Header Error■ TDES3[14]: Jabber Timeout■ TDES3[13]: Packet Flush■ TDES3[12]: Payload Checksum Error■ TDES3[11]: Loss of Carrier■ TDES3[10]: No Carrier■ TDES3[9]: Late Collision■ TDES3[8]: Excessive Collision■ TDES3[3]: Excessive Deferral■ TDES3[2]: Underflow Error |
14 | JT | Jabber超時此位表示MAC發(fā)送器已經歷Jabber暫停。僅當未設置MAC_Configuration寄存器的JD位時,才設置該位。 |
13 | FF | 數(shù)據(jù)包刷新此位表示DMA或MTL由于CPU給出的軟件刷新命令而刷新了數(shù)據(jù)包。 |
12 | PCE | 有效負載校驗和錯誤此位表示校驗和卸載引擎出現(xiàn)故障,并且沒有將任何校驗和插入封裝的TCP、UDP或ICMP有效負載中。此故障可能是由于字節(jié)不足,如IP標頭的有效負載長度字段所示,或者MTL在存儲和轉發(fā)模式下開始將數(shù)據(jù)包轉發(fā)到MAC發(fā)送器,但尚未計算校驗和。第二種錯誤情況僅在傳輸FIFO深度小于正在傳輸?shù)囊蕴W數(shù)據(jù)包的長度時發(fā)生,以避免死鎖,MTL在FIFO滿時開始轉發(fā)數(shù)據(jù)包,即使在存儲和轉發(fā)模式下也是如此。當未啟用完全校驗和卸載引擎時,保留此位 |
11 | LOC | 載波丟失該比特表示在分組傳輸期間發(fā)生載波丟失(即,在分組傳輸過程中,gmii_crs_i信號在一個或多個傳輸時鐘周期內不活動)。這僅對在沒有沖突的情況下發(fā)送的分組有效,并且當MAC在半雙工模式下操作時有效。 |
10 | NC | 無載波該位表示在傳輸期間沒有斷言來自PHY的載波感測信號 |
9 | LC | 延遲沖突該位表示由于在沖突窗口之后發(fā)生沖突而中止了分組傳輸(在MII模式中包括Preamble的64字節(jié)時間和在GMII模式中包括Preamble和Carrier Extension的512字節(jié)時間)。如果設置了“欠流錯誤”,則此位無效 |
8 | EC | 過度沖突此位表示在嘗試傳輸當前數(shù)據(jù)包時,在連續(xù)發(fā)生16次沖突后,傳輸被中止。如果在MAC_Configuration寄存器中設置了DR位,則在第一次沖突之后設置該位,并且中止數(shù)據(jù)包的傳輸 |
7:4 | CC | 沖突計數(shù)此4位計數(shù)器值表示在傳輸數(shù)據(jù)包之前發(fā)生的沖突數(shù)。設置EC位時,計數(shù)無效。 |
3 | ED | 過度延遲此位表示如果在MAC_Configuration寄存器中設置了DC位,則由于超過24288位時間的過度延遲(在1000Mbps模式或Jumbo Packet enabled模式下為155680位時間),傳輸結束。 |
2 | UF | 欠流錯誤此位表示MAC中止了數(shù)據(jù)包,因為數(shù)據(jù)從系統(tǒng)內存延遲到達。下溢錯誤可能是由于以下任一情況而發(fā)生的:■ DMA在傳輸數(shù)據(jù)包時遇到空的傳輸緩沖區(qū)■ 應用程序填充MTL Tx FIFO的速度慢于MAC傳輸速率。傳輸過程進入暫停狀態(tài),并設置與MTL_Interrupt_Status寄存器中的隊列相對應的下溢位。 |
1 | DB | 延遲位此位表示MAC由于載波的存在而在發(fā)送之前延遲。此位僅在半雙工模式下有效。 |
0 | IHE | IP標頭錯誤設置IP標頭錯誤時,此位表示校驗和卸載引擎檢測到IP標頭錯誤。此位僅在啟用Tx校驗和卸載時有效。否則,它將被保留。如果COE檢測到IP標頭錯誤,如果以太網類型字段指示IPv4有效負載,它仍然插入IPv4標頭校驗和。 |
傳輸上下文描述符
見手冊21.5.2
1.3接收描述符
讀取格式
在接收描述符(讀取格式)中,如果緩沖區(qū)地址字段全部為0,則DWC_ether_qos不會將數(shù)據(jù)傳輸?shù)皆摼彌_區(qū),并跳到下一個緩沖區(qū)或下一個描述符。
RDES0
位 | 名字 | 描述 |
---|---|---|
31:0 | BUF1AP | 標題或緩沖器1地址指針.當通道的控制寄存器的SPH位被復位時,這些位指示緩沖器1的物理地址。當SPH位被設置時,這些位指示報頭緩沖器的物理地址,Rx DMA在該物理地址寫入接收到的分組的L2/L3/L4報頭字節(jié)。應用程序可以為該緩沖器編程一個字節(jié)對齊的地址,這意味著該字段的LS位可以是非零的。然而,在傳輸數(shù)據(jù)包的開始時,DMA執(zhí)行RDES0[1:0](或者在64-/128位配置的情況下,RDES0[2:0]/[3:0])為零的寫入操作。然而,分組數(shù)據(jù)按照緩沖區(qū)地址指針給出的實際偏移量進行移位。如果地址指針指向存儲數(shù)據(jù)包中間或最后部分的緩沖區(qū),DMA將忽略偏移地址并寫入數(shù)據(jù)寬度所指示的完整位置 |
RDES1
位 | 名字 | 描述 |
---|---|---|
31:0 | BUF1AP | 64位地址模式的BUF1AP的高32位,32位不使用 |
RDES2
位 | 名字 | 描述 |
---|---|---|
31:0 | BUF2AP | 緩沖器2地址指針這些位表示緩沖器2的物理地址。當設置DMA_CH#_Control寄存器的SPH位時,緩沖區(qū)地址指針必須與總線寬度對齊,即RDES2[3:0、2:0或1:0]=0,對應于128、64或32總線寬度。LSB在內部被忽略。當DMA_CH#_Control寄存器的SPH位復位時,RDES2值沒有限制。然而,RxDMA僅在傳輸數(shù)據(jù)包的起始字節(jié)時使用指針地址的LS位。如果BUF2AP給出了存儲數(shù)據(jù)包中間或最后部分的緩沖器的地址,DMA將忽略BUF2AP[3:0或2:0或1:0](對應于128或64或32位數(shù)據(jù)總線)并寫入完整位置。 |
RDES3
位 | 名字 | 描述 |
---|---|---|
31:0 | OWN | 同TX描述符 |
30 | IOC | 同TX描述符 |
29:26 | 保留 | |
25 | BUF2V | 緩沖區(qū)2地址有效當設置此位時,它向DMA指示RDES2中指定的緩沖區(qū)2的地址有效。應用程序必須設置此位,以便DMA可以使用RDES2中的緩沖區(qū)2地址所指向的地址來寫入接收到的數(shù)據(jù)包數(shù)據(jù)。 |
24 | BUF1V | 緩沖區(qū)1地址有效設置后,向DMA指示RDES1中指定的緩沖區(qū)1的地址有效。如果DMA可以使用RDES1中緩沖區(qū)1地址所指向的地址來寫入接收到的數(shù)據(jù)包數(shù)據(jù),則應用程序必須設置此值。 |
23:0 | 保留 |
回寫格式
RDES0
位 | 名字 | 描述 |
---|---|---|
31:16 | IVT | 內部VLAN標記如果設置了RDES3的RS0V位,則此字段包含接收到的數(shù)據(jù)包的內部VLAN標記。僅當啟用了雙VLAN標記處理和VLAN標記剝離時,此選項才有效。 |
15:0 | OVT | 外部VLAN標記如果設置了RDES3的RS0V位,則此字段包含接收到的數(shù)據(jù)包的外部VLAN標記 |
RDES1
僅對最后一個描述符有效(設置了RDES3[28])
位 | 名字 | 描述 |
---|---|---|
31:16 | OPC | OAM Sub-Type Code:RDES3的比特[18:16]被設置為3’b111時;MAC Control Packet opcode:RDES3的比特[18:16]被設置為3’b110時 |
15 | TD | 丟棄的時間戳。此位表示捕獲了此數(shù)據(jù)包的時間戳,但由于溢出,它在MTL Rx FIFO中被丟棄。只有選擇時間戳功能時,此位才可用。否則,保留此位 |
14 | TSA | 可用時間戳當存在時間戳時,此位指示時間戳值在上下文描述符字2(RDES2)和字1(RDES1)中可用。只有當設置了最后一個描述符位(RDES3[28])時,這才有效。上下文描述符被寫入下一個描述符中,剛好在數(shù)據(jù)包的最后一個正常描述符之后。 |
13 | PV | PTP版本該比特指示所接收的PTP消息具有IEEE 1588版本2格式。當該位被重置時,它指示IEEE 1588版本1格式。只有當您選擇時間戳功能時,此位才可用。否則,該位被保留。 |
12 | PFT | PTP數(shù)據(jù)包類型此位表示PTP消息直接通過以太網發(fā)送。只有當您選擇時間戳功能時,此位才可用。否則,該位被保留。 |
11:8 | PMT | PTP Message Type只有選擇時間戳功能時,這些位才可用?!?0000: No PTP message received■ 0001: SYNC (all clock types)■ 0010: Follow_Up (all clock types)■ 0011: Delay_Req (all clock types)■ 0100: Delay_Resp (all clock types)■ 0101: Pdelay_Req (in peer-to-peer transparent clock)■ 0110: Pdelay_Resp (in peer-to-peer transparent clock)■ 0111: Pdelay_Resp_Follow_Up (in peer-to-peer transparent clock)■ 1000: Announce■ 1001: Management■ 1010: Signaling■ 1011–1110: Reserved■ 1111: PTP packet with Reserved message type |
7 | IPCE | IP Payload Error(IP有效負載錯誤)當設置此位時,它指示以下情況之一:■ MAC計算的16位IP有效載荷校驗和(即TCP、UDP或ICMP校驗和)與接收段中相應的校驗和字段不匹配?!?TCP、UDP或ICMP段長度與IP標頭字段中的有效負載長度值不匹配。■ TCP、UDP或ICMP段長度小于TCP、UDP和ICMP允許的最小段長度。當RDES3的位15(ES)被設置時,該位未被設置 |
6 | IPCB | IP校驗和旁路此位表示校驗和卸載引擎被旁路。當您選擇啟用接收TCP/IP校驗和檢查功能時,此位可用 |
5 | IPV6 | IPv6標頭存在此位表示檢測到IPv6標頭。當選擇Enable Split Header Feature(啟用拆分標頭功能)選項并設置通道控制寄存器的SPH位時,IPV6標頭在RDES0所指向的標頭緩沖區(qū)中可用。 |
4 | IPV4 | IPV4標頭存在此位表示檢測到IPV4標頭。當RDES3的SPH位被設置時,IPV4報頭在RDES0所指向的報頭緩沖區(qū)中可用。 |
3 | IPHE | IP標頭錯誤當設置此位時,表示以下情況之一:■ MAC計算的16位IPv4標頭校驗和與接收到的校驗和字節(jié)不匹配?!?IP數(shù)據(jù)報版本與以太網類型值不一致?!?以太網數(shù)據(jù)包沒有預期的IP標頭字節(jié)數(shù)。當位5或位4被設置時,該位是有效的。當您選擇啟用接收TCP/IP校驗和檢查功能時,此位可用。 |
2:0 | PT | 有效載荷類型這些比特指示由接收校驗和卸載引擎(COE)處理的IP數(shù)據(jù)報中封裝的有效載荷的類型:■ 3'b0000:未知類型或未處理IP/AV有效負載■ 2001年3月:UDP■ 2010年3月:TCP■ 2011年3月:ICMP■ 3'b110:AV標記數(shù)據(jù)包■ 3'b111:帶AV標簽的控制包■ 3'b101:AV未標記控制數(shù)據(jù)包■ 3'b100:IGMP如果IPV4標頭存在位被設置為else DCB(LLDP)控制包如果COE由于存在IP標頭錯誤或碎片IP而不處理IP數(shù)據(jù)報的有效載荷,則將這些位設置為3'b000。 |
RDES2
位 | 名字 | 描述 |
---|---|---|
31:29 | L3L4FM | 匹配的第3層和第4層濾波器數(shù)量這些比特指示與接收到的分組匹配的第三層和第四層濾波器的數(shù)量:只有當位28或位27被設置為高時,該字段才有效。當多個濾波器匹配時,這些位給出最低濾波器的數(shù)目 |
28 | L4FM | 第4層過濾器匹配當設置此位時,它表示接收到的數(shù)據(jù)包與啟用的第4層端口號字段之一匹配。只有當下列條件之一成立時,才會給出此狀態(tài)第3層字段未啟用,所有啟用的第4層字段匹配,所有啟用的第3層和第4層篩選器字段匹配當不止一個過濾器匹配時,該位給出由位[31:29]指示的過濾器的第4層過濾器狀態(tài) |
27 | L3FM | 第3層篩選器匹配設置此位時,表示接收到的數(shù)據(jù)包與啟用的第3層IP地址字段之一匹配。只有當下列條件之一成立時,才會給出此狀態(tài):■ 所有啟用的第3層字段匹配,所有啟用的“第4層”字段被繞過■ 所有啟用的過濾器字段匹配當多個過濾器匹配時,該位給出由位[31:29]指示的過濾器的第3層過濾器狀態(tài)。 |
26:19 | MADRM | MAC地址匹配或哈希值當HF位重置時,此字段包含與接收到的數(shù)據(jù)包的目標地址匹配的MAC地址寄存器號。僅當DAF位被重置時,此字段才有效。設置HF位時,此字段包含MAC計算的哈希值。當與哈希值相對應的比特被設置在哈希過濾器寄存器中時,數(shù)據(jù)包通過哈希過濾器。 |
18 | HF | 哈希過濾器狀態(tài)設置此位時,表示數(shù)據(jù)包通過了MAC地址哈希過濾器。比特[26:19]表示散列值。 |
17 | DAF | 當設置此位時,目標地址過濾器失敗,這表明數(shù)據(jù)包在Mac上的DA過濾器失敗。 |
16 | SAF | SA地址篩選器失敗設置此位時,表示數(shù)據(jù)包未通過MAC中的SA篩選器。 |
15 | OTS | VLAN篩選器狀態(tài)設置時,此位指示接收數(shù)據(jù)包的VLAN標記通過VLAN篩選器。此位僅在未啟用DWC-EQOS-ERVFE時有效。如果啟用了DWC-EQOS-ERVFE,則該位將重新定義為外部VLAN標記篩選器狀態(tài)(OTS)。有關詳細信息,請參閱第235頁的“過濾器狀態(tài)”。此位對單個和雙VLAN標記幀都有效。 |
14 | ITS | 內部VLAN標記篩選器狀態(tài)(ITS)此位僅在啟用DWC_EQOS_ERVFE時有效。有關更多詳細信息,請參閱第235頁的“過濾器狀態(tài)”。當啟用雙VLAN處理時,此位僅對雙VLAN標記幀有效。 |
13:11 | 保留 | |
10 | ARPNR | 未生成ARP應答當設置此位時,表示MAC沒有為接收到的ARP請求數(shù)據(jù)包生成ARP應答。當MAC忙于發(fā)送對早期ARP請求的ARP回復時(一次只處理一個ARP請求),設置此位。當未選擇Enable IPv4 ARP Offload(啟用IPv4 ARP卸載)選項時,保留此位。 |
9:0 | HL | L3/L4報頭長度該字段包含由MAC在L3或L4報頭邊界處分割的分組的報頭的長度,如MAC接收器所識別的。僅當?shù)谝幻枋龇槐辉O置(FD=1)時,該字段才有效。頭數(shù)據(jù)被寫入相應描述符的緩沖器1地址。如果標頭長度為零,則此字段無效。這意味著MAC沒有識別和分割報頭。選擇“啟用拆分標頭功能”選項時,此字段有效。 |
RDES3
位 | 名字 | 描述 |
---|---|---|
31 | OWN | |
30 | CTXT | |
29 | FD | |
28 | LD | |
27 | RS2V | 接收狀態(tài)RDES2有效設置此位時,表示RDES2中的狀態(tài)有效,并且由DMA寫入。僅當RDES3的LD位被設置時,該位才有效。 |
26 | RS1V | 接收狀態(tài)RDES1有效設置此位時,表示RDES1中的狀態(tài)有效,并且由DMA寫入。僅當RDES3的LD位被設置時,該位才有效。 |
25 | RS0V | 接收狀態(tài)RDES0有效設置此位時,表示RDES0中的狀態(tài)有效,并且由DMA寫入。僅當RDES3的LD位被設置時,該位才有效。 |
24 | CE | CRC錯誤設置此位時,表示在接收到的數(shù)據(jù)包上發(fā)生了循環(huán)冗余校驗(CRC)錯誤。僅當RDES3的LD位設置時,此字段才有效 |
23 | GP | 巨型數(shù)據(jù)包設置此位時,表示數(shù)據(jù)包長度超過指定的最大以太網大小1518、1522或2000字節(jié)(如果設置了巨型數(shù)據(jù)包啟用,則為9018或9022字節(jié))。注:巨型數(shù)據(jù)包僅表示數(shù)據(jù)包的長度。它不會導致任何數(shù)據(jù)包截斷 |
22 | RWT | 接收看門狗超時設置此位時,表示接收看門狗計時器在接收當前數(shù)據(jù)包時已過期??撮T狗超時后,當前數(shù)據(jù)包被截斷。 |
21 | OE | 溢出錯誤設置此位時,表示接收到的數(shù)據(jù)包由于Rx FIFO中的緩沖區(qū)溢出而損壞。注意:此位僅在DMA將部分數(shù)據(jù)包傳輸?shù)綉贸绦驎r設置。只有當Rx FIFO在閾值模式下操作時才會發(fā)生這種情況。在存儲轉發(fā)模式中,所有部分數(shù)據(jù)包都會完全丟棄在Rx FIFO中 |
20 | RE | 接收錯誤當設置此位時,它指示在分組接收期間斷言gmii_rxer_i信號,而斷言gmii_rxdv_i信號。該錯誤還包括GMII和半雙工模式中的載波擴展錯誤。錯誤可以是較少擴展名或沒有擴展名,也可以是擴展期間的錯誤(rxd!=0f) |
19 | DE | 漂移位錯誤設置此位時,表示接收到的數(shù)據(jù)包具有非整數(shù)倍的字節(jié)(奇數(shù)半字節(jié))。此位僅在MII模式下有效。 |
18:16 | LT | 長度/類型字段此字段指示接收到的數(shù)據(jù)包是長度數(shù)據(jù)包還是類型數(shù)據(jù)包。這3個比特的編碼如下:■ 3'b000: The packet is a length packet■ 3'b001: The packet is a type packet.■ 3'b011: The packet is a ARP Request packet type■ 3'b100: The packet is a type packet with VLAN Tag■ 3'b101: The packet is a type packet with Double VLAN Tag■ 3'b110: The packet is a MAC Control packet type■ 3'b111: The packet is a OAM packet type■ 3'b010: Reserved |
15 | ES | 錯誤摘要設置此位時,表示以下位的邏輯或:僅當RDES3的LD位被設置時,此字段才有效。■ RDES3[24]: CRC Error■ RDES3[19]: Dribble Error■ RDES3[20]: Receive Error■ RDES3[22]: Watchdog Timeout■ RDES3[21]: Overflow Error■ RDES3[23]: Giant Packet |
14:0 | PL | 數(shù)據(jù)包長度這些比特指示被傳送到系統(tǒng)存儲器(包括CRC)的接收數(shù)據(jù)包的字節(jié)長度。當RDES3的LD位被設置和/或溢出錯誤位被重置時,此字段有效。當啟用IP校驗和計算并且接收到的分組不是MAC控制分組時,分組長度還包括附加到以太網分組的兩個字節(jié)。當設置RDES3的LD位時,此字段有效。當未設置Last Descriptor和Error Summary位時,此字段指示當前數(shù)據(jù)包已傳輸?shù)睦塾嬜止?jié)數(shù)。 |
接收****上下文描述符
見手冊21.6.3
只有DMA能寫,提供最后一個包的擴展狀態(tài)信息,
RDES3的b30 CTXT標記該類型
1.4Split Header Support模式
DMA可以分別處理接收到的包的報頭和有效載荷。支持MAC幀,IP包,TCP/UDP包三個級別的包類型。
見手冊21.3
1.5總結
以上信息來源手冊的簡單整理,以備查詢,實際調試過程中以對照手冊為準。
一些關鍵的字段可以幫助調試等需要了解,重點了解OWN位的互斥作用,即硬件和軟件的R-M-W操作。
審核編輯:湯梓紅
-
嵌入式
+關注
關注
5152文章
19670瀏覽量
317512 -
以太網
+關注
關注
41文章
5635瀏覽量
175928 -
寄存器
+關注
關注
31文章
5434瀏覽量
124467 -
緩沖器
+關注
關注
6文章
2056瀏覽量
47017 -
驅動開發(fā)
+關注
關注
0文章
134瀏覽量
12310
發(fā)布評論請先 登錄
基于DWC2的USB驅動開發(fā)-IAD描述符詳解

基于DWC_ether_qos的以太網驅動開發(fā)-描述符鏈表介紹

基于DWC_ether_qos的以太網驅動開發(fā)-數(shù)據(jù)流驗證過程

基于DWC_ether_qos的以太網驅動開發(fā)-收發(fā)驅動編寫與調試

基于DWC_ether_qos的以太網驅動開發(fā)-無OS環(huán)境移植LWIP

基于DWC_ether_qos的以太網驅動開發(fā)-LWIP的堆管理介紹

基于DWC_ether_qos的以太網驅動開發(fā)-RTOS環(huán)境移植LWIP與性能測試

基于DWC_ether_qos的以太網驅動開發(fā)-LWIP在PC上進行開發(fā)調試

以太網描述符ETH_DMATxDesc_OWN異常
USB HID報告及報告描述符簡介
設計軟件核心以太網服務質量數(shù)據(jù)手冊免費下載

基于DWC_ether_qos的以太網驅動開發(fā)-包過濾

聊一聊以太網發(fā)送描述符

評論