diff mbox

vxlan: Accept user specified MTU value when create new vxlan link

Message ID 1464317351-22316-1-git-send-email-oc@yunify.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Chen Haiquan May 27, 2016, 2:49 a.m. UTC
When create a new vxlan link, example:
  ip link add vtap mtu 1440 type vxlan vni 1 dev eth0

The argument "mtu" has no effect, because it is not set to conf->mtu. The
default value is used in vxlan_dev_configure function.

This problem was introduced by commit 0dfbdf4102b9 (vxlan: Factor out device 
configuration).

Fixes: 0dfbdf4102b9 (vxlan: Factor out device configuration) 

Signed-off-by:  Chen Haiquan <oc@yunify.com>
---
 drivers/net/vxlan.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Cong Wang May 27, 2016, 4:09 p.m. UTC | #1
On Thu, May 26, 2016 at 7:49 PM, Chen Haiquan <oc@yunify.com> wrote:
> When create a new vxlan link, example:
>   ip link add vtap mtu 1440 type vxlan vni 1 dev eth0
>
> The argument "mtu" has no effect, because it is not set to conf->mtu. The
> default value is used in vxlan_dev_configure function.
>
> This problem was introduced by commit 0dfbdf4102b9 (vxlan: Factor out device
> configuration).
>
> Fixes: 0dfbdf4102b9 (vxlan: Factor out device configuration)
>
> Signed-off-by:  Chen Haiquan <oc@yunify.com>
> ---
>  drivers/net/vxlan.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
> index 8ff30c3..f999db2 100644
> --- a/drivers/net/vxlan.c
> +++ b/drivers/net/vxlan.c
> @@ -3086,6 +3086,9 @@ static int vxlan_newlink(struct net *src_net, struct net_device *dev,
>         if (data[IFLA_VXLAN_REMCSUM_NOPARTIAL])
>                 conf.flags |= VXLAN_F_REMCSUM_NOPARTIAL;
>
> +       if (tb[IFLA_MTU])
> +               conf.mtu = nla_get_u32(tb[IFLA_MTU]);
> +

IFLA_MTU is already parsed in rtnl_create_link(),
so just use dev->mtu here? conf.mtu = dev->mtu?
Chen Haiquan May 28, 2016, 3:22 p.m. UTC | #2
On 2016/05/28 00:09, Cong Wang wrote:
> On Thu, May 26, 2016 at 7:49 PM, Chen Haiquan <oc@yunify.com> wrote:
>> When create a new vxlan link, example:
>>    ip link add vtap mtu 1440 type vxlan vni 1 dev eth0
>>
>> The argument "mtu" has no effect, because it is not set to conf->mtu. The
>> default value is used in vxlan_dev_configure function.
>>
>> This problem was introduced by commit 0dfbdf4102b9 (vxlan: Factor out device
>> configuration).
>>
>> Fixes: 0dfbdf4102b9 (vxlan: Factor out device configuration)
>>
>> Signed-off-by:  Chen Haiquan <oc@yunify.com>
>> ---
>>   drivers/net/vxlan.c | 3 +++
>>   1 file changed, 3 insertions(+)
>>
>> diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
>> index 8ff30c3..f999db2 100644
>> --- a/drivers/net/vxlan.c
>> +++ b/drivers/net/vxlan.c
>> @@ -3086,6 +3086,9 @@ static int vxlan_newlink(struct net *src_net, struct net_device *dev,
>>          if (data[IFLA_VXLAN_REMCSUM_NOPARTIAL])
>>                  conf.flags |= VXLAN_F_REMCSUM_NOPARTIAL;
>>
>> +       if (tb[IFLA_MTU])
>> +               conf.mtu = nla_get_u32(tb[IFLA_MTU]);
>> +
> IFLA_MTU is already parsed in rtnl_create_link(),
> so just use dev->mtu here? conf.mtu = dev->mtu?
Two reasons:
1. vxlan_dev_configure function check conf->mtu to determine if it need 
to change value of dev->mtu.
The logical looks better to get conf->mtu from IFLA_MTU directly.
2. This problem is a regression. The old code check tb[IFLA_MTU]. I want 
to use the same way as the past.
Cong Wang May 31, 2016, 3:27 a.m. UTC | #3
On Sat, May 28, 2016 at 8:22 AM, oc <oc@yunify.com> wrote:
> 1. vxlan_dev_configure function check conf->mtu to determine if it need to
> change value of dev->mtu.
> The logical looks better to get conf->mtu from IFLA_MTU directly.

Fair enough,

Acked-by: Cong Wang <xiyou.wangcong@gmail.com>
diff mbox

Patch

diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
index 8ff30c3..f999db2 100644
--- a/drivers/net/vxlan.c
+++ b/drivers/net/vxlan.c
@@ -3086,6 +3086,9 @@  static int vxlan_newlink(struct net *src_net, struct net_device *dev,
 	if (data[IFLA_VXLAN_REMCSUM_NOPARTIAL])
 		conf.flags |= VXLAN_F_REMCSUM_NOPARTIAL;
 
+	if (tb[IFLA_MTU])
+		conf.mtu = nla_get_u32(tb[IFLA_MTU]);
+
 	err = vxlan_dev_configure(src_net, dev, &conf);
 	switch (err) {
 	case -ENODEV: