There's a lot less cache in these boards. Going through the stack trace all the way and back for each packet is actually quite expensive.
Then there's the overhead of having if_start() be called multiple times, concurrently, from multiple senders. It's fine for a wifi AP setup where the if_start() is only called once or twice in an overlapping fashion, but sucks with lots of concurrent TCP/UDP contexts all potentially calling if_start() and having them have to clash with each other. I've not sat down and instrumented it all that much, so I'm going to spend much time harping on about it until I have some hard numbers either way. I'm just going by what I see people do to various network stacks when it comes time to try and squeeze high packet rates out of smaller platforms, especially with NAT/bridging/PPPoE in the way. And that tended not to be "complete packet to completion on each frame." adrian _______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "[email protected]"
