diff options
| author | Ingo Molnar <mingo@elte.hu> | 2008-11-23 08:55:47 +0100 | 
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-11-23 08:55:47 +0100 | 
| commit | ca9eed76133c00e7f4b1eeb4c1a6cb800cd2654c (patch) | |
| tree | 5f011f4bd00c921e41605b1915c227aeaf411a0d /net/core/skbuff.c | |
| parent | 8652cb4b0d87accbe78725fd2a13be2787059649 (diff) | |
| parent | 13d428afc007fcfcd6deeb215618f54cf9c0cae6 (diff) | |
Merge commit 'v2.6.28-rc6' into x86/debug
Diffstat (limited to 'net/core/skbuff.c')
| -rw-r--r-- | net/core/skbuff.c | 14 | 
1 files changed, 13 insertions, 1 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 4e22e3a3535..d49ef8301b5 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -449,6 +449,18 @@ void kfree_skb(struct sk_buff *skb)  	__kfree_skb(skb);  } +/** + *	skb_recycle_check - check if skb can be reused for receive + *	@skb: buffer + *	@skb_size: minimum receive buffer size + * + *	Checks that the skb passed in is not shared or cloned, and + *	that it is linear and its head portion at least as large as + *	skb_size so that it can be recycled as a receive buffer. + *	If these conditions are met, this function does any necessary + *	reference count dropping and cleans up the skbuff as if it + *	just came from __alloc_skb(). + */  int skb_recycle_check(struct sk_buff *skb, int skb_size)  {  	struct skb_shared_info *shinfo; @@ -474,8 +486,8 @@ int skb_recycle_check(struct sk_buff *skb, int skb_size)  	shinfo->frag_list = NULL;  	memset(skb, 0, offsetof(struct sk_buff, tail)); -	skb_reset_tail_pointer(skb);  	skb->data = skb->head + NET_SKB_PAD; +	skb_reset_tail_pointer(skb);  	return 1;  }  | 
