From: Felix Fietkau Date: Tue, 29 May 2012 03:35:08 +0000 (+0000) Subject: skb: avoid unnecessary reallocations in __skb_cow X-Git-Tag: v3.2.20~13 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=eaa74c53680f04bc6f9e79d930c532fb58d818d3;p=karo-tx-linux.git skb: avoid unnecessary reallocations in __skb_cow [ Upstream commit 617c8c11236716dcbda877e764b7bf37c6fd8063 ] At the beginning of __skb_cow, headroom gets set to a minimum of NET_SKB_PAD. This causes unnecessary reallocations if the buffer was not cloned and the headroom is just below NET_SKB_PAD, but still more than the amount requested by the caller. This was showing up frequently in my tests on VLAN tx, where vlan_insert_tag calls skb_cow_head(skb, VLAN_HLEN). Locally generated packets should have enough headroom, and for forward paths, we already have NET_SKB_PAD bytes of headroom, so we don't need to add any extra space here. Signed-off-by: Felix Fietkau Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller Signed-off-by: Ben Hutchings --- diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index e689b47c1848..bdb4590a264e 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -1866,8 +1866,6 @@ static inline int __skb_cow(struct sk_buff *skb, unsigned int headroom, { int delta = 0; - if (headroom < NET_SKB_PAD) - headroom = NET_SKB_PAD; if (headroom > skb_headroom(skb)) delta = headroom - skb_headroom(skb);