除了誤報此錯誤外,并未觀測到任何功能性問題,且仍可繼續使用 LSO 卸載功能。
這被分類為次要硬件問題,因為可輕松屏蔽并忽略誤報事件。
詳細描述
LSO 提供 TCP 分段 (TSO) 和 UDP 分片 (UFO) 硬件功能,廣泛用于提升 TCP/IP 或 UDP/IP 性能。
當軟件通過緩沖區描述符 (BD) 查詢大型幀時,DMA 引擎將基于軟件編程的最大分段大小 (MSS) 值(對應 TSO)或最大以太網幀大小(對應 UFO)來生成其自己的 BD。
啟用并激活 LSO 后,中斷狀態寄存器的位 6 會檢查這些生成的 BD 的有效性,如果不正確則會發出報告。
經觀測發現,當 DMA 進入休眠狀態(由于沒有幀在排隊)時,中斷狀態寄存器的位 6 可能誤報錯誤。
敬請放心忽略此誤報。
解決方案
影響:
很小。可采用軟件變通方法。
GEM IP 可能錯誤觸發“amba error”中斷。
變通方法:
根據 LSO 幀正在其中排隊的隊列,將每個 BD 中發送的緩沖區最大長度限制為比分配給該隊列的 TX SRAM 空間少 56 個字節。
例如,如果 LSO 幀正在 Q0 中排隊,并且已向 Q0 分配 16KB(作為硬件配置的一部分),那么請將每個排隊的 BD 中的長度字段限制為最大 16327 個字節(即,如果設置的長度字段在 16328 到 16383 范圍內,就可能發生此問題)。
賽靈思驅動程序將每個排隊的 BD 中的長度字段限制為 16327 個字節。
1. 通過設置中斷掩碼寄存器的位 6 從而屏蔽中斷狀態寄存器的位 6,這樣即可屏蔽“amba_error”中斷。
2. 當軟件內核中已啟用 TSO 或 UFO 時,忽略中斷例程內的“amba_error”中斷。
對于上述第 2 和第 3 項:雖然當 LSO 處于活動狀態時此事件不出現,但是用戶在任何正常操作環境內都不應目擊此錯誤,其主要目的是在幀排隊等待發射時檢查全部軟件錯誤。
因此,建議用戶首先在完全禁用 LSO 的情況下啟用此中斷并運行測試,以確保不會通過位 6 報告全部軟件錯誤,然后再將其屏蔽以配合 LSO 來使用。
位 6 所報告的此錯誤描述如下:
"Transmit frame corruption due to AMBA (AHB/AXI) error.Set if an error occurs whilst midway through reading transmit frame from external system memory, including HRESP errors(AHB), RRESP or BRESP(AXI) errors and buffers exhausted mid frame (if the buffers run out during transmission of a frame then transmission stops, FCS shall be bad and tx_er asserted).Also set in DMA packet buffer mode if single frame is too large for configured packet buffer memory size."
此錯誤表明發生了 AXI 響應錯誤、檢測到未使用的位中間幀 (used-bit-mid-frame) 或者軟件排隊的幀對于已配置的數據包緩沖區而言過大。
在中斷狀態寄存器的位 11 中同樣會指出上述第 1 項錯誤,因此即使位 6 已屏蔽,錯誤事件仍可見。
第 2 和第 3 項錯誤與 LSO 幀不相關,因為 DMA 內部生成的 BD 的 MSS 更小。
這表明內部(而非軟件提供的)BD 存在錯誤,因此當非 LSO 幀排隊時,將不會出現錯誤事件。
受影響的配置:
在硬件配置中包含“大型發送卸載”(通過 gem_pbuf_lso 配置選項),且在緩沖區描述符中啟用 LSO 功能。
解決方案:
這是第三方勘誤表。不對該問題進行修復。
審核編輯 黃昊宇
-
控制器
+關注
關注
112文章
15870瀏覽量
175298 -
GEM
+關注
關注
0文章
8瀏覽量
6664 -
Versal
+關注
關注
1文章
151瀏覽量
7596 -
ACAP
+關注
關注
1文章
54瀏覽量
8119
發布評論請先 登錄
相關推薦
評論