Lines Matching refs:flow
115 static inline struct sk_buff *dequeue_head(struct fq_codel_flow *flow) in dequeue_head() argument
117 struct sk_buff *skb = flow->head; in dequeue_head()
119 flow->head = skb->next; in dequeue_head()
125 static inline void flow_queue_add(struct fq_codel_flow *flow, in flow_queue_add() argument
128 if (flow->head == NULL) in flow_queue_add()
129 flow->head = skb; in flow_queue_add()
131 flow->tail->next = skb; in flow_queue_add()
132 flow->tail = skb; in flow_queue_add()
141 struct fq_codel_flow *flow; in fq_codel_drop() local
154 flow = &q->flows[idx]; in fq_codel_drop()
155 skb = dequeue_head(flow); in fq_codel_drop()
162 flow->dropped++; in fq_codel_drop()
179 struct fq_codel_flow *flow; in fq_codel_enqueue() local
192 flow = &q->flows[idx]; in fq_codel_enqueue()
193 flow_queue_add(flow, skb); in fq_codel_enqueue()
197 if (list_empty(&flow->flowchain)) { in fq_codel_enqueue()
198 list_add_tail(&flow->flowchain, &q->new_flows); in fq_codel_enqueue()
200 flow->deficit = q->quantum; in fq_codel_enqueue()
201 flow->dropped = 0; in fq_codel_enqueue()
226 struct fq_codel_flow *flow; in dequeue() local
229 flow = container_of(vars, struct fq_codel_flow, cvars); in dequeue()
230 if (flow->head) { in dequeue()
231 skb = dequeue_head(flow); in dequeue()
232 q->backlogs[flow - q->flows] -= qdisc_pkt_len(skb); in dequeue()
242 struct fq_codel_flow *flow; in fq_codel_dequeue() local
254 flow = list_first_entry(head, struct fq_codel_flow, flowchain); in fq_codel_dequeue()
256 if (flow->deficit <= 0) { in fq_codel_dequeue()
257 flow->deficit += q->quantum; in fq_codel_dequeue()
258 list_move_tail(&flow->flowchain, &q->old_flows); in fq_codel_dequeue()
266 skb = codel_dequeue(sch, &q->cparams, &flow->cvars, &q->cstats, in fq_codel_dequeue()
269 flow->dropped += q->cstats.drop_count - prev_drop_count; in fq_codel_dequeue()
270 flow->dropped += q->cstats.ecn_mark - prev_ecn_mark; in fq_codel_dequeue()
275 list_move_tail(&flow->flowchain, &q->old_flows); in fq_codel_dequeue()
277 list_del_init(&flow->flowchain); in fq_codel_dequeue()
281 flow->deficit -= qdisc_pkt_len(skb); in fq_codel_dequeue()
302 struct fq_codel_flow *flow = q->flows + i; in fq_codel_reset() local
304 while (flow->head) { in fq_codel_reset()
305 struct sk_buff *skb = dequeue_head(flow); in fq_codel_reset()
311 INIT_LIST_HEAD(&flow->flowchain); in fq_codel_reset()
312 codel_vars_init(&flow->cvars); in fq_codel_reset()
447 struct fq_codel_flow *flow = q->flows + i; in fq_codel_init() local
449 INIT_LIST_HEAD(&flow->flowchain); in fq_codel_init()
450 codel_vars_init(&flow->cvars); in fq_codel_init()
565 const struct fq_codel_flow *flow = &q->flows[idx]; in fq_codel_dump_class_stats() local
566 const struct sk_buff *skb = flow->head; in fq_codel_dump_class_stats()
570 xstats.class_stats.deficit = flow->deficit; in fq_codel_dump_class_stats()
572 codel_time_to_us(flow->cvars.ldelay); in fq_codel_dump_class_stats()
573 xstats.class_stats.count = flow->cvars.count; in fq_codel_dump_class_stats()
574 xstats.class_stats.lastcount = flow->cvars.lastcount; in fq_codel_dump_class_stats()
575 xstats.class_stats.dropping = flow->cvars.dropping; in fq_codel_dump_class_stats()
576 if (flow->cvars.dropping) { in fq_codel_dump_class_stats()
577 codel_tdiff_t delta = flow->cvars.drop_next - in fq_codel_dump_class_stats()
589 qs.drops = flow->dropped; in fq_codel_dump_class_stats()