build_skb — build a network buffer
struct sk_buff * build_skb ( | void * data, |
unsigned int frag_size) ; |
Allocate a new sk_buff. Caller provides space holding head and
skb_shared_info. data
must have been allocated by kmalloc
only if
frag_size
is 0, otherwise data should come from the page allocator.
The return is the new skb buffer.
On a failure the return is NULL
, and data
is not freed.
Before IO, driver allocates only data buffer where NIC put incoming frame
Driver should add room at head (NET_SKB_PAD) and
MUST add room at tail (SKB_DATA_ALIGN(skb_shared_info))
After IO, driver calls build_skb
, to allocate sk_buff and populate it
before giving packet to stack.
RX rings only contains data buffers, not full skbs.