svn commit: r202569 - user/luigi/ipfw3-head/sys/netinet/ipfw

Luigi Rizzo luigi at FreeBSD.org
Mon Jan 18 12:52:42 UTC 2010


Author: luigi
Date: Mon Jan 18 12:52:42 2010
New Revision: 202569
URL: http://svn.freebsd.org/changeset/base/202569

Log:
  small indentation fixes.
  Also indicate where scheduler-specific info could go in the flowset.

Modified:
  user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dn_private.h

Modified: user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dn_private.h
==============================================================================
--- user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dn_private.h	Mon Jan 18 12:43:57 2010	(r202568)
+++ user/luigi/ipfw3-head/sys/netinet/ipfw/ip_dn_private.h	Mon Jan 18 12:52:42 2010	(r202569)
@@ -74,7 +74,7 @@ struct dn_parms {
 
 	/* timekeeping */
 	struct timeval prev_t;		/* last time dummynet_tick ran */
-	struct dn_heap	evheap;	/* scheduled events */
+	struct dn_heap	evheap;		/* scheduled events */
 
 	/* counters of objects -- used for reporting space */
 	int	schk_count;
@@ -124,6 +124,9 @@ struct delay_line {
  * When we remove a flowset, mark as DN_DELETE so it can go away
  * when the hash table will be empty.
  * XXX refcnt is redundant, the info is already in qht->entries
+ * If we want to add scheduler-specific parameters, we need to
+ * put them in external storage because the scheduler may not be
+ * available when the fsk is created.
  */
 struct new_fsk { /* kernel side of a flowset */
 	struct new_fs fs;
@@ -131,10 +134,13 @@ struct new_fsk { /* kernel side of a flo
 	int kflags;			/* kernel-side flags */
 	int refcnt;		/* entries in qht */
 
-	/* hash table of queues, or just our queue if we have no mask */
+	/* hash table of queues. XXX if we have no flow_mask we could
+	 * avoid the hash table and just allocate one queue.
+	 */
 	struct dn_ht	*qht;
 	struct new_schk *sched;		/* Sched we are linked to */
 	SLIST_ENTRY(new_fsk) sch_chain;	/* list of fsk attached to sched */
+	void *sched_info;	/* scheduler-specific info */
 };
 
 /*
@@ -178,7 +184,6 @@ struct new_schk {
 
 	/* Hash table of all instances (through sched_mask) */
 	struct dn_ht	*siht;
-
 };
 
 
@@ -191,25 +196,25 @@ struct new_sch_inst {
 	struct new_inst ni;	/* oid, id and stats */
 	SLIST_ENTRY(new_sch_inst) si_next; /* next item in the bucket */
 	struct delay_line dline;
-	struct new_schk *sched;		/* the template */
+	struct new_schk *sched;	/* the template */
 	int kflags;		/* DN_ACTIVE */
 
-	int64_t credit;       /* bits I can transmit (more or less). */
-	dn_key sched_time ;     /* time pipe was scheduled in ready_heap */
-	dn_key idle_time;       /* start of scheduler instance idle time */
+	int64_t credit;		/* bits I can transmit (more or less). */
+	dn_key sched_time;	/* time pipe was scheduled in ready_heap */
+	dn_key idle_time;	/* start of scheduler instance idle time */
 };
 
 /* kernel-side flags */
 enum {
-    DN_DELETE	= 0x0004, /* destroy when refcnt=0 */
-    DN_ACTIVE	= 0x0010, /* object is in evheap */
-    DN_F_DLINE	= 0x0020, /* object is a delay line */
-    DN_F_SCHI	= 0x0030, /* object is a sched.instance */
+	DN_DELETE	= 0x0004, /* destroy when refcnt=0 */
+	DN_ACTIVE	= 0x0010, /* object is in evheap */
+	DN_F_DLINE	= 0x0020, /* object is a delay line */
+	DN_F_SCHI	= 0x0030, /* object is a sched.instance */
 };
 
 extern struct dn_parms dn_cfg;
 
-int     dummynet_io(struct mbuf **, int , struct ip_fw_args *);
+int dummynet_io(struct mbuf **, int , struct ip_fw_args *);
 void dummynet_task(void *context, int pending);
 void dn_reschedule(void);
 


More information about the svn-src-user mailing list