Lines Matching full:si
116 idle_check(struct wf2qp_si *si, int n, int force) in idle_check() argument
118 struct dn_heap *h = &si->idle_heap; in idle_check()
120 (force || DN_KEY_LT(HEAP_TOP(h)->key, si->V))) { in idle_check()
129 si->wsum -= q->fs->fs.par[0]; /* adjust sum of weights */ in idle_check()
130 if (si->wsum > 0) in idle_check()
131 si->inv_wsum = ONE_FP/si->wsum; in idle_check()
139 struct wf2qp_si *si = (struct wf2qp_si *)(_si + 1); in wf2qp_enqueue() local
155 alg_fq->S = si->V; /* init start time */ in wf2qp_enqueue()
156 si->wsum += fs->fs.par[0]; /* add weight of new queue. */ in wf2qp_enqueue()
157 si->inv_wsum = ONE_FP/si->wsum; in wf2qp_enqueue()
159 if (! heap_extract(&si->idle_heap, q)) in wf2qp_enqueue()
161 alg_fq->S = MAX64(alg_fq->F, si->V); /* compute new S */ in wf2qp_enqueue()
166 if (si->ne_heap.elements == 0 && si->sch_heap.elements == 0) in wf2qp_enqueue()
167 si->V = MAX64(alg_fq->S, si->V); in wf2qp_enqueue()
180 if (DN_KEY_LT(si->V, alg_fq->S)) { in wf2qp_enqueue()
182 if (si->sch_heap.elements == 0) in wf2qp_enqueue()
184 heap_insert(&si->ne_heap, alg_fq->S, q); in wf2qp_enqueue()
186 heap_insert(&si->sch_heap, alg_fq->F, q); in wf2qp_enqueue()
196 struct wf2qp_si *si = (struct wf2qp_si *)(_si + 1); in wf2qp_dequeue() local
199 struct dn_heap *sch = &si->sch_heap; in wf2qp_dequeue()
200 struct dn_heap *neh = &si->ne_heap; in wf2qp_dequeue()
207 idle_check(si, 0x7fffffff, 1); in wf2qp_dequeue()
208 si->V = 0; in wf2qp_dequeue()
209 si->wsum = 0; /* should be set already */ in wf2qp_dequeue()
212 idle_check(si, 1, 0); /* drain something from the idle heap */ in wf2qp_dequeue()
231 si->V = MAX64(si->V, HEAP_TOP(neh)->key); in wf2qp_dequeue()
234 DN_KEY_LEQ(HEAP_TOP(neh)->key, si->V)) { in wf2qp_dequeue()
249 si->V += (uint64_t)(m->m_pkthdr.len) * si->inv_wsum; in wf2qp_dequeue()
252 heap_insert(&si->idle_heap, alg_fq->F, q); in wf2qp_dequeue()
257 if (DN_KEY_LEQ(alg_fq->S, si->V)) { in wf2qp_dequeue()
270 struct wf2qp_si *si = (struct wf2qp_si *)(_si + 1); in wf2qp_new_sched() local
274 if (heap_init(&si->idle_heap, 16, ofs) || in wf2qp_new_sched()
275 heap_init(&si->sch_heap, 16, ofs) || in wf2qp_new_sched()
276 heap_init(&si->ne_heap, 16, ofs)) { in wf2qp_new_sched()
277 heap_free(&si->ne_heap); in wf2qp_new_sched()
278 heap_free(&si->sch_heap); in wf2qp_new_sched()
279 heap_free(&si->idle_heap); in wf2qp_new_sched()
288 struct wf2qp_si *si = (struct wf2qp_si *)(_si + 1); in wf2qp_free_sched() local
290 heap_free(&si->sch_heap); in wf2qp_free_sched()
291 heap_free(&si->ne_heap); in wf2qp_free_sched()
292 heap_free(&si->idle_heap); in wf2qp_free_sched()
330 struct wf2qp_si *si = (struct wf2qp_si *)(q->_si + 1); in wf2qp_free_queue() local
334 si->wsum -= q->fs->fs.par[0]; in wf2qp_free_queue()
335 if (si->wsum > 0) in wf2qp_free_queue()
336 si->inv_wsum = ONE_FP/si->wsum; in wf2qp_free_queue()
341 heap_extract(&si->idle_heap, q); in wf2qp_free_queue()
342 heap_extract(&si->ne_heap, q); in wf2qp_free_queue()
343 heap_extract(&si->sch_heap, q); in wf2qp_free_queue()
358 /* we need extra space in the si and the queue */