コード例 #1
0
/*
 *	Free an skbuff by memory without cleaning the state.
 */
void kfree_skbmem(struct sk_buff *skb)
{
	struct sk_buff *other;
	atomic_t *fclone_ref;

	skb_release_data(skb);
	switch (skb->fclone) {
	case SKB_FCLONE_UNAVAILABLE:
		kmem_cache_free(skbuff_head_cache, skb);
		break;

	case SKB_FCLONE_ORIG:
		fclone_ref = (atomic_t *) (skb + 2);
		if (atomic_dec_and_test(fclone_ref))
			kmem_cache_free(skbuff_fclone_cache, skb);
		break;

	case SKB_FCLONE_CLONE:
		fclone_ref = (atomic_t *) (skb + 1);
		other = skb - 1;

		/* The clone portion is available for
		 * fast-cloning again.
		 */
		skb->fclone = SKB_FCLONE_UNAVAILABLE;

		if (atomic_dec_and_test(fclone_ref))
			kmem_cache_free(skbuff_fclone_cache, other);
		break;
	};
}
コード例 #2
0
ファイル: skbuff.c プロジェクト: earthGavinLee/hg556a_source
/*
 *	Free an skbuff by memory without cleaning the state.
 */
void kfree_skbmem(struct sk_buff *skb)
{
	skb_release_data(skb);

#if defined(CONFIG_MIPS_BRCM)
	/*
	 * If skb->retfreeq_skb_prealloc is 1, that means the skb was pre-allocated
 	 * by our network driver. (songw)
 	 */
/*MODIFY BY YINHENG FOR WMM FEATURE OF 3.12 WIFI DRIVER*/
	if (skb->retfreeq_cb && (skb->retfreeq_flags & SKB_PREALLOC))
		(*skb->retfreeq_cb)(skb->retfreeq_context, skb, FREE_SKB);
	else
#endif
		kmem_cache_free(skbuff_head_cache, skb);
}
コード例 #3
0
ファイル: skbuff.c プロジェクト: foxwolf/yjd
/* Free everything but the sk_buff shell. */
static void skb_release_all(struct sk_buff *skb)
{
	skb_release_head_state(skb);
	skb_release_data(skb);
} 
コード例 #4
0
/*
 *	Free an skbuff by memory without cleaning the state. 
 */
void kfree_skbmem(struct sk_buff *skb)
{
	skb_release_data(skb);
	skb_head_to_pool(skb);
}
コード例 #5
0
ファイル: skbuff.c プロジェクト: wanggx/Linux2.6
/*
 *	Free an skbuff by memory without cleaning the state.
 */
void kfree_skbmem(struct sk_buff *skb)
{
	skb_release_data(skb);
	kmem_cache_free(skbuff_head_cache, skb);
}
コード例 #6
0
/*
 *	Free an skbuff by memory without cleaning the state.
 */
void kfree_skbmem(struct sk_buff *skb)
{
	skb_release_data(skb);
	kfree(skb);
}