Inhalt

Einleitung

Problem

Lösung

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=0xffd28a68

Lö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.