]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
IB/ipoib: Set mode only when needed.
authorErez Shitrit <erezsh@mellanox.com>
Wed, 6 Nov 2013 16:23:48 +0000 (18:23 +0200)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Tue, 7 Jul 2015 21:45:14 +0000 (14:45 -0700)
Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
(Ported from Mellanox OFED 2.4)

Signed-off-by: Mukesh Kacker <mukesh.kacker@oracle.com>
drivers/infiniband/ulp/ipoib/ipoib_main.c

index e3bae124da90e87dc05e3e1d7ac730fbf745f2a5..f2dc1c4553337fb5e5aa258dc26c1dd999acc59f 100644 (file)
@@ -226,6 +226,14 @@ int ipoib_set_mode(struct net_device *dev, const char *buf)
 {
        struct ipoib_dev_priv *priv = netdev_priv(dev);
 
+       if ((test_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags) &&
+            !strcmp(buf, "connected\n")) ||
+           (!test_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags) &&
+            !strcmp(buf, "datagram\n"))) {
+               ipoib_dbg(priv, "already in that mode, goes out.\n");
+               return 0;
+       }
+
        /* flush paths if we switch modes so that connections are restarted */
        if (IPOIB_CM_SUPPORTED(dev->dev_addr) && !strcmp(buf, "connected\n")) {
                set_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags);