svn commit: r202088 - in user/luigi/ipfw3-head/sys: conf
modules/dummynet netinet/ipfw
Luigi Rizzo
luigi at FreeBSD.org
Mon Jan 11 16:31:30 UTC 2010
Author: luigi
Date: Mon Jan 11 16:31:29 2010
New Revision: 202088
URL: http://svn.freebsd.org/changeset/base/202088
Log:
add dn_sched_wf2q.c and glue for modules
Modified:
user/luigi/ipfw3-head/sys/conf/files
user/luigi/ipfw3-head/sys/modules/dummynet/Makefile
user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched.h
user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dn_io.c
Modified: user/luigi/ipfw3-head/sys/conf/files
==============================================================================
--- user/luigi/ipfw3-head/sys/conf/files Mon Jan 11 16:30:09 2010 (r202087)
+++ user/luigi/ipfw3-head/sys/conf/files Mon Jan 11 16:31:29 2010 (r202088)
@@ -2451,6 +2451,7 @@ netinet/in_rmx.c optional inet
netinet/ip_divert.c optional inet ipdivert ipfirewall
netinet/ipfw/dn_heap.c optional inet dummynet
netinet/ipfw/dn_sched_fifo.c optional inet dummynet
+netinet/ipfw/dn_sched_wf2q.c optional inet dummynet
netinet/ipfw/ip_dummynet.c optional inet dummynet
netinet/ipfw/ip_dn_io.c optional inet dummynet
netinet/ip_ecn.c optional inet | inet6
Modified: user/luigi/ipfw3-head/sys/modules/dummynet/Makefile
==============================================================================
--- user/luigi/ipfw3-head/sys/modules/dummynet/Makefile Mon Jan 11 16:30:09 2010 (r202087)
+++ user/luigi/ipfw3-head/sys/modules/dummynet/Makefile Mon Jan 11 16:31:29 2010 (r202088)
@@ -4,7 +4,7 @@
.PATH: ${.CURDIR}/../../netinet/ipfw
KMOD= dummynet
-SRCS= ip_dummynet.c
+SRCS= ip_dummynet.c ip_dn_io.c dn_sched_fifo.c dn_sched_wf2q.c
SRCS+= opt_inet6.h
.if !defined(KERNBUILDDIR)
Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched.h
==============================================================================
--- user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched.h Mon Jan 11 16:30:09 2010 (r202087)
+++ user/luigi/ipfw3-head/sys/netinet/ipfw/dn_sched.h Mon Jan 11 16:31:29 2010 (r202088)
@@ -43,7 +43,7 @@
struct dn_sched {
int type; /* the scheduler type */
const char *name; /* scheduler name */
- int ref_count; /* number of instances in the system */
+ int ref_count; /* XXX number of instances in the system */
/*
* The following define the size of 4 optional data structures
@@ -205,10 +205,11 @@ static __inline struct mbuf*
dn_return_packet(struct new_queue *q)
{
struct mbuf *m = q->mq.head;
+ KASSERT(m != NULL, ("empty queue to dn_return_packet"));
q->mq.head = m->m_nextpkt;
q->lenght--;
q->len_bytes -= m->m_pkthdr.len;
- if (q->mq.head == NULL && q->fs->kflags & DN_DELETE)
+ if (q->mq.head == NULL && q->fs && q->fs->kflags & DN_DELETE)
dn_delete_queue(q);
return m;
Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dn_io.c
==============================================================================
--- user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dn_io.c Mon Jan 11 16:30:09 2010 (r202087)
+++ user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dn_io.c Mon Jan 11 16:31:29 2010 (r202088)
@@ -85,7 +85,7 @@ struct dn_parms dn_cfg = {
.red_lookup_depth = 256, /* RED - default lookup table depth */
.red_avg_pkt_size = 512, /* RED - default medium packet size */
.red_max_pkt_size = 1500, /* RED - default max packet size */
- .hmask = (1<<4) - 1.
+ .hmask = (1<<4) - 1,
};
static long tick_last; /* Last tick duration (usec). */
@@ -317,6 +317,7 @@ extra_bits(struct mbuf *m, struct new_pi
return bits;
}
+#if 0
/* Insert packet pkt into delay line, adding the delay.
* dt->output_time was already set */
static void
@@ -327,6 +328,7 @@ move_pkt(struct mbuf *m, struct new_pipe
dt->output_time += p->delay ;
mq_append(&d->mq, m);
}
+#endif
/* Do masking depending of flow id */
static struct ipfw_flow_id *
@@ -441,7 +443,6 @@ create_si(struct new_schk *s, int slot)
int ret;
int l = sizeof(*si) + s->fp->sch_inst_len;
-printf("%s start slot %d\n", __FUNCTION__, slot);
si = malloc(l, M_DUMMYNET, M_NOWAIT | M_ZERO);
if (si == NULL)
@@ -484,7 +485,6 @@ find_sch_inst(struct new_schk *s, struct
int i;
struct ipfw_flow_id id_t;
-printf("%s start id %p\n", __FUNCTION__, id);
if ( 0 == (s->sch.flags & DN_HAVE_MASK) ) {
i = 0;
si = SLIST_FIRST(&s->ht[0]);
@@ -537,7 +537,8 @@ serve_sched(struct mq *q, struct new_sch
(m->m_pkthdr.len * 8 + extra_bits(m, &s->pipe));
si->credit -= len_scaled;
/* Move packet in the delay line */
- move_pkt(m, &s->pipe, &si->dline);
+ dn_tag_get(m)->output_time += s->pipe.delay ;
+ mq_append(&si->dline.mq, m);
}
if (si->credit >= 0) {
/* Instance is idle, because it did not return
@@ -551,7 +552,7 @@ serve_sched(struct mq *q, struct new_sch
* of the last packet, which is 'tosend'
*/
dn_key t;
- KASSERT (bw > 0, "bw=0 and credit<0 ?");
+ KASSERT (bw > 0, ("bw=0 and credit<0 ?"));
t = (bw - 1 - si->credit) / bw;
/* Delay output time because under credit */
if (m)
@@ -622,10 +623,8 @@ dummynet_task(void *context, int pending
p = HEAP_TOP(&dn_cfg.system_heap)->object;
heap_extract(&dn_cfg.system_heap, NULL);
} else {
- p = NULL;
- }
- if (p == NULL)
break;
+ }
if (p->type == DN_SCH_I) {
serve_sched(&q, (struct new_sch_inst *)p, curr_time);
@@ -823,7 +822,6 @@ dummynet_io(struct mbuf **m0, int dir, s
if (dn_cfg.io_fast && m == *m0 && (dir & PROTO_LAYER2) == 0 ) {
/* fast io */
io_pkt_fast++;
- printf("dummynet TEST: ** IOFAST **\n");
if (m->m_nextpkt != NULL) {
printf("dummynet: fast io: pkt chain detected!\n");
m->m_nextpkt = NULL;
More information about the svn-src-user
mailing list