Apply by doing:
cd /usr/src
patch -p0 < 012_trunklacp.patch
Then build and install a new kernel.
Index: sys/net/trunklacp.c
===================================================================
RCS file: /cvs/src/sys/net/trunklacp.c,v
retrieving revision 1.9
retrieving revision 1.9.6.1
diff -u -r1.9 -r1.9.6.1
--- sys/net/trunklacp.c 1 Dec 2008 10:40:57 -0000 1.9
+++ sys/net/trunklacp.c 14 May 2010 11:54:14 -0000 1.9.6.1
@@ -1,4 +1,4 @@
-/* $OpenBSD: trunklacp.c,v 1.9 2008/12/01 10:40:57 brad Exp $ */
+/* $OpenBSD: trunklacp.c,v 1.9.6.1 2010/05/14 11:54:14 stephan Exp $ */
/* $NetBSD: ieee8023ad_lacp.c,v 1.3 2005/12/11 12:24:54 christos Exp $ */
/* $FreeBSD:ieee8023ad_lacp.c,v 1.15 2008/03/16 19:25:30 thompsa Exp $ */
@@ -365,7 +365,7 @@
struct mbuf *m;
struct ether_header *eh;
struct lacpdu *du;
- int error;
+ int error, s;
m = m_gethdr(M_DONTWAIT, MT_DATA);
if (m == NULL)
@@ -409,7 +409,9 @@
* XXX should use higher priority queue.
* otherwise network congestion can break aggregation.
*/
+ s = splnet();
error = trunk_enqueue(lp->lp_ifp, m);
+ splx(s);
return (error);
}
@@ -420,7 +422,7 @@
struct mbuf *m;
struct ether_header *eh;
struct markerdu *mdu;
- int error;
+ int error, s;
m = m_gethdr(M_DONTWAIT, MT_DATA);
if (m == NULL)
@@ -452,7 +454,9 @@
ntohl(mdu->mdu_info.mi_rq_xid)));
m->m_flags |= M_MCAST;
+ s = splnet();
error = trunk_enqueue(lp->lp_ifp, m);
+ splx(s);
return (error);
}