Lines Matching +full:first +full:- +full:conversion +full:- +full:delay

36 ------------------------------
38 presumably in the rr_free_queue() call -- seems to hang
40 ------------------------------
59 selected through a mask on the 5-tuple itself.
70 ipfw queue 5 config sched 10 flow_mask src-ip 0x000000ff
71 ipfw sched 10 config type WF2Q+ sched_mask src-ip 0xffffff00
77 -----------------
78 Dummynet-related data is split into several data structures,
79 part of them constituting the userland-kernel API, and others
81 NOTE: for up-to-date details please look at the relevant source
84 USERLAND-KERNEL API (ip_dummynet.h)
88 bandwidth, delay, burst size;
93 buckets, queue size, plr, weight, and other scheduler-specific
103 buckets, and possibly other scheduler-specific parameters,
106 fields to simulate a delay profile
138 Contains a delay line, a reference to the parent, and scheduler-
139 specific info. Both dn_sch_inst and its delay line can be in the
156 +---------------+ sched +--------------+
157 | sched-------------------->| NEW_SCHK|
158 -<----*sch_chain |<-----------------*fsk_list |
159 |NEW_FSK |<----. | [dn_link] |
160 +---------------+ | +--------------+
165 | +--------+ | | | +---------+ |
167 | | fs *----------' | | | |
168 | | si *---------------------->| | |
169 | +---------+ | | +---------+ |
170 +---------------+ +--------------+
175 - schedhash[x]: contains all scheduler templates in the system.
181 - fshash[x]: contains all flowsets.
187 - fsu: contains flowset that are not linked with any scheduler.
193 Scheduler instances and the delay lines associated with each scheduler
202 -----
207 - sys/netpfil/ip_dummynet.h defines the kernel-userland API
208 - ip_dn_private.h contains the kernel-specific APIs
210 - dn_sched.h defines the scheduler API
211 - ip_dummynet.c cointains module glue and sockopt handlers, with all
213 - ip_dn_io.c contains the functions directly related to packet processing,
216 - dn_heap.[ch] implement a binary heap and a generic hash table
217 - dn_sched_* implement the various scheduler modules
219 - dummynet.c is the file used to implement the user side of dummynet.
233 - the 'busy' flag, 'pending' list and all structures modified by packet
236 functions for short sections of code (exception -- the timer).
241 - the 'busy' flag is set/cleared by long sections of code as follows:
250 - the main containers (fshash, schedhash, ...) are protected by
255 A packet enters dummynet through dummynet_io(). We first lookup
266 ---------------
277 The first dn_id must contain as obj.id the DN_API_VERSION
296 dn_fs N+2*NMAX --> dn_sch N+NMAX type FIFO --> dn_link N+NMAX
299 [dn_fs N+NMAX] --> dn_sch N --> dn_link N
303 DELAY PROFILE "pipe N config profile ..."
328 called every tick. This function first calculate the new current time, then
334 - scheduler instance: if a scheduler instance is waked up, the dequeue()
344 - delay line: when extracting a delay line, the function transmit_event() is
345 called to send out packet from delay line.
347 If the scheduler instance associated with this delay line doesn't exists,
348 the delay line will be delete now.
361 plus the delay profile struct if the pipe has a delay profile.
366 The first struct in the buffer contains the type of command request, that is
376 ----------
378 If the pipe already exists, parameters are updated. If a delay profile exists
386 ---------------
400 -------------
404 When adding a new flowset, first it is checked if the flowset exists (that is,
419 "ipfw [-v] pipe|queue [x] list|show"
445 ----------------
453 -------------------
458 If the flowset is in the flowset list, first we remove from it so new packet
475 ---------------------
480 To delete the scheduler, first we remove it from the scheduler list, so new
487 deleted calling the delete_scheduler_template(). If the delay line associate
520 - ip_dummynet_glue.c translates old dummynet requests to the new ones,
521 - ip_fw_glue.c converts the rule format between 7.2 and 8 versions.
525 ------------------
528 dummynet in FreeBSD 8 (the FreeBSD 8 version includes support to pipe delay
539 Because of in general the first action is a configuration, this variable is
540 usually set accordly. If the first action is a request of listing of pipes
546 - IP_DUMMYNET_FLUSH: the flush options have no parameter, so simply the
548 - IP_DUMMYNET_DEL: the delete option need to be translate.
552 - IP_DUMMYNET_CONFIGURE: the configure command receive a buffer depending of
556 not support some parameter as burst or delay profile.
557 - IP_DUMMYNET_GET: The get command should send to the ipfw the correct buffer
570 ------------
577 The conversion should be done when a rule passes from userspace to kernel space
582 - when a new rule is added (option IP_FW_ADD) the is7 variable is set if the
587 - when the user request a list of rules (option IP_FW_GET) the is7 variable
592 The conversion of a rule is quite simple. The only difference between the
608 - ipfw pipe x config ...
614 - ipfw queue y config pipe x ...
623 - ipfw pipe x config sched <type> ...
628 - ipfw pipe x delete
634 - ipfw queue x delete
637 - ipfw sched x delete ///XXX
641 - Ex1:
642 ipfw pipe 10 config bw 1M delay 15 // create a pipe with band and delay
649 - Ex2:
659 - Ex3:
667 - Ex4:
683 - A struct dn_sch_xyz (where xyz is the 'type' of scheduler algorithm
686 - A struct dn_sch_inst_xyz contains data relative to a single scheduler
732 It is important to embed the struct gen as first parameter. The struct gen
736 parameters in the first struct, and if memory allocation is done it is
779 - int (*config_scheduler)(char *command, void *sch, int reconfigure);
785 - int (*delete_scheduler_template)(void* sch);
788 - int (*create_scheduler_instance)(void *s);
793 - int (*delete_scheduler_instance)(void *s);
798 - int (*enqueue)(void *s, struct gen *f, struct mbuf *m,
807 - struct mbuf * (*dequeue)(void *s);
816 - int (*drain_queue)(void *s, int flag);
821 - int (*create_alg_fs)(char *command, struct gen *g, int reconfigure);
828 - int (*delete_alg_fs)(struct gen *f);
832 - int (*create_queue_alg)(struct dn_queue *q, struct gen *f);
835 - int (*delete_queue_alg)(struct dn_queue *q);
846 - create_scheduler_instance()
847 - enqueue()
848 - dequeue()
849 - create_alg_fs()
850 - drain_queue()
852 - config_scheduler()
853 - create_queue_alg()
855 - delete_scheduler_template()
856 - delete_scheduler_instance()
857 - delete_alg_fs()
858 - delete_queue_alg()