From owner-cvs-all Mon Dec 3 21:58: 0 2001 Delivered-To: cvs-all@freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.org [216.136.204.21]) by hub.freebsd.org (Postfix) with ESMTP id F148537B405; Mon, 3 Dec 2001 21:57:49 -0800 (PST) Received: (from luigi@localhost) by freefall.freebsd.org (8.11.6/8.11.6) id fB45vnD46829; Mon, 3 Dec 2001 21:57:49 -0800 (PST) (envelope-from luigi) Message-Id: <200112040557.fB45vnD46829@freefall.freebsd.org> From: Luigi Rizzo Date: Mon, 3 Dec 2001 21:57:49 -0800 (PST) To: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/conf options.i386 src/sys/i386/i386 swtch.s trap.c src/sys/net if.h netisr.h src/sys/sys systm.h src/sys/i386/include asnames.h src/sys/kern kern_clock.c src/sys/dev/fxp if_fxp.c src/sys/pci if_dc.c if_dcreg.h if_sis.c ... X-FreeBSD-CVS-Branch: RELENG_4 Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG luigi 2001/12/03 21:57:49 PST Modified files: (Branch: RELENG_4) sys/conf options.i386 sys/i386/i386 swtch.s trap.c sys/net if.h netisr.h sys/sys systm.h sys/i386/include asnames.h sys/kern kern_clock.c sys/dev/fxp if_fxp.c sys/pci if_dc.c if_dcreg.h if_sis.c if_sisreg.h Log: As approved by the Release Engineer, here comes the code for polling in network device drivers (x86, non-SMP only at the moment, for reasons that I have extensively explained on the -net mailing list). This code lets network devices operate in a semi-polling mode, which makes systems much more resilient to attacks and overloads. If you don't enable it with an appropriate kernel option, your kernel will be exactly the same as before this commit. No userland code is affected. To use polling you have to put the following options in your kernel config file: options DEVICE_POLLING options HZ=1000 # not compulsory but strongly recommended and enable it at runtime as follows (by default it is disabled): sysctl kern.polling.enable=1 There are basically no other tunables related to this code, though you might have a look at "sysctl kern.polling" to see what other variables are there. The device drivers supported at the moment are "dc", "fxp" and "sis", with more to come (but this code only makes sense for 100M and Gigabit devices). Unmodified drivers will continue to operate as before. Under little or moderate load you should see no difference in the behaviour of your system. Under load, you should experience a moderate improvement in peak performance, and a lot more stability and responsiveness. A quick description of the files affected (all in sys/) conf/options.i386 DEVICE_POLLING option i386/i386/swtch.s i386/i386/trap.c hooks to call the polling code net/if.h net/netisr.h sys/systm.h i386/include/asnames.h misc. constants and variable definitions (mostly one-liner). kern/kern_clock.c The bulk of the polling code. Probably this code will be moved to a separate file once equivalent functionality is added to -current. dev/fxp/if_fxp.c pci/if_dc.c pci/if_dcreg.h pci/if_sis.c pci/if_sisreg.h device driver modifications Reviewed-by: -net Approved by: jkh Revision Changes Path 1.132.2.9 +6 -1 src/sys/conf/options.i386 1.110.2.9 +56 -2 src/sys/dev/fxp/if_fxp.c 1.89.2.5 +5 -1 src/sys/i386/i386/swtch.s 1.147.2.6 +6 -1 src/sys/i386/i386/trap.c 1.44.2.4 +2 -1 src/sys/i386/include/asnames.h 1.105.2.5 +253 -1 src/sys/kern/kern_clock.c 1.58.2.3 +10 -1 src/sys/net/if.h 1.21.2.3 +2 -1 src/sys/net/netisr.h 1.9.2.25 +72 -0 src/sys/pci/if_dc.c 1.4.2.12 +7 -0 src/sys/pci/if_dcreg.h 1.13.4.10 +66 -0 src/sys/pci/if_sis.c 1.1.4.5 +3 -0 src/sys/pci/if_sisreg.h 1.111.2.11 +14 -0 src/sys/sys/systm.h To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message