diff options
author | Alexander Duyck <alexander.h.duyck@intel.com> | 2012-11-13 13:10:59 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-11-13 18:19:50 -0500 |
commit | 1ba56fb45a927d083f655302e75a1911a75b5da6 (patch) | |
tree | d62c161e151fd65e4da880b8901604d89ea96572 | |
parent | eb5ce43997b10dd07a63befeb26778d996c5a356 (diff) | |
download | op-kernel-dev-1ba56fb45a927d083f655302e75a1911a75b5da6.zip op-kernel-dev-1ba56fb45a927d083f655302e75a1911a75b5da6.tar.gz |
vxlan: Update hard_header_len based on lowerdev when instantiating VXLAN
In the event of a VXLAN device being linked to a device that has a
hard_header_len greater than that of standard ethernet we could end up with
the hard_header_len not being large enough for outgoing frames. In order to
prevent this we should update the length when a lowerdev is provided.
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Acked-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/vxlan.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c index 3d0bf66..8b5c619 100644 --- a/drivers/net/vxlan.c +++ b/drivers/net/vxlan.c @@ -1102,6 +1102,10 @@ static int vxlan_newlink(struct net *net, struct net_device *dev, if (!tb[IFLA_MTU]) dev->mtu = lowerdev->mtu - VXLAN_HEADROOM; + + /* update header length based on lower device */ + dev->hard_header_len = lowerdev->hard_header_len + + VXLAN_HEADROOM; } if (data[IFLA_VXLAN_TOS]) |