Subject: CVS commit: src/sys/arch/xen/xen
To: None <>
From: Manuel Bouyer <>
List: source-changes
Date: 10/02/2005 21:49:23
Module Name:	src
Committed By:	bouyer
Date:		Sun Oct  2 21:49:23 UTC 2005

Modified Files:
	src/sys/arch/xen/xen: xennetback.c

Log Message:
Major improvements to the network backend, leading to a 0-copy transmit and
receive system:
- 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.