Subject: CVS commit: src/sys/arch/xen/xen
To: None <source-changes@NetBSD.org>
From: Manuel Bouyer <email@example.com>
Date: 10/02/2005 21:49:23
Module Name: src
Committed By: bouyer
Date: Sun Oct 2 21:49:23 UTC 2005
Major improvements to the network backend, leading to a 0-copy transmit and
- on the receive side, attach the mapped buffer as external storage
instead of copying it. As a mapped buffer may not live much longer, we
have to deal with the fact that one page of buffer may containt several
packets, and it's not possible to map them several times. Use a hashed list
to keep track of mapped pages, and use reference counters.
- on the transmit side, when MCLBYTES == PAGE_SIZE, give away the mbuf
cluster page when possible instead of copying it. Keep a pool of physical
pages to map in place of the page we give away. When copying, use a
pool_cache(9) to manage copy buffers (use mclpool_cache when
MCLBYTES == PAGE_SIZE, otherwise use a private pool/pool_cache) instead
of a local list. This should reduce the number of hypercalls and MMU
operations in the copy case as well.
To generate a diff of this commit:
cvs rdiff -r1.12 -r1.13 src/sys/arch/xen/xen/xennetback.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.