svn commit: r341536 - head/sys/ofed/drivers/infiniband/ulp/ipoib

Slava Shwartsman slavash at FreeBSD.org
Wed Dec 5 13:26:18 UTC 2018


Author: slavash
Date: Wed Dec  5 13:26:17 2018
New Revision: 341536
URL: https://svnweb.freebsd.org/changeset/base/341536

Log:
  ipoib: Don't do a light flush when MTU is unchanged.
  
  When changing the MTU of ibX network interfaces, check that the MTU was really
  changed before requesting an update of the multicast rules. Else we might go
  into an infinite loop joining and leaving ibX multicast groups towards the
  opensm master interface.
  
  Submitted by:   hselasky@
  Approved by:    hselasky (mentor)
  MFC after:      1 week
  Sponsored by:   Mellanox Technologies

Modified:
  head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c

Modified: head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c
==============================================================================
--- head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c	Wed Dec  5 13:25:47 2018	(r341535)
+++ head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c	Wed Dec  5 13:26:17 2018	(r341536)
@@ -305,9 +305,11 @@ ipoib_change_mtu(struct ipoib_dev_priv *priv, int new_
 	priv->admin_mtu = new_mtu;
 	error = ipoib_propagate_ifnet_mtu(priv, min(priv->mcast_mtu,
 	    priv->admin_mtu), propagate);
-	if (error == 0)
-		queue_work(ipoib_workqueue, &priv->flush_light);
-	else
+	if (error == 0) {
+		/* check for MTU change to avoid infinite loop */
+		if (prev_admin_mtu != new_mtu)
+			queue_work(ipoib_workqueue, &priv->flush_light);
+	} else
 		priv->admin_mtu = prev_admin_mtu;
 	return (error);
 }


More information about the svn-src-all mailing list