netisr: Simplify assertion related bits
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Mon, 7 Aug 2017 09:43:54 +0000 (17:43 +0800)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Tue, 8 Aug 2017 05:47:21 +0000 (13:47 +0800)
37 files changed:
sys/net/altq/altq_rmclass.c
sys/net/altq/altq_subr.c
sys/net/bridge/if_bridge.c
sys/net/gif/if_gif.c
sys/net/gre/if_gre.c
sys/net/if.c
sys/net/if_poll.c
sys/net/ipfw/ip_fw2.c
sys/net/netisr.c
sys/net/netisr2.h
sys/net/pf/pf_if.c
sys/net/route.c
sys/net/stf/if_stf.c
sys/net/vlan/if_vlan.c
sys/netinet/if_ether.c
sys/netinet/igmp.c
sys/netinet/in.c
sys/netinet/in_pcb.c
sys/netinet/in_rmx.c
sys/netinet/ip_carp.c
sys/netinet/ip_divert.c
sys/netinet/ip_flow.c
sys/netinet/ip_icmp.c
sys/netinet/ip_input.c
sys/netinet/ip_output.c
sys/netinet/raw_ip.c
sys/netinet/tcp_subr.c
sys/netinet/tcp_usrreq.c
sys/netinet/udp_usrreq.c
sys/netinet6/frag6.c
sys/netinet6/icmp6.c
sys/netinet6/in6.c
sys/netinet6/in6_ifattach.c
sys/netinet6/in6_pcb.c
sys/netinet6/ip6_mroute.c
sys/netinet6/nd6.c
sys/netinet6/nd6_nbr.c

index 71c9557..953bfef 100644 (file)
@@ -1561,7 +1561,7 @@ rmc_restart_dispatch(netmsg_t nmsg)
        struct ifaltq_subque *ifsq =
            &ifd->ifq_->altq_subq[ALTQ_SUBQ_INDEX_DEFAULT];
 
-       ASSERT_NETISR_NCPUS(curthread, 0);
+       ASSERT_NETISR0;
 
        crit_enter();
        lwkt_replymsg(&nmsg->lmsg, 0);  /* reply ASAP */
index cade087..00381c0 100644 (file)
@@ -351,7 +351,7 @@ tbr_timeout_dispatch(netmsg_t nmsg)
        const struct ifnet_array *arr;
        int active, i;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        crit_enter();
        lwkt_replymsg(&nmsg->lmsg, 0);  /* reply ASAP */
index 5bb9de4..2f2c518 100644 (file)
@@ -2103,7 +2103,7 @@ bridge_output(struct ifnet *ifp, struct mbuf *m)
        int alt_priority;
 
        ASSERT_IFNET_NOT_SERIALIZED_ALL(ifp);
-       ASSERT_NETISR_NCPUS(curthread, mycpuid);
+       ASSERT_NETISR_NCPUS(mycpuid);
        mbuftrackid(m, 65);
 
        /*
@@ -2301,7 +2301,7 @@ bridge_start(struct ifnet *ifp, struct ifaltq_subque *ifsq)
 
        ASSERT_ALTQ_SQ_DEFAULT(ifp, ifsq);
        ASSERT_ALTQ_SQ_SERIALIZED_HW(ifsq);
-       ASSERT_NETISR_NCPUS(curthread, mycpuid);
+       ASSERT_NETISR_NCPUS(mycpuid);
 
        ifsq_set_oactive(ifsq);
        for (;;) {
@@ -2530,7 +2530,7 @@ bridge_input(struct ifnet *ifp, struct mbuf *m)
        struct mbuf *mc, *mc2;
 
        ASSERT_IFNET_NOT_SERIALIZED_ALL(ifp);
-       ASSERT_NETISR_NCPUS(curthread, mycpuid);
+       ASSERT_NETISR_NCPUS(mycpuid);
        mbuftrackid(m, 67);
 
        /*
index 7ffa9cc..0ec9357 100644 (file)
@@ -407,7 +407,7 @@ gif_output(struct ifnet *ifp, struct mbuf *m, struct sockaddr *dst,
        struct ifaltq_subque *ifsq = ifq_get_subq_default(&ifp->if_snd);
        int error;
 
-       ASSERT_NETISR_NCPUS(curthread, mycpuid);
+       ASSERT_NETISR_NCPUS(mycpuid);
 
        ifsq_serialize_hw(ifsq);
        error = gif_output_serialized(ifp, m, dst, rt);
index 89ff95a..2ba25a3 100644 (file)
@@ -254,7 +254,7 @@ gre_output_serialized(struct ifnet *ifp, struct mbuf *m, struct sockaddr *dst,
        struct route *ro;
        struct sockaddr_in *ro_dst;
 
-       ASSERT_NETISR_NCPUS(curthread, mycpuid);
+       ASSERT_NETISR_NCPUS(mycpuid);
 
        /*
         * gre may cause infinite recursion calls when misconfigured.
@@ -691,7 +691,7 @@ gre_compute_route(struct gre_softc *sc, struct route *ro)
 #endif
        u_int32_t a, b, c;
 
-       ASSERT_NETISR_NCPUS(curthread, mycpuid);
+       ASSERT_NETISR_NCPUS(mycpuid);
        KASSERT(ro == &sc->route_pcpu[mycpuid], ("route mismatch"));
        KASSERT(ro->ro_rt == NULL, ("rtentry not freed"));
 
@@ -761,7 +761,7 @@ gre_check_route_handler(netmsg_t msg)
        struct route *ro;
        int error;
 
-       ASSERT_NETISR_NCPUS(curthread, 0);
+       ASSERT_NETISR0;
 
        ro = &sc->route_pcpu[mycpuid];
        if (ro->ro_rt != NULL) {
index 761411c..a4e767a 100644 (file)
@@ -745,11 +745,10 @@ if_attachdomain1(struct ifnet *ifp)
 static void
 if_purgeaddrs_nolink_dispatch(netmsg_t nmsg)
 {
-       struct lwkt_msg *lmsg = &nmsg->lmsg;
-       struct ifnet *ifp = lmsg->u.ms_resultp;
+       struct ifnet *ifp = nmsg->lmsg.u.ms_resultp;
        struct ifaddr_container *ifac, *next;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        /*
         * The ifaddr processing in the following loop will block,
@@ -831,21 +830,18 @@ if_purgeaddrs_nolink_dispatch(netmsg_t nmsg)
                ifa_destroy(ifa);
        }
 
-       lwkt_replymsg(lmsg, 0);
+       netisr_replymsg(&nmsg->base, 0);
 }
 
 void
 if_purgeaddrs_nolink(struct ifnet *ifp)
 {
        struct netmsg_base nmsg;
-       struct lwkt_msg *lmsg = &nmsg.lmsg;
-
-       ASSERT_CANDOMSG_NETISR0(curthread);
 
        netmsg_init(&nmsg, NULL, &curthread->td_msgport, 0,
            if_purgeaddrs_nolink_dispatch);
-       lmsg->u.ms_resultp = ifp;
-       lwkt_domsg(netisr_cpuport(0), lmsg, 0);
+       nmsg.lmsg.u.ms_resultp = ifp;
+       netisr_domsg(&nmsg, 0);
 }
 
 static void
@@ -1578,7 +1574,7 @@ if_unroute_dispatch(netmsg_t nmsg)
        ifq_purge_all(&ifp->if_snd);
        rt_ifmsg(ifp);
 
-       lwkt_replymsg(&nmsg->lmsg, 0);
+       netisr_replymsg(&nmsg->base, 0);
 }
 
 void
@@ -1586,14 +1582,12 @@ if_unroute(struct ifnet *ifp, int flag, int fam)
 {
        struct netmsg_ifroute msg;
 
-       ASSERT_CANDOMSG_NETISR0(curthread);
-
        netmsg_init(&msg.base, NULL, &curthread->td_msgport, 0,
            if_unroute_dispatch);
        msg.ifp = ifp;
        msg.flag = flag;
        msg.fam = fam;
-       lwkt_domsg(netisr_cpuport(0), &msg.base.lmsg, 0);
+       netisr_domsg(&msg.base, 0);
 }
 
 /*
@@ -1631,7 +1625,7 @@ if_route_dispatch(netmsg_t nmsg)
        in6_if_up(ifp);
 #endif
 
-       lwkt_replymsg(&nmsg->lmsg, 0);
+       netisr_replymsg(&nmsg->base, 0);
 }
 
 void
@@ -1639,14 +1633,12 @@ if_route(struct ifnet *ifp, int flag, int fam)
 {
        struct netmsg_ifroute msg;
 
-       ASSERT_CANDOMSG_NETISR0(curthread);
-
        netmsg_init(&msg.base, NULL, &curthread->td_msgport, 0,
            if_route_dispatch);
        msg.ifp = ifp;
        msg.flag = flag;
        msg.fam = fam;
-       lwkt_domsg(netisr_cpuport(0), &msg.base.lmsg, 0);
+       netisr_domsg(&msg.base, 0);
 }
 
 /*
@@ -1702,7 +1694,7 @@ if_slowtimo_dispatch(netmsg_t nmsg)
        const struct ifnet_array *arr;
        int i;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        crit_enter_gd(gd);
        lwkt_replymsg(&nmsg->lmsg, 0);  /* reply ASAP */
index 5a1bf34..887f28f 100644 (file)
@@ -526,7 +526,7 @@ stpoll_handler(netmsg_t msg)
        struct thread *td = curthread;
        int i;
 
-       ASSERT_IS_NETISR(td, 0);
+       ASSERT_NETISR0;
 
        crit_enter_quick(td);
 
@@ -575,7 +575,7 @@ stpoll_register(struct ifnet *ifp, const struct ifpoll_status *st_rec)
        struct stpoll_ctx *st_ctx = &stpoll_context;
        int error;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        if (st_rec->status_func == NULL)
                return 0;
@@ -618,7 +618,7 @@ stpoll_deregister(struct ifnet *ifp)
        struct stpoll_ctx *st_ctx = &stpoll_context;
        int i, error;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        for (i = 0; i < st_ctx->poll_handlers; ++i) {
                if (st_ctx->pr[i].ifp == ifp) /* Found it */
index fc5c4c3..dc72e1f 100644 (file)
@@ -1663,7 +1663,7 @@ ipfw_chk(struct ip_fw_args *args)
        int cpuid = mycpuid;
        struct ipfw_context *ctx;
 
-       ASSERT_NETISR_NCPUS(curthread, cpuid);
+       ASSERT_NETISR_NCPUS(cpuid);
        ctx = ipfw_ctx[cpuid];
 
        if (m->m_pkthdr.fw_flags & IPFW_MBUF_GENERATED)
index 59e0536..7d0eb0d 100644 (file)
@@ -667,7 +667,7 @@ netisr_barrier_set(struct netisr_barrier *br)
        volatile cpumask_t other_cpumask;
        int i, cur_cpuid;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
        KKASSERT(!br->br_isset);
 
        other_cpumask = mycpu->gd_other_cpus;
@@ -716,7 +716,7 @@ netisr_barrier_rem(struct netisr_barrier *br)
 {
        int i, cur_cpuid;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
        KKASSERT(br->br_isset);
 
        cur_cpuid = mycpuid;
index a667ebd..c2ca7db 100644 (file)
@@ -127,25 +127,29 @@ netisr_hashport(uint16_t hash)
        return netisr_cpuport(netisr_hashcpu(hash));
 }
 
-#define IS_NETISR(td, n)       (&(td)->td_msgport == netisr_cpuport((n)))
-#define ASSERT_IS_NETISR(td, n)        \
-       KASSERT(IS_NETISR((td), (n)), ("thread %p is not netisr%d", (td), (n)))
-#define ASSERT_IN_NETISR(n)    ASSERT_IS_NETISR(curthread, (n))
-#define ASSERT_CANDOMSG_NETISR0(td) \
-       KASSERT((td)->td_type != TD_TYPE_NETISR || IS_NETISR((td), 0), \
-           ("can't domsg to netisr0 from thread %p", (td)))
-#define ASSERT_NETISR_NCPUS(td, n) \
-       KASSERT((n) < netisr_ncpus && IS_NETISR((td), (n)), \
+#define IN_NETISR(n)                   \
+       (&curthread->td_msgport == netisr_cpuport((n)))
+#define IN_NETISR_NCPUS(n)             \
+       ((n) < netisr_ncpus && IN_NETISR((n)))
+#define ASSERT_NETISR0                 \
+       KASSERT(IN_NETISR(0), ("thread %p is not netisr0", curthread))
+#define ASSERT_NETISR_NCPUS(n)         \
+       KASSERT(IN_NETISR_NCPUS(n),     \
            ("thread %p cpu%d is not within netisr_ncpus %d", \
-            (td), (n), netisr_ncpus))
+            curthread, (n), netisr_ncpus))
 
 static __inline int
 netisr_domsg_port(struct netmsg_base *nm, lwkt_port_t port)
 {
 
 #ifdef INVARIANTS
-       if (port == netisr_cpuport(0))
-               ASSERT_CANDOMSG_NETISR0(curthread);
+       /*
+        * Only netisr0, netisrN itself, or non-netisr threads
+        * can perform synchronous message sending to netisrN.
+        */
+       KASSERT(curthread->td_type != TD_TYPE_NETISR ||
+           IN_NETISR(0) || port == &curthread->td_msgport,
+           ("can't domsg to netisr port %p from thread %p", port, curthread));
 #endif
        return (lwkt_domsg(port, &nm->lmsg, 0));
 }
index d38f380..cac584d 100644 (file)
@@ -629,7 +629,7 @@ pfi_instance_add_dispatch(netmsg_t nmsg)
                        pfi_address_add(ia->ifa_addr, af, net2);
        }
 done:
-       lwkt_replymsg(&nmsg->lmsg, 0);
+       netisr_replymsg(&nmsg->base, 0);
 }
 
 void
@@ -637,14 +637,12 @@ pfi_instance_add(struct ifnet *ifp, int net, int flags)
 {
        struct netmsg_pfiadd msg;
 
-       ASSERT_CANDOMSG_NETISR0(curthread);
-
        netmsg_init(&msg.base, NULL, &curthread->td_msgport, 0,
            pfi_instance_add_dispatch);
        msg.ifp = ifp;
        msg.net = net;
        msg.flags = flags;
-       lwkt_domsg(netisr_cpuport(0), &msg.base.lmsg, 0);
+       netisr_domsg(&msg.base, 0);
 }
 
 void
index 5e058cf..56e35a1 100644 (file)
@@ -339,7 +339,7 @@ rtfree_async(struct rtentry *rt)
 {
        struct netmsg_base *msg;
 
-       if (IS_NETISR(curthread, rt->rt_cpuid)) {
+       if (IN_NETISR(rt->rt_cpuid)) {
                rtfree_oncpu(rt);
                return;
        }
@@ -1908,6 +1908,6 @@ rtchange(struct ifaddr *old_ifa, struct ifaddr *new_ifa)
 int
 rt_domsg_global(struct netmsg_base *nmsg)
 {
-       ASSERT_CANDOMSG_NETISR0(curthread);
-       return lwkt_domsg(netisr_cpuport(0), &nmsg->lmsg, 0);
+
+       return (netisr_domsg(nmsg, 0));
 }
index 0d34b21..df81c7a 100644 (file)
@@ -331,7 +331,7 @@ stf_output_serialized(struct ifnet *ifp, struct mbuf *m, struct sockaddr *dst,
        struct route *ro;
        static const uint32_t af = AF_INET6;
 
-       ASSERT_NETISR_NCPUS(curthread, mycpuid);
+       ASSERT_NETISR_NCPUS(mycpuid);
 
        sc = (struct stf_softc*)ifp;
        dst6 = (struct sockaddr_in6 *)dst;
index 9bd70c0..bf73bb2 100644 (file)
@@ -582,7 +582,7 @@ vlan_input(struct mbuf *m)
        struct vlan_entry *entry;
        int cpuid = mycpuid;
 
-       ASSERT_NETISR_NCPUS(curthread, cpuid);
+       ASSERT_NETISR_NCPUS(cpuid);
 
        rcvif = m->m_pkthdr.rcvif;
        KKASSERT(m->m_flags & M_VLANTAG);
index 5e5edf5..fadcca0 100644 (file)
@@ -1039,7 +1039,7 @@ match:
         *
         * However, we only need to generate rtmsg on CPU0.
         */
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
        changed = arp_update_oncpu(m, isaddr.s_addr,
                                   itaddr.s_addr == myaddr.s_addr,
                                   RTL_REPORTMSG, TRUE);
index 4cdac0e..c88ace2 100644 (file)
@@ -416,7 +416,7 @@ igmp_fasttimo_dispatch(netmsg_t nmsg)
        struct in_multi *inm;
        struct in_multistep step;
 
-       ASSERT_NETISR_NCPUS(curthread, 0);
+       ASSERT_NETISR0;
 
        crit_enter();
        netisr_replymsg(&nmsg->base, 0);        /* reply ASAP */
@@ -465,7 +465,7 @@ igmp_slowtimo_dispatch(netmsg_t nmsg)
 {
        struct router_info *rti = Head;
 
-       ASSERT_NETISR_NCPUS(curthread, 0);
+       ASSERT_NETISR0;
 
        crit_enter();
        netisr_replymsg(&nmsg->base, 0);        /* reply ASAP */
index 82707b8..89c5e9c 100644 (file)
@@ -1307,7 +1307,7 @@ in_addmulti(struct in_addr *ap, struct ifnet *ifp)
        struct sockaddr_in sin;
        struct ifmultiaddr *ifma;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        /*
         * Call generic routine to add membership or increment
@@ -1352,7 +1352,7 @@ in_delmulti(struct in_multi *inm)
        struct ifmultiaddr *ifma;
        struct in_multi my_inm;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        ifma = inm->inm_ifma;
        my_inm.inm_ifp = NULL ; /* don't send the leave msg */
index 77939a3..33054b2 100644 (file)
@@ -1276,7 +1276,7 @@ in_pcbpurgeif0(struct inpcbinfo *pcbinfo, struct ifnet *ifp)
         * In this case, the pcbinfo must be able to be shared, i.e.
         * pcbinfo->infotoken is not NULL.
         */
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
        KASSERT(pcbinfo->cpu == 0 || pcbinfo->infotoken != NULL,
            ("pcbinfo could not be shared"));
 
@@ -2387,7 +2387,7 @@ struct inpcb *
 in_pcbmarker(void)
 {
 
-       ASSERT_NETISR_NCPUS(curthread, mycpuid);
+       ASSERT_NETISR_NCPUS(mycpuid);
        return &in_pcbmarkers[mycpuid];
 }
 
@@ -2395,7 +2395,7 @@ struct inpcontainer *
 in_pcbcontainer_marker(void)
 {
 
-       ASSERT_NETISR_NCPUS(curthread, mycpuid);
+       ASSERT_NETISR_NCPUS(mycpuid);
        return &in_pcbcontainer_markers[mycpuid];
 }
 
index db92bbc..c9b4a62 100644 (file)
@@ -440,7 +440,7 @@ in_rtqdrain(void)
        CPUMASK_ASSBMASK(mask, ncpus);
        CPUMASK_ANDMASK(mask, smp_active_mask);
 
-       if (IS_NETISR(curthread, mycpuid)) {
+       if (IN_NETISR(mycpuid)) {
                in_rtqdrain_oncpu(&in_rtq_pcpu[mycpuid]);
                CPUMASK_NANDBIT(mask, mycpuid);
        }
index 85c5bf0..1d02606 100644 (file)
@@ -1605,7 +1605,7 @@ carp_iamatch(const struct in_ifaddr *ia)
 {
        const struct carp_softc *sc = ia->ia_ifp->if_softc;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
 #ifdef notyet
        if (carp_opts[CARPCTL_ARPBALANCE])
@@ -3081,7 +3081,7 @@ carp_ifaddr(void *arg __unused, struct ifnet *ifp,
        if (ifa->ifa_addr->sa_family != AF_INET)
                return;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        if (ifp->if_type == IFT_CARP) {
                /*
index f428c37..273f172 100644 (file)
@@ -170,7 +170,7 @@ div_packet(struct mbuf *m, int incoming, int port)
        struct divert_info *divinfo;
        u_int16_t nport;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        /* Locate the divert info */
        mtag = m_tag_find(m, PACKET_TAG_IPFW_DIVERT, NULL);
@@ -324,7 +324,7 @@ div_output(struct socket *so, struct mbuf *m,
        struct m_tag *mtag;
        struct divert_info *divinfo;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        if (control)
                m_freem(control);               /* XXX */
@@ -387,7 +387,7 @@ div_attach(netmsg_t msg)
        struct inpcb *inp;
        int error;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        inp  = so->so_pcb;
        if (inp)
@@ -421,7 +421,7 @@ div_detach(netmsg_t msg)
        struct socket *so = msg->detach.base.nm_so;
        struct inpcb *inp;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        inp = so->so_pcb;
        if (inp == NULL)
@@ -446,7 +446,7 @@ div_disconnect(netmsg_t msg)
        struct socket *so = msg->disconnect.base.nm_so;
        int error;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        if (so->so_state & SS_ISCONNECTED) {
                soisdisconnected(so);
@@ -464,7 +464,7 @@ div_bind(netmsg_t msg)
        struct sockaddr *nam = msg->bind.nm_nam;
        int error;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        /*
         * in_pcbbind assumes that nam is a sockaddr_in
@@ -488,7 +488,7 @@ div_shutdown(netmsg_t msg)
 {
        struct socket *so = msg->shutdown.base.nm_so;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        socantsendmore(so);
 
index f92dc88..1e9c1b8 100644 (file)
@@ -200,7 +200,7 @@ ipflow_fastforward(struct mbuf *m)
        struct ifnet *ifp;
        int error, iplen;
 
-       ASSERT_NETISR_NCPUS(curthread, mycpuid);
+       ASSERT_NETISR_NCPUS(mycpuid);
 
        /*
         * Are we forwarding packets?
@@ -412,7 +412,7 @@ ipflow_timeo_dispatch(netmsg_t nmsg)
        struct ipflow_pcpu *pcpu;
        int cpuid = mycpuid;
 
-       ASSERT_NETISR_NCPUS(curthread, cpuid);
+       ASSERT_NETISR_NCPUS(cpuid);
 
        crit_enter();
        lwkt_replymsg(&nmsg->lmsg, 0);  /* reply ASAP */
@@ -455,7 +455,7 @@ ipflow_create(const struct route *ro, struct mbuf *m)
        struct ipflow *ipf;
        unsigned hash;
 
-       ASSERT_NETISR_NCPUS(curthread, mycpuid);
+       ASSERT_NETISR_NCPUS(mycpuid);
 
        /*
         * Don't create cache entries for ICMP messages.
index d49609e..58d3508 100644 (file)
@@ -349,7 +349,7 @@ icmp_mtudisc_start(struct mbuf *m, int hlen, int proto)
 {
        struct netmsg_ctlinput *msg;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        icmp_mtudisc(m, hlen);
 
@@ -438,7 +438,7 @@ icmp_ctlinput_global_start(struct mbuf *m, int cmd, int hlen, int proto)
 {
        struct netmsg_ctlinput *msg;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
        KASSERT(ncpus > 1, ("there is only 1 cpu"));
 
        icmp_ctlinput(m, cmd, hlen);
@@ -565,7 +565,7 @@ icmp_redirect_start(struct mbuf *m, int hlen, int proto)
 {
        struct netmsg_ctlinput *msg;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        icmp_redirect(m, hlen, TRUE);
 
@@ -603,7 +603,7 @@ icmp_input(struct mbuf **mp, int *offp, int proto)
        int i, hlen;
        int code;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        *mp = NULL;
        hlen = *offp;
index c7b7f46..fdd9765 100644 (file)
@@ -477,7 +477,7 @@ ip_input(struct mbuf *m)
        int error;
 #endif
 
-       ASSERT_NETISR_NCPUS(curthread, mycpuid);
+       ASSERT_NETISR_NCPUS(mycpuid);
        M_ASSERTPKTHDR(m);
 
        /*
@@ -1469,7 +1469,7 @@ ipfrag_drain(void)
        CPUMASK_ASSBMASK(mask, netisr_ncpus);
        CPUMASK_ANDMASK(mask, smp_active_mask);
 
-       if (mycpuid < netisr_ncpus && IS_NETISR(curthread, mycpuid)) {
+       if (IN_NETISR_NCPUS(mycpuid)) {
                ipfrag_drain_oncpu(&ipfrag_queue_pcpu[mycpuid]);
                CPUMASK_NANDBIT(mask, mycpuid);
        }
index 5e58df3..6068c01 100644 (file)
@@ -213,7 +213,7 @@ ip_output(struct mbuf *m0, struct mbuf *opt, struct route *ro,
        struct sockaddr_in *next_hop = NULL;
        int src_was_INADDR_ANY = 0;     /* as the name says... */
 
-       ASSERT_NETISR_NCPUS(curthread, mycpuid);
+       ASSERT_NETISR_NCPUS(mycpuid);
 
        m = m0;
        M_ASSERTPKTHDR(m);
index db5f990..3b4a463 100644 (file)
@@ -157,7 +157,7 @@ rip_input(struct mbuf **mp, int *offp, int proto)
        struct inpcb *last = NULL;
        struct mbuf *opts = NULL;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        *mp = NULL;
 
@@ -272,7 +272,7 @@ rip_output(struct mbuf *m, struct socket *so, ...)
        int flags = (so->so_options & SO_DONTROUTE) | IP_ALLOWBROADCAST;
        u_long dst;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        __va_start(ap, so);
        dst = __va_arg(ap, u_long);
@@ -351,7 +351,7 @@ rip_ctloutput(netmsg_t msg)
        struct  inpcb *inp = so->so_pcb;
        int     error, optval;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        error = 0;
 
@@ -511,7 +511,7 @@ rip_ctlinput(netmsg_t msg)
        int err;
        int flags;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        switch (cmd) {
        case PRC_IFDOWN:
@@ -589,7 +589,7 @@ rip_attach(netmsg_t msg)
        struct inpcb *inp;
        int error;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        inp = so->so_pcb;
        if (inp)
@@ -618,7 +618,7 @@ rip_detach(netmsg_t msg)
        struct socket *so = msg->base.nm_so;
        struct inpcb *inp;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        inp = so->so_pcb;
        if (inp == NULL)
@@ -649,7 +649,7 @@ rip_disconnect(netmsg_t msg)
        struct socket *so = msg->base.nm_so;
        int error;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        if (so->so_state & SS_ISCONNECTED) {
                soisdisconnected(so);
@@ -669,7 +669,7 @@ rip_bind(netmsg_t msg)
        struct sockaddr_in *addr = (struct sockaddr_in *)nam;
        int error;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        if (nam->sa_len == sizeof(*addr)) {
                if (ifnet_array_isempty() ||
@@ -697,7 +697,7 @@ rip_connect(netmsg_t msg)
        struct sockaddr_in *addr = (struct sockaddr_in *)nam;
        int error;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        if (nam->sa_len != sizeof(*addr)) {
                error = EINVAL;
@@ -719,7 +719,7 @@ rip_connect(netmsg_t msg)
 static void
 rip_shutdown(netmsg_t msg)
 {
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        socantsendmore(msg->base.nm_so);
        lwkt_replymsg(&msg->lmsg, 0);
@@ -737,7 +737,7 @@ rip_send(netmsg_t msg)
        u_long dst;
        int error;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        if (so->so_state & SS_ISCONNECTED) {
                if (nam) {
index da9ead0..5f43758 100644 (file)
@@ -877,7 +877,7 @@ tcp_close(struct tcpcb *tp)
                 * Currently the inheritance could only happen on the
                 * listen(2) sockets w/ SO_REUSEPORT set.
                 */
-               ASSERT_IN_NETISR(0);
+               ASSERT_NETISR0;
                inp_inh = in_pcblocalgroup_last(&tcbinfo[0], inp);
                if (inp_inh != NULL)
                        tp_inh = intotcpcb(inp_inh);
@@ -905,7 +905,7 @@ tcp_close(struct tcpcb *tp)
                struct netmsg_listen_detach nmsg;
 
                KKASSERT(so->so_port == netisr_cpuport(0));
-               ASSERT_IN_NETISR(0);
+               ASSERT_NETISR0;
                KKASSERT(inp->inp_pcbinfo == &tcbinfo[0]);
 
                netmsg_init(&nmsg.base, NULL, &curthread->td_msgport,
@@ -1103,7 +1103,7 @@ tcp_drain_oncpu(struct inpcbinfo *pcbinfo)
         * we block during the inpcb list iteration, i.e.
         * we don't need to use inpcb marker here.
         */
-       ASSERT_NETISR_NCPUS(curthread, pcbinfo->cpu);
+       ASSERT_NETISR_NCPUS(pcbinfo->cpu);
 
        LIST_FOREACH(inpb, head, inp_list) {
                struct tcpcb *tcpb;
@@ -1166,7 +1166,7 @@ tcp_drain(void)
        CPUMASK_ANDMASK(mask, smp_active_mask);
 
        cpu = mycpuid;
-       if (cpu < netisr_ncpus && IS_NETISR(curthread, cpu)) {
+       if (IN_NETISR_NCPUS(cpu)) {
                tcp_drain_oncpu(&tcbinfo[mycpuid]);
                CPUMASK_NANDBIT(mask, cpu);
        }
@@ -1533,7 +1533,7 @@ tcp_ctlinput(netmsg_t msg)
        } else {
                struct netmsg_tcp_notify *nm;
 
-               ASSERT_IN_NETISR(0);
+               ASSERT_NETISR0;
                nm = kmalloc(sizeof(*nm), M_LWKTMSG, M_INTWAIT);
                netmsg_init(&nm->base, NULL, &netisr_afree_rport,
                            0, tcp_notifyall_oncpu);
index de9de07..c48a742 100644 (file)
@@ -552,7 +552,7 @@ tcp6_usr_listen(netmsg_t msg)
                 * Put this inpcb into wildcard hash on other cpus.
                 */
                KKASSERT(so->so_port == netisr_cpuport(0));
-               ASSERT_IN_NETISR(0);
+               ASSERT_NETISR0;
                KKASSERT(inp->inp_pcbinfo == &tcbinfo[0]);
                ASSERT_INP_NOTINHASH(inp);
 
index 44401dd..9031230 100644 (file)
@@ -316,7 +316,7 @@ check_multicast_membership(const struct ip *ip, const struct inpcb *inp,
                return (0);
        }
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        mopt = inp->inp_moptions;
        if (mopt == NULL)
@@ -832,7 +832,7 @@ udp_ctlinput(netmsg_t msg)
        } else {
                struct netmsg_udp_notify *nm;
 
-               ASSERT_IN_NETISR(0);
+               ASSERT_NETISR0;
                nm = kmalloc(sizeof(*nm), M_LWKTMSG, M_INTWAIT);
                netmsg_init(&nm->base, NULL, &netisr_afree_rport,
                            0, udp_notifyall_oncpu);
index 4c5efa9..f4376d0 100644 (file)
@@ -620,7 +620,7 @@ frag6_slowtimo_dispatch(netmsg_t nmsg)
 {
        struct ip6q *q6;
 
-       ASSERT_NETISR_NCPUS(curthread, 0);
+       ASSERT_NETISR0;
 
        /* Reply ASAP. */
        crit_enter();
@@ -690,7 +690,7 @@ static void
 frag6_drain_oncpu(void)
 {
 
-       ASSERT_NETISR_NCPUS(curthread, 0);
+       ASSERT_NETISR0;
 
        if (frag6_doing_reass)
                return;
@@ -705,7 +705,7 @@ static void
 frag6_drain_dispatch(netmsg_t nmsg)
 {
 
-       ASSERT_NETISR_NCPUS(curthread, 0);
+       ASSERT_NETISR0;
 
        crit_enter();
        netisr_replymsg(&nmsg->base, 0);
@@ -732,7 +732,7 @@ void
 frag6_drain(void)
 {
 
-       if (IS_NETISR(curthread, 0)) {
+       if (IN_NETISR(0)) {
                frag6_drain_oncpu();
                return;
        }
index b0e6084..6668856 100644 (file)
@@ -2140,7 +2140,7 @@ static void
 icmp6_fasttimo_dispatch(netmsg_t nmsg)
 {
 
-       ASSERT_NETISR_NCPUS(curthread, 0);
+       ASSERT_NETISR0;
 
        /* Reply ASAP. */
        crit_enter();
index b67e309..f1a5858 100644 (file)
@@ -2388,13 +2388,12 @@ in6_ifawithifp(struct ifnet *ifp, struct in6_addr *dst)
 static void
 in6_if_up_dispatch(netmsg_t nmsg)
 {
-       struct lwkt_msg *lmsg = &nmsg->lmsg;
-       struct ifnet *ifp = lmsg->u.ms_resultp;
+       struct ifnet *ifp = nmsg->lmsg.u.ms_resultp;
        struct ifaddr_container *ifac;
        struct in6_ifaddr *ia;
        int dad_delay;          /* delay ticks before DAD output */
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        /*
         * special cases, like 6to4, are handled in in6_ifattach
@@ -2412,20 +2411,17 @@ in6_if_up_dispatch(netmsg_t nmsg)
                        nd6_dad_start(ifa, &dad_delay);
        }
 
-       lwkt_replymsg(lmsg, 0);
+       netisr_replymsg(&nmsg->base, 0);
 }
 
 void
 in6_if_up(struct ifnet *ifp)
 {
        struct netmsg_base nmsg;
-       struct lwkt_msg *lmsg = &nmsg.lmsg;
-
-       ASSERT_CANDOMSG_NETISR0(curthread);
 
        netmsg_init(&nmsg, NULL, &curthread->td_msgport, 0, in6_if_up_dispatch);
-       lmsg->u.ms_resultp = ifp;
-       lwkt_domsg(netisr_cpuport(0), lmsg, 0);
+       nmsg.lmsg.u.ms_resultp = ifp;
+       netisr_domsg(&nmsg, 0);
 }
 
 int
@@ -2475,7 +2471,7 @@ in6_setmaxmtu(void)
        const struct ifnet_array *arr;
        int i;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        arr = ifnet_array_get();
        for (i = 0; i < arr->ifnet_count; ++i) {
index 2e547be..1a239c5 100644 (file)
@@ -827,7 +827,7 @@ in6_ifdetach_dispatch(netmsg_t nmsg)
        struct sockaddr_in6 sin6;
        struct in6_multi *in6m, *in6m_next;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        /* remove neighbor management table */
        nd6_purge(ifp);
@@ -944,7 +944,7 @@ in6_tmpaddrtimer_dispatch(netmsg_t nmsg)
        u_int8_t nullbuf[8];
        int i;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        crit_enter();
        lwkt_replymsg(&nmsg->lmsg, 0);  /* reply ASAP */
index 05e1502..3c2bac5 100644 (file)
@@ -716,7 +716,7 @@ in6_pcbpurgeif0(struct inpcbinfo *pcbinfo, struct ifnet *ifp)
         * In this case, the pcbinfo must be able to be shared, i.e.
         * pcbinfo->infotoken is not NULL.
         */
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
        KASSERT(pcbinfo->cpu == 0 || pcbinfo->infotoken != NULL,
            ("pcbinfo could not be shared"));
 
index 8da2b24..f371e47 100644 (file)
@@ -409,7 +409,7 @@ ip6_mrouter_init(struct socket *so, struct mbuf *m, int cmd)
 {
        int *v;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
 #ifdef MRT6DEBUG
        if (mrt6debug)
@@ -469,7 +469,7 @@ ip6_mrouter_done(void)
        struct rtdetq *rte;
        struct lwkt_msg *lmsg = &expire_upcalls_nmsg.lmsg;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        if (ip6_mrouter == NULL)
                return EINVAL;
@@ -1208,7 +1208,7 @@ expire_upcalls_dispatch(netmsg_t nmsg)
        struct mf6c *mfc, **nptr;
        int i;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        /* Reply ASAP */
        crit_enter();
index 11b2220..ffbc766 100644 (file)
@@ -410,7 +410,7 @@ nd6_timer_dispatch(netmsg_t nmsg)
        struct ifnet *ifp;
        struct in6_ifaddr *ia6, *nia6;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        crit_enter();
        lwkt_replymsg(&nmsg->lmsg, 0);  /* reply ASAP */
@@ -1805,7 +1805,7 @@ nd6_slowtimo_dispatch(netmsg_t nmsg)
        struct nd_ifinfo *nd6if;
        int i;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        crit_enter();
        lwkt_replymsg(&nmsg->lmsg, 0);  /* reply ASAP */
index 73072d3..0373aa7 100644 (file)
@@ -1061,7 +1061,7 @@ nd6_dad_find(struct ifaddr *ifa)
 {
        struct dadq *dp;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        TAILQ_FOREACH(dp, &dadq, dad_list) {
                if (dp->dad_ifa == ifa)
@@ -1073,14 +1073,14 @@ nd6_dad_find(struct ifaddr *ifa)
 static void
 nd6_dad_starttimer(struct dadq *dp, int ticks)
 {
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
        callout_reset(&dp->dad_timer_ch, ticks, nd6_dad_timer, dp);
 }
 
 static void
 nd6_dad_stoptimer(struct dadq *dp)
 {
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
        callout_stop(&dp->dad_timer_ch);
 }
 
@@ -1094,7 +1094,7 @@ nd6_dad_start(struct ifaddr *ifa,
        struct in6_ifaddr *ia = (struct in6_ifaddr *)ifa;
        struct dadq *dp;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        /*
         * If we don't need DAD, don't do it.
@@ -1161,7 +1161,7 @@ nd6_dad_stop(struct ifaddr *ifa)
 {
        struct dadq *dp;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        dp = nd6_dad_find(ifa);
        if (!dp) {
@@ -1177,7 +1177,7 @@ nd6_dad_create(struct ifaddr *ifa)
        struct netmsg_dad *dm;
        struct dadq *dp;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        dp = kmalloc(sizeof(*dp), M_IP6NDP, M_INTWAIT | M_ZERO);
        callout_init_mp(&dp->dad_timer_ch);
@@ -1203,7 +1203,7 @@ nd6_dad_destroy(struct dadq *dp)
 {
        struct lwkt_msg *lmsg = &dp->dad_nmsg.base.lmsg;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        TAILQ_REMOVE(&dadq, dp, dad_list);
 
@@ -1240,7 +1240,7 @@ nd6_dad_timer_handler(netmsg_t msg)
        struct ifaddr *ifa = dp->dad_ifa;
        struct in6_ifaddr *ia = (struct in6_ifaddr *)ifa;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        /* Reply ASAP */
        crit_enter();
@@ -1352,7 +1352,7 @@ nd6_dad_duplicated(struct ifaddr *ifa)
        struct in6_ifaddr *ia = (struct in6_ifaddr *)ifa;
        struct dadq *dp;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        dp = nd6_dad_find(ifa);
        if (dp == NULL) {
@@ -1385,7 +1385,7 @@ nd6_dad_ns_output(struct dadq *dp)
        struct in6_ifaddr *ia = (struct in6_ifaddr *)dp->dad_ifa;
        struct ifnet *ifp = dp->dad_ifa->ifa_ifp;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        dp->dad_ns_tcount++;
        if (!(ifp->if_flags & IFF_UP)) {
@@ -1413,7 +1413,7 @@ nd6_dad_ns_input(struct ifaddr *ifa)
        struct dadq *dp;
        int duplicate;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        if (!ifa)
                panic("ifa == NULL in nd6_dad_ns_input");
@@ -1459,7 +1459,7 @@ nd6_dad_na_input(struct ifaddr *ifa)
 {
        struct dadq *dp;
 
-       ASSERT_IN_NETISR(0);
+       ASSERT_NETISR0;
 
        if (!ifa)
                panic("ifa == NULL in nd6_dad_na_input");