if (ssb->ssb_flags & SSB_MEVENT) {
struct netmsg_so_notify *msg, *nmsg;
+ lwkt_gettoken(&kq_token);
TAILQ_FOREACH_MUTABLE(msg, &kqinfo->ki_mlist, nm_list, nmsg) {
if (msg->nm_predicate(&msg->nm_netmsg)) {
TAILQ_REMOVE(&kqinfo->ki_mlist, msg, nm_list);
}
if (TAILQ_EMPTY(&ssb->ssb_kq.ki_mlist))
atomic_clear_int(&ssb->ssb_flags, SSB_MEVENT);
+ lwkt_reltoken(&kq_token);
}
}
/*
* Validation
*/
- KASSERT((num > 0 && num <= (sizeof(netisrs)/sizeof(netisrs[0]))),
- ("Bad isr %d", num));
m = *mp;
KKASSERT(m != NULL);
+ if (num < 0 || num >= NETISR_MAX) {
+ if (num == NETISR_MAX) {
+ m->m_flags |= M_HASH;
+ m->m_pkthdr.hash = 0;
+ return;
+ }
+ panic("Bad isr %d", num);
+ }
+
/*
* Valid netisr?
*/
#include <net/raw_cb.h>
+
+static struct lwkt_token raw_token = LWKT_TOKEN_MP_INITIALIZER(raw_token);
+
/*
* Initialize raw connection block q.
*/
struct mbuf *m = m0;
struct socket *last;
+ lwkt_gettoken(&raw_token);
+
last = NULL;
LIST_FOREACH(rp, &rawcb_list, list) {
if (rp == skip)
} else {
m_freem(m);
}
+ lwkt_reltoken(&raw_token);
}
/*ARGSUSED*/