From f63af0804b1d54b033d8c0377f4e248179bb38c7 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Mon, 3 Apr 2017 22:34:34 +0800 Subject: [PATCH] net: Get rid of ifnet threads. --- sys/net/if.c | 57 -------------------------------------------------------- sys/net/if_var.h | 5 ----- sys/net/netisr.c | 3 ++- sys/net/netisr.h | 1 - 4 files changed, 2 insertions(+), 64 deletions(-) diff --git a/sys/net/if.c b/sys/net/if.c index c32f331c2d..a67a82a23a 100644 --- a/sys/net/if.c +++ b/sys/net/if.c @@ -162,7 +162,6 @@ static struct netmsg_base if_slowtimo_netmsg; int if_index = 0; struct ifnet **ifindex2ifnet = NULL; -static struct thread *ifnet_threads[MAXCPU]; static struct mtx ifnet_mtx = MTX_INITIALIZER("ifnet"); static struct ifsubq_stage_head ifsubq_stage_heads[MAXCPU]; @@ -3223,52 +3222,6 @@ ifa_destroy(struct ifaddr *ifa) netisr_domsg(&msg.base, 0); } -struct lwkt_port * -ifnet_portfn(int cpu) -{ - return &ifnet_threads[cpu]->td_msgport; -} - -void -ifnet_forwardmsg(struct lwkt_msg *lmsg, int next_cpu) -{ - KKASSERT(next_cpu > mycpuid && next_cpu <= ncpus); - - if (next_cpu < ncpus) - lwkt_forwardmsg(ifnet_portfn(next_cpu), lmsg); - else - lwkt_replymsg(lmsg, 0); -} - -int -ifnet_domsg(struct lwkt_msg *lmsg, int cpu) -{ - KKASSERT(cpu < ncpus); - return lwkt_domsg(ifnet_portfn(cpu), lmsg, 0); -} - -void -ifnet_sendmsg(struct lwkt_msg *lmsg, int cpu) -{ - KKASSERT(cpu < ncpus); - lwkt_sendmsg(ifnet_portfn(cpu), lmsg); -} - -/* - * Generic netmsg service loop. Some protocols may roll their own but all - * must do the basic command dispatch function call done here. - */ -static void -ifnet_service_loop(void *arg __unused) -{ - netmsg_t msg; - - while ((msg = lwkt_waitport(&curthread->td_msgport, 0))) { - KASSERT(msg->base.nm_dispatch, ("ifnet_service: badmsg")); - msg->base.nm_dispatch(msg); - } -} - static void if_start_rollup(void) { @@ -3316,16 +3269,6 @@ ifnetinit(void *dummy __unused) { int i; - for (i = 0; i < ncpus; ++i) { - struct thread **thr = &ifnet_threads[i]; - - lwkt_create(ifnet_service_loop, NULL, thr, NULL, - TDF_NOSTART|TDF_FORCE_SPINPORT|TDF_FIXEDCPU, - i, "ifnet %d", i); - netmsg_service_port_init(&(*thr)->td_msgport); - lwkt_schedule(*thr); - } - for (i = 0; i < ncpus; ++i) TAILQ_INIT(&ifsubq_stage_heads[i].stg_head); netisr_register_rollup(if_start_rollup, NETISR_ROLLUP_PRIO_IFSTART); diff --git a/sys/net/if_var.h b/sys/net/if_var.h index 06e38a1ea3..e1aaaba9a1 100644 --- a/sys/net/if_var.h +++ b/sys/net/if_var.h @@ -812,11 +812,6 @@ IFAFREE(struct ifaddr *_ifa) _IFAFREE(_ifa, mycpuid); } -struct lwkt_port *ifnet_portfn(int); -int ifnet_domsg(struct lwkt_msg *, int); -void ifnet_sendmsg(struct lwkt_msg *, int); -void ifnet_forwardmsg(struct lwkt_msg *, int); - static __inline void ifnet_serialize_array_enter(lwkt_serialize_t *_arr, int _arrcnt, enum ifnet_serialize _slz) diff --git a/sys/net/netisr.c b/sys/net/netisr.c index 25f645d289..694db45158 100644 --- a/sys/net/netisr.c +++ b/sys/net/netisr.c @@ -57,6 +57,7 @@ #include #include +static void netmsg_service_port_init(lwkt_port_t); static void netmsg_service_loop(void *arg); static void netisr_hashfn0(struct mbuf **mp, int hoff); static void netisr_nohashck(struct mbuf *, const struct pktinfo *); @@ -219,7 +220,7 @@ SYSINIT(netisr, SI_SUB_PRE_DRIVERS, SI_ORDER_FIRST, netisr_init, NULL); * registers the port for synchronous cleanup operations such as when an * ifnet is being destroyed. There is no deregistration API yet. */ -void +static void netmsg_service_port_init(lwkt_port_t port) { struct netmsg_port_registration *reg; diff --git a/sys/net/netisr.h b/sys/net/netisr.h index b2d7afed7a..fa6859cb84 100644 --- a/sys/net/netisr.h +++ b/sys/net/netisr.h @@ -172,7 +172,6 @@ struct netisr_barrier *netisr_barrier_create(void); void netisr_barrier_set(struct netisr_barrier *); void netisr_barrier_rem(struct netisr_barrier *); -void netmsg_service_port_init(lwkt_port_t); void netmsg_service_sync(void); void netmsg_sync_handler(netmsg_t); void schednetisr(int); -- 2.11.4.GIT