hw.bge.forced_collapse

Pyun YongHyeon pyunyh at gmail.com
Thu Jan 14 18:11:20 UTC 2010


On Thu, Jan 14, 2010 at 07:03:33PM +0300, Igor Sysoev wrote:
> On Fri, Dec 04, 2009 at 12:22:13PM -0800, Pyun YongHyeon wrote:
> 
> > On Fri, Dec 04, 2009 at 11:13:03PM +0300, Igor Sysoev wrote:
> > > On Fri, Dec 04, 2009 at 11:51:40AM -0800, Pyun YongHyeon wrote:
> > > 
> > > > On Fri, Dec 04, 2009 at 10:11:14PM +0300, Igor Sysoev wrote:
> > > > > On Fri, Dec 04, 2009 at 09:32:43AM -0800, Pyun YongHyeon wrote:
> > > > > 
> > > > > > On Fri, Dec 04, 2009 at 10:54:40AM +0300, Igor Sysoev wrote:
> > > > > > > I saw commit introducing hw.bge.forced_collapse loader tunable.
> > > > > > > Just intresting, why it can not be a sysctl ?
> > > > > > 
> > > > > > I didn't think the sysctl variable would be frequently changed
> > > > > > in runtime except debugging driver so I took simple path.
> > > > > 
> > > > > I do not think it's worth to reboot server just to look how various
> > > > > values affect on bandwidth and CPU usage, expecially in production.
> > > > > 
> > > > > As I understand the change is trivial:
> > > > > 
> > > > > -          CTLFLAG_RD
> > > > > +          CTLFLAG_RW
> > > > > 
> > > > > since bge_forced_collapse is used atomically.
> > > > > 
> > > > 
> > > > I have no problem changing it to RW but that case I may have to
> > > > create actual sysctl node(e.g. dev.bge.0.forced_collapse) instead
> > > > of hw.bge.forced_collapse which may affect all bge(4) controllers
> > > > on system. Attached patch may be what you want. You can change the
> > > > value at any time.
> > > 
> > > Thank you for the patch. Can it be installed on 8-STABLE ?
> > > 
> > 
> > bge(4) in HEAD has many fixes which were not MFCed to stable/8 so
> > I'm not sure that patch could be applied cleanly. But I guess you
> > can manually patch it.
> > I'll wait a couple of days for wider testing/review and commit the
> > patch.
> 
> Sorry for the late response. We've tested bge.forced_collapse in December
> on HEAD and found that values >1 froze connections with big data amount,
> for example, "top -Ss1" output. Connection with small data amount such as
> short ssh commands worked OK. Now I've tested modern 7.2-STABLE and found
> that forced_collapse >1 freezes it too.
> 

Thanks for reporting! It seems I've incorrectly dropped mbuf chains
when collapsing fails. Would you try attached patch?
-------------- next part --------------
Index: sys/dev/bge/if_bge.c
===================================================================
--- sys/dev/bge/if_bge.c	(revision 202268)
+++ sys/dev/bge/if_bge.c	(working copy)
@@ -3940,11 +3940,8 @@
 			m = m_defrag(m, M_DONTWAIT);
 		else
 			m = m_collapse(m, M_DONTWAIT, sc->bge_forced_collapse);
-		if (m == NULL) {
-			m_freem(*m_head);
-			*m_head = NULL;
-			return (ENOBUFS);
-		}
+		if (m == NULL)
+			m = *m_head;
 		*m_head = m;
 	}
 


More information about the freebsd-net mailing list