Block extra_data
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 3 Jul 2014 04:17:35 +0000 (21:17 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 3 Jul 2014 04:17:35 +0000 (21:17 -0700)
commit06c53a7e0a3ff9c975675a39ec20bb224ea59ae2
tree7e4aae4343522c288142f4fcfb6194fdc61b5925
parenta699b2c70a34c49a1db3292c66461b276752caf4
Block extra_data

Extends blocks to have an array of pointers to extra data.  The old
block buffer is now the 'main body'.  A block's data consists of the
main body, followed by the extra_data buffers, in order.

The extra data are currently kmalloc refcnt'd and are kfreed when the
block is freed.  Later, we'll want some way to handle other, probably
refcnt'd buffers.

Blocks are ideally kept in their scattered state, but most of our NIC
drivers do not know how to handle this yet.  For those, we linearize the
block before pushing it out devether.

Checksums, qdiscards, copies, clones, etc, all needed to be changed to
know about the new packet type.  There are also a lot of places where we
don't handle the new block types.  If you see any of the warnings, then
let me know.

Likewise, if you have weird networking failures, turn off
CONFIG_BLOCK_EXTRAS and see if that fixes it.  Regardless, let me know
the outcome.
Kconfig
kern/drivers/dev/ether.c
kern/include/ns.h
kern/src/net/icmp.c
kern/src/net/ip.c
kern/src/net/ipaux.c
kern/src/ns/allocb.c
kern/src/ns/qio.c