summaryrefslogtreecommitdiffstats
path: root/net/xfrm/xfrm_output.c
diff options
context:
space:
mode:
authorJohannes Berg2008-05-13 05:48:31 +0200
committerDavid S. Miller2008-05-13 05:48:31 +0200
commitf5184d267c1aedb9b7a8cc44e08ff6b8d382c3b5 (patch)
tree5ccce7558f9e1e53e5b189d6e2fe62a667988ac8 /net/xfrm/xfrm_output.c
parentnet: Set LL_MAX_HEADER properly for wireless. (diff)
downloadkernel-qcow2-linux-f5184d267c1aedb9b7a8cc44e08ff6b8d382c3b5.tar.gz
kernel-qcow2-linux-f5184d267c1aedb9b7a8cc44e08ff6b8d382c3b5.tar.xz
kernel-qcow2-linux-f5184d267c1aedb9b7a8cc44e08ff6b8d382c3b5.zip
net: Allow netdevices to specify needed head/tailroom
This patch adds needed_headroom/needed_tailroom members to struct net_device and updates many places that allocate sbks to use them. Not all of them can be converted though, and I'm sure I missed some (I mostly grepped for LL_RESERVED_SPACE) Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/xfrm/xfrm_output.c')
-rw-r--r--net/xfrm/xfrm_output.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/net/xfrm/xfrm_output.c b/net/xfrm/xfrm_output.c
index 09cd9c0c2d80..3f964db908a7 100644
--- a/net/xfrm/xfrm_output.c
+++ b/net/xfrm/xfrm_output.c
@@ -25,11 +25,11 @@ static int xfrm_state_check_space(struct xfrm_state *x, struct sk_buff *skb)
struct dst_entry *dst = skb->dst;
int nhead = dst->header_len + LL_RESERVED_SPACE(dst->dev)
- skb_headroom(skb);
+ int ntail = dst->dev->needed_tailroom - skb_tailroom(skb);
- if (nhead > 0)
- return pskb_expand_head(skb, nhead, 0, GFP_ATOMIC);
+ if (nhead > 0 || ntail > 0)
+ return pskb_expand_head(skb, nhead, ntail, GFP_ATOMIC);
- /* Check tail too... */
return 0;
}