svn commit: r329574 - projects/bsd_rdma_4_9_stable_11/sys/ofed/drivers/infiniband/ulp/ipoib

Hans Petter Selasky hselasky at FreeBSD.org
Mon Feb 19 12:48:00 UTC 2018


Author: hselasky
Date: Mon Feb 19 12:47:59 2018
New Revision: 329574
URL: https://svnweb.freebsd.org/changeset/base/329574

Log:
  MFC r303646:
  ipoib: Bound the number of egress mbufs buffered during pathrec lookups.
  
  In pathological situations where the master subnet manager becomes
  unresponsive for an extended period, we may otherwise end up queuing all
  of the system's mbufs while waiting for a response to a path record lookup.
  
  This addresses the same issue as commit 1e85b806f9 in Linux.
  
  Reviewed by:	cem, ngie
  Sponsored by:	EMC / Isilon Storage Division

Modified:
  projects/bsd_rdma_4_9_stable_11/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c
Directory Properties:
  projects/bsd_rdma_4_9_stable_11/   (props changed)

Modified: projects/bsd_rdma_4_9_stable_11/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c
==============================================================================
--- projects/bsd_rdma_4_9_stable_11/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c	Mon Feb 19 12:42:40 2018	(r329573)
+++ projects/bsd_rdma_4_9_stable_11/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c	Mon Feb 19 12:47:59 2018	(r329574)
@@ -685,7 +685,13 @@ ipoib_unicast_send(struct mbuf *mb, struct ipoib_dev_p
 			new_path = 1;
 		}
 		if (path) {
-			_IF_ENQUEUE(&path->queue, mb);
+			if (_IF_QLEN(&path->queue) < IPOIB_MAX_PATH_REC_QUEUE)
+				_IF_ENQUEUE(&path->queue, mb);
+			else {
+				if_inc_counter(priv->dev, IFCOUNTER_OERRORS, 1);
+				m_freem(mb);
+			}
+
 			if (!path->query && path_rec_start(priv, path)) {
 				spin_unlock_irqrestore(&priv->lock, flags);
 				if (new_path)


More information about the svn-src-projects mailing list