svn commit: r303646 - head/sys/ofed/drivers/infiniband/ulp/ipoib
Gleb Smirnoff
glebius at FreeBSD.org
Wed Aug 17 02:22:55 UTC 2016
On Tue, Aug 16, 2016 at 05:41:28PM -0700, Mark Johnston wrote:
M> > M> Log:
M> > M> ipoib: Bound the number of egress mbufs buffered during pathrec lookups.
M> > M>
M> > M> In pathological situations where the master subnet manager becomes
M> > M> unresponsive for an extended period, we may otherwise end up queuing all
M> > M> of the system's mbufs while waiting for a response to a path record lookup.
M> > M>
M> > M> This addresses the same issue as commit 1e85b806f9 in Linux.
M> > M>
M> > M> Reviewed by: cem, ngie
M> > M> MFC after: 2 weeks
M> > M> Sponsored by: EMC / Isilon Storage Division
M> > M>
M> > M> Modified:
M> > M> head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c
M> > M>
M> > M> Modified: head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c
M> > M> ==============================================================================
M> > M> --- head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c Mon Aug 1 22:19:23 2016 (r303645)
M> > M> +++ head/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c Mon Aug 1 22:22:11 2016 (r303646)
M> > M> @@ -660,7 +660,13 @@ ipoib_unicast_send(struct mbuf *mb, stru
M> > M> new_path = 1;
M> > M> }
M> > M> if (path) {
M> > M> - _IF_ENQUEUE(&path->queue, mb);
M> > M> + if (_IF_QLEN(&path->queue) < IPOIB_MAX_PATH_REC_QUEUE)
M> > M> + _IF_ENQUEUE(&path->queue, mb);
M> > M> + else {
M> > M> + if_inc_counter(priv->dev, IFCOUNTER_OERRORS, 1);
M> > M> + m_freem(mb);
M> > M> + }
M> >
M> > Shouldn't that be IFCOUNTER_ODROPS?
M>
M> I'm not sure. I used IFCOUNTER_OERRORS to be consistent with other error
M> cases in this function. This error case doesn't represent the normal
M> source of outbound packet drops but rather indicates that a key routing
M> agent on the network is not responding. OQDROPS seems like it's
M> specifically for the case that we can't buffer packets because the
M> transmitter isn't keeping up.
I see. The fact that this is an if_queue has confused me. I expected that
it is an ifqueue belonging to an ifnet.
btw, may be this ifqueue can be reduced to mbufq.
--
Totus tuus, Glebius.
More information about the svn-src-head
mailing list