diff options
| author | Andrew Thompson <thompsa@FreeBSD.org> | 2007-05-30 08:47:15 +0000 |
|---|---|---|
| committer | Andrew Thompson <thompsa@FreeBSD.org> | 2007-05-30 08:47:15 +0000 |
| commit | 4a14b2bd3d309daeff7045e21b1ac6c4b112f658 (patch) | |
| tree | 2a873c1ee12dbaa96a2ea65dfbd7f22e7bc135c7 /sys/net | |
| parent | 807c419ef8f741cc41700417da27f71593cb470b (diff) | |
Notes
Diffstat (limited to 'sys/net')
| -rw-r--r-- | sys/net/if_lagg.c | 20 |
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); } |
