diff options
Diffstat (limited to 'sys/netns')
-rw-r--r-- | sys/netns/ns_input.c | 1 | ||||
-rw-r--r-- | sys/netns/ns_ip.c | 13 |
2 files changed, 3 insertions, 11 deletions
diff --git a/sys/netns/ns_input.c b/sys/netns/ns_input.c index a10f99b..4d26a9d 100644 --- a/sys/netns/ns_input.c +++ b/sys/netns/ns_input.c @@ -90,6 +90,7 @@ ns_init() nspcb.nsp_next = nspcb.nsp_prev = &nspcb; nsrawpcb.nsp_next = nsrawpcb.nsp_prev = &nsrawpcb; nsintrq.ifq_maxlen = nsqmaxlen; + mtx_init(&nsintrq.ifq_mtx, "ns_inq", MTX_DEF); ns_pexseq = time.tv_usec; ns_netmask.sns_len = 6; ns_netmask.sns_addr.x_net = ns_broadnet; diff --git a/sys/netns/ns_ip.c b/sys/netns/ns_ip.c index 0c5fbeb..45e9b8e 100644 --- a/sys/netns/ns_ip.c +++ b/sys/netns/ns_ip.c @@ -220,17 +220,8 @@ idpip_input(m, ifp) /* * Deliver to NS */ - s = splimp(); - if (IF_QFULL(ifq)) { - IF_DROP(ifq); -bad: - m_freem(m); - splx(s); - return; - } - IF_ENQUEUE(ifq, m); - schednetisr(NETISR_NS); - splx(s); + if (IF_HANDOFF(ifq, m, NULL)) + schednetisr(NETISR_NS); return; } |