summaryrefslogtreecommitdiffstats
path: root/sys/net
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2011-01-06 22:17:07 +0000
committerjhb <jhb@FreeBSD.org>2011-01-06 22:17:07 +0000
commit3a7fd5f8c7bf1c040291ae6d1a90a9a7c363a513 (patch)
tree9031a9c78e338599bd4d4d7341d28ed8ade3ee19 /sys/net
parenta01b1931011406544d31f1736593d077f36df9bd (diff)
downloadFreeBSD-src-3a7fd5f8c7bf1c040291ae6d1a90a9a7c363a513.zip
FreeBSD-src-3a7fd5f8c7bf1c040291ae6d1a90a9a7c363a513.tar.gz
- Restore dropping the priority of syncer down to PPAUSE when it is idle.
This was lost when it was converted to using a condition variable instead of lbolt. - Drop the priority of flowtable down to PPAUSE when it is idle as well since it is a similar background task. MFC after: 2 weeks
Diffstat (limited to 'sys/net')
-rw-r--r--sys/net/flowtable.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/net/flowtable.c b/sys/net/flowtable.c
index 1ba07f9..198c4c3 100644
--- a/sys/net/flowtable.c
+++ b/sys/net/flowtable.c
@@ -1549,9 +1549,11 @@ static void
flowtable_cleaner(void)
{
VNET_ITERATOR_DECL(vnet_iter);
+ struct thread *td;
if (bootverbose)
log(LOG_INFO, "flowtable cleaner started\n");
+ td = curthread;
while (1) {
VNET_LIST_RLOCK();
VNET_FOREACH(vnet_iter) {
@@ -1566,6 +1568,9 @@ flowtable_cleaner(void)
* is arbitrary
*/
mtx_lock(&flowclean_lock);
+ thread_lock(td);
+ sched_prio(td, PPAUSE);
+ thread_unlock(td);
flowclean_cycles++;
cv_broadcast(&flowclean_f_cv);
cv_timedwait(&flowclean_c_cv, &flowclean_lock, flowclean_freq);
OpenPOWER on IntegriCloud