net/mlx: ensure MTU update is effective
authorAdrien Mazarguil <adrien.mazarguil@6wind.com>
Wed, 8 Jun 2016 09:43:26 +0000 (11:43 +0200)
committerBruce Richardson <bruce.richardson@intel.com>
Mon, 20 Jun 2016 15:21:49 +0000 (17:21 +0200)
There is no guarantee that the new MTU is effective after writing its value
to sysfs. Retrieve it to be sure.

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
drivers/net/mlx4/mlx4.c
drivers/net/mlx5/mlx5_ethdev.c

index 99ccbeb..4b2c290 100644 (file)
@@ -658,7 +658,15 @@ priv_get_mtu(struct priv *priv, uint16_t *mtu)
 static int
 priv_set_mtu(struct priv *priv, uint16_t mtu)
 {
-       return priv_set_sysfs_ulong(priv, "mtu", mtu);
+       uint16_t new_mtu;
+
+       if (priv_set_sysfs_ulong(priv, "mtu", mtu) ||
+           priv_get_mtu(priv, &new_mtu))
+               return -1;
+       if (new_mtu == mtu)
+               return 0;
+       errno = EINVAL;
+       return -1;
 }
 
 /**
index 9a8d1d9..243c35a 100644 (file)
@@ -397,7 +397,15 @@ priv_get_mtu(struct priv *priv, uint16_t *mtu)
 static int
 priv_set_mtu(struct priv *priv, uint16_t mtu)
 {
-       return priv_set_sysfs_ulong(priv, "mtu", mtu);
+       uint16_t new_mtu;
+
+       if (priv_set_sysfs_ulong(priv, "mtu", mtu) ||
+           priv_get_mtu(priv, &new_mtu))
+               return -1;
+       if (new_mtu == mtu)
+               return 0;
+       errno = EINVAL;
+       return -1;
 }
 
 /**