Socket related stuff - patch available for testing
dillon at apollo.backplane.com
Sat Dec 5 15:41:11 PST 2009
Ok, I committed the patch with one additinal change which is to
comment out the assertion causing the reported IPV6 issues.
I tracked it down but can't fix it right now. Basically what is
happening is that IPV6 packets are being forwarded to the "netisr_cpu 0"
thread, so some of the UDP and TCP processing is taking place there
instead of in the tcp or udp protocol threads. Actually, I think it
might be taking place in both threads (on the same cpu) which might
create its own issues.
The chain of events starts with the netisr_register() call made in
netinet6/ip6_input.c and fans out from there.
The tcp timer assertions are being left intact as they assert the
caller is on the correct cpu, which we are even though we are in the
wrong protocol thread.
I think that will work out for now. What we really need to do is
implement a proper ip6_demux.c which would then forward the packets
to (at least) the proper protocol threads instead of the
"netisr_cpu 0" protocol thread.
More information about the Kernel