aboutsummaryrefslogtreecommitdiff
path: root/sys/net
diff options
context:
space:
mode:
authorAndrew Thompson <thompsa@FreeBSD.org>2007-05-30 08:47:15 +0000
committerAndrew Thompson <thompsa@FreeBSD.org>2007-05-30 08:47:15 +0000
commit4a14b2bd3d309daeff7045e21b1ac6c4b112f658 (patch)
tree2a873c1ee12dbaa96a2ea65dfbd7f22e7bc135c7 /sys/net
parent807c419ef8f741cc41700417da27f71593cb470b (diff)
Notes
Diffstat (limited to 'sys/net')
-rw-r--r--sys/net/if_lagg.c20
1 files changed, 5 insertions, 15 deletions
diff --git a/sys/net/if_lagg.c b/sys/net/if_lagg.c
index 7839c244e193..09fbeefb2cb8 100644
--- a/sys/net/if_lagg.c
+++ b/sys/net/if_lagg.c
@@ -1105,12 +1105,14 @@ lagg_start(struct ifnet *ifp)
error = (*sc->sc_start)(sc, m);
LAGG_UNLOCK(sc);
} else
- m_free(m);
+ m_freem(m);
if (error == 0)
ifp->if_opackets++;
- else
+ else {
+ m_freem(m); /* sc_start failed */
ifp->if_oerrors++;
+ }
}
return;
@@ -1136,8 +1138,6 @@ lagg_input(struct ifnet *ifp, struct mbuf *m)
m = (*sc->sc_input)(sc, lp, m);
if (m != NULL) {
- ifp->if_ipackets++;
- ifp->if_ibytes += m->m_pkthdr.len;
trifp->if_ipackets++;
trifp->if_ibytes += m->m_pkthdr.len;
}
@@ -1334,17 +1334,7 @@ lagg_enqueue(struct ifnet *ifp, struct mbuf *m)
{
int error = 0;
- /* Send mbuf */
- IFQ_ENQUEUE(&ifp->if_snd, m, error);
- if (error)
- return (error);
- if ((ifp->if_drv_flags & IFF_DRV_OACTIVE) == 0)
- (*ifp->if_start)(ifp);
-
- ifp->if_obytes += m->m_pkthdr.len;
- if (m->m_flags & M_MCAST)
- ifp->if_omcasts++;
-
+ IFQ_HANDOFF(ifp, m, error);
return (error);
}