diff options
Diffstat (limited to 'net/tipc/core.c')
-rw-r--r-- | net/tipc/core.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/net/tipc/core.c b/net/tipc/core.c index b47d1842a970..696468117985 100644 --- a/net/tipc/core.c +++ b/net/tipc/core.c | |||
@@ -102,6 +102,30 @@ int tipc_get_mode(void) | |||
102 | } | 102 | } |
103 | 103 | ||
104 | /** | 104 | /** |
105 | * buf_acquire - creates a TIPC message buffer | ||
106 | * @size: message size (including TIPC header) | ||
107 | * | ||
108 | * Returns a new buffer with data pointers set to the specified size. | ||
109 | * | ||
110 | * NOTE: Headroom is reserved to allow prepending of a data link header. | ||
111 | * There may also be unrequested tailroom present at the buffer's end. | ||
112 | */ | ||
113 | |||
114 | struct sk_buff *buf_acquire(u32 size) | ||
115 | { | ||
116 | struct sk_buff *skb; | ||
117 | unsigned int buf_size = (BUF_HEADROOM + size + 3) & ~3u; | ||
118 | |||
119 | skb = alloc_skb_fclone(buf_size, GFP_ATOMIC); | ||
120 | if (skb) { | ||
121 | skb_reserve(skb, BUF_HEADROOM); | ||
122 | skb_put(skb, size); | ||
123 | skb->next = NULL; | ||
124 | } | ||
125 | return skb; | ||
126 | } | ||
127 | |||
128 | /** | ||
105 | * tipc_core_stop_net - shut down TIPC networking sub-systems | 129 | * tipc_core_stop_net - shut down TIPC networking sub-systems |
106 | */ | 130 | */ |
107 | 131 | ||