目錄

簡介

問題

解決方案

簡介

本文說明發生循環冗餘檢查(CRC)錯誤時DDF重新載入事件。使用簡單網路管理協議(SNMP)陷阱DDFreload來報告事件。陷阱隨操作和維護的CRC錯誤重新啟動通知一起引入。

問題

DDF現場可程式設計門陣列(FPGA)是DPC和DPC2上的DMA引擎，DDF FPGA容易接收CRC_ERROR。DDF FPGA驅動程式決定是否可以恢復錯誤。此決定取決於這些錯誤發生的次數和速率。當驅動程式決定可以恢復這些錯誤時，它向應用程式指示發生了此類錯誤。

Thu Apr 01 02:54:09 2021 Internal trap notification 1332 (DDFreload) card 3 ddf-dev DDF1

2021-Apr-01+02:54:09.277 card 3-cpu1: Bad dheader magic number. previous=0xf1234567 (p[12345678.123456] mcdma: MDF/DDF FPGA 3 ch6 acket addr: 0xf2

2021-Apr-01+02:54:09.327 card 3-cpu0: [12345678.123789] DF2 Complex-0 Program DDF2 CAF_DF1_PROG_ERR error detected on SAD1234567

可在此處觀察使用dhdr.bdh_magic的sessmgr崩潰：

Assertion failure at midplane/libsn_midplane.c:1845

Function: sn_midplane_dma_buffer_packet_get()

Expression: packet->dhdr.bdh_magic == 0x1974

Proclet: sessmgr (f=87000,i=40)

Process: card=3 cpu=1 arch=X pid=40961 cpu=~18% argv0=sessmgr

Crash time: 2021-Apr-28+14:54:10 UTC

Recent errno: 11 Resource temporarily unavailable

Build_number: 76955

Stack (2680@0x0xffd28000):

[ffffe430/X] __kernel_vsyscall() sp=0xffd28378

[0d0d4c67/X] sn_assert() sp=0xffd283d8

[0d1cef88/X] sn_midplane_dma_buffer_packet_get() sp=0xffd28478

[06b85352/X] sessmgr_med_data_receive() sp=0xffd284f8

[0d15cca4/X] sn_epoll_run_events() sp=0xffd28548

[0d16979a/X] sn_loop_run() sp=0xffd289f8

[0ce5bc25/X] main() sp=0xffd28a68

解決方案

DDF重新載入修復了CRC_ERROR問題，通常無需執行進一步的操作。在此類情況下，手動卡遷移可解決流量問題，DDF重新載入後很少報告使用者影響。

# card migrate from <affected card> to <standby card>

在版本21.19（或更高版本）中引入了額外功能，該功能監控FPGA的內部流水線，並在檢測到DDF重新載入後出現任何問題時觸發恢復。