소개
이 문서에서는 CRC(Cyclic Redundancy Check) 오류가 발생한 경우 DDF 다시 로드 이벤트에 대해 설명합니다.이 이벤트는 SNMP(Simple Network Management Protocol) 트랩 DDFreload로 보고됩니다.이 트랩은 작업 및 유지 관리를 위한 CRC Error Restart Notification 기능과 함께 도입됩니다.
문제
DDF FPGA(Field-Programmable Gate Array)는 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 crash는 여기에서 확인할 수 있습니다.
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 다시 로드 후 문제가 발생하면 복구를 트리거합니다.