IB/ipoib: When given an invalid UD MTU, give debug msg
authorFeras Daoud <ferasda@mellanox.com>
Wed, 28 Dec 2016 12:47:20 +0000 (14:47 +0200)
committerDoug Ledford <dledford@redhat.com>
Thu, 12 Jan 2017 18:59:56 +0000 (13:59 -0500)
In datagram mode, the IB UD (Unreliable Datagram) transport is used
so the MTU of the interface is equal to the IB L2 MTU minus the
IPoIB encapsulation header. Any request to change the MTU value
above the maximum range will change the MTU to the max allowed, but
will not show any warning message. An ipoib_warn is issued in such
cases, letting the user know that even though the value is legal,
it can't be currently applied.

Signed-off-by: Feras Daoud <ferasda@mellanox.com>
Signed-off-by: Noa Osherovich <noaos@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/ulp/ipoib/ipoib_main.c

index 3ce0765a05ab615289760fb9c8257b437854efef..b2a75d85bc239acc16f6db5a46ebf1ea5a97a64c 100644 (file)
@@ -229,6 +229,10 @@ static int ipoib_change_mtu(struct net_device *dev, int new_mtu)
 
        priv->admin_mtu = new_mtu;
 
+       if (priv->mcast_mtu < priv->admin_mtu)
+               ipoib_dbg(priv, "MTU must be smaller than the underlying "
+                               "link layer MTU - 4 (%u)\n", priv->mcast_mtu);
+
        dev->mtu = min(priv->mcast_mtu, priv->admin_mtu);
 
        return 0;