diff options
author | Christoph Hellwig <hch@lst.de> | 2006-08-01 01:35:23 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-08-02 16:38:25 -0400 |
commit | 8af2745645243b5e5b031504a643bf2158571dc7 (patch) | |
tree | 32bf05d47473c2b586daee33f343e0eea1bbf943 /net | |
parent | 52499afe40387524e9f46ef9ce4695efccdd2ed9 (diff) |
[NET]: Add netdev_alloc_skb().
Add a dev_alloc_skb variant that takes a struct net_device * paramater.
For now that paramater is unused, but I'll use it to allocate the skb
from node-local memory in a follow-up patch. Also there have been some
other plans mentioned on the list that can use it.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/core/skbuff.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index d236f02c6467..71487b915d67 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c | |||
@@ -256,6 +256,29 @@ nodata: | |||
256 | goto out; | 256 | goto out; |
257 | } | 257 | } |
258 | 258 | ||
259 | /** | ||
260 | * __netdev_alloc_skb - allocate an skbuff for rx on a specific device | ||
261 | * @dev: network device to receive on | ||
262 | * @length: length to allocate | ||
263 | * @gfp_mask: get_free_pages mask, passed to alloc_skb | ||
264 | * | ||
265 | * Allocate a new &sk_buff and assign it a usage count of one. The | ||
266 | * buffer has unspecified headroom built in. Users should allocate | ||
267 | * the headroom they think they need without accounting for the | ||
268 | * built in space. The built in space is used for optimisations. | ||
269 | * | ||
270 | * %NULL is returned if there is no free memory. | ||
271 | */ | ||
272 | struct sk_buff *__netdev_alloc_skb(struct net_device *dev, | ||
273 | unsigned int length, gfp_t gfp_mask) | ||
274 | { | ||
275 | struct sk_buff *skb; | ||
276 | |||
277 | skb = alloc_skb(length + NET_SKB_PAD, gfp_mask); | ||
278 | if (likely(skb)) | ||
279 | skb_reserve(skb, NET_SKB_PAD); | ||
280 | return skb; | ||
281 | } | ||
259 | 282 | ||
260 | static void skb_drop_list(struct sk_buff **listp) | 283 | static void skb_drop_list(struct sk_buff **listp) |
261 | { | 284 | { |
@@ -2048,6 +2071,7 @@ EXPORT_SYMBOL(__kfree_skb); | |||
2048 | EXPORT_SYMBOL(kfree_skb); | 2071 | EXPORT_SYMBOL(kfree_skb); |
2049 | EXPORT_SYMBOL(__pskb_pull_tail); | 2072 | EXPORT_SYMBOL(__pskb_pull_tail); |
2050 | EXPORT_SYMBOL(__alloc_skb); | 2073 | EXPORT_SYMBOL(__alloc_skb); |
2074 | EXPORT_SYMBOL(__netdev_alloc_skb); | ||
2051 | EXPORT_SYMBOL(pskb_copy); | 2075 | EXPORT_SYMBOL(pskb_copy); |
2052 | EXPORT_SYMBOL(pskb_expand_head); | 2076 | EXPORT_SYMBOL(pskb_expand_head); |
2053 | EXPORT_SYMBOL(skb_checksum); | 2077 | EXPORT_SYMBOL(skb_checksum); |