summaryrefslogtreecommitdiffstats
path: root/sys/net/if_ef.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/net/if_ef.c')
-rw-r--r--sys/net/if_ef.c18
1 files changed, 3 insertions, 15 deletions
diff --git a/sys/net/if_ef.c b/sys/net/if_ef.c
index ad28d5d..f8e38ca 100644
--- a/sys/net/if_ef.c
+++ b/sys/net/if_ef.c
@@ -234,17 +234,11 @@ ef_start(struct ifnet *ifp)
break;
if (ifp->if_bpf)
bpf_mtap(ifp, m);
- if (IF_QFULL(&p->if_snd)) {
- IF_DROP(&p->if_snd);
+ if (! IF_HANDOFF(&p->if_snd, m, NULL)) {
ifp->if_oerrors++;
- m_freem(m);
continue;
}
- IF_ENQUEUE(&p->if_snd, m);
- if ((p->if_flags & IFF_OACTIVE) == 0) {
- p->if_start(p);
- ifp->if_opackets++;
- }
+ ifp->if_opackets++;
}
ifp->if_flags &= ~IFF_OACTIVE;
return;
@@ -419,13 +413,7 @@ ef_input(struct ifnet *ifp, struct ether_header *eh, struct mbuf *m)
ft, ether_type);
return EPROTONOSUPPORT;
}
- s = splimp();
- if (IF_QFULL(inq)) {
- IF_DROP(inq);
- m_freem(m);
- } else
- IF_ENQUEUE(inq, m);
- splx(s);
+ (void) IF_HANDOFF(inq, m, NULL);
return 0;
}
OpenPOWER on IntegriCloud