Lines Matching full:si
155 codel_drop_head(struct fq_codel_flow *q, struct fq_codel_si *si) in codel_drop_head() argument
163 fq_update_stats(q, si, -m->m_pkthdr.len, 1); in codel_drop_head()
165 if (si->main_q.ni.length == 0) /* queue is now idle */ in codel_drop_head()
166 si->main_q.q_time = V_dn_cfg.curr_time; in codel_drop_head()
175 codel_enqueue(struct fq_codel_flow *q, struct mbuf *m, struct fq_codel_si *si) in codel_enqueue() argument
199 fq_update_stats(q, si, len, 0); in codel_enqueue()
203 fq_update_stats(q, si, len, 1); in codel_enqueue()
215 fq_codel_classify_flow(struct mbuf *m, uint16_t fcount, struct fq_codel_si *si) in fq_codel_classify_flow() argument
232 *((uint32_t *) &tuple[1]) = si->perturbation; in fq_codel_classify_flow()
259 *((uint32_t *) &tuple[1]) = si->perturbation; in fq_codel_classify_flow()
291 struct fq_codel_si *si; in fq_codel_enqueue() local
298 si = (struct fq_codel_si *)_si; in fq_codel_enqueue()
299 schk = (struct fq_codel_schk *)(si->_si.sched+1); in fq_codel_enqueue()
303 idx = fq_codel_classify_flow(m, param->flows_cnt, si); in fq_codel_enqueue()
307 drop = codel_enqueue(&si->flows[idx], m, si); in fq_codel_enqueue()
316 if (!si->flows[idx].active ) { in fq_codel_enqueue()
317 STAILQ_INSERT_TAIL(&si->newflows, &si->flows[idx], flowchain); in fq_codel_enqueue()
318 si->flows[idx].deficit = param->quantum; in fq_codel_enqueue()
319 si->flows[idx].cst.dropping = false; in fq_codel_enqueue()
320 si->flows[idx].cst.first_above_time = 0; in fq_codel_enqueue()
321 si->flows[idx].active = 1; in fq_codel_enqueue()
331 if (si->flows[maxidx].active) in fq_codel_enqueue()
336 if (si->flows[i].active && si->flows[i].stats.length > in fq_codel_enqueue()
337 si->flows[maxidx].stats.length) in fq_codel_enqueue()
339 codel_drop_head(&si->flows[maxidx], si); in fq_codel_enqueue()
355 struct fq_codel_si *si; in fq_codel_dequeue() local
362 si = (struct fq_codel_si *)_si; in fq_codel_dequeue()
363 schk = (struct fq_codel_schk *)(si->_si.sched+1); in fq_codel_dequeue()
368 if (STAILQ_EMPTY(&si->newflows)) in fq_codel_dequeue()
369 fq_codel_flowlist = &si->oldflows; in fq_codel_dequeue()
371 fq_codel_flowlist = &si->newflows; in fq_codel_dequeue()
387 STAILQ_INSERT_TAIL(&si->oldflows, f, flowchain); in fq_codel_dequeue()
399 mbuf = fqc_codel_dequeue(f, si); in fq_codel_dequeue()
407 if (fq_codel_flowlist == &si->newflows) { in fq_codel_dequeue()
409 STAILQ_INSERT_TAIL(&si->oldflows, f, flowchain); in fq_codel_dequeue()
436 struct fq_codel_si *si; in fq_codel_new_sched() local
441 si = (struct fq_codel_si *)_si; in fq_codel_new_sched()
444 if(si->flows) { in fq_codel_new_sched()
445 D("si already configured!"); in fq_codel_new_sched()
450 q = &si->main_q; in fq_codel_new_sched()
456 si->flows = mallocarray(schk->cfg.flows_cnt, in fq_codel_new_sched()
458 if (si->flows == NULL) { in fq_codel_new_sched()
463 /* init perturbation for this si */ in fq_codel_new_sched()
464 si->perturbation = random(); in fq_codel_new_sched()
467 STAILQ_INIT(&si->newflows); in fq_codel_new_sched()
468 STAILQ_INIT(&si->oldflows); in fq_codel_new_sched()
473 si->flows[i].cst.maxpkt_size = 500; in fq_codel_new_sched()
486 struct fq_codel_si *si = (struct fq_codel_si *)_si ; in fq_codel_free_sched() local
489 free(si->flows , M_DUMMYNET); in fq_codel_free_sched()
490 si->flows = NULL; in fq_codel_free_sched()