X-Git-Url: https://gitweb.dragonflybsd.org/dragonfly.git/blobdiff_plain/17ff8c4b215552a4880d5fa0d66f3a0fa22d71e9..78195a764d5e70464a6d4f49bc08332a2a8bb4d0:/sys/netproto/atalk/ddp_output.c diff --git a/sys/netproto/atalk/ddp_output.c b/sys/netproto/atalk/ddp_output.c index d647ea1519..8ca2793920 100644 --- a/sys/netproto/atalk/ddp_output.c +++ b/sys/netproto/atalk/ddp_output.c @@ -22,7 +22,7 @@ */ /* $FreeBSD: src/sys/netatalk/ddp_output.c,v 1.13.6.1 2000/06/02 22:39:07 archie Exp $ */ -/* $DragonFly: src/sys/netproto/atalk/ddp_output.c,v 1.5 2004/01/06 03:17:28 dillon Exp $ */ +/* $DragonFly: src/sys/netproto/atalk/ddp_output.c,v 1.8 2005/11/28 17:13:46 dillon Exp $ */ #include #include @@ -44,12 +44,12 @@ int ddp_cksum = 1; int -ddp_output( struct mbuf *m, struct socket *so) +ddp_output(struct mbuf *m, struct socket *so, ...) { struct ddpehdr *deh; struct ddpcb *ddp = sotoddpcb( so ); - M_PREPEND( m, sizeof( struct ddpehdr ), M_WAIT ); + M_PREPEND( m, sizeof( struct ddpehdr ), MB_WAIT ); if (m == NULL) return (ENOBUFS); @@ -121,6 +121,7 @@ ddp_route( struct mbuf *m, struct route *ro) struct at_ifaddr *aa = NULL; struct ifnet *ifp = NULL; u_short net; + int error; #if 0 /* Check for net zero, node zero ("myself") */ @@ -192,7 +193,7 @@ ddp_route( struct mbuf *m, struct route *ro) * packets end up poorly aligned due to the three byte elap header. */ if ( !(aa->aa_flags & AFA_PHASE2) ) { - MGET( m0, M_WAIT, MT_HEADER ); + MGET( m0, MB_WAIT, MT_HEADER ); if ( m0 == 0 ) { m_freem( m ); printf("ddp_route: no buffers\n"); @@ -228,6 +229,9 @@ ddp_route( struct mbuf *m, struct route *ro) return (if_simloop(ifp, m, gate.sat_family, 0)); } - return((*ifp->if_output)( ifp, - m, (struct sockaddr *)&gate, NULL)); /* XXX */ + /* XXX */ + lwkt_serialize_enter(ifp->if_serializer); + error = (*ifp->if_output)( ifp, m, (struct sockaddr *)&gate, NULL); + lwkt_serialize_exit(ifp->if_serializer); + return (error); }