Einleitung
In diesem Dokument wird das DDF-Neuladeereignis beim Auftreten des CRC-Fehlers (Cyclic Redundancy Check) beschrieben. Das Ereignis wird mit Simple Network Management Protocol (SNMP)-Trap DDFreload gemeldet. Das Trap wird mit der CRC-Funktion "Error Restart Notification for Operation and Maintenance" eingeführt.
Problem
DDF Field-Programmable Gate Array (FPGA) ist eine DMA-Engine auf dem DPC und DPC2. DDF-FPGAs können einen CRC_ERROR empfangen. Der DDF-FPGA-Treiber entscheidet, ob der Fehler wiederhergestellt werden kann. Diese Entscheidung basiert darauf, wie oft und mit welcher Rate diese Fehler auftreten. Wenn der Treiber entscheidet, dass diese Fehler wiederhergestellt werden können, weist er das Anwendungsprogramm darauf hin, dass ein solcher Fehler aufgetreten ist.
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
Der Sessmgr stürzt mit dhdr.bdh_magic ab, wie hier zu sehen ist:
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=0xffd28a68Lösung
Durch das erneute Laden von DDF wird das Problem mit CRC_ERROR behoben. Normalerweise sind keine weiteren Aktionen erforderlich. In den seltensten Fällen werden die Auswirkungen auf die Teilnehmer nach dem Neuladen von DDF gemeldet. In diesem Fall wird das Problem durch die manuelle Kartenmigration behoben.
# card migrate from <affected card> to <standby card>
In Version 21.19 (oder höher) wird eine zusätzliche Funktion eingeführt, die die interne Pipeline des FPGA überwacht und die Wiederherstellung auslöst, wenn Probleme nach dem erneuten Laden von DDF erkannt werden.