Browse Source

net: pktgen: Observe needed_headroom of the device

Allocate enough space so as not to force the outgoing net device to do
skb_realloc_headroom().

Signed-off-by: Bogdan Hamciuc <bogdan.hamciuc@freescale.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Bogdan Hamciuc 10 years ago
parent
commit
879c7220e8
1 changed files with 2 additions and 1 deletions
  1. 2 1
      net/core/pktgen.c

+ 2 - 1
net/core/pktgen.c

@@ -2279,7 +2279,7 @@ static void spin(struct pktgen_dev *pkt_dev, ktime_t spin_until)
 
 
 static inline void set_pkt_overhead(struct pktgen_dev *pkt_dev)
 static inline void set_pkt_overhead(struct pktgen_dev *pkt_dev)
 {
 {
-	pkt_dev->pkt_overhead = 0;
+	pkt_dev->pkt_overhead = LL_RESERVED_SPACE(pkt_dev->odev);
 	pkt_dev->pkt_overhead += pkt_dev->nr_labels*sizeof(u32);
 	pkt_dev->pkt_overhead += pkt_dev->nr_labels*sizeof(u32);
 	pkt_dev->pkt_overhead += VLAN_TAG_SIZE(pkt_dev);
 	pkt_dev->pkt_overhead += VLAN_TAG_SIZE(pkt_dev);
 	pkt_dev->pkt_overhead += SVLAN_TAG_SIZE(pkt_dev);
 	pkt_dev->pkt_overhead += SVLAN_TAG_SIZE(pkt_dev);
@@ -2788,6 +2788,7 @@ static struct sk_buff *pktgen_alloc_skb(struct net_device *dev,
 	} else {
 	} else {
 		 skb = __netdev_alloc_skb(dev, size, GFP_NOWAIT);
 		 skb = __netdev_alloc_skb(dev, size, GFP_NOWAIT);
 	}
 	}
+	skb_reserve(skb, LL_RESERVED_SPACE(dev));
 
 
 	return skb;
 	return skb;
 }
 }