Subject: DEQNA driver and mbuf exhaustion (#246) Index: sys/pdpif/if_qe.c 2.11BSD Description: If, due to network load, the system is temporarily out of mbufs the DEQNA driver will effectively hang the system instead of tossing packets away. Repeat-By: Run SATAN in "heavy scan" mode against your 11/73 ;-) Fix: The problem was a debugging printf() statement left in from when the driver was rewritten. Printf() is a quite slow and expensive, especially from supervisor mode networking code, and does raise the processor priority for extended periods of time. The system would basically lock up doing nothing but printf calls instead of tossing packets away and at least trying to catch up. Cut where indicated, saving to a tmp file (/tmp/246 for example) and then: patch -p0 < /tmp/246 If you do not have a DEQNA or DELQA (but not the DELQA-YM) interface then there is no need to recompile the kernel/networking. If you are using one of those cards then you may want to install a new kernel and reboot the system. ======================cut here===================== *** /sys/pdpif/if_qe.c.old Mon Dec 28 18:22:44 1992 --- /sys/pdpif/if_qe.c Sat May 20 21:00:25 1995 *************** *** 1,4 **** ! /* @(#)if_qe.c 1.1 (2.11BSD) 12/28/92 */ /**************************************************************** * * --- 1,4 ---- ! /* @(#)if_qe.c 1.2 (2.11BSD) 1995/05/20 */ /**************************************************************** * * *************** *** 829,838 **** */ m = if_rubaget(ifuba, len, 0, &sc->is_if); ! if (m == 0) { ! printf("qe: if_rubaget ret 0\n"); return; - } switch (type) { --- 829,836 ---- */ m = if_rubaget(ifuba, len, 0, &sc->is_if); ! if (m == 0) return; switch (type) { *** /VERSION.old Sat May 20 20:58:49 1995 --- /VERSION Sat May 20 20:58:26 1995 *************** *** 1,4 **** ! Current Patch Level: 245 2.11 BSD ============ --- 1,4 ---- ! Current Patch Level: 246 2.11 BSD ============