1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-25 11:37:56 +00:00
freebsd/sys/dev
Kenneth D. Merry 98cb733c67 At long last, commit the zero copy sockets code.
MAKEDEV:	Add MAKEDEV glue for the ti(4) device nodes.

ti.4:		Update the ti(4) man page to include information on the
		TI_JUMBO_HDRSPLIT and TI_PRIVATE_JUMBOS kernel options,
		and also include information about the new character
		device interface and the associated ioctls.

man9/Makefile:	Add jumbo.9 and zero_copy.9 man pages and associated
		links.

jumbo.9:	New man page describing the jumbo buffer allocator
		interface and operation.

zero_copy.9:	New man page describing the general characteristics of
		the zero copy send and receive code, and what an
		application author should do to take advantage of the
		zero copy functionality.

NOTES:		Add entries for ZERO_COPY_SOCKETS, TI_PRIVATE_JUMBOS,
		TI_JUMBO_HDRSPLIT, MSIZE, and MCLSHIFT.

conf/files:	Add uipc_jumbo.c and uipc_cow.c.

conf/options:	Add the 5 options mentioned above.

kern_subr.c:	Receive side zero copy implementation.  This takes
		"disposable" pages attached to an mbuf, gives them to
		a user process, and then recycles the user's page.
		This is only active when ZERO_COPY_SOCKETS is turned on
		and the kern.ipc.zero_copy.receive sysctl variable is
		set to 1.

uipc_cow.c:	Send side zero copy functions.  Takes a page written
		by the user and maps it copy on write and assigns it
		kernel virtual address space.  Removes copy on write
		mapping once the buffer has been freed by the network
		stack.

uipc_jumbo.c:	Jumbo disposable page allocator code.  This allocates
		(optionally) disposable pages for network drivers that
		want to give the user the option of doing zero copy
		receive.

uipc_socket.c:	Add kern.ipc.zero_copy.{send,receive} sysctls that are
		enabled if ZERO_COPY_SOCKETS is turned on.

		Add zero copy send support to sosend() -- pages get
		mapped into the kernel instead of getting copied if
		they meet size and alignment restrictions.

uipc_syscalls.c:Un-staticize some of the sf* functions so that they
		can be used elsewhere.  (uipc_cow.c)

if_media.c:	In the SIOCGIFMEDIA ioctl in ifmedia_ioctl(), avoid
		calling malloc() with M_WAITOK.  Return an error if
		the M_NOWAIT malloc fails.

		The ti(4) driver and the wi(4) driver, at least, call
		this with a mutex held.  This causes witness warnings
		for 'ifconfig -a' with a wi(4) or ti(4) board in the
		system.  (I've only verified for ti(4)).

ip_output.c:	Fragment large datagrams so that each segment contains
		a multiple of PAGE_SIZE amount of data plus headers.
		This allows the receiver to potentially do page
		flipping on receives.

if_ti.c:	Add zero copy receive support to the ti(4) driver.  If
		TI_PRIVATE_JUMBOS is not defined, it now uses the
		jumbo(9) buffer allocator for jumbo receive buffers.

		Add a new character device interface for the ti(4)
		driver for the new debugging interface.  This allows
		(a patched version of) gdb to talk to the Tigon board
		and debug the firmware.  There are also a few additional
		debugging ioctls available through this interface.

		Add header splitting support to the ti(4) driver.

		Tweak some of the default interrupt coalescing
		parameters to more useful defaults.

		Add hooks for supporting transmit flow control, but
		leave it turned off with a comment describing why it
		is turned off.

if_tireg.h:	Change the firmware rev to 12.4.11, since we're really
		at 12.4.11 plus fixes from 12.4.13.

		Add defines needed for debugging.

		Remove the ti_stats structure, it is now defined in
		sys/tiio.h.

ti_fw.h:	12.4.11 firmware.

ti_fw2.h:	12.4.11 firmware, plus selected fixes from 12.4.13,
		and my header splitting patches.  Revision 12.4.13
		doesn't handle 10/100 negotiation properly.  (This
		firmware is the same as what was in the tree previously,
		with the addition of header splitting support.)

sys/jumbo.h:	Jumbo buffer allocator interface.

sys/mbuf.h:	Add a new external mbuf type, EXT_DISPOSABLE, to
		indicate that the payload buffer can be thrown away /
		flipped to a userland process.

socketvar.h:	Add prototype for socow_setup.

tiio.h:		ioctl interface to the character portion of the ti(4)
		driver, plus associated structure/type definitions.

uio.h:		Change prototype for uiomoveco() so that we'll know
		whether the source page is disposable.

ufs_readwrite.c:Update for new prototype of uiomoveco().

vm_fault.c:	In vm_fault(), check to see whether we need to do a page
		based copy on write fault.

vm_object.c:	Add a new function, vm_object_allocate_wait().  This
		does the same thing that vm_object allocate does, except
		that it gives the caller the opportunity to specify whether
		it should wait on the uma_zalloc() of the object structre.

		This allows vm objects to be allocated while holding a
		mutex.  (Without generating WITNESS warnings.)

		vm_object_allocate() is implemented as a call to
		vm_object_allocate_wait() with the malloc flag set to
		M_WAITOK.

vm_object.h:	Add prototype for vm_object_allocate_wait().

vm_page.c:	Add page-based copy on write setup, clear and fault
		routines.

vm_page.h:	Add page based COW function prototypes and variable in
		the vm_page structure.

Many thanks to Drew Gallatin, who wrote the zero copy send and receive
code, and to all the other folks who have tested and reviewed this code
over the years.
2002-06-26 03:37:47 +00:00
..
aac Fix deprecated use of label at end of compound statement 2002-05-24 05:58:13 +00:00
acpica Fixed printf format errors which apparently crept in while -Wformat was 2002-05-25 11:18:03 +00:00
advansys
agp Fix some nits in AMD AGP driver. Remove excess malloc and move a bzero 2002-04-15 18:57:26 +00:00
aha Fix new gcc-3.1 warnings. I think this gets GENERIC compiling cleanly 2002-05-24 05:21:36 +00:00
ahb Fix new gcc-3.1 warnings. I think this gets GENERIC compiling cleanly 2002-05-24 05:21:36 +00:00
aic Remove __P. 2002-03-20 02:08:01 +00:00
aic7xxx Hook up the ahd driver. 2002-06-06 16:35:58 +00:00
amd
amr Fixed printf format errors in previous commit. %llu is no more suitable 2002-03-18 23:24:00 +00:00
an Change callers of mtx_init() to pass in an appropriate lock type name. In 2002-04-04 21:03:38 +00:00
ar Directives may not be used inside a macro argument, so don't. 2002-05-09 18:01:19 +00:00
asr Remove an extraneous ) 2002-05-15 12:25:11 +00:00
ata Use si_iosize_max to tell the upper layers not to use more 2002-06-19 12:41:05 +00:00
atkbdc GC various bits and pieces of USERCONFIG from all over the place. 2002-04-09 11:18:46 +00:00
awi Use __FreeBSD_version to test what things to use 2002-05-31 03:27:34 +00:00
bge Add missing splx(). 2002-06-24 22:28:42 +00:00
bktr Fix new gcc-3.1 warnings. I think this gets GENERIC compiling cleanly 2002-05-24 05:21:36 +00:00
buslogic
cardbus Silence warning. 2002-06-01 16:20:27 +00:00
ccd Fixed printf format errors. Most of them are 64-bit daddr_t casualties. 2002-05-25 11:05:07 +00:00
ciss - Set the maximum number of device transactions to what the driver 2002-04-29 21:46:09 +00:00
cm Remove __P. 2002-03-20 02:08:01 +00:00
cnw Change the suser() API to take advantage of td_ucred as well as do a 2002-04-01 21:31:13 +00:00
cs
ct Quick, low impact band-aide to unbreak the build. Added && 0 so we 2002-06-01 08:29:12 +00:00
cy Change the suser() API to take advantage of td_ucred as well as do a 2002-04-01 21:31:13 +00:00
dc Add suspend/resume code mostly merged from fxp/rl driver. 2002-05-06 10:55:42 +00:00
de Fix typo in the BSD copyright: s/withough/without/ 2002-06-02 20:05:59 +00:00
dec
dgb Change the suser() API to take advantage of td_ucred as well as do a 2002-04-01 21:31:13 +00:00
digi Make delay iteration counts a function of hz as the delay period in each 2002-04-17 15:28:41 +00:00
dpt
drm Remove <sys/select.h> to unbreak the build. I'm not sure if this affects 2002-06-16 21:50:42 +00:00
ed More newcard devices: 2002-04-02 05:52:52 +00:00
eisa GC various bits and pieces of USERCONFIG from all over the place. 2002-04-09 11:18:46 +00:00
em Removed unneeded files. 2002-06-18 22:51:26 +00:00
en Remove __P. 2002-03-20 02:08:01 +00:00
ep Fix build breakage on my pccard related commit. 2002-05-31 01:08:49 +00:00
ex Remove __P. 2002-03-20 02:08:01 +00:00
exca Fix a couple of places where preprocessor concatination was misused and 2002-06-01 16:21:26 +00:00
fb Turn on TGA support. 2002-04-13 22:34:16 +00:00
fdc After some comments from bde, rewrite the loops to avoid turning the 2002-05-14 21:28:45 +00:00
fe
fxp Add device id. for fxp chip on Intel D845EPT2L boards. This seems to 2002-06-05 18:34:08 +00:00
gem Fully reset a gem on some error conditions; otherwise it would hang in 2002-05-24 12:47:41 +00:00
gfb Turn on TGA support. 2002-04-13 22:34:16 +00:00
gx Follow NetBSD and s/IFM_1000_TX/IFM_1000_T/ 2002-04-28 20:34:20 +00:00
hea - Remove DMA_* macros as only one, DMA_GET_ADDR, was used. 2002-06-24 05:03:44 +00:00
hfa - Remove DMA_* macros as only one, DMA_GET_ADDR, was used. 2002-06-24 05:03:44 +00:00
hme Don't treat statistics counter wrap-overs as errors. 2002-06-05 15:21:44 +00:00
ic
ichsmb Detect and attach to the ICH3 SMBus controller. 2002-05-08 00:51:54 +00:00
ida Here follows the new kernel dumping infrastructure. 2002-03-31 22:37:00 +00:00
ie
iicbus Major rework of the iicbus/smbus framework: 2002-03-23 15:49:15 +00:00
iir Don't include <stddef.h> "For offsetof". This is not even wrong in 2002-05-13 14:11:33 +00:00
isp If the HBA is already 'touched', still set maxluns. Othewise for 2002-06-16 05:18:22 +00:00
ispfw Remove __P. 2002-03-20 02:08:01 +00:00
joy Fix typo in the BSD copyright: s/withough/without/ 2002-06-02 20:05:59 +00:00
kbd GC various bits and pieces of USERCONFIG from all over the place. 2002-04-09 11:18:46 +00:00
lge Follow NetBSD and s/IFM_1000_TX/IFM_1000_T/ 2002-04-28 20:34:20 +00:00
lmc Fix typo in the BSD copyright: s/withough/without/ 2002-06-02 20:05:59 +00:00
lnc Remove __P. 2002-03-20 02:08:01 +00:00
mc146818
mca
mcd Retire the bogus ioctl DIOCGPART in toto. 2002-04-02 11:52:13 +00:00
md Yet another warning fix for 64 bits platforms. 2002-06-24 12:07:02 +00:00
mii Increase gigE negotiation timeout to 17 seconds. 2002-05-04 11:08:49 +00:00
mk48txx Add a driver back end for the Mostek MK48T02, MK48T08 and MK48T59 2002-04-04 23:44:42 +00:00
mlx Fixed printf format errors in previous commit. %llu is no more suitable 2002-03-18 23:38:16 +00:00
mly Rework the kernel environment subsystem. We now convert the static 2002-04-17 13:06:36 +00:00
mse Fixed some style bugs in the removal of __P(()). The main ones were 2002-03-23 16:01:49 +00:00
musycc
my Add missing unlock 2002-05-30 23:41:51 +00:00
ncv Quick, low impact band-aide to unbreak the build. Added && 0 so we 2002-05-31 23:39:04 +00:00
nge Do not call nge_tick() if we get an PHY interrupt, nge_tick() calls 2002-05-04 11:15:33 +00:00
nmdm Change the suser() API to take advantage of td_ucred as well as do a 2002-04-01 21:31:13 +00:00
nsp Quick, low impact band-aide to unbreak the build. Added && 0 so we 2002-05-31 23:39:04 +00:00
null Rename DIOCGKERNELDUMP to DIOCSKERNELDUMP as it strictly speaking 2002-04-09 10:04:09 +00:00
ofw Basic OpenFirmware disk driver. It will attach to anything in OpenFirmware 2002-04-15 10:54:22 +00:00
pccard Make oldcard and newcard kernel module work. 2002-05-30 17:38:00 +00:00
pccbb Use a cv rather than tsleep and friends to do the sleep/wakeup 2002-06-13 07:19:31 +00:00
pcf Fix bktr and pcf compilation with LINT 2002-03-25 21:22:35 +00:00
pci 0 is not an invalid interrupt in the PCI world (just in the ia32 2002-06-07 15:28:16 +00:00
pcic Make oldcard and newcard kernel module work. 2002-05-30 17:38:00 +00:00
pdq Fix typo in the BSD copyright: s/withough/without/ 2002-06-02 20:05:59 +00:00
ppbus Fix warnings due to macro varargs. 2002-05-24 06:32:18 +00:00
ppc Restore the original copyright 2002-03-23 15:36:13 +00:00
puc Add support for Comtrol RocketPort 550 PCi models: 4 RJ45, 4 Quadcable, 2002-06-18 03:05:10 +00:00
random Fix really dumb braino of mine; cast a sizeof() to an int, which it is 2002-04-21 11:02:36 +00:00
ray Fix warnings. 2002-06-01 18:50:35 +00:00
rc Off-by-128 error in the cuam* device node numbers. 2002-05-20 05:12:56 +00:00
rp Change the suser() API to take advantage of td_ucred as well as do a 2002-04-01 21:31:13 +00:00
sbni Change the suser() API to take advantage of td_ucred as well as do a 2002-04-01 21:31:13 +00:00
scd Fix typo in the BSD copyright: s/withough/without/ 2002-06-02 20:05:59 +00:00
se Use the right major number. 2002-04-09 00:35:26 +00:00
sf Change callers of mtx_init() to pass in an appropriate lock type name. In 2002-04-04 21:03:38 +00:00
si Change the suser() API to take advantage of td_ucred as well as do a 2002-04-01 21:31:13 +00:00
sio set siocnunit to the correct value. This fixes the freeze on boot for 2002-06-23 18:57:53 +00:00
sk Follow NetBSD and s/IFM_1000_TX/IFM_1000_T/ 2002-04-28 20:34:20 +00:00
smbus Major rework of the iicbus/smbus framework: 2002-03-23 15:49:15 +00:00
sn
snc Remove __P. 2002-03-20 02:08:01 +00:00
snp Treat input on the snp device as an `unsigned char'. According to the 2002-04-10 03:51:49 +00:00
sound Enable mixer interrupts after the mixer is initialized, 2002-06-24 15:28:47 +00:00
speaker Remove __P. 2002-03-20 07:51:46 +00:00
sr Change callers of mtx_init() to pass in an appropriate lock type name. In 2002-04-04 21:03:38 +00:00
stg Quick, low impact band-aide to unbreak the build. Added && 0 so we 2002-05-31 23:39:04 +00:00
streams Remove __P. 2002-03-20 02:08:01 +00:00
sym Move the new byte order function prototypes from <sys/param.h> to 2002-04-26 22:48:23 +00:00
syscons Make sc_saver_keyb_only (sceen saver interrupted by keyboard input only) 2002-06-06 06:02:17 +00:00
tdfx Don't put a line break in string literals. GCC 3.1 complains and GCC 2002-04-20 01:35:45 +00:00
tga
ti At long last, commit the zero copy sockets code. 2002-06-26 03:37:47 +00:00
twe Fix new gcc-3.1 warnings. I think this gets GENERIC compiling cleanly 2002-05-24 05:21:36 +00:00
tx Add an epic_stats_update() function (called once per second). Even though 2002-05-01 19:23:04 +00:00
txp Change callers of mtx_init() to pass in an appropriate lock type name. In 2002-04-04 21:03:38 +00:00
usb Avoid reprobing on loading a driver. This does not work as the ivars set 2002-06-17 20:57:54 +00:00
vinum "Fixed" printf format errors (64-bit daddr_t casualties; should use %jx 2002-05-25 11:12:30 +00:00
vr Enhance the use of the watchdog timer in this driver so that it will 2002-05-15 17:05:28 +00:00
vx Remove __P. 2002-03-20 02:08:01 +00:00
wds
wi On REASREQ packets, handled them earlier in processing the association 2002-06-24 07:50:41 +00:00
wl Fix typo in the BSD copyright: s/withough/without/ 2002-06-02 20:05:59 +00:00
xe Fix build breakage on my pccard related commit. 2002-05-31 01:08:49 +00:00