On Mon, 2008-05-05 at 16:14 -0700, David Miller wrote:
quoted
Right, that makes sense. But will it ever return false? skb_cloned()
returns true often enough, and we only accept linear skbs, but I think I
don't understand yet what skb_header_cloned() vs. skb_cloned() refers
to. Which exactly is the header space I'm allowed to modify when
skb_header_cloned() returns false?
skb_header_cloned() will return false always if the buffer is not
cloned.
Right, it's less than skb_cloned().
If it is cloned, it makes sure the data reference count allows
for modification of the buffer.
Which buffer? skb->data..skb->tail? And isn't that, in mac80211's case,
at least currently all the buffer anyway?
For normal traffic, you should see skb_header_cloned() always return
false unless a network tap like tcpdump is registered.
Interesting point. I'll have to see when socket filters are run,
wpa_supplicant could have a tap open I think. Maybe that's why I'm
seeing so many cloned packets. I think I'll stacktrace skb_clone and
print that out.
johannes