• Home
  • Raw
  • Download

Lines Matching refs:shaper

114 netshaper_destroy( NetShaper  shaper )  in netshaper_destroy()  argument
116 if (shaper) { in netshaper_destroy()
117 shaper->active = 0; in netshaper_destroy()
119 while (shaper->packets) { in netshaper_destroy()
120 QueuedPacket packet = shaper->packets; in netshaper_destroy()
121 shaper->packets = packet->next; in netshaper_destroy()
126 qemu_del_timer(shaper->timer); in netshaper_destroy()
127 qemu_free_timer(shaper->timer); in netshaper_destroy()
128 shaper->timer = NULL; in netshaper_destroy()
129 qemu_free(shaper); in netshaper_destroy()
135 netshaper_expires( NetShaper shaper ) in netshaper_expires() argument
139 while ((packet = shaper->packets) != NULL) { in netshaper_expires()
145 shaper->packets = packet->next; in netshaper_expires()
146 shaper->send_func( packet->data, packet->size, packet->opaque ); in netshaper_expires()
148 shaper->num_packets--; in netshaper_expires()
152 if (shaper->packets) { in netshaper_expires()
153 shaper->block_until = shaper->packets->expiration; in netshaper_expires()
154 qemu_mod_timer( shaper->timer, shaper->block_until ); in netshaper_expires()
156 shaper->block_until = -1; in netshaper_expires()
165 NetShaper shaper = qemu_malloc(sizeof(*shaper)); in netshaper_create() local
167 shaper->active = 0; in netshaper_create()
168 shaper->packets = NULL; in netshaper_create()
169 shaper->num_packets = 0; in netshaper_create()
170 shaper->timer = qemu_new_timer_ms( SHAPER_CLOCK, in netshaper_create()
172 shaper ); in netshaper_create()
173 shaper->send_func = send_func; in netshaper_create()
174 shaper->max_rate = 1e6; in netshaper_create()
175 shaper->inv_rate = 0.; in netshaper_create()
177 shaper->block_until = -1; /* magic value, means to not block */ in netshaper_create()
179 return shaper; in netshaper_create()
183 netshaper_set_rate( NetShaper shaper, in netshaper_set_rate() argument
187 while (shaper->packets) { in netshaper_set_rate()
188 QueuedPacket packet = shaper->packets; in netshaper_set_rate()
189 shaper->packets = packet->next; in netshaper_set_rate()
190 shaper->send_func(packet->data, packet->size, packet->opaque); in netshaper_set_rate()
192 shaper->num_packets = 0; in netshaper_set_rate()
195 shaper->max_rate = rate; in netshaper_set_rate()
197 shaper->inv_rate = (8.*SHAPER_CLOCK_UNIT)/rate; /* qemu_get_clock returns time in ms */ in netshaper_set_rate()
198 shaper->active = 1; /* for the real-time clock */ in netshaper_set_rate()
200 shaper->active = 0; in netshaper_set_rate()
203 shaper->block_until = -1; in netshaper_set_rate()
207 netshaper_send_aux( NetShaper shaper, in netshaper_send_aux() argument
214 if (!shaper->active || _packet_is_internal(data, size)) { in netshaper_send_aux()
215 shaper->send_func( data, size, opaque ); in netshaper_send_aux()
220 if (now >= shaper->block_until) { in netshaper_send_aux()
221 shaper->send_func( data, size, opaque ); in netshaper_send_aux()
222 shaper->block_until = now + size*shaper->inv_rate; in netshaper_send_aux()
231 packet = queued_packet_create( data, size, opaque, shaper->do_copy ); in netshaper_send_aux()
233 packet->expiration = shaper->block_until; in netshaper_send_aux()
238 pnode = &shaper->packets; in netshaper_send_aux()
248 if (packet == shaper->packets) in netshaper_send_aux()
249 qemu_mod_timer( shaper->timer, packet->expiration ); in netshaper_send_aux()
251 shaper->num_packets += 1; in netshaper_send_aux()
253 shaper->block_until += size*shaper->inv_rate; in netshaper_send_aux()
258 netshaper_send( NetShaper shaper, in netshaper_send() argument
262 netshaper_send_aux(shaper, data, size, NULL); in netshaper_send()
267 netshaper_can_send( NetShaper shaper ) in netshaper_can_send() argument
271 if (!shaper->active || shaper->block_until < 0) in netshaper_can_send()
274 if (shaper->packets) in netshaper_can_send()
278 return (now >= shaper->block_until); in netshaper_can_send()