DragonFly kernel List (threaded) for 2005-11
MPSAFE network interrupt update
I'm making progress on my personal programming goal for the release,
which is to make the network interrupt for at least the EM device MPSAFE.
I'll probably commit a precursor patch tomorrow that integrates the
LWKT serializer into the IFNET structure. The other big goal for the
release is of course PKGSRC.
I considered locking up the ALTQ independantly but I think it may
be more efficient to simply use the same serializer for the network
interrupt, IFNET structure, *and* the ALTQ enqueue/dequeue code.
This way the interrupt code only needs a single 'lock' to cover
access to everything it needs and IFNET can be locked in the net/if* ABI
layers before it calls device driver functions like if_start. This
will result in a 'naturally locked' device driver and I'll be able to
clean up a lot of the non-serialized vs serialized function names that
I added to the EM driver in the initial implementation.
I am going to continue to work on the general MPSAFE infrastructure. As
you can see from the commits I've added sysctl's for the various mpsafe
options that can be adjusted as tunables or on a live system. They will
default to off (i.e. the safest mode of operation) for the release.
Post-release I intend to make a big push, in particular to get Jeff's
parallel routing table code in, make the TCP stack MPSAFE in addition
to the network interrupt, to rewrite the userland scheduler
to be naturally MPSAFE, and bunches of other things.