Return to BSD News archive
Newsgroups: comp.bugs.2bsd
Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!bunyip.cc.uq.oz.au!munnari.oz.au!news.ecn.uoknor.edu!paladin.american.edu!gatech!news.mathworks.com!solaris.cc.vt.edu!spcuna!wlbr!sms
From: sms@wlv.iipo.gtegsc.com (Steven M. Schultz)
Subject: DEQNA driver and mbuf exhaustion (#246)
Sender: news@wlbr.iipo.gtegsc.com (System Administrator)
Organization: GTE Government Systems, Westlake Village
Message-ID: <D8wyI2.Cx6@wlbr.iipo.gtegsc.com>
X-Nntp-Posting-Host: wlv.iipo.gtegsc.com
Date: Sun, 21 May 1995 05:42:02 GMT
Lines: 78
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
============