Page MenuHomeFreeBSD

D34059.diff
No OneTemporary

D34059.diff

diff --git a/sys/netpfil/ipfw/dn_aqm_pie.c b/sys/netpfil/ipfw/dn_aqm_pie.c
--- a/sys/netpfil/ipfw/dn_aqm_pie.c
+++ b/sys/netpfil/ipfw/dn_aqm_pie.c
@@ -597,8 +597,10 @@
}
pst = q->aqm_status;
+ dummynet_sched_lock();
/* increase reference count for PIE module */
pie_desc.ref_count++;
+ dummynet_sched_unlock();
pst->pq = q;
pst->parms = pprms;
@@ -632,9 +634,9 @@
mtx_unlock(&pst->lock_mtx);
mtx_destroy(&pst->lock_mtx);
free(x, M_DUMMYNET);
- DN_BH_WLOCK();
+ dummynet_sched_lock();
pie_desc.ref_count--;
- DN_BH_WUNLOCK();
+ dummynet_sched_unlock();
}
/*
diff --git a/sys/netpfil/ipfw/dn_sched_fq_pie.c b/sys/netpfil/ipfw/dn_sched_fq_pie.c
--- a/sys/netpfil/ipfw/dn_sched_fq_pie.c
+++ b/sys/netpfil/ipfw/dn_sched_fq_pie.c
@@ -581,7 +581,7 @@
mtx_destroy(&pst->lock_mtx);
psi_extra = q->psi_extra;
- DN_BH_WLOCK();
+ dummynet_sched_lock();
psi_extra->nr_active_q--;
/* when all sub-queues are destroyed, free flows fq_pie extra vars memory */
@@ -590,7 +590,7 @@
free(psi_extra, M_DUMMYNET);
fq_pie_desc.ref_count--;
}
- DN_BH_WUNLOCK();
+ dummynet_sched_unlock();
}
/*
@@ -1061,7 +1061,9 @@
pie_init(&flows[i], schk);
}
+ dummynet_sched_lock();
fq_pie_desc.ref_count++;
+ dummynet_sched_unlock();
return 0;
}
diff --git a/sys/netpfil/ipfw/ip_dn_private.h b/sys/netpfil/ipfw/ip_dn_private.h
--- a/sys/netpfil/ipfw/ip_dn_private.h
+++ b/sys/netpfil/ipfw/ip_dn_private.h
@@ -399,6 +399,8 @@
#define V_dn_cfg VNET(dn_cfg)
int dummynet_io(struct mbuf **, struct ip_fw_args *);
+void dummynet_sched_lock(void);
+void dummynet_sched_unlock(void);
void dummynet_task(void *context, int pending);
void dn_reschedule(void);
struct dn_pkt_tag * dn_tag_get(struct mbuf *m);
diff --git a/sys/netpfil/ipfw/ip_dummynet.c b/sys/netpfil/ipfw/ip_dummynet.c
--- a/sys/netpfil/ipfw/ip_dummynet.c
+++ b/sys/netpfil/ipfw/ip_dummynet.c
@@ -109,6 +109,18 @@
taskqueue_enqueue(dn_tq, &dn_task);
}
+void
+dummynet_sched_lock(void)
+{
+ mtx_lock(&sched_mtx);
+}
+
+void
+dummynet_sched_unlock(void)
+{
+ mtx_unlock(&sched_mtx);
+}
+
void
dn_reschedule(void)
{

File Metadata

Mime Type
text/plain
Expires
Fri, Feb 7, 9:50 PM (21 h, 8 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16517092
Default Alt Text
D34059.diff (2 KB)

Event Timeline