IB/ipoib: Set device connection mode only when needed
When changing the connection mode, the ipoib_set_mode function
did not check if the previous connection mode equals to the
new one. This commit adds the required check and return 0 if the new
mode equals to the previous one.
Fixes: 839fcaba35
("IPoIB: Connected mode experimental support")
Signed-off-by: Feras Daoud <ferasda@mellanox.com>
Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
Reviewed-by: Alex Vesker <valex@mellanox.com>
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
29da686dff
commit
80b5b35aba
|
@ -474,6 +474,13 @@ 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"))) {
|
||||
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);
|
||||
|
|
Loading…
Reference in New Issue