netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net] geneve: initialize needed_headroom
@ 2015-12-23 15:21 Paolo Abeni
  2015-12-23 15:27 ` John W. Linville
  2015-12-23 15:35 ` Hannes Frederic Sowa
  0 siblings, 2 replies; 4+ messages in thread
From: Paolo Abeni @ 2015-12-23 15:21 UTC (permalink / raw)
  To: netdev
  Cc: David S. Miller, Pravin B Shelar, Jiri Benc, Jesse Gross,
	Hannes Frederic Sowa

Currently the needed_headroom field for the geneve device is left
to the default value.

This patch set it to space required for basic geneve encapsulation,
so that we can avoid the skb head re-allocation on xmit.

This give a 6% speedup for unsegment traffic on geneve tunnel.

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
---
 drivers/net/geneve.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c
index c2b79f5..bb3e6ed 100644
--- a/drivers/net/geneve.c
+++ b/drivers/net/geneve.c
@@ -1155,7 +1155,7 @@ static int geneve_configure(struct net *net, struct net_device *dev,
 	struct geneve_net *gn = net_generic(net, geneve_net_id);
 	struct geneve_dev *t, *geneve = netdev_priv(dev);
 	bool tun_collect_md, tun_on_same_port;
-	int err;
+	int err, encap_len;
 
 	if (!remote)
 		return -EINVAL;
@@ -1187,6 +1187,14 @@ static int geneve_configure(struct net *net, struct net_device *dev,
 	if (t)
 		return -EBUSY;
 
+	/* make enough headroom for basic scenario */
+	encap_len = GENEVE_BASE_HLEN + ETH_HLEN;
+	if (remote->sa.sa_family == AF_INET)
+		encap_len += sizeof(struct iphdr);
+	else
+		encap_len += sizeof(struct ipv6hdr);
+	dev->needed_headroom = encap_len;
+
 	if (metadata) {
 		if (tun_on_same_port)
 			return -EPERM;
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-12-23 15:39 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-12-23 15:21 [PATCH net] geneve: initialize needed_headroom Paolo Abeni
2015-12-23 15:27 ` John W. Linville
2015-12-23 15:35 ` Hannes Frederic Sowa
2015-12-23 15:39   ` Paolo Abeni

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).