diff options
-rw-r--r-- | drivers/net/geneve.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c index 0b14ac3b8d11..d2031ce8baea 100644 --- a/drivers/net/geneve.c +++ b/drivers/net/geneve.c | |||
@@ -1039,6 +1039,17 @@ static netdev_tx_t geneve_xmit(struct sk_buff *skb, struct net_device *dev) | |||
1039 | return geneve_xmit_skb(skb, dev, info); | 1039 | return geneve_xmit_skb(skb, dev, info); |
1040 | } | 1040 | } |
1041 | 1041 | ||
1042 | static int geneve_change_mtu(struct net_device *dev, int new_mtu) | ||
1043 | { | ||
1044 | /* GENEVE overhead is not fixed, so we can't enforce a more | ||
1045 | * precise max MTU. | ||
1046 | */ | ||
1047 | if (new_mtu < 68 || new_mtu > IP_MAX_MTU) | ||
1048 | return -EINVAL; | ||
1049 | dev->mtu = new_mtu; | ||
1050 | return 0; | ||
1051 | } | ||
1052 | |||
1042 | static int geneve_fill_metadata_dst(struct net_device *dev, struct sk_buff *skb) | 1053 | static int geneve_fill_metadata_dst(struct net_device *dev, struct sk_buff *skb) |
1043 | { | 1054 | { |
1044 | struct ip_tunnel_info *info = skb_tunnel_info(skb); | 1055 | struct ip_tunnel_info *info = skb_tunnel_info(skb); |
@@ -1083,7 +1094,7 @@ static const struct net_device_ops geneve_netdev_ops = { | |||
1083 | .ndo_stop = geneve_stop, | 1094 | .ndo_stop = geneve_stop, |
1084 | .ndo_start_xmit = geneve_xmit, | 1095 | .ndo_start_xmit = geneve_xmit, |
1085 | .ndo_get_stats64 = ip_tunnel_get_stats64, | 1096 | .ndo_get_stats64 = ip_tunnel_get_stats64, |
1086 | .ndo_change_mtu = eth_change_mtu, | 1097 | .ndo_change_mtu = geneve_change_mtu, |
1087 | .ndo_validate_addr = eth_validate_addr, | 1098 | .ndo_validate_addr = eth_validate_addr, |
1088 | .ndo_set_mac_address = eth_mac_addr, | 1099 | .ndo_set_mac_address = eth_mac_addr, |
1089 | .ndo_fill_metadata_dst = geneve_fill_metadata_dst, | 1100 | .ndo_fill_metadata_dst = geneve_fill_metadata_dst, |