On Sun, 2008-05-04 at 10:12 +0800, Herbert Xu wrote:
On Sun, May 04, 2008 at 04:08:36AM +0200, Johannes Berg wrote:
quoted
So, what is mac80211 supposed to do? It needs up to 54 bytes of
available headroom (for an encrypted mesh packet which currently can't
really happen, but anyway) yet it cannot pskb_expand_head() either.
Cloning each packet seems even more expensive, and just like skb_orphan
subverts the purpose of the socket accounting.
If all/the majority of your packets need the space then put it in
LL_MAX_HEADER.
Yes, wireless always needs at least 24 bytes, but more likely 34
(encryption+QoS). However, I just increased LL_MAX_HEADER to 54 and that
doesn't seem to have helped.
In any case, you should always expand the packet
if necessary in your output routine since LL_MAX_HEADER is just a
hint. Yes cloning is expensive compared to not having to do it,
but as long as this is only done for the exception then it's
irrelevant.
What's wrong with, instead, doing skb_orphan() and then
pskb_expand_head()? That seems to have the same effect.
johannes