What's the latest on fixing IFF_DRV_OACTIVE/if_start/etc?
Adrian Chadd
adrian at freebsd.org
Mon Sep 17 23:16:28 UTC 2012
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
More information about the freebsd-net
mailing list